通过wapi与infoblox nios交互的客户端

infoblox-client的Python项目详细描述


一个信息blox客户端图片::https://travis-ci.org/infobloxopen/infoblox-client.svg?branch=master
:目标:https://travis ci.org/infobloxopen/infoblox client

…图片::https://img.shields.io/pypi/v/infoblox client.svg
:目标:https://pypi.python.org/pypi/infoblox client

…图片::https://codecov.io/github/infobloxopen/infoblox-client/coverage.svg?branch=master
:目标:https://codecov.io/github/infobloxopen/infoblox-client?分支=主

…图片::https://readthedocs.org/projects/infoblox-client/badge/?version=latest
:目标:http://infoblox-client.readthedocs.org/en/latest/?badge=latest


用于通过wapi与infoblox nios交互的客户端。


*免费软件:apache许可证
*文档:https://infoblox client.readthedocs.org。


安装
----


oblox client

用法
----


在加载infoblox_client之前配置logger以在控制台中获取所有调试消息:

…代码::python

import logging
logging.basicconfig(level=logging.debug)


low level api,使用连接器模块
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

从nios检索网络视图列表:

代码::python


来自infoblox客户端导入连接器

conn=connector.connector(opts)
r在特定的网络视图中
network=conn.get_object('network',{'network':'100.0.0.0/8','network_view':'default'})




网络视图:网络视图:默认值/真值,
u'networkview/zg5zlm5zlm5ldhdldldldldhddvcmldldldlddvdmlllldyqw:default/true,
u'isu默认值:真值,
u'name':u'default'}



网络:网络:
[{u'u'ref''u'network/zg5zlm5zlm5ldldhdldldldhddvldhddvldldhddvlmadwljaumc4wlzgzvmma:100.0.0.0.0.0.0.0.0.0.0.0.0.0.0/8/默认值,<100英镑.0.0.0/8',
u"网络视图":u"默认值"}

代码::python

from infoblox_client import connector
from infoblox_client import objects

conn=connector.connector(opts)

创建网络视图,网络:

代码::python

nview=objects.network view.create(conn,name='my_view')
network=objects.network.create(conn,network_view='my_view',cidr='192.168.1.0/24')

代码::python

view=objects.dnsview.create(conn,network戋view='my戋view',name='my戋dns戋view')
zone=objects.dnszone.create(conn,view='my戋dns戋view',fqdn='my戋zone.com')

创建主机记录:

代码::python


my-ip=objects.ip.create(ip='192.168.1.25',mac='aa:bb:cc:11:22:33')
hr=objects.host record.create(conn,view='my_dns_view',
name='my_host_record.my_zone.com',ip=my_ip)

):

…代码::python

ea=objects.ea({'tenant id':tenantid,'cmp type':cmptype,
'cloud api owned':true})
host=objects.hostrecord.create(conn,name='new_host',ip=my_ip,extattrs=ea)

将ttl设置为30分钟:

。代码::python

hr=objects.host record.create(conn,view='my_dns_view',
name='my_host_record.my_zone.com',ip=my_ip,
ttl=1800)


从CIDR中的下一个可用IP创建一个新的主机记录,并启用MAC地址和DHCP:

…代码::python

