• 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属性。 

  • 相关阅读:
    struts2中struts.xml配置文件详解【未整理】
    程序员,别了校园入了江湖
    xml常用的error-page
    struts2中struts.xml配置文件详解
    Struts 2初体验
    Hibernate 抛出的 Could not execute JDBC batch update
    MyEclipse快捷键
    CSS 字体
    绑定事件 addEventListener
    设置DIV最小高度以及高度自适应随着内容的变化而变化
  • 原文地址:https://www.cnblogs.com/wangyingblock/p/11905220.html
Copyright © 2020-2023  润新知