• python开发F5相关功能


    一、安装依赖

    pip install f5-sdk
    pip install urllib3

    二、相关代码,参考https://f5-sdk.readthedocs.io/

    1、创建、操作pool

    from f5.bigip import ManagementRoot
    
    # Connect to the BigIP
    mgmt = ManagementRoot("bigip.example.com", "admin", "somepassword")
    
    # Get a list of all pools on the BigIP and print their names and their
    # members' names
    pools = mgmt.tm.ltm.pools.get_collection()
    for pool in pools:
        print pool.name
        for member in pool.members_s.get_collection():
             print member.name
    
    # Create a new pool on the BIG-IP
    mypool = mgmt.tm.ltm.pools.pool.create(name='mypool', partition='Common')
    
    # Load an existing pool and update its description
    pool_a = mgmt.tm.ltm.pools.pool.load(name='mypool', partition='Common')
    pool_a.description = "New description"
    pool_a.update()
    
    # Delete a pool if it exists
    if mgmt.tm.ltm.pools.pool.exists(name='mypool', partition='Common'):
        pool_b = mgmt.tm.ltm.pools.pool.load(name='mypool', partition='Common')
        pool_b.delete()

    2、创建、操作member

    members = pool_a.members_s
    member = pool_a.members_s.members
    # 创建
    m1 = pool_a.members_s.members.create(partition='Common', name='192.168.101.50:80')
    m2 = pool_a.members_s.members.create(partition='Common', name='192.168.101.51:80')
    
    # load the pool members
    m1 = pool_a.members_s.members.load(partition='Common', name='192.168.101.50:80')
    m2 = pool_a.members_s.members.load(partition='Common', name='192.168.101.50:80')
    
    # Get all of the pool members for pool_1 and print their names
    
    for member in members:
        print member.name
    
    # Delete our pool member m1
    m1.delete()

    3、创建、操作virtual server(VS)

     # 创建   
      try:
            mgmt = ManagementRoot("192.168.10.10", "admin", "admin")
            vs = mgmt.tm.ltm.virtuals.virtual.create(
                name='hn_vs3',
                partition='Common',
                destination='192.168.10.122:67',
                pool='mypool1',
                source='0.0.0.0/0'
            )
            print vs.raw
        except Exception as e:
            if isinstance(e, iControlUnexpectedHTTPError):
                text = json.loads(e.response.text)
                response['meaasge'] = text['message']
            else:
                response['meaasge'] = e
    
    
    # 操作
    
    response = {}
        try:
            mgmt = ManagementRoot("192.168.10.10", "admin", "admin")
            vs = mgmt.tm.ltm.virtuals.virtual.load(
                name='vs_test1',
                partition='Common'
            )
            if hasattr(vs, 'enabled'):
              # 禁用
                vs.disabled = True
            else:
              # 启用
                vs.enabled = True
            vs.update()
        except Exception as e:
            print e
            if isinstance(e, iControlUnexpectedHTTPError):
                text = json.loads(e.response.text)
                response['meaasge'] = text['message']
            else:
                response['meaasge'] = e

    注意事项:1、VS创建之后的状态与pool的状态有直接关系。

                   2、pool创建之后的状态与member和Health Monitors有关。

              3、错误处理,如果错误异常类型为icontrol.exceptions.iControlUnexpectedHTTPError时,需要特殊处理取得message信息。

     text = json.loads(e.response.text)
    message = text['message']

            4、状态为启动时,属性enabled为True,并没有disabled属性。为禁用时同理。

            5、想要打印出pool、member、vs的详细信息,可以使用raw属性。 

  • 相关阅读:
    系统边界确定
    用例分析技术:确定系统边界
    系统边界的定义
    【转】读《程序员修炼之道》
    项目管理之需求基线管理
    字符串流sstream[part3/使用字符串流进行安全的类型转换]
    字符串流sstream[part2/使用同一个字符串流反复读写数据]
    字符串流sstream[part1/基本知识]
    文件操作的openmode
    文件操作的一些函数
  • 原文地址:https://www.cnblogs.com/wangyingblock/p/11905220.html
Copyright © 2020-2023  润新知