通过WAPI与Infoblox NIOS交互的客户端
项目描述
=============================== Infoblox 客户端
.. image:: https://travis-ci.org/infobloxopen/infoblox-client.svg?branch=master :target: https://travis-ci.org/infobloxopen/infoblox-client
.. image:: https://img.shields.io/pypi/v/infoblox-client.svg :target: https://pypi.python.org/pypi/infoblox-client
.. image:: https://codecov.io/github/infobloxopen/infoblox-client/coverage.svg?branch=master :target: https://codecov.io/github/infobloxopen/infoblox-client?branch=master
.. image:: https://readthedocs.org/projects/infoblox-client/badge/?version=latest :target: http://infoblox-client.readthedocs.org/en/latest/?badge=latest
与Infoblox NIOS通过WAPI交互的客户端。
- 免费软件:Apache许可证
- 文档: https://infoblox-client.readthedocs.org。
安装
使用pip安装infoblox-client
::
pip安装infoblox-client
用法
在加载infoblox_client之前配置logger,以便在控制台获取所有调试信息
.. code:: python
import logging logging.basicConfig(level=logging.DEBUG)
低级API,使用连接器模块
Retrieve list of network views from NIOS:
.. code:: python
from infoblox_client import connector
opts = {'host': '192.168.1.10', 'username': 'admin', 'password': 'admin'}
conn = connector.Connector(opts)
# get all network_views
network_views = conn.get_object('networkview')
# search network by cidr in specific network view
network = conn.get_object('network', {'network': '100.0.0.0/8', 'network_view': 'default'})
For these request data is returned as list of dicts:
.. code:: python
network_views:
[{u'_ref': u'networkview/ZG5zLm5ldHdvcmtfdmlldyQw:default/true',
u'is_default': True,
u'name': u'default'}]
network:
[{u'_ref': u'network/ZG5zLm5ldHdvcmskMTAwLjAuMC4wLzgvMA:100.0.0.0/8/default',
u'network': u'100.0.0.0/8',
u'network_view': u'default'}]
High level API, using objects
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Example of creating Network View, Network, DNS View, DNSZone and HostRecord using NIOS objects:
.. code:: python
from infoblox_client import connector
from infoblox_client import objects
opts = {'host': '192.168.1.10', 'username': 'admin', 'password': 'admin'}
conn = connector.Connector(opts)
Create a network view, and network:
.. code:: python
nview = objects.NetworkView.create(conn, name='my_view')
network = objects.Network.create(conn, network_view='my_view', cidr='192.168.1.0/24')
Create a DNS view and zone:
.. code:: 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')
Create a host record:
.. code:: python
my_ip = objects.IP.create(ip='192.168.1.25', mac='aa:bb:cc:11:22:33')
hr = objects.HostRecord.create(conn, view='my_dns_view',
name='my_host_record.my_zone.com', ip=my_ip)
Create host record with Extensible Attributes (EA):
.. code:: 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)
Create a host record with inherited Extensible Attributes (EA):
.. code:: python
my_ip = objects.IP.create(ip='192.168.1.25', mac='aa:bb:cc:11:22:33', use_for_ea_inheritance=True)
hr = objects.HostRecord.create(conn, view='my_dns_view',
name='my_host_record.my_zone.com', ip=my_ip)
Set the TTL to 30 minutes:
.. code:: python
hr = objects.HostRecord.create(conn, view='my_dns_view',
name='my_host_record.my_zone.com', ip=my_ip,
ttl = 1800)
Create a new host record, from the next available IP in a CIDR, with a MAC address, and DHCP enabled:
.. code:: 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)
Reply from NIOS is parsed back into objects and contains next data:
.. code:: python
In [22]: hr
Out[22]: HostRecordV4: _ref=record:host/ZG5zLmhvc3QkLjQuY29tLm15X3pvbmUubXlfaG9zdF9yZWNvcmQ:my_host_record.my_zone.com/my_dns_view, name=my_host_record.my_zone.com, ipv4addrs=[<infoblox_client.objects.IPv4 object at 0x7f7d6b0fe9d0>], view=my_dns_view
Create a new fixed address, with a MS server DHCP reservation:
.. code:: python
obj, created = objects.FixedAddress.create_check_exists(connector=conn,
ip='192.168.100.100',
mac='aa:bb:cc:11:22:33',
comment='My DHCP reservation',
name='My hostname',
network_view='default',
ms_server={'_struct': 'msdhcpserver',
'ipv4addr': '192.168.0.0'})
High level API, using InfobloxObjectManager
创建一个新的固定地址,从CIDR的下一个可用IP中选择
.. code:: python
from infoblox_client.object_manager import InfobloxObjectManager
new_address = InfobloxObjectManager(conn).create_fixed_address_from_cidr(netview='default', mac='aa:bb:cc:11:22:33', cidr='10.0.0.0/24', extattrs=[])
返回的是FixedAddressV4
对象。
对象接口
所有顶级对象都支持CRUD操作的接口。支持的对象列表定义在下一段中。
-
create(cls, connector, check_if_exists=True, update_if_exists=False, **kwargs)
在NIOS侧创建对象。需要作为第一个参数传递的连接器,check_if_exists
和update_if_exists
是可选的。与对象相关的字段作为kwargs传递:field=value
,field2=value2
。 -
search(cls, connector, return_fields=None, search_extattrs=None, force_proxy=False, **kwargs)
在NIOS侧搜索单个对象,返回第一个符合搜索条件的对象。需要作为第一个参数传递的连接器。可以设置return_fields
以从NIOS检索特定字段,例如return_fields=['view', 'name']
。如果return_fields
是[]
,则默认返回return_fields
由NIOS侧针对当前wapi_version
返回。如果使用search_extattrs
,则用于通过可扩展属性过滤结果。force_proxy
强制搜索请求在Grid Master上处理(仅适用于云环境) -
search_all(cls, connector, return_fields=None, search_extattrs=None, force_proxy=False, **kwargs)
在NIOS侧搜索所有符合搜索条件的对象。返回对象列表。所有其他选项等于search()
。 -
update(self)
通过将本地对象中执行的变化推送到NIOS侧来更新对象。 -
delete(self)
从NIOS侧删除对象。
支持的NIOS对象
0.6.0版本发布中支持所有NIOS对象。请检查infoblox_client/objects.py以获取对象的描述。新支持的对象
AAAADtcRecord
AAAARecord
AAAASharedRecord
ADtcRecord
ADtcRecordBase
ARecord
ARecordBase
ASharedRecord
ASharedRecordBase
AdAuthServer
AdAuthService
Addressac
Admingroup
Adminrole
Adminuser
AliasRecord
所有端点
所有nsg组
所有记录
所有rpz记录
任何成员
审批工作流
认证策略
Awsrte53任务
Awsrte53任务组
Aws用户
基本对象
Bfd模板
Bgpas
批量主机
批量主机名称模板
CNAMEDtcRecord
CNAMERecord
CNAMESharedRecord
CaaRecord
Cacertificate
容量报告
容量报告对象计数
捕获门户
捕获门户文件
证书认证服务
已更改的对象
Ciscoise端点
客户端子网域
Csvimporttask
DHCP租约
DHCPRoamingHost
DNS视图
DNS区域
DNS区域委派
DNS区域转发
Db对象
Dbsnapshot
DdnsPrincipalcluster
DdnsPrincipalclusterGroup
已删除的对象
DhcidRecord
DhcpOptionDefinition
DhcpOptionDefinitionV4
DhcpOptionDefinitionV6
DhcpOptionSpace
DhcpOptionSpaceV4
DhcpOptionSpaceV6
DhcpStatistics
Dhcpddns
Dhcpfailover
Dhcpmember
Dhcpoption
发现
发现自动转换设置
发现Ciscoapic配置
发现Clicredential
发现设备
发现设备组件
发现设备接口
发现设备邻居
发现设备支持包
发现诊断任务
发现网格属性
发现Ifaddrinfo
发现成员属性
发现网络信息
发现端口
发现扫描接口
发现种子路由器
发现Snmp3Credential
发现Snmpcredential
发现状态
发现Vlan信息
发现Vrf
发现Vrf映射规则
发现任务
发现任务端口
发现任务vserver
分发计划
DnameRecord
Dns64Group
DnskeyRecord
Dnsseckey
Dnssectrustedkey
DsRecord
Dtc
DtcAllrecords
DtcCertificate
DtcLbdn
DtcMonitor
DtcMonitorHttp
DtcMonitorIcmp
DtcMonitorPdp
DtcMonitorSip
DtcMonitorSnmp
DtcMonitorSnmpOid
DtcMonitorTcp
DtcObject
DtcPool
DtcPoolConsolidatedMonitorHealth
DtcPoolLink
DtcServer
DtcServerLink
DtcServerMonitor
DtcTopology
DtcTopologyLabel
DtcTopologyRule
DtcTopologyRuleSource
DtclbdnRecord
DxlEndpoint
DxlEndpointBroker
EA
EADefinition
排除范围
排除范围模板
可扩展属性定义List值
Extserver
Extsyslogbackupserver
Fileop
Filterfingerprint
Filtermac
Filternac
Filteroption
Filterrelayagent
Filterrule
Fingerprint
固定地址
固定地址模板
固定地址模板V4
固定地址模板V6
固定地址V4
固定地址V6
转发成员服务器
Ftpuser
网格
GridCloudapi
GridCloudapiCloudstatistics
GridCloudapiUser
GridCloudapiVm
GridCloudapiVmaddress
GridDashboard
GridDhcpproperties
GridDns
GridDnsFixedrrsetorderfqdn
GridFiledistribution
GridLicensePool
GridLicensePoolContainer
GridLicensesubpool
GridMaxminddbinfo
GridMemberCloudapi
GridServicerestartGroup
GridServicerestartGroupOrder
GridServicerestartRequest
GridServicerestartRequestChangedobject
GridServicerestartStatus
GridThreatanalytics
GridThreatprotection
GridX509Certificate
GridmemberSoamname
GridmemberSoaserial
主机记录
主机记录V4
主机记录V6
主机名称重写策略
热修复
HsmAllgroups
HsmSafenet
HsmSafenetgroup
HsmThales
HsmThalesgroup
IP
IP地址
IP分配
IP范围
IP范围V4
IP范围V6
IPv4
IPv4地址
IPv4主机地址
IPv6
IPv6地址
IPv6主机地址
Infoblox对象
接口
IpamStatistics
Ipv6Networksetting
Kerberoskey
LdapAuthService
LdapEamapping
LdapServer
LicenseGridwide
本地用户认证服务
逻辑过滤器规则
Lomnetworkconfig
Lom用户
MX记录
MX共享记录
Mac过滤器地址
主网格
成员
成员DHCP属性
成员DNS
成员DNS GLUE记录地址
成员DNS IP
成员文件分发
成员许可
成员家长控制
成员威胁分析
成员威胁防护
成员服务器
成员服务通信
成员服务状态
MS DHCP选项
MS DHCP服务器
MS DNS服务器
MS 服务器
MS 服务器 AD 站点域
MS 服务器 AD 站点
MS 服务器 DCNS 记录创建
MS 服务器 DHCP
MS 服务器 DNS
MS 超范围
命名ACL
NAPTR DTC 记录
NAPTR 记录
NAT组
网络
网络容器
网络容器V4
网络容器V6
网络发现
网络模板
网络模板V4
网络模板V6
网络V4
网络V6
网络视图
网络用户
网络视图关联成员
节点信息
通知REST端点
通知REST模板
通知REST模板参数
通知规则
通知规则表达式操作
NS 记录
NSEC3 参数记录
NSEC3 记录
NSEC 记录
NSG 组
NSG 委托
NSG 转发成员
NSG 转发存根服务器
NSG 存根成员
NX 域名规则
OCSP 响应者
选项60匹配规则
有序范围
有序响应策略区域
OSPF
出站云客户端
出站云客户端事件
家长控制ABS
家长控制AVP
家长控制阻止策略
家长控制IP空间区分器
家长控制MS
家长控制NAS网关
家长控制站点成员
家长控制SPM
家长控制订阅者
家长控制订阅者站点
权限
指针记录
指针记录V4
指针记录V6
Radius认证服务
Radius服务器
范围模板
范围模板V4
范围模板V6
R数据子字段
记录名策略
远程DNS区域
重启服务状态
RIR
RIR组织
Rpz AIp地址记录
Rpz A记录
Rpz AaaaIp地址记录
Rpz Aaaa记录
Rpz CnameClientip地址记录
Rpz CnameClientip地址dn记录
Rpz CnameIp地址记录
Rpz CnameIp地址dn记录
Rpz Cname记录
Rpz Mx记录
Rpz Naptr记录
Rpz Ptr记录
Rpz Ptr记录V4
Rpz Ptr记录V6
Rpz Srv记录
Rpz Txt记录
Rrsig记录
规则集
SRV DTC记录
SRV记录
SRV共享记录
SAML认证服务
清除任务
计划任务
搜索
设置网络
设置视图地址
共享网络
共享网络V4
共享网络V6
共享记录组
智能文件夹子文件夹
智能文件夹全局
智能文件夹按组
智能文件夹个人
智能文件夹查询项
Snmp用户
排序列表
子对象
超级主机
超级主机子
系统日志端点
系统日志端点服务器
系统日志服务器
TXT记录
TXT共享记录
Tacacsplus认证服务
Tacacsplus服务器
Taxii
Taxii Rpz配置
租户
Tftp文件目录
威胁分析模块集
威胁分析白名单
威胁洞察云客户端
威胁防护网格规则
威胁防护NAT规则
威胁防护配置文件
威胁防护配置文件规则
威胁防护规则
威胁防护规则类别
威胁防护规则集
威胁防护规则模板
威胁防护状态信息
威胁防护统计
阈值陷阱
TLSA记录
陷阱通知
未知记录
更新下载成员配置
升级组
升级组成员
升级组计划
升级计划
升级状态
升级步骤
用户配置文件
V发现任务
虚拟局域网
虚拟局域网链路
虚拟局域网范围
虚拟局域网视图
虚拟TFTP目录成员
区域认证差异
区域RP
区域存根
区域关联
区域名称服务器
在0.4.25版本之前,该项目支持
-
NetworkView
用于 'networkview' -
DNSView
用于 'view' -
DNSZone
用于 'zone_auth' -
Member
用于 'member' -
Network
(V4和V6)NetworkV4
用于 'network'NetworkV6
用于 'ipv6network'
-
IPRange
(V4和V6)IPRangeV4
用于 'range'IPRangeV6
用于 'ipv6range'
-
HostRecord
(V4和V6)HostRecordV4
用于 'record:host'HostRecordV6
用于 'record:host'
-
FixedAddress
(V4和V6)FixedAddressV4
用于 'fixedaddress'FixedAddressV6
用于 'ipv6fixedaddress'
-
IPAddress
(V4和V6)IPv4Address
用于 'ipv4address'IPv6Address
用于 'ipv6address'
-
ARecordBase
ARecord
用于 'record:a'AAAARecord
用于 'record:aaaa'
-
PtrRecord
(V4和V6)PtrRecordV4
用于 'record:ptr'PtrRecordV6
用于 'record:ptr'
-
EADefinition
用于 'extensibleattributedef' -
CNAMERecord
用于 'record:cname' -
MXRecord
用于 'record:mx'
支持使用正则表达式进行搜索
目前仅通过低级API支持部分匹配搜索。使用字段名与 '~' 连接进行正则表达式搜索。并非所有字段都支持正则表达式搜索。请参考 wapidoc 获取可以以此方式搜索的字段完整列表。示例
查找所有以 '10.10.' 开头的网络
.. code:: python
conn = connector.Connector(opts) nw = conn.get_object('network', {'network~': '10.10.'})
查找所有以 '10.10.' 开头的主机记录
.. code:: python
conn = connector.Connector(opts) hr = conn.get_object('record:host', {'ipv4addr~': '10.10.'})
更多示例
利用可扩展属性并在其上搜索可以很容易地通过 get_object
函数完成。在 return_fields
中的 default
字段类似于WAPI中的 +
。
_return_fields+
除了对象的基字段(针对每个对象都有文档说明)外,还将返回指定的字段列表(以逗号分隔)。
这使您始终可以在返回结果中获取默认值,而不仅仅是您指定的值,无论您是搜索 network
还是 networkcontainer
,在以下代码中定义为 place_to_check
。
.. code:: python
from infoblox_client.connector import Connector
def default_infoblox_connection():
opts = {'host': '192.168.1.10', 'username': 'admin', 'password': 'admin'}
conn = Connector(opts)
return conn
def search_extensible_attribute(connection, place_to_check: str, extensible_attribute: str, value: str):
"""
Find extensible attributes.
:param connection: Infoblox connection
:param place_to_check: Can be `network`, `networkcontainer` or `record:host` and so on.
:param extensible_attribute: Which extensible attribute to search for. Can be `CustomerCode`, `Location`
and so on.
:param value: The value you want to search for.
:return: result
"""
extensible_args = [
place_to_check,
{
f"*{extensible_attribute}:~": value,
}
]
kwargs = {
'return_fields': [
'default',
'extattrs',
]
}
result = {"type": f"{place_to_check}", "objects": connection.get_object(*extensible_args, **kwargs)}
return result
connection = default_infoblox_connection()
search_network = search_extensible_attribute(connection, "network", "CustomerCode", "Infoblox")
# Print the output:
print(search_network)
{
"type": "network",
"objects": [
{
"_ref": "network/ZG5zLmhvc3QkLjQuY29tLm15X3pvbmUubXlfaG9zdF9yZWNvcmQ:192.168.1.1/28/default",
"comment": "Infoblox Network",
"extattrs": {
"CustomerCode": {
"value": "Infoblox"
}
},
"network": "192.168.1.0/28",
"network_view": "default"
}
]
}
search_host = search_extensible_attribute(connection, "record:host", "CustomerCode", "Infoblox")
# Print the output:
print(search_host)
{
"type": "record:host",
"objects": [
{
"_ref": "record:host/ZG5zLm5ldHdvcmtfdmlldyQw:InfobloxHost",
"extattrs": {
"CustomerCode": {
"value": "Infoblox"
}
},
"ipv4addrs": [
{
"_ref": "record:host_ipv4addr/ZG5zLm5ldHdvcmtfdmlldyQwdvcmtfdmlldyQw:192.168.1.1/InfobloxHost",
"configure_for_dhcp": false,
"host": "InfobloxHost",
"ipv4addr": "192.168.1.1"
}
],
"name": "InfobloxHost",
"view": " "
}
]
}
功能
- 待办事项
历史
0.6.0 (2022-11-18)
- 添加了对Python版本3.9的支持 #352;
- 删除了对Python版本低于3.0的支持 #352;
0.5.2 (2022-10-12)
- 添加了基于证书的认证逻辑 #330;
- 修复了IP对象中EA继承的使用 #318;
- 修复了 'class Member()' 中缺失字段 ('ipv4addr', 'ipv6addr') #345;
0.5.1 (2022-03-14)
- 更新了连接器的urlencoding逻辑以进行正确的数组编码 #287;
- 更新了InfobloxObject的fetch方法以引发
InfobloxFetchGotMultipleObjects
异常 #288; - 修复了从V4 & V6子类调用抽象化类 from_dict 时的问题 #282;
- 修复了更新DNSZone对象时引发的异常和不允许更新的字段 #331;
- 修复了ARecord和AAAARecord对象跳过更新可更新字段的问题 #334, #328;
- 在搜索非可搜索字段时引发异常 #339;
- 修复了使用sphinx与make docs生成的客户端错误 #343;
0.5.0 (2020-05-14)
- 主要更新了对象,现在支持约380+个NIOS对象调用。(找到infoblox_client/objects.py文件以列出支持的对象及其描述)
- 错误修复
- python-six依赖设置为 >=1.11.0
0.4.25 (2020-03-12)
- 错误修复
0.4.24 (2020-02-25)
- 为固定地址添加了一些额外字段(ms_server)
- 支持MX记录
- 错误修复 - PTR记录现在返回一个IP
0.4.23 (2019-09-10)
- 为网络类添加了一些额外字段
- 修复了A记录的更新选项
- 添加了固定地址的属性
0.4.22 (2019-02-21)
- 支持返回默认字段加用户所需字段,反映WAPI
- 支持DNS主机记录的'别名'参数
0.4.21 (2019-01-18)
- 支持WAPI版本2.10或更高
0.4.20 (2018-03-27)
- 更新默认WAPI版本从1.4到2.1
0.4.19 (2018-02-06)
- 将对象搜索失败日志从Error改为Warning
0.4.18 (2017-11-20)
- 修复与临时不可用状态代码相关的错误
0.4.17 (2017-11-09)
- 为WAPI调用添加分页支持
0.4.15 (2017-07-18)
- 更改仅使用MAC地址生成duid的逻辑
0.4.14 (2017-05-18)
- 添加检查对象是创建还是复用的功能
0.4.13 (2017-03-01)
- 为HostRecordV*添加TTL字段
- 添加CNAME记录支持
- 指定SRV记录的返回字段
0.4.12 (2016-12-08)
- 允许搜索所有字段
- 从PTR记录搜索属性中删除ptrdname
0.4.11 (2016-10-31)
- 通过MAC添加搜索HostRecords的功能
0.4.10 (2016-10-24)
- 更新历史和作者信息
0.4.9 (2016-10-24)
- 添加通过MAC获取固定地址的功能
0.4.8 (2016-10-10)
- 将ptrdname搜索选项添加到PtrRecord对象
0.4.7 (2016-07-14)
- 添加区域可扩展属性更新支持
0.4.6 (2016-07-01)
- 为主机记录添加network_view支持
0.4.5 (2016-06-13)
- 在create_ea_definition中允许抛出异常
- 将pep8检查添加到tox
- 将pep8检查添加到Travis CI
- 添加正则表达式搜索示例
0.4.4 (2016-05-11)
- 将only_ref选项传递给update_from_dict
- 在处理未知字段时不要失败
- 仅获取服务重启的对象引用
- 更新README,包含EA使用示例
0.4.3 (2016-03-28)
- 为Member添加默认字段
- 更新create_network的docstring
- 为FixedAddressV4和IPAddress添加字段
0.4.2 (2016-03-04)
- 为connector添加max_retries选项
- 在get时以Error日志级别记录失败
0.4.1 (2016-02-26)
- 将'max_results'添加为connector选项
0.4.0 (2016-02-19)
- 将max_results选项添加到connector和对象
- 添加Tenant对象
- 更新README.rst,添加更多示例
0.3.9 (2016-02-18)
- 为HostRecord添加'configure_for_dns'字段
0.3.8 (2016-02-17)
- 将'extattrs'添加到DNSZone/DNSView的return_fields
0.3.7 (2016-02-12)
- 为NetworkView添加return_fields
0.3.6 (2016-01-28)
- 为EA对象添加对列表和元组值的支持
- 移除_value_to_bool
0.3.5 (2016-01-22)
- 没有更改
0.3.4 (2016-01-21)
- 不要在请求级别上覆盖verify标志
0.3.3 (2016-01-20)
- create_required_ea_definitions返回创建的列表
- 将'start_addr', 'end_addr'添加到IP检测列表
- 将请求类型添加到connector logger
- Flake8修复
0.3.2 (2016-01-19)
- 将ssl_verify的字符串转换为布尔值
- 更新AUTHORS.rst,添加贡献者
- 从utils.py中删除未使用的函数
0.3.1 (2016-01-14)
- 为Host Record的搜索字段添加'zone'
0.3.0 (2016-01-14)
- 将开发状态从预alpha更新到alpha
- 功能/tox测试(测试环境有重大变化)
- 为FixedAddress添加搜索字段'network'
- 允许ipv6使用域名服务器
- 更新网络而不是替换现有EA
0.2.3 (2016-01-06)
- 如果搜索失败,则返回None而不是异常
- 将ip_version作为对象的公共属性
0.2.2 (2015-12-23)
- 修复从创建方法更新对象的问题
- 重构delete_all_associated_objects逻辑
- 修复create_object中的错误处理
- 不要在create_dns_zone级别上捕获异常
- 更新member_ipv6_setting的功能版本
0.2.1 (2015-12-18)
- 添加InfobloxMemberAlreadyAssigned异常
- 如果已存在,则更新dns记录
- 为connector添加'log_api_calls_as_info'选项
- 检查EA中的空值
0.2.0 (2015-12-17)
- 弃用object_manager中的network_exists方法
- 为对象添加_global_field_processing
- 为所有InfobloxObject子类将'extattrs'解析到EA对象
- 将文档徽章添加到README.rst
- 重构object_manager中的get_network
- 将eq移动到BaseObject
- 在删除之前检查是否找到了固定地址
0.1.4 (2015-12-08)
- Member对象的字段更新
- 在connector上以debug级别记录所有api调用
0.1.3 (2015-12-04)
- 将'network'字段添加到ip版本化字段
- 跳过添加IPv6网络的DHCP选项
- 在创建之前不要搜索IPRange
0.1.2 (2015-12-02)
- 在删除时如果对象未找到不要失败
- 如果回复不是json,则抛出带有详细信息的异常
- 为connector添加'silent_ssl_warnings'选项
0.1.1 (2015-12-01)
- 修复unbind_name_from_record_a
0.1.0 (2015-12-01)
- 为对象添加新的字段类型'_updateable_search_field'并修复HostRecord搜索
- 修复'make docs'
- 更新README.rst(固定格式化)
0.0.11 (2015-11-25)
- 修复将第二个IP添加到HostRecord
- 修复pdb中的失败问题
- 如果可能,将EA值转换为布尔值
- 在HostRecord中为ip字段添加'ips'别名
0.0.10 (2015-11-19)
- 添加确定支持的功能的实用程序
- 使用对象接口更新README.rst
0.0.9 (2015-11-13)
- 为EA定义添加allowed_object_types字段
- 允许返回对象的默认字段
- 使用支持的对象列表更新README.rst
0.0.8 (2015-11-12)
- 添加可扩展属性定义支持
- 修复object_manager中create_network的选项处理问题
- 修复create_dns_zone中缺失的DNSZone对象
0.0.7 (2015-10-27)
- 将'network'添加到IPRange搜索字段
- 修改EA类的get方法,允许返回默认值
0.0.6 (2015-10-26)
- 添加对可扩展属性作为子对象的基本支持
- 添加通过可扩展属性进行搜索
- 改进连接器中的验证
- 向对象管理器添加delete_object_by_ref
0.0.5 (2015-10-12)
- 修复与对象一起工作的问题
- 添加了遗漏的_get_object_type_from_ref
- 添加代码覆盖率
- 更新链接以指向infobloxopen存储库
0.0.4 (2015-09-23)
- 添加了与NIOS对象交互的对象抽象
- 添加object_manager以简化对对象的一些操作
0.0.3 (2015-09-15)
- 向包中添加依赖关系。
0.0.2 (2015-09-11)
- 修复使用包目录名中的破折号导致安装后无法导入包的问题。
0.0.1 (2015-09-11)
- 添加连接器以向NIOS发送wapi请求,目前不包含NIOS对象模型。
- 在PyPI上的第一个版本。