sudo pip install nsxramlclient
sneaku-mbpro:Desktop sneaku$ sudo pip install nsxramlclient Password: Collecting nsxramlclient Downloading nsxramlclient-1.0.1.tar.gz Collecting pyraml-parser>=0.1.3 (from nsxramlclient) Downloading pyraml-parser-0.1.5.tar.gz Collecting lxml (from nsxramlclient) Downloading lxml-3.4.4.tar.gz (3.5MB) 100% |████████████████████████████████| 3.5MB 147kB/s Collecting requests>=2.7.0 (from nsxramlclient) Downloading requests-2.7.0-py2.py3-none-any.whl (470kB) 100% |████████████████████████████████| 471kB 455kB/s Requirement already satisfied (use --upgrade to upgrade): setuptools in /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python (from pyraml-parser>=0.1.3->nsxramlclient) Collecting PyYAML>=3.10 (from pyraml-parser>=0.1.3->nsxramlclient) Downloading PyYAML-3.11.tar.gz (248kB) 100% |████████████████████████████████| 249kB 1.2MB/s Requirement already satisfied (use --upgrade to upgrade): six>=1.9.0 in /Library/Python/2.7/site-packages (from pyraml-parser>=0.1.3->nsxramlclient) Installing collected packages: PyYAML, pyraml-parser, lxml, requests, nsxramlclient Running setup.py install for PyYAML Running setup.py install for pyraml-parser Running setup.py install for lxml Found existing installation: requests 2.5.0 Uninstalling requests-2.5.0: Successfully uninstalled requests-2.5.0 Running setup.py install for nsxramlclient Successfully installed PyYAML-3.11 lxml-3.4.4 nsxramlclient-1.0.1 pyraml-parser-0.1.5 requests-2.7.0 sneaku-mbpro:Desktop sneaku$
After a little wait, you should have the NSXRAMLCLIENT installed.
Now apparently we just jump into our python environment
sneaku-mbpro:Desktop sneaku$ python Python 2.7.10 (default, Jul 14 2015, 19:46:27) [GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.39)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>>
and import the nsxramlclient module, set some variables, remembering that the path to the RAML file is the absolute path, not a relative path.
from nsxramlclient.client import NsxClient nsxraml_file = '/Users/sneaku/Documents/07-NSXRAML/Repositories/NSXRAML/nsxraml-master/nsxvapiv614.raml' nsxmanager = '10.29.5.211' nsx_username = 'admin' nsx_password = 'default'
Create a session to our nsx manager.
client_session = NsxClient(nsxraml_file, nsxmanager, nsx_username, nsx_password, debug=False)
sneaku-mbpro:Desktop sneaku$ python Python 2.7.10 (default, Jul 14 2015, 19:46:27) [GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.39)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> >>> from nsxramlclient.client import NsxClient >>> >>> nsxraml_file = '/Users/sneaku/Documents/07-NSXRAML/Repositories/NSXRAML/nsxraml-master/nsxvapiv614.raml' >>> nsxmanager = '10.29.5.211' >>> nsx_username = 'admin' >>> nsx_password = 'default' >>> >>> client_session = NsxClient(nsxraml_file, nsxmanager, nsx_username, nsx_password, debug=False) >>>
Now lets do something simple, like check the sso configuration
client_session.read('ssoConfig')
>>> client_session.read('ssoConfig') OrderedDict([('status', 200), ('body', {'ssoConfig': {'vsmSolutionName': 'VSM_SOLUTION_1dafd442-2e1d-4a61-b538-3acb4c60658e', 'ssoAdminUsername': 'administrator@vsphere.local', 'ssoLookupServiceUrl': 'https://10.29.5.210:443/lookupservice/sdk'}}), ('location', None), ('objectId', None), ('Etag', None)])
client_session.read('nsxEdges')
>>> client_session.read('nsxEdges') OrderedDict([('status', 200), ('body', {'pagedEdgeList': {'edgePage': {'pagingInfo': {'sortOrderAscending': 'true', 'totalCount': '3', 'startIndex': '0', 'sortBy': 'id', 'pageSize': '256'}, 'edgeSummary': [{'edgeType': 'gatewayServices', 'recentJobInfo': {'status': 'SUCCESS', 'jobId': 'jobdata-2628'}, 'hypervisorAssist': 'false', 'id': 'edge-1', 'edgeStatus': 'GREEN', 'objectId': 'edge-1', 'nodeId': '90b9aba3-1d2d-4e1a-82f4-7f51b907b209', 'datacenterName': 'SneakU 6.2 VDC', 'state': 'deployed', 'clientHandle': None, 'type': {'typeName': 'Edge'}, 'revision': '20', 'vsmUuid': '564DB5DE-B47E-A83E-CB5D-915368D5EA23', 'appliancesSummary': {'activeVseHaIndex': '0', 'vmMoidOfActiveVse': 'vm-21', 'vmVersion': '6.2.0', 'numberOfDeployedVms': '1', 'fqdn': 'ComputeFW', 'vmBuildInfo': '6.2.0-2982179', 'applianceSize': 'compact', 'communicationChannel': 'msgbus', 'hostMoidOfActiveVse': 'host-10', 'vmNameOfActiveVse': 'ComputeFW-0', 'hostNameOfActiveVse': '10.29.5.128', 'dataStoreMoidOfActiveVse': 'datastore-11', 'resourcePoolNameOfActiveVse': 'Resources', 'dataStoreNameOfActiveVse': 'datastore1', 'statusFromVseUpdatedOn': '1442550646622', 'resourcePoolMoidOfActiveVse': 'resgroup-8'}, 'extendedAttributes': None, 'universalRevision': '0', 'allowedActions': {'string': ['Change Log Level', 'Add Edge Appliance', 'Delete Edge Appliance', 'Edit Edge Appliance', 'Edit CLI Credentials', 'Change edge appliance size', 'Force Sync', 'Redeploy Edge', 'Change Edge Appliance Core Dump Configuration', 'Enable hypervisorAssist', 'Edit Highavailability', 'Edit Dns', 'Edit Syslog', 'Edit Automatic Rule Generation Settings', 'Disable SSH', 'Download Edge TechSupport Logs']}, 'objectTypeName': 'Edge', 'isUniversal': 'false', 'name': 'ComputeFW', 'numberOfConnectedVnics': '2', 'apiVersion': '4.0', 'tenantId': 'default', 'datacenterMoid': 'datacenter-2'}, {'edgeType': 'distributedRouter', 'recentJobInfo': {'status': 'SUCCESS', 'jobId': 'jobdata-2620'}, 'apiVersion': '4.0', 'edgeAssistId': '5000', 'edgeStatus': 'GREEN', 'edgeAssistInstanceName': 'Internal-IT+edge-29', 'objectId': 'edge-29', 'nodeId': '90b9aba3-1d2d-4e1a-82f4-7f51b907b209', 'id': 'edge-29', 'datacenterName': 'SneakU 6.2 VDC', 'state': 'deployed', 'clientHandle': None, 'type': {'typeName': 'Edge'}, 'revision': '8', 'vsmUuid': '564DB5DE-B47E-A83E-CB5D-915368D5EA23', 'appliancesSummary': {'activeVseHaIndex': '0', 'vmMoidOfActiveVse': 'vm-172', 'vmVersion': '6.2.0', 'numberOfDeployedVms': '1', 'fqdn': 'Internal-IT-DLR-01', 'vmBuildInfo': '6.2.0-2982179', 'applianceSize': 'compact', 'communicationChannel': 'msgbus', 'hostMoidOfActiveVse': 'host-10', 'vmNameOfActiveVse': 'Internal-IT-DLR-01-0', 'hostNameOfActiveVse': '10.29.5.128', 'dataStoreMoidOfActiveVse': 'datastore-11', 'resourcePoolNameOfActiveVse': 'Resources', 'dataStoreNameOfActiveVse': 'datastore1', 'statusFromVseUpdatedOn': '1442550646835', 'resourcePoolMoidOfActiveVse': 'resgroup-8'}, 'extendedAttributes': None, 'universalRevision': '0', 'allowedActions': {'string': ['Change Log Level', 'Add Edge Appliance', 'Delete Edge Appliance', 'Edit Edge Appliance', 'Edit CLI Credentials', 'Force Sync', 'Redeploy Edge', 'Change Edge Appliance Core Dump Configuration', 'Edit Highavailability', 'Edit Dns', 'Edit Syslog', 'Disable SSH', 'Download Edge TechSupport Logs']}, 'objectTypeName': 'Edge', 'isUniversal': 'false', 'name': 'Internal-IT-DLR-01', 'lrouterUuid': '79d086e1-42ca-4dbd-8f09-c0482aaf7e52', 'numberOfConnectedVnics': '3', 'hypervisorAssist': 'false', 'tenantId': 'Internal-IT', 'datacenterMoid': 'datacenter-2'}, {'edgeType': 'gatewayServices', 'recentJobInfo': {'status': 'SUCCESS', 'jobId': 'jobdata-2627'}, 'hypervisorAssist': 'false', 'id': 'edge-30', 'edgeStatus': 'GREEN', 'objectId': 'edge-30', 'nodeId': '90b9aba3-1d2d-4e1a-82f4-7f51b907b209', 'datacenterName': 'SneakU 6.2 VDC', 'state': 'deployed', 'clientHandle': None, 'type': {'typeName': 'Edge'}, 'revision': '5', 'vsmUuid': '564DB5DE-B47E-A83E-CB5D-915368D5EA23', 'appliancesSummary': {'activeVseHaIndex': '0', 'vmMoidOfActiveVse': 'vm-173', 'vmVersion': '6.2.0', 'numberOfDeployedVms': '1', 'fqdn': 'Internal-IT-ESG-01', 'vmBuildInfo': '6.2.0-2982179', 'applianceSize': 'compact', 'communicationChannel': 'msgbus', 'hostMoidOfActiveVse': 'host-10', 'vmNameOfActiveVse': 'Internal-IT-ESG-01-0', 'hostNameOfActiveVse': '10.29.5.128', 'dataStoreMoidOfActiveVse': 'datastore-11', 'resourcePoolNameOfActiveVse': 'Resources', 'dataStoreNameOfActiveVse': 'datastore1', 'statusFromVseUpdatedOn': '1442550648608', 'resourcePoolMoidOfActiveVse': 'resgroup-8'}, 'extendedAttributes': None, 'universalRevision': '0', 'allowedActions': {'string': ['Change Log Level', 'Add Edge Appliance', 'Delete Edge Appliance', 'Edit Edge Appliance', 'Edit CLI Credentials', 'Change edge appliance size', 'Force Sync', 'Redeploy Edge', 'Change Edge Appliance Core Dump Configuration', 'Enable hypervisorAssist', 'Edit Highavailability', 'Edit Dns', 'Edit Syslog', 'Edit Automatic Rule Generation Settings', 'Disable SSH', 'Download Edge TechSupport Logs']}, 'objectTypeName': 'Edge', 'isUniversal': 'false', 'name': 'Internal-IT-ESG-01', 'numberOfConnectedVnics': '2', 'apiVersion': '4.0', 'tenantId': 'Internal-IT', 'datacenterMoid': 'datacenter-2'}]}}}), ('location', None), ('objectId', None), ('Etag', None)])
And then we get a whole heap of data. Do it again and save it as a variable this time.
edgesList = client_session.read('nsxEdges')
Import the YAML module, which can be used to display the output in a more readable format.
import yaml print yaml.dump(edgesList)
>>> import yaml >>> print yaml.dump(edgesList) status: 200 body: pagedEdgeList: edgePage: edgeSummary: - allowedActions: string: [Change Log Level, Add Edge Appliance, Delete Edge Appliance, Edit Edge Appliance, Edit CLI Credentials, Change edge appliance size, Force Sync, Redeploy Edge, Change Edge Appliance Core Dump Configuration, Enable hypervisorAssist, Edit Highavailability, Edit Dns, Edit Syslog, Edit Automatic Rule Generation Settings, Disable SSH, Download Edge TechSupport Logs] apiVersion: '4.0' appliancesSummary: {activeVseHaIndex: '0', applianceSize: compact, communicationChannel: msgbus, dataStoreMoidOfActiveVse: datastore-11, dataStoreNameOfActiveVse: datastore1, fqdn: ComputeFW, hostMoidOfActiveVse: host-10, hostNameOfActiveVse: 10.29.5.128, numberOfDeployedVms: '1', resourcePoolMoidOfActiveVse: resgroup-8, resourcePoolNameOfActiveVse: Resources, statusFromVseUpdatedOn: '1442550766619', vmBuildInfo: 6.2.0-2982179, vmMoidOfActiveVse: vm-21, vmNameOfActiveVse: ComputeFW-0, vmVersion: 6.2.0} clientHandle: null datacenterMoid: datacenter-2 datacenterName: SneakU 6.2 VDC edgeStatus: GREEN edgeType: gatewayServices extendedAttributes: null hypervisorAssist: 'false' id: edge-1 isUniversal: 'false' name: ComputeFW nodeId: 90b9aba3-1d2d-4e1a-82f4-7f51b907b209 numberOfConnectedVnics: '2' objectId: edge-1 objectTypeName: Edge recentJobInfo: {jobId: jobdata-2628, status: SUCCESS} revision: '20' state: deployed tenantId: default type: {typeName: Edge} universalRevision: '0' vsmUuid: 564DB5DE-B47E-A83E-CB5D-915368D5EA23 - allowedActions: string: [Change Log Level, Add Edge Appliance, Delete Edge Appliance, Edit Edge Appliance, Edit CLI Credentials, Force Sync, Redeploy Edge, Change Edge Appliance Core Dump Configuration, Edit Highavailability, Edit Dns, Edit Syslog, Disable SSH, Download Edge TechSupport Logs] apiVersion: '4.0' appliancesSummary: {activeVseHaIndex: '0', applianceSize: compact, communicationChannel: msgbus, dataStoreMoidOfActiveVse: datastore-11, dataStoreNameOfActiveVse: datastore1, fqdn: Internal-IT-DLR-01, hostMoidOfActiveVse: host-10, hostNameOfActiveVse: 10.29.5.128, numberOfDeployedVms: '1', resourcePoolMoidOfActiveVse: resgroup-8, resourcePoolNameOfActiveVse: Resources, statusFromVseUpdatedOn: '1442550766835', vmBuildInfo: 6.2.0-2982179, vmMoidOfActiveVse: vm-172, vmNameOfActiveVse: Internal-IT-DLR-01-0, vmVersion: 6.2.0} clientHandle: null datacenterMoid: datacenter-2 datacenterName: SneakU 6.2 VDC edgeAssistId: '5000' edgeAssistInstanceName: Internal-IT+edge-29 edgeStatus: GREEN edgeType: distributedRouter extendedAttributes: null hypervisorAssist: 'false' id: edge-29 isUniversal: 'false' lrouterUuid: 79d086e1-42ca-4dbd-8f09-c0482aaf7e52 name: Internal-IT-DLR-01 nodeId: 90b9aba3-1d2d-4e1a-82f4-7f51b907b209 numberOfConnectedVnics: '3' objectId: edge-29 objectTypeName: Edge recentJobInfo: {jobId: jobdata-2620, status: SUCCESS} revision: '8' state: deployed tenantId: Internal-IT type: {typeName: Edge} universalRevision: '0' vsmUuid: 564DB5DE-B47E-A83E-CB5D-915368D5EA23 - allowedActions: string: [Change Log Level, Add Edge Appliance, Delete Edge Appliance, Edit Edge Appliance, Edit CLI Credentials, Change edge appliance size, Force Sync, Redeploy Edge, Change Edge Appliance Core Dump Configuration, Enable hypervisorAssist, Edit Highavailability, Edit Dns, Edit Syslog, Edit Automatic Rule Generation Settings, Disable SSH, Download Edge TechSupport Logs] apiVersion: '4.0' appliancesSummary: {activeVseHaIndex: '0', applianceSize: compact, communicationChannel: msgbus, dataStoreMoidOfActiveVse: datastore-11, dataStoreNameOfActiveVse: datastore1, fqdn: Internal-IT-ESG-01, hostMoidOfActiveVse: host-10, hostNameOfActiveVse: 10.29.5.128, numberOfDeployedVms: '1', resourcePoolMoidOfActiveVse: resgroup-8, resourcePoolNameOfActiveVse: Resources, statusFromVseUpdatedOn: '1442550768602', vmBuildInfo: 6.2.0-2982179, vmMoidOfActiveVse: vm-173, vmNameOfActiveVse: Internal-IT-ESG-01-0, vmVersion: 6.2.0} clientHandle: null datacenterMoid: datacenter-2 datacenterName: SneakU 6.2 VDC edgeStatus: GREEN edgeType: gatewayServices extendedAttributes: null hypervisorAssist: 'false' id: edge-30 isUniversal: 'false' name: Internal-IT-ESG-01 nodeId: 90b9aba3-1d2d-4e1a-82f4-7f51b907b209 numberOfConnectedVnics: '2' objectId: edge-30 objectTypeName: Edge recentJobInfo: {jobId: jobdata-2627, status: SUCCESS} revision: '5' state: deployed tenantId: Internal-IT type: {typeName: Edge} universalRevision: '0' vsmUuid: 564DB5DE-B47E-A83E-CB5D-915368D5EA23 pagingInfo: {pageSize: '256', sortBy: id, sortOrderAscending: 'true', startIndex: '0', totalCount: '3'} location: null objectId: null Etag: null
If you change the default_flow_style to False, it makes it a bit more readable again.
print yaml.dump(edgesList, default_flow_style=False)
>>> print yaml.dump(edgesList, default_flow_style=False) status: 200 body: pagedEdgeList: edgePage: edgeSummary: - allowedActions: string: - Change Log Level - Add Edge Appliance - Delete Edge Appliance - Edit Edge Appliance - Edit CLI Credentials - Change edge appliance size - Force Sync - Redeploy Edge - Change Edge Appliance Core Dump Configuration - Enable hypervisorAssist - Edit Highavailability - Edit Dns - Edit Syslog - Edit Automatic Rule Generation Settings - Disable SSH - Download Edge TechSupport Logs apiVersion: '4.0' appliancesSummary: activeVseHaIndex: '0' applianceSize: compact communicationChannel: msgbus dataStoreMoidOfActiveVse: datastore-11 dataStoreNameOfActiveVse: datastore1 fqdn: ComputeFW hostMoidOfActiveVse: host-10 hostNameOfActiveVse: 10.29.5.128 numberOfDeployedVms: '1' resourcePoolMoidOfActiveVse: resgroup-8 resourcePoolNameOfActiveVse: Resources statusFromVseUpdatedOn: '1442550766619' vmBuildInfo: 6.2.0-2982179 vmMoidOfActiveVse: vm-21 vmNameOfActiveVse: ComputeFW-0 vmVersion: 6.2.0 clientHandle: null datacenterMoid: datacenter-2 datacenterName: SneakU 6.2 VDC edgeStatus: GREEN edgeType: gatewayServices extendedAttributes: null hypervisorAssist: 'false' id: edge-1 isUniversal: 'false' name: ComputeFW nodeId: 90b9aba3-1d2d-4e1a-82f4-7f51b907b209 numberOfConnectedVnics: '2' objectId: edge-1 objectTypeName: Edge recentJobInfo: jobId: jobdata-2628 status: SUCCESS revision: '20' state: deployed tenantId: default type: typeName: Edge universalRevision: '0' vsmUuid: 564DB5DE-B47E-A83E-CB5D-915368D5EA23 - allowedActions: string: - Change Log Level - Add Edge Appliance - Delete Edge Appliance - Edit Edge Appliance - Edit CLI Credentials - Force Sync - Redeploy Edge - Change Edge Appliance Core Dump Configuration - Edit Highavailability - Edit Dns - Edit Syslog - Disable SSH - Download Edge TechSupport Logs apiVersion: '4.0' appliancesSummary: activeVseHaIndex: '0' applianceSize: compact communicationChannel: msgbus dataStoreMoidOfActiveVse: datastore-11 dataStoreNameOfActiveVse: datastore1 fqdn: Internal-IT-DLR-01 hostMoidOfActiveVse: host-10 hostNameOfActiveVse: 10.29.5.128 numberOfDeployedVms: '1' resourcePoolMoidOfActiveVse: resgroup-8 resourcePoolNameOfActiveVse: Resources statusFromVseUpdatedOn: '1442550766835' vmBuildInfo: 6.2.0-2982179 vmMoidOfActiveVse: vm-172 vmNameOfActiveVse: Internal-IT-DLR-01-0 vmVersion: 6.2.0 clientHandle: null datacenterMoid: datacenter-2 datacenterName: SneakU 6.2 VDC edgeAssistId: '5000' edgeAssistInstanceName: Internal-IT+edge-29 edgeStatus: GREEN edgeType: distributedRouter extendedAttributes: null hypervisorAssist: 'false' id: edge-29 isUniversal: 'false' lrouterUuid: 79d086e1-42ca-4dbd-8f09-c0482aaf7e52 name: Internal-IT-DLR-01 nodeId: 90b9aba3-1d2d-4e1a-82f4-7f51b907b209 numberOfConnectedVnics: '3' objectId: edge-29 objectTypeName: Edge recentJobInfo: jobId: jobdata-2620 status: SUCCESS revision: '8' state: deployed tenantId: Internal-IT type: typeName: Edge universalRevision: '0' vsmUuid: 564DB5DE-B47E-A83E-CB5D-915368D5EA23 - allowedActions: string: - Change Log Level - Add Edge Appliance - Delete Edge Appliance - Edit Edge Appliance - Edit CLI Credentials - Change edge appliance size - Force Sync - Redeploy Edge - Change Edge Appliance Core Dump Configuration - Enable hypervisorAssist - Edit Highavailability - Edit Dns - Edit Syslog - Edit Automatic Rule Generation Settings - Disable SSH - Download Edge TechSupport Logs apiVersion: '4.0' appliancesSummary: activeVseHaIndex: '0' applianceSize: compact communicationChannel: msgbus dataStoreMoidOfActiveVse: datastore-11 dataStoreNameOfActiveVse: datastore1 fqdn: Internal-IT-ESG-01 hostMoidOfActiveVse: host-10 hostNameOfActiveVse: 10.29.5.128 numberOfDeployedVms: '1' resourcePoolMoidOfActiveVse: resgroup-8 resourcePoolNameOfActiveVse: Resources statusFromVseUpdatedOn: '1442550768602' vmBuildInfo: 6.2.0-2982179 vmMoidOfActiveVse: vm-173 vmNameOfActiveVse: Internal-IT-ESG-01-0 vmVersion: 6.2.0 clientHandle: null datacenterMoid: datacenter-2 datacenterName: SneakU 6.2 VDC edgeStatus: GREEN edgeType: gatewayServices extendedAttributes: null hypervisorAssist: 'false' id: edge-30 isUniversal: 'false' name: Internal-IT-ESG-01 nodeId: 90b9aba3-1d2d-4e1a-82f4-7f51b907b209 numberOfConnectedVnics: '2' objectId: edge-30 objectTypeName: Edge recentJobInfo: jobId: jobdata-2627 status: SUCCESS revision: '5' state: deployed tenantId: Internal-IT type: typeName: Edge universalRevision: '0' vsmUuid: 564DB5DE-B47E-A83E-CB5D-915368D5EA23 pagingInfo: pageSize: '256' sortBy: id sortOrderAscending: 'true' startIndex: '0' totalCount: '3' location: null objectId: null Etag: null
Now let run through some more basic tasks
status = edgesList['status'] body = edgesList['body'] etag = edgesList['Etag'] location = edgesList['location'] objectid = edgesList['objectId']
>>> >>> status = edgesList['status'] >>> body = edgesList['body'] >>> etag = edgesList['Etag'] >>> location = edgesList['location'] >>> objectid = edgesList['objectId'] >>>
Display all edges
print body['pagedEdgeList']['edgePage']['edgeSummary']
>>> print body['pagedEdgeList']['edgePage']['edgeSummary'] [{'edgeType': 'gatewayServices', 'recentJobInfo': {'status': 'SUCCESS', 'jobId': 'jobdata-2628'}, 'hypervisorAssist': 'false', 'id': 'edge-1', 'edgeStatus': 'GREEN', 'objectId': 'edge-1', 'nodeId': '90b9aba3-1d2d-4e1a-82f4-7f51b907b209', 'datacenterName': 'SneakU 6.2 VDC', 'state': 'deployed', 'clientHandle': None, 'type': {'typeName': 'Edge'}, 'revision': '20', 'vsmUuid': '564DB5DE-B47E-A83E-CB5D-915368D5EA23', 'appliancesSummary': {'activeVseHaIndex': '0', 'vmMoidOfActiveVse': 'vm-21', 'vmVersion': '6.2.0', 'numberOfDeployedVms': '1', 'fqdn': 'ComputeFW', 'vmBuildInfo': '6.2.0-2982179', 'applianceSize': 'compact', 'communicationChannel': 'msgbus', 'hostMoidOfActiveVse': 'host-10', 'vmNameOfActiveVse': 'ComputeFW-0', 'hostNameOfActiveVse': '10.29.5.128', 'dataStoreMoidOfActiveVse': 'datastore-11', 'resourcePoolNameOfActiveVse': 'Resources', 'dataStoreNameOfActiveVse': 'datastore1', 'statusFromVseUpdatedOn': '1442550766619', 'resourcePoolMoidOfActiveVse': 'resgroup-8'}, 'extendedAttributes': None, 'universalRevision': '0', 'allowedActions': {'string': ['Change Log Level', 'Add Edge Appliance', 'Delete Edge Appliance', 'Edit Edge Appliance', 'Edit CLI Credentials', 'Change edge appliance size', 'Force Sync', 'Redeploy Edge', 'Change Edge Appliance Core Dump Configuration', 'Enable hypervisorAssist', 'Edit Highavailability', 'Edit Dns', 'Edit Syslog', 'Edit Automatic Rule Generation Settings', 'Disable SSH', 'Download Edge TechSupport Logs']}, 'objectTypeName': 'Edge', 'isUniversal': 'false', 'name': 'ComputeFW', 'numberOfConnectedVnics': '2', 'apiVersion': '4.0', 'tenantId': 'default', 'datacenterMoid': 'datacenter-2'}, {'edgeType': 'distributedRouter', 'recentJobInfo': {'status': 'SUCCESS', 'jobId': 'jobdata-2620'}, 'apiVersion': '4.0', 'edgeAssistId': '5000', 'edgeStatus': 'GREEN', 'edgeAssistInstanceName': 'Internal-IT+edge-29', 'objectId': 'edge-29', 'nodeId': '90b9aba3-1d2d-4e1a-82f4-7f51b907b209', 'id': 'edge-29', 'datacenterName': 'SneakU 6.2 VDC', 'state': 'deployed', 'clientHandle': None, 'type': {'typeName': 'Edge'}, 'revision': '8', 'vsmUuid': '564DB5DE-B47E-A83E-CB5D-915368D5EA23', 'appliancesSummary': {'activeVseHaIndex': '0', 'vmMoidOfActiveVse': 'vm-172', 'vmVersion': '6.2.0', 'numberOfDeployedVms': '1', 'fqdn': 'Internal-IT-DLR-01', 'vmBuildInfo': '6.2.0-2982179', 'applianceSize': 'compact', 'communicationChannel': 'msgbus', 'hostMoidOfActiveVse': 'host-10', 'vmNameOfActiveVse': 'Internal-IT-DLR-01-0', 'hostNameOfActiveVse': '10.29.5.128', 'dataStoreMoidOfActiveVse': 'datastore-11', 'resourcePoolNameOfActiveVse': 'Resources', 'dataStoreNameOfActiveVse': 'datastore1', 'statusFromVseUpdatedOn': '1442550766835', 'resourcePoolMoidOfActiveVse': 'resgroup-8'}, 'extendedAttributes': None, 'universalRevision': '0', 'allowedActions': {'string': ['Change Log Level', 'Add Edge Appliance', 'Delete Edge Appliance', 'Edit Edge Appliance', 'Edit CLI Credentials', 'Force Sync', 'Redeploy Edge', 'Change Edge Appliance Core Dump Configuration', 'Edit Highavailability', 'Edit Dns', 'Edit Syslog', 'Disable SSH', 'Download Edge TechSupport Logs']}, 'objectTypeName': 'Edge', 'isUniversal': 'false', 'name': 'Internal-IT-DLR-01', 'lrouterUuid': '79d086e1-42ca-4dbd-8f09-c0482aaf7e52', 'numberOfConnectedVnics': '3', 'hypervisorAssist': 'false', 'tenantId': 'Internal-IT', 'datacenterMoid': 'datacenter-2'}, {'edgeType': 'gatewayServices', 'recentJobInfo': {'status': 'SUCCESS', 'jobId': 'jobdata-2627'}, 'hypervisorAssist': 'false', 'id': 'edge-30', 'edgeStatus': 'GREEN', 'objectId': 'edge-30', 'nodeId': '90b9aba3-1d2d-4e1a-82f4-7f51b907b209', 'datacenterName': 'SneakU 6.2 VDC', 'state': 'deployed', 'clientHandle': None, 'type': {'typeName': 'Edge'}, 'revision': '5', 'vsmUuid': '564DB5DE-B47E-A83E-CB5D-915368D5EA23', 'appliancesSummary': {'activeVseHaIndex': '0', 'vmMoidOfActiveVse': 'vm-173', 'vmVersion': '6.2.0', 'numberOfDeployedVms': '1', 'fqdn': 'Internal-IT-ESG-01', 'vmBuildInfo': '6.2.0-2982179', 'applianceSize': 'compact', 'communicationChannel': 'msgbus', 'hostMoidOfActiveVse': 'host-10', 'vmNameOfActiveVse': 'Internal-IT-ESG-01-0', 'hostNameOfActiveVse': '10.29.5.128', 'dataStoreMoidOfActiveVse': 'datastore-11', 'resourcePoolNameOfActiveVse': 'Resources', 'dataStoreNameOfActiveVse': 'datastore1', 'statusFromVseUpdatedOn': '1442550768602', 'resourcePoolMoidOfActiveVse': 'resgroup-8'}, 'extendedAttributes': None, 'universalRevision': '0', 'allowedActions': {'string': ['Change Log Level', 'Add Edge Appliance', 'Delete Edge Appliance', 'Edit Edge Appliance', 'Edit CLI Credentials', 'Change edge appliance size', 'Force Sync', 'Redeploy Edge', 'Change Edge Appliance Core Dump Configuration', 'Enable hypervisorAssist', 'Edit Highavailability', 'Edit Dns', 'Edit Syslog', 'Edit Automatic Rule Generation Settings', 'Disable SSH', 'Download Edge TechSupport Logs']}, 'objectTypeName': 'Edge', 'isUniversal': 'false', 'name': 'Internal-IT-ESG-01', 'numberOfConnectedVnics': '2', 'apiVersion': '4.0', 'tenantId': 'Internal-IT', 'datacenterMoid': 'datacenter-2'}]
Display the first edge details.
print body['pagedEdgeList']['edgePage']['edgeSummary'][0]
>>> print body['pagedEdgeList']['edgePage']['edgeSummary'][0] {'edgeType': 'gatewayServices', 'recentJobInfo': {'status': 'SUCCESS', 'jobId': 'jobdata-2628'}, 'hypervisorAssist': 'false', 'id': 'edge-1', 'edgeStatus': 'GREEN', 'objectId': 'edge-1', 'nodeId': '90b9aba3-1d2d-4e1a-82f4-7f51b907b209', 'datacenterName': 'SneakU 6.2 VDC', 'state': 'deployed', 'clientHandle': None, 'type': {'typeName': 'Edge'}, 'revision': '20', 'vsmUuid': '564DB5DE-B47E-A83E-CB5D-915368D5EA23', 'appliancesSummary': {'activeVseHaIndex': '0', 'vmMoidOfActiveVse': 'vm-21', 'vmVersion': '6.2.0', 'numberOfDeployedVms': '1', 'fqdn': 'ComputeFW', 'vmBuildInfo': '6.2.0-2982179', 'applianceSize': 'compact', 'communicationChannel': 'msgbus', 'hostMoidOfActiveVse': 'host-10', 'vmNameOfActiveVse': 'ComputeFW-0', 'hostNameOfActiveVse': '10.29.5.128', 'dataStoreMoidOfActiveVse': 'datastore-11', 'resourcePoolNameOfActiveVse': 'Resources', 'dataStoreNameOfActiveVse': 'datastore1', 'statusFromVseUpdatedOn': '1442550766619', 'resourcePoolMoidOfActiveVse': 'resgroup-8'}, 'extendedAttributes': None, 'universalRevision': '0', 'allowedActions': {'string': ['Change Log Level', 'Add Edge Appliance', 'Delete Edge Appliance', 'Edit Edge Appliance', 'Edit CLI Credentials', 'Change edge appliance size', 'Force Sync', 'Redeploy Edge', 'Change Edge Appliance Core Dump Configuration', 'Enable hypervisorAssist', 'Edit Highavailability', 'Edit Dns', 'Edit Syslog', 'Edit Automatic Rule Generation Settings', 'Disable SSH', 'Download Edge TechSupport Logs']}, 'objectTypeName': 'Edge', 'isUniversal': 'false', 'name': 'ComputeFW', 'numberOfConnectedVnics': '2', 'apiVersion': '4.0', 'tenantId': 'default', 'datacenterMoid': 'datacenter-2'}
Display the second edge details.
print body['pagedEdgeList']['edgePage']['edgeSummary’][1]
>>> print body['pagedEdgeList']['edgePage']['edgeSummary'][1] {'edgeType': 'distributedRouter', 'recentJobInfo': {'status': 'SUCCESS', 'jobId': 'jobdata-2620'}, 'apiVersion': '4.0', 'edgeAssistId': '5000', 'edgeStatus': 'GREEN', 'edgeAssistInstanceName': 'Internal-IT+edge-29', 'objectId': 'edge-29', 'nodeId': '90b9aba3-1d2d-4e1a-82f4-7f51b907b209', 'id': 'edge-29', 'datacenterName': 'SneakU 6.2 VDC', 'state': 'deployed', 'clientHandle': None, 'type': {'typeName': 'Edge'}, 'revision': '8', 'vsmUuid': '564DB5DE-B47E-A83E-CB5D-915368D5EA23', 'appliancesSummary': {'activeVseHaIndex': '0', 'vmMoidOfActiveVse': 'vm-172', 'vmVersion': '6.2.0', 'numberOfDeployedVms': '1', 'fqdn': 'Internal-IT-DLR-01', 'vmBuildInfo': '6.2.0-2982179', 'applianceSize': 'compact', 'communicationChannel': 'msgbus', 'hostMoidOfActiveVse': 'host-10', 'vmNameOfActiveVse': 'Internal-IT-DLR-01-0', 'hostNameOfActiveVse': '10.29.5.128', 'dataStoreMoidOfActiveVse': 'datastore-11', 'resourcePoolNameOfActiveVse': 'Resources', 'dataStoreNameOfActiveVse': 'datastore1', 'statusFromVseUpdatedOn': '1442550766835', 'resourcePoolMoidOfActiveVse': 'resgroup-8'}, 'extendedAttributes': None, 'universalRevision': '0', 'allowedActions': {'string': ['Change Log Level', 'Add Edge Appliance', 'Delete Edge Appliance', 'Edit Edge Appliance', 'Edit CLI Credentials', 'Force Sync', 'Redeploy Edge', 'Change Edge Appliance Core Dump Configuration', 'Edit Highavailability', 'Edit Dns', 'Edit Syslog', 'Disable SSH', 'Download Edge TechSupport Logs']}, 'objectTypeName': 'Edge', 'isUniversal': 'false', 'name': 'Internal-IT-DLR-01', 'lrouterUuid': '79d086e1-42ca-4dbd-8f09-c0482aaf7e52', 'numberOfConnectedVnics': '3', 'hypervisorAssist': 'false', 'tenantId': 'Internal-IT', 'datacenterMoid': 'datacenter-2'}
Saves all edge details to a variable.
allEdgeDetails = body['pagedEdgeList']['edgePage']['edgeSummary']
for x in allEdgeDetails: print x['id'] + ' | ' + x['name'] + ' | ' + x['tenantId']
>>> allEdgeDetails = body['pagedEdgeList']['edgePage']['edgeSummary'] >>> for x in allEdgeDetails: ... print x['id'] + ' | ' + x['name'] + ' | ' + x['tenantId'] ... edge-1 | ComputeFW | default edge-29 | Internal-IT-DLR-01 | Internal-IT edge-30 | Internal-IT-ESG-01 | Internal-IT
Get the actual config of the ComputeFW and display the output.
edgeDetails = client_session.read('nsxEdge', uri_parameters={'edgeId': 'edge-1'}) print yaml.dump(edgeDetails, default_flow_style=False)
>>> edgeDetails = client_session.read('nsxEdge', uri_parameters={'edgeId': 'edge-1'}) >>> print yaml.dump(edgeDetails, default_flow_style=False) status: 200 body: edge: appliances: appliance: datastoreId: datastore-11 datastoreName: datastore1 deployed: 'true' edgeId: edge-1 highAvailabilityIndex: '0' hostId: host-10 hostName: 10.29.5.128 resourcePoolId: domain-c7 resourcePoolName: NSX vcUuid: 500c7c84-2298-fdaa-4aaf-cb5f22788764 vmFolderId: group-v3 vmFolderName: vm vmHostname: ComputeFW-0 vmId: vm-21 vmName: ComputeFW-0 applianceSize: compact deployAppliances: 'true' autoConfiguration: enabled: 'true' rulePriority: high cliSettings: passwordExpiry: '99999' remoteAccess: 'true' sshLoginBannerText: '*************************************************************************** NOTICE TO USERS This computer system is the private property of its owner, whether individual, corporate or government. It is for authorized use only. Users (authorized or unauthorized) have no explicit or implicit expectation of privacy. Any or all uses of this system and all files on this system may be intercepted, monitored, recorded, copied, audited, inspected, and disclosed to your employer, to authorized site, government, and law enforcement personnel, as well as authorized officials of government agencies, both domestic and foreign. By using this system, the user consents to such interception, monitoring, recording, copying, auditing, inspection, and disclosure at the discretion of such personnel or officials. Unauthorized or improper use of this system may result in civil and criminal penalties and administrative or disciplinary action, as appropriate. By continuing to use this system you indicate your awareness of and consent to these terms and conditions of use. LOG OFF IMMEDIATELY if you do not agree to the conditions stated in this warning. ****************************************************************************' userName: admin datacenterMoid: datacenter-2 datacenterName: SneakU 6.2 VDC enableAesni: 'true' enableFips: 'false' features: bridges: enabled: 'false' version: '20' dhcp: enabled: 'false' ipPools: null logging: enable: 'false' logLevel: info staticBindings: null version: '20' dns: cacheSize: '16' dnsViews: dnsView: enabled: 'true' name: vsm-default-view recursion: 'false' viewId: view-0 viewMatch: ipAddress: any vnic: any enabled: 'false' listeners: vnic: any logging: enable: 'false' logLevel: info version: '20' featureConfig: - null - null - null firewall: defaultPolicy: action: accept loggingEnabled: 'true' enabled: 'true' firewallRules: firewallRule: - action: accept description: firewall enabled: 'true' id: '131074' loggingEnabled: 'false' name: firewall ruleTag: '131074' ruleType: internal_high source: exclude: 'false' vnicGroupId: vse - action: accept description: default rule for ingress traffic enabled: 'true' id: '131073' loggingEnabled: 'true' name: default rule for ingress traffic ruleTag: '131073' ruleType: default_policy globalConfig: dropInvalidTraffic: 'true' icmp6Timeout: '10' icmpTimeout: '10' ipGenericTimeout: '120' logInvalidTraffic: 'false' tcpAllowOutOfWindowPackets: 'false' tcpPickOngoingConnections: 'false' tcpSendResetForClosedVsePorts: 'true' tcpTimeoutClose: '30' tcpTimeoutEstablished: '3600' tcpTimeoutOpen: '30' udpTimeout: '60' version: '1' gslb: enabled: 'false' logging: enable: 'false' logLevel: info version: '1' highAvailability: declareDeadTime: '15' enabled: 'false' logging: enable: 'false' logLevel: info security: enabled: 'false' version: '20' ipsec: enabled: 'false' global: caCertificates: null crlCertificates: null psk: '******' logging: enable: 'false' logLevel: info sites: null version: '1' l2Vpn: enabled: 'false' logging: enable: 'false' logLevel: info version: '20' loadBalancer: accelerationEnabled: 'false' enableServiceInsertion: 'false' enabled: 'false' logging: enable: 'false' logLevel: info monitor: - interval: '5' maxRetries: '3' monitorId: monitor-1 name: default_tcp_monitor timeout: '15' type: tcp - interval: '5' maxRetries: '3' method: GET monitorId: monitor-2 name: default_http_monitor timeout: '15' type: http url: / - interval: '5' maxRetries: '3' method: GET monitorId: monitor-3 name: default_https_monitor timeout: '15' type: https url: / version: '1' nat: enabled: 'true' natRules: null version: '20' routing: enabled: 'true' ospf: defaultOriginate: 'false' enabled: 'false' gracefulRestart: 'true' ospfAreas: ospfArea: - areaId: '51' authentication: type: none type: nssa - areaId: '0' authentication: type: none type: normal ospfInterfaces: null redistribution: enabled: 'false' rules: null routingGlobalConfig: ecmp: 'false' logging: enable: 'false' logLevel: info staticRouting: staticRoutes: null version: '20' sslvpnConfig: advancedConfig: clientNotification: null enableCompression: 'false' enablePublicUrlAccess: 'false' forceVirtualKeyboard: 'false' preventMultipleLogon: 'false' randomizeVirtualkeys: 'false' timeout: forcedTimeout: '0' sessionIdleTimeout: '10' authenticationConfiguration: passwordAuthentication: authenticationTimeout: '1' primaryAuthServers: null secondaryAuthServer: null clientConfiguration: autoReconnect: 'true' upgradeNotification: 'false' enabled: 'false' layoutConfiguration: bodyColor: FFFFFF companyName: VMware logoBackgroundColor: 56A2D4 logoExtention: jpg logoUri: /api/4.0/edges/edge-1/sslvpn/config/layout/images/portallogo menuBarColor: '999999' portalTitle: VMware rowAlternativeColor: FFFFFF rowColor: F5F5F5 titleColor: '996600' topFrameColor: '000000' logging: enable: 'false' logLevel: info version: '20' syslog: enabled: 'false' version: '1' fqdn: ComputeFW hypervisorAssist: 'false' id: edge-1 isUniversal: 'false' name: ComputeFW queryDaemon: enabled: 'false' port: '5666' status: deployed tenant: default type: gatewayServices version: '20' vnics: vnic: - addressGroups: null enableProxyArp: 'false' enableSendRedirects: 'false' index: '0' isConnected: 'true' label: vNic_0 mtu: '1500' name: Uplink portgroupId: virtualwire-1 portgroupName: Compute-Uplink-LS type: uplink - addressGroups: addressGroup: primaryAddress: 7.7.7.2 subnetMask: 255.255.255.252 subnetPrefixLength: '30' enableProxyArp: 'false' enableSendRedirects: 'false' index: '1' isConnected: 'true' label: vNic_1 mtu: '1500' name: Internal-IT portgroupId: virtualwire-93 portgroupName: Internal-IT-ESG-Uplink type: uplink - addressGroups: null enableProxyArp: 'false' enableSendRedirects: 'true' index: '2' isConnected: 'false' label: vNic_2 mtu: '1500' name: vnic2 type: internal - addressGroups: null enableProxyArp: 'false' enableSendRedirects: 'true' index: '3' isConnected: 'false' label: vNic_3 mtu: '1500' name: vnic3 type: internal - addressGroups: null enableProxyArp: 'false' enableSendRedirects: 'true' index: '4' isConnected: 'false' label: vNic_4 mtu: '1500' name: vnic4 type: internal - addressGroups: null enableProxyArp: 'false' enableSendRedirects: 'true' index: '5' isConnected: 'false' label: vNic_5 mtu: '1500' name: vnic5 type: internal - addressGroups: null enableProxyArp: 'false' enableSendRedirects: 'true' index: '6' isConnected: 'false' label: vNic_6 mtu: '1500' name: vnic6 type: internal - addressGroups: null enableProxyArp: 'false' enableSendRedirects: 'true' index: '7' isConnected: 'false' label: vNic_7 mtu: '1500' name: vnic7 type: internal - addressGroups: null enableProxyArp: 'false' enableSendRedirects: 'true' index: '8' isConnected: 'false' label: vNic_8 mtu: '1500' name: vnic8 type: internal - addressGroups: null enableProxyArp: 'false' enableSendRedirects: 'true' index: '9' isConnected: 'false' label: vNic_9 mtu: '1500' name: vnic9 type: internal vseLogLevel: emergency location: null objectId: null Etag: null
To display a list of NICs on the edge.
for x in edgeDetails['body']['edge']['vnics']['vnic']: print x['name']
>>> for x in edgeDetails['body']['edge']['vnics']['vnic']: ... print x['name'] ... Uplink Internal-IT vnic2 vnic3 vnic4 vnic5 vnic6 vnic7 vnic8 vnic9
Show interfaces with an IP address configured.
for x in edgeDetails['body']['edge']['vnics']['vnic']: if x['addressGroups']: print x['name'] + ' | ' + x['addressGroups']['addressGroup']['primaryAddress'] + '/' + x['addressGroups']['addressGroup']['subnetPrefixLength'] + ' | ' + x['isConnected’]
>>> for x in edgeDetails['body']['edge']['vnics']['vnic']: ... if x['addressGroups']: ... print x['name'] + ' | ' + x['addressGroups']['addressGroup']['primaryAddress'] + '/' + x['addressGroups']['addressGroup']['subnetPrefixLength'] + ' | ' + x['isConnected’] ... Internal-IT | 7.7.7.2/30 | true
Now that I have got my head around how to work with the response data, I am going to see if I can re-write some of my other scripts using the NSXRAMLCLIENT. After I have finished my first one, I will put up a post comparing both scripts so it’s easy to see the differences.