next=objects.ipallocation.next_available_ip_from_cidr('default','10.0.0.0/24')
my_ip=objects.ip.create(ip=next,mac='aa:bb:cc:11:22:33',configure_for_dhcp=true)
host=objects.hostrecord.create(conn,name='some.valid.fqdn',view='internal ip=my_ip)

nios的回复被解析回对象并包含下一个数据:

…在[22]:hr
out[22]:hostrecordv4:record:host/zg5zlmhvc3qkljqu29tlm15x5x3vbmububububxlfag9df9yzwnvcmq:my_host_record.my_zone.com/my_dns_-dns_view,name=my_host_record.my_zone.com,ipv4addrs=[<;infoblox_client.objects.ipv4对象位于0x7f7d67d6b0fe9d0>;],view=my_dns dns dns dns:my/u record.my_record.my.com/my_zone.com_视图

高级api,使用infobloxobjectmanager
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

创建一个新的固定地址,从cidr中的下一个可用ip中进行选择:

。代码::python

``对象。

对象接口
----


所有顶级对象都支持CRUD操作接口。支持对象的列表在下一节中定义。

-``创建(cls,connector,check_if廑exists=true,update廑if廑exists=false,**kwargs)``
在nios端创建对象。
要求将连接器作为第一个参数传递,`` check廑if廑exists``和`` update廑if廑exists``是可选的.
与对象相关的字段作为kwargs传入:``field=value`,``field2=value2`。

-``搜索(cls,connector,return_fields=none,search_extattrs=none,force_proxy=false,**kwargs)``
在nios端搜索单个对象,返回与搜索条件匹配的第一个对象。
要求将连接器作为第一个参数传递。
`` return\u fields``可以设置为从nios检索特定字段,
例如`` return\u fields=['view','name']`````.
如果`` return\u fields``是`[]``默认值`` return\u fields``由nios端为当前``wapi`返回_版本`.
``search-extattrs``用于按可扩展属性筛选结果。
``force-proxy``强制在网格主机上处理搜索请求(仅适用于云环境)

-``search-all(cls,connector,return-fields=none,search-extattrs=none,force_proxy=false,**kwargs)``
搜索nios端与搜索条件匹配的所有对象。返回对象列表。
所有其他选项都等于``search()`。

-``update(self)`
通过推送本地对象中所做的更改来更新nios端的对象。

-``delete(self)`
从nios端删除对象。


—————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————``(v4和v6)


*`iprangev4``对于'range'
*`iprangev6``对于'ipv6range''iprangev6``对于'record:host'
*``hostrecord```````hostrecord```(v4和v6)

>

>
*``hostrecordv4``对于'record:host'
*``hostrecordv6``对于'record:host'
*``hostrecordv6````对于'record:host'
*``hostrecordv6``````hostrecordrecordv6 F型或者'ipv6fixeddaddress'



*``ipaddress``````ipaddress````ipv4address```ipv4address````ipv4address`````ipvv4address'



>
*``arecordbase```

*``arecordbase````````````repv6address``ipv6address```ipvv6address```ipvv6address````ipvv6address```````ipvvv6address``````ipvv6address```IPv6address一rd:aaaa'

*``ptrrecord``(v4和v6)

*``ptrrecordv4``for'record:ptr'
*``ptrrecordv6`` for'record:ptr'

*``eadefinition`` for'extensibleattributeef'
*``cnamererecord`` for'record:cname'



-级别API。
使用带字段名的"~"按正则表达式搜索。并非所有
字段都支持按正则表达式搜索。请参阅wapidoc以查找可通过这种方式搜索的字段的完整列表。示例:

查找以"10.10"开头的所有网络:

…代码::python

conn=connector.connector(opts)
nw=conn.get_object('network',{'network~':'10.10.'})




代码::python

conn=connector.connector(opts)
hr=conn.get_object('record:host',{'ipv4addr~':'10.10.'})




使用可扩展属性并对其进行搜索的更多示例可以使用"get撸object"函数轻松完成。
default``field in`` return`字段的作用类似于wapi中的`+``字段。

>;```return`字段+``指定的字段列表(逗号分隔)将返回给对象的基本字段(为每个对象记录)。


作为回报,除了指定
是搜索"network"还是"networkcontainer"之外,
在下面的代码中定义为"place_to_check"。


代码::python

infoblox_client.connector导入连接器



def default_infoblox_connection():
opts={'host':'192.168.1.10','username':'admin','password':'admin}
conn=connector(opts)
return conn

def search_extensible_属性(connection,place_to_check:str,extensible_attribute:str,value:str):
"
查找可扩展属性。
:param connection:infoblox connection
:param place_to_check:可以是"network"、"networkcontainer"或"record:host"等等。
:param extensible_attribute:要搜索的可扩展属性。可以是"customercode"、"location"等。
:param value:要搜索的值。
:return:result
"
可扩展参数=[
要检查的位置,
{
f"*{可扩展属性}:~":value,
}
]
kwargs={
'返回字段':[
'默认值',
'外部属性',
]
}
}
结果={"类型":f"{放置检查}","对象":连接。获取对象(*可扩展参数,**kwargs)}
返回结果



search_network=search_extensible_属性(connection,"network","customercode","infoblox")
打印输出:
print(search_network)
{
"type":"network,
对象":[
{
"\u ref":"网络/zg5zlmhvc3qkljquy29tlm15x3pvbmubxlfag9zdf9yzwnvcmq:192.168.1.1/28/默认",
"注释":"infoblox网络",
"extattrs":{
"客户代码":{
"值":"infoblox"
}
},
"网络":"192.168.1.0/28",
"网络视图":"默认"
}
}
}




{
"type":"record:host",
"objects":[
{
"ref":"record:host/zg5zlm5ldhdvdvmtfdmlldyqw:infobloxhost",
"extattrs":{
"customercode":{
"value":"infoblox"
}
},
"ipv4addrs":[
{
"_ref":"record:host_ipv4addr/zg5zlm5ldhdvdcmtfdmlldyqwdvcmtfmlldyqw:192.168.1.1/infobloxhost",
"configure_for_dhcp":false,
"host":"infobloxhost",
"ipv4addr":"192.168.1.1"
}
],
"name":"infobloxhost",
"view":"
}
]
}
}




-

*todo






-


0.4.22(2019-02-21)
_________

*支持返回默认文件和反映wapi
*支持dns主机记录的"别名"参数的用户所需字段

0.4.21(2019-01-18)


*支持wapi 2.10版或更高版本

0.4.20(2018-03-27)
___________________

* Updated default WAPI version from 1.4 to 2.1

0.4.19 (2018-02-06)
___________________

* Changed logging of failure on object search from Error to Warning

0.4.18 (2017-11-20)
___________________

* Fix bug related to temporary unavailable status code

0.4.17 (2017-11-09)
___________________

* Added pagination support for wapi calls

0.4.15 (2017-07-18)
___________________

* Changed logic of generate duid using only mac address

0.4.14 (2017-05-18)
_________________






>0.4.13(2017-03-01)
>0.4.13(2017-03-01)
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu允许使用arch all fields
* Remove ptrdname from PTR record search attributes

0.4.11 (2016-10-31)
___________________
* Add search HostRecords by MAC

0.4.10 (2016-10-24)
___________________
* Updated history and author

0.4.9 (2016-10-24)
__________________
* Add function to get fixed addresses by mac

0.4.8 (2016-10-10)
__________________
* Add ptrdname search option to PtrRecord objects

0.4.7 (2016-07-14)
__________________
* Add zones extensible attribute update support

0.4.6 (2016-07-01)
_______________
*添加对主机记录的网络视图支持

0.4.5(2016-06-13)
5-11)
添加默认字段或会员
*更新create_network的docstring
*向fixeddressv4和ipaddress添加字段


0.4.2(2016-03-04)


>0.4.2(2016-03-04)0.4.4.2(2016-03-04)0.4.4.4.4.4和ipadduuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu庘庘庘庘庘庘将"最大结果"添加为连接器选项


>0.4.0(2016-02-19)
=-
-
-
*将"最大结果"选项添加到连接器和对象
*添加租户对象
*更新自述。首先,使用更多示例



<0.3.9(2016-02-18)

\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu域名服务器d for HostRecord

0.3.8 (2016-02-17)
__________________
* Add 'extattrs' to DNSZone/DNSView return_fields

0.3.7 (2016-02-12)
__________________
* Add return_fields to NetworkView

0.3.6 (2016-01-28)
__________________
* Add support for list and tuple值到ea对象
*删除值到布尔

>0.3.5(2016-01-22)



0.3.4(2016-01-21)0.3.4(2016-01-21)
返回创建的列表
*将"开始地址"、"结束地址"添加到IP检测列表
*将请求类型添加到CO网络记录器
*flake8补丁


0.3.2(2016-01-19)0.3.2(2016-01-1)0.3.2
添加"区域"进行搜索主机记录字段



0.3.0(2016-01-14)
----
*将开发状态从pre-alpha更新为alpha用网络代替网络代替取代现有的ea



0.2.3(2016-01-06)0.2.3(2016-01-06)
\u\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\从create met修复更新对象HOD
*重做删除所有关联的对象逻辑
*修复创建对象中的错误处理
*在创建DNS区域级别不捕获异常
*更新成员IPv6设置的功能版本

<0.2.1(2015-12-18)
ion
*如果已存在,则更新DNS记录
*为连接器添加"Log_API Calls_as_info"选项
*检查ea中的空值

>0.2.0(2015-12-17)
----
*在对象管理器中不推荐网络存在方法
*为对象添加全局字段处理
*添加将"extattrs"解析为所有infobloxobject childs
*添加docs badge到自述文件中。rst
*在对象管理器中重新处理get-u network
*将"u eq"移动到baseobject
*在删除之前检查是否找到固定地址



0.1.4(2015-12-08)
成员对象的ate
*在调试级别上记录连接器中的所有api调用

0.1.3(2015-12-04)
_________
*删除时找不到对象时不失败
*删除时找不到对象时不失败
*如果回复不为json则引发异常,如果回复不为json则引发异常
*向连接器添加"Silent_ssl_sslu warnings"选项

>0.1.1.1(2015-12-01)
>。__________
*将新字段类型"可更新的搜索字段"添加到对象并修复hostrecord搜索
*修复"生成文档"
*更新readme.rst(固定格式)

<0.0.11(2015-11-25)
如果可能的话,将ea值转换为布尔值
*为hostrecord中的ip字段添加了ips allaias



>0.0.10(2015-11-19)
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuUuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
*a用于ea定义的dd allowed_u object_u types字段
*允许返回对象的默认字段
*更新readme.rst和受支持对象的列表


0.0.8(2015-11-12)
在对象管理器中工作
*修复了在创建dns区域中丢失的dns zone对象


0.0.7(2015-10-27)
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
*在iprange搜索字段中添加了"network"
*修改了ea类的"get"方法以允许返回默认值

0.0.6(2015-10-26)
___________
*添加了可扩展属性作为子对象的初始支持
*添加了可扩展属性的搜索tes
*改进了连接器中的验证
*向对象管理器添加了delete\u object\u


0.0.5(2015-10-12)
开放式知识库

<0.0.4(2015-09-23)0.0.4(2015-09-23)
Uuuuuuuuuuuuuuuuuuu
*向包添加了依赖项。


0.0.2(2015-09-11)
这一点。
*pypi上的第一个版本。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
用户界面最佳所见即所得Java UI编辑器   java*servlet。xml与applicationContext。xml   java Android SDK在发布时挂起设备   java如何异步处理GAE数据存储争用?   java如何在redis中为SSO刷新令牌的过期时间?   java从全文搜索中删除索引   java CXFServlet初始启动   java在使用mavenspringbootplugin时向SpringBoot命令行start添加类路径   java工厂模式是正确的模式吗?   java-JVM信号链SIGPIPE   java JavaFx savely正在停止后台任务   整数Java打印数字的小数点   java如何连接到用户选择的SSID?   java组织。h2。jdbc。JdbcSQLException:列计数不匹配   java文件。toURI不编码加号