使用solace semp xml api的solace provisioning助手
libsolace的Python项目详细描述
libsolace
目录
这是一组python帮助程序,用于管理和设置消息传递设备和vmr。设计要灵活
旨在管理多个环境中的多个群集。 这个供应系统的核心是solacexmlbuilder类,它可以通过类字典对象的递归实例化生成xml。例子: 插件创建semp请求对象,然后需要通过solaceapi.rpc将其发送到设备。
编写插件来创建一个或多个semp命令,并在根据xsd验证xml后返回它们。 solacexmlbuilder通常通过solacapi使用,它会注意为您检测设备操作系统版本。例如 vmr需要使用以下命令进行初始化: 在我的用例中,每个solace集群可能承载多个"环境",因此所有对象都是用
允许多主机的特定于环境的名称。 这意味着任何集群都可以承载任意数量的环境,而不需要冲突的资源。CMDBClient
合同规定,它必须通过将环境名称替换为字符串来解析最终项名称。 例如,'%s\u myvpn'%env\u name. 这可以通过命名插件来实现。参见命名标准和
zoinksnamingstandard 参见ns/cmdbclient.py" rel="nofollow">cmdbclient用于CMDB插件示例。 libsolace可以从yaml文件或您使用的任何一个cmdb(如果您为此实现了客户端)中提供solace设备。 脚本./bin/solace-provision.py是配置任务的入口点。 示例 libsolace需要一个 配置加载器还负责加载插件键中指定的所有插件。 有关详细信息,请参见libsolace.yaml.template。
libsolace是可插入的,您可以注册自己的类来定制设备管理。您需要实现自己的cmdbclient,它应该与您希望填充solace的任何配置系统集成。 有关各种活动的示例,请参见bin。 运行 您可以使用 yaml客户端是指定环境的最简单方法。通过将"libsolace.plugins.yamlclient"添加到
libsolace.yaml中的插件列表,以及设置"solace_cmdb_plugin:yamlclient" 你应该实现你自己与你使用的任何CMDB的集成。请参阅CMDBclient plugin类和相关联的
插件结构的libpipeline.yaml属性以及如何配置libsolace以使用它。 任何CMDB实现都必须实现在cmdbclient.py示例中定义的方法。 请参见./bin/solace-provision.py——帮助 在配置中定义一个"dev"环境,如libsolace-tests.yaml所示。然后您可以按如下方式运行测试: nosetests-d tests.unittests.test\u solace\u用户:test solace user--logging level=info--nologcapture-v nosetests-d tests.unittests.test_solace_user:testsolaceuser.test_create_user--logging level=info--nologcapture-v libsolace_config=libsolace-tests.yaml nosetests--with coverage--cover package=libsolace 做doctest 制作HTML概述
安装
lxml
和pyyaml
pip install libsolace
API文档
XML生成器
>>>document=SolaceXMLBuilder(version="soltr/6_2")>>>document.create.client_username.username="myUserName">>>document.create.client_username.vpn_name="dev_MyVPN">>>str(document)'<rpc semp-version="soltr/6_2"><create><client-username><username>myUserName</username><vpn-name>dev_MyVPN</vpn-name></client-username></create></rpc>'
>>>fromlibsolace.SolaceAPIimportSolaceAPI>>>connection=SolaceAPI("dev")>>># VMR: connection = SolaceAPI("dev", detect_status=False, version="soltr/7_1_1")>>># create the command for creating a new user via the "SolaceUser" plugin>>>plugin_request=connection.manage("SolaceUser").create_user(client_username="foo",vpn_name="bar")>>>plugin_request.xml'<rpc semp-version="soltr/7_1_1"><create><client-username><username>foo</username><vpn-name>bar</vpn-name></client-username></create></rpc>'>>>plugin_request.kwargs{'vpn_name':'bar','primaryOnly':True,'backupOnly':True,'client_username':'foo'}
>>>fromlibsolace.SolaceAPIimportSolaceAPI>>>conn=SolaceAPI("dev")>>>conn.manage("SolaceUser").get(client_username="dev_testvpn",vpn_name="dev_testvpn")[{'HOST':'http://solace1/SEMP',u'rpc-reply':{u'rpc':{u'show':{u'client-username':{u'client-usernames':{u'num-total-client-usernames':u'763',u'max-num-total-client-usernames':u'9002',u'num-dynamic-client-usernames':u'0',u'num-configured-client-usernames':u'763',u'client-username':{u'profile':u'glassfish',u'dynamically-configured':u'false',u'acl-profile':u'dev_testvpn',u'max-endpoints':u'16000',u'client-username':u'dev_testvpn',u'max-connections-service-smf':u'9000',u'enabled':u'true',u'message-vpn':u'dev_testvpn',u'password-configured':u'true',u'num-clients':u'0',u'max-connections-service-web':u'9000',u'num-endpoints':u'3',u'subscription-manager':u'false',u'authorization-group':None,u'max-connections':u'500',u'num-clients-service-web':u'0',u'guaranteed-endpoint-permission-override':u'false',u'num-clients-service-smf':u'0'}}}}},u'execute-result':{u'@code':u'ok'},u'@semp-version':u'soltr/7_1_1'}},{'HOST':'http://solace2/SEMP',u'rpc-reply':{u'rpc':{u'show':{u'client-username':{u'client-usernames':{u'num-total-client-usernames':u'755',u'max-num-total-client-usernames':u'9002',u'num-dynamic-client-usernames':u'0',u'num-configured-client-usernames':u'755',u'client-username':{u'profile':u'glassfish',u'dynamically-configured':u'false',u'acl-profile':u'dev_testvpn',u'max-endpoints':u'16000',u'client-username':u'dev_testvpn',u'max-connections-service-smf':u'9000',u'enabled':u'true',u'message-vpn':u'dev_testvpn',u'password-configured':u'true',u'num-clients':u'0',u'max-connections-service-web':u'9000',u'num-endpoints':u'4',u'subscription-manager':u'false',u'authorization-group':None,u'max-connections':u'500',u'num-clients-service-web':u'0',u'guaranteed-endpoint-permission-override':u'false',u'num-clients-service-smf':u'0'}}}}},u'execute-result':{u'@code':u'ok'},u'@semp-version':u'soltr/7_1_1'}}]
>>>fromlibsolace.SolaceAPIimportSolaceAPI>>>conn=SolaceAPI("dev",detect_status=False,version="soltr/7_1_1)>>>conn.manage("SolaceUser").get(client_username="dev_testvpn",vpn_name="dev_testvpn")[{'HOST':'http://solace3:8080/SEMP',u'rpc-reply':{u'rpc':{u'show':{u'client-username':{u'client-usernames':{u'num-total-client-usernames':u'10',u'max-num-total-client-usernames':u'1002',u'num-dynamic-client-usernames':u'0',u'num-configured-client-usernames':u'10'}}}},u'execute-result':{u'@code':u'ok'},u'@semp-version':u'soltr/7_1_1'}},None]
CMDB配置数据和命名模式
* dev_MyVPN
* qa1_productA
* dev_productA
限制
-
use\u
,因此solacenode类将用-
替换\u
反之亦然,视需要而定。
供应
# single VMR "au_dev3"
./bin/solace-provision.py -e au_dev3 --no-detect-status -p MySolaceEcosystem --soltr_version="soltr/7_1_1"# 2 appliance cluster "dev"
./bin/solace-provision.py -e dev -p MySolaceEcosystem
配置
libsolace.yaml
文件,以便知道哪些环境存在,哪些设备是这些环境的一部分
环境。单个设备可以是多个环境的一部分。libsolace.yaml
文件在中搜索:插件
bin
课程
make html
生成所有sphinx文档。
使doctest-d测试docstrings站点管理/资源调配
solace provision.py
bin在多个数据中心或环境中管理一组简单的配置项,
它可以提供整个VPN、队列、配置文件和用户。 ./bin/solace-provision.py -e dev --no-detect-status -p MySolaceEcosystem --soltr_version="soltr/7_1_1"
yamlclient
---VPNS:MySolaceEcosystem:-vpn_config:spool_size:1024password:d0nt_u5e_th1sid:au_testvpnname:au_testvpn-vpn_config:spool_size:1024password:d0nt_u5e_th1sid:au_testvpn2name:au_testvpn2QUEUES:au_testvpn:-name:testqueue1queue_config:exclusive:"true"queue_size:4096retries:0max_bind_count:1000owner:au_testproductAconsume:allUSERS:au_testvpn:-username:au_testproductApassword:somepasswordau_testvpn2:-username:au_testproductApassword:somepassword
与自定义CMDB集成
运行资源调配任务
测试
单个插件
单次试验
全部覆盖
文档
博士学位
HTML
推荐PyPI第三方库