diff --git a/README.md b/README.md index 72413b23..4914bf3e 100644 --- a/README.md +++ b/README.md @@ -21,11 +21,11 @@ samples require the vSphere Management SDK packages (pyVmomi) to be installed on The samples have been developed to work with python 2.7.x and 3.3+ ## Supported OnPrem vCenter Releases -vCenter 6.0, 6.5 and 6.7. +vCenter 6.0, 6.5, 6.7 and 7.0. Certain APIs and samples that are introduced in 6.5 release, such as vCenter, Virtual Machine and Appliance Management. Please refer to the notes in each sample for detailed compatibility information. ## Supported NSX-T Releases -NSX-T 2.2, 2.3, 2.5, VMC 1.7 +NSX-T 2.2, 2.3, 3.0 and VMC 1.7, 1.8, 1.9 ## VMware Cloud on AWS Support The VMware Cloud on AWS API and samples are currently available as a preview and are subject to change in the future. @@ -214,16 +214,17 @@ $ python samples/vsphere/vcenter/vm/list_vms.py -v ### vSphere API Documentation * [VMware Cloud on AWS vSphere (latest version)](https://vmware.github.io/vsphere-automation-sdk-python/vsphere/cloud/index.html) -* [vSphere 6.7.1 (latest)](https://vmware.github.io/vsphere-automation-sdk-python/vsphere/6.7.1/) -* Previous releases: [6.7.0](https://vmware.github.io/vsphere-automation-sdk-python/vsphere/6.7.0) [6.6.1](https://vmware.github.io/vsphere-automation-sdk-python/vsphere/6.6.1) [6.5](https://vmware.github.io/vsphere-automation-sdk-python/vsphere/6.5) [6.0](https://vmware.github.io/vsphere-automation-sdk-python/vsphere/6.0) +* [vSphere 7.0 (latest)](https://vmware.github.io/vsphere-automation-sdk-python/vsphere/7.0.0.1/) +* Previous releases: [6.7.1](https://vmware.github.io/vsphere-automation-sdk-python/vsphere/6.7.1/) [6.7.0](https://vmware.github.io/vsphere-automation-sdk-python/vsphere/6.7.0) [6.6.1](https://vmware.github.io/vsphere-automation-sdk-python/vsphere/6.6.1) [6.5](https://vmware.github.io/vsphere-automation-sdk-python/vsphere/6.5) [6.0](https://vmware.github.io/vsphere-automation-sdk-python/vsphere/6.0) ### VMware Cloud on AWS API Documentation * [VMware Cloud on AWS Console API](https://vmware.github.io/vsphere-automation-sdk-python/vmc/index.html) * [VMware Cloud on AWS Disaster Recovery as a Service (DRaaS) API](https://vmware.github.io/vsphere-automation-sdk-python/vmc-draas/index.html) -### NSX API Documentation +### NSX API Documentation +* [NSX-T Data Center](https://docs.vmware.com/en/VMware-NSX-T-Data-Center/index.html) * [NSX Manager APIs](https://vmware.github.io/vsphere-automation-sdk-python/nsx/nsx/index.html) - API for managing NSX-T cluster and transport nodes for on-prem customers * [NSX Policy](https://vmware.github.io/vsphere-automation-sdk-python/nsx/nsx_policy/index.html) - primary API for managing logical networks for on-prem customers * [NSX VMC Policy](https://vmware.github.io/vsphere-automation-sdk-python/nsx/nsx_vmc_policy/index.html) - primary API for managing logical networks for VMC customers @@ -240,7 +241,7 @@ Common issues you may run into while installing the sdk and running samples are Board members are volunteers from the SDK community and VMware staff members, board members are not held responsible for any issues which may occur from running of samples from this repository. Members: -* Tianhao He (VMware) +* Anusha Hegde (VMware) * Pavan Bidkar (VMware) ## VMware Resources diff --git a/lib/vapi-client-bindings/index.html b/lib/vapi-client-bindings/index.html index 431b1e73..c08ce50a 100644 --- a/lib/vapi-client-bindings/index.html +++ b/lib/vapi-client-bindings/index.html @@ -1 +1 @@ -vapi_client_bindings-3.2.0-py2.py3-none-any.whl
+vapi_client_bindings-3.3.0-py2.py3-none-any.whl
\ No newline at end of file diff --git a/lib/vapi-client-bindings/vapi_client_bindings-3.3.0-py2.py3-none-any.whl b/lib/vapi-client-bindings/vapi_client_bindings-3.3.0-py2.py3-none-any.whl new file mode 100644 index 00000000..c5f6e7d1 Binary files /dev/null and b/lib/vapi-client-bindings/vapi_client_bindings-3.3.0-py2.py3-none-any.whl differ diff --git a/lib/vapi-common-client/index.html b/lib/vapi-common-client/index.html index 12f6a356..5f07a387 100644 --- a/lib/vapi-common-client/index.html +++ b/lib/vapi-common-client/index.html @@ -1 +1 @@ -vapi_common_client-2.14.0-py2.py3-none-any.whl
\ No newline at end of file +vapi_common_client-2.15.0-py2.py3-none-any.whl
\ No newline at end of file diff --git a/lib/vapi-common-client/vapi_common_client-2.15.0-py2.py3-none-any.whl b/lib/vapi-common-client/vapi_common_client-2.15.0-py2.py3-none-any.whl new file mode 100644 index 00000000..af96b5ca Binary files /dev/null and b/lib/vapi-common-client/vapi_common_client-2.15.0-py2.py3-none-any.whl differ diff --git a/lib/vapi-runtime/index.html b/lib/vapi-runtime/index.html index 39829507..caf1e7df 100644 --- a/lib/vapi-runtime/index.html +++ b/lib/vapi-runtime/index.html @@ -1 +1 @@ -vapi_runtime-2.14.0-py2.py3-none-any.whl
\ No newline at end of file +vapi_runtime-2.15.0-py2.py3-none-any.whl
\ No newline at end of file diff --git a/lib/vapi-runtime/vapi_runtime-2.15.0-py2.py3-none-any.whl b/lib/vapi-runtime/vapi_runtime-2.15.0-py2.py3-none-any.whl new file mode 100644 index 00000000..e04f9141 Binary files /dev/null and b/lib/vapi-runtime/vapi_runtime-2.15.0-py2.py3-none-any.whl differ diff --git a/requirements.txt b/requirements.txt index 38d9ea4d..d8d6974c 100644 --- a/requirements.txt +++ b/requirements.txt @@ -2,7 +2,7 @@ lxml >= 4.3.0 pyVmomi >= 6.7 suds ; python_version < '3' suds-jurko ; python_version >= '3.0' -vapi-client-bindings == 3.2.0 +vapi-client-bindings == 3.3.0 vmc-client-bindings nsx-python-sdk nsx-policy-python-sdk diff --git a/samples/vsphere/vcenter/converge/converge_sample.py b/samples/vsphere/vcenter/converge/converge_sample.py deleted file mode 100644 index 6f4c6548..00000000 --- a/samples/vsphere/vcenter/converge/converge_sample.py +++ /dev/null @@ -1,106 +0,0 @@ -#!/usr/bin/env python -""" -* ******************************************************* -* Copyright (c) VMware, Inc. 2019. All Rights Reserved. -* SPDX-License-Identifier: MIT -* ******************************************************* -* -* DISCLAIMER. THIS PROGRAM IS PROVIDED TO YOU "AS IS" WITHOUT -* WARRANTIES OR CONDITIONS OF ANY KIND, WHETHER ORAL OR WRITTEN, -* EXPRESS OR IMPLIED. THE AUTHOR SPECIFICALLY DISCLAIMS ANY IMPLIED -* WARRANTIES OR CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, -* NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR PURPOSE. -""" - -__author__ = 'VMware, Inc.' - -import os -import requests - -from com.vmware.vcenter.system_config_client import DeploymentType - -from samples.vsphere.common import sample_cli, sample_util -from samples.vsphere.common.ssl_helper import get_unverified_session - -from vmware.vapi.core import ApplicationContext -from vmware.vapi.lib.constants import SHOW_UNRELEASED_APIS -from vmware.vapi.lib.connect import get_connector, get_requests_connector -from vmware.vapi.stdlib.client.factories import StubConfigurationFactory -from vmware.vapi.security.client.security_context_filter import \ - LegacySecurityContextFilter, ApiProviderFilter -from vmware.vapi.security.user_password import \ - create_user_password_security_context - - -class SampleConverge(object): - """ - Sample demonstrating vCenter External to Embedded Convergence operation - Sample Prerequisites: - vCenter on linux platform with external Platform Services Controller - """ - def __init__(self): - parser = sample_cli.build_arg_parser() - parser.add_argument( - '-a', '--sso_admin_username', action='store', required=True, - default='Sample_PSC_username', - help='Platform Services Controller admin username') - parser.add_argument( - '-w', '--sso_admin_password', action='store', required=True, - default='Sample_PSC_Admin_Password', - help='Platform Services Controller admin password') - - args = sample_util.process_cli_args(parser.parse_args()) - self.username = args.username - self.password = args.password - self.sso_admin_username = args.sso_admin_username - self.sso_admin_password = args.sso_admin_password - self.server = args.server - self.skipverification = args.skipverification - - def run(self): - """ - Converges the external PSC into the Management Node without shutting - down the Platform Services Controller. - """ - session = get_unverified_session() if self.skipverification else None - - sec_ctx = create_user_password_security_context( - self.username, self.password) - # TODO The following line to be deleted when API is changed to - # @Release type. As of now this is only for testing - app_ctx = ApplicationContext({SHOW_UNRELEASED_APIS: "True"}) - - connector = get_requests_connector( - session=session, - msg_protocol='json', - url='https://{0}:5480/api'.format(self.server), - provider_filter_chain=[ - LegacySecurityContextFilter( - security_context=sec_ctx)]) - connector.set_application_context(app_ctx) - stub_config = StubConfigurationFactory.new_std_configuration(connector) - deployment_type = DeploymentType(stub_config) - """ - Running convergence task precheck. - Remove the line ", only_precheck = True" to perform convergence. - """ - convergence_task = deployment_type.convert_to_vcsa_embedded_task( - DeploymentType.ConvergenceSpec(DeploymentType.PscInfo( - sso_admin_username=self.sso_admin_username, - sso_admin_password=self.sso_admin_password), - only_precheck=True)) - - print('Converge operation started with task ID: \n{0}'.format( - convergence_task.get_task_id())) - - -def main(): - """ - Entry point for the sample client - """ - converge = SampleConverge() - converge.run() - - -if __name__ == '__main__': - main() diff --git a/samples/vsphere/vcenter/converge/decommission_sample.py b/samples/vsphere/vcenter/converge/decommission_sample.py deleted file mode 100644 index 82fc0073..00000000 --- a/samples/vsphere/vcenter/converge/decommission_sample.py +++ /dev/null @@ -1,110 +0,0 @@ -#!/usr/bin/env python -""" -* ******************************************************* -* Copyright (c) VMware, Inc. 2019. All Rights Reserved. -* SPDX-License-Identifier: MIT -* ******************************************************* -* -* DISCLAIMER. THIS PROGRAM IS PROVIDED TO YOU "AS IS" WITHOUT -* WARRANTIES OR CONDITIONS OF ANY KIND, WHETHER ORAL OR WRITTEN, -* EXPRESS OR IMPLIED. THE AUTHOR SPECIFICALLY DISCLAIMS ANY IMPLIED -* WARRANTIES OR CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, -* NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR PURPOSE. -""" - -__author__ = 'VMware, Inc.' - -import requests - - -from com.vmware.vcenter.topology_client import Pscs - -from samples.vsphere.common import sample_cli, sample_util -from samples.vsphere.common.ssl_helper import get_unverified_session - -from vmware.vapi.lib.connect import get_connector, get_requests_connector -from vmware.vapi.stdlib.client.factories import StubConfigurationFactory - -from vmware.vapi.security.user_password import \ - create_user_password_security_context -from vmware.vapi.core import ApplicationContext -from vmware.vapi.lib.constants import SHOW_UNRELEASED_APIS - - -class SampleDecommission(object): - """ - Demonstrates Decommission operation for external PSC - Sample Prerequisites: - Embedded vCenter on linux platform with replication to Platform Services - Controller to be decommissioned - """ - def __init__(self): - parser = sample_cli.build_arg_parser() - parser.add_argument( - '-psc_h', '--psc_host_name', action='store', - default='Sample_PSC_hostname', - help='Platform Services Controller FQDN / IP as per configuration') - parser.add_argument( - '-a', '--sso_admin_username', action='store', - default='Sample_PSC_username', - help='Platform Services Controller admin username') - parser.add_argument( - '-w', '--sso_admin_password', action='store', - default='Sample_PSC_Admin_Password', - help='Platform Services Controller admin password') - - args = sample_util.process_cli_args(parser.parse_args()) - self.psc_hostname = args.psc_host_name - self.username = args.username - self.password = args.password - self.sso_admin_username = args.sso_admin_username - self.sso_admin_password = args.sso_admin_password - self.server = args.server - self.skipverification = args.skipverification - - def run(self): - """ - Decommissions a PSC node from a Management Node - """ - session = get_unverified_session() if self.skipverification else None - - sec_ctx = create_user_password_security_context( - self.username, self.password) - # TODO The following line to be deleted when API is changed to - # @Release type. As of now this is only for testing - app_ctx = ApplicationContext({SHOW_UNRELEASED_APIS: "True"}) - - connector = get_requests_connector( - session=session, - msg_protocol='json', - url='https://{0}:5480/api'.format(self.server)) - connector.set_security_context(sec_ctx) - connector.set_application_context(app_ctx) - stub_config = StubConfigurationFactory.new_std_configuration(connector) - pscs_obj = Pscs(stub_config) - """ - Running decommission task precheck. - Remove the line ", only_precheck = True" to perform decommission. - """ - decommission_task = pscs_obj.decommission_task( - self.psc_hostname, - Pscs.DecommissionSpec( - sso_admin_username=self.sso_admin_username, - sso_admin_password=self.sso_admin_password), - only_precheck=True) - - print( - 'Decommission operation started with task ID: \n%s', - decommission_task.get_task_id()) - - -def main(): - """ - Entry point for the sample client - """ - decommision_obj = SampleDecommission() - decommision_obj.run() - - -if __name__ == '__main__': - main() diff --git a/samples/vsphere/vcenter/discovery_and_plan/README.md b/samples/vsphere/vcenter/discovery_and_plan/README.md new file mode 100644 index 00000000..924507de --- /dev/null +++ b/samples/vsphere/vcenter/discovery_and_plan/README.md @@ -0,0 +1,66 @@ +This directory contains samples for the Discovery and Plan APIs. Discovery and Plan is a new feature for the VCSA. VMware Discovery and Plan solution consists of vSphere, vSAN, esx, drivers frimware, 2nd party products (NSX, VRA, ETC) and 3rd party products. Though it's a tightly integrated software stack, it's complex process to patch software for Clusters, including ESXi hosts and vCenter. + +For more information, please review the official release notes. + +Discovery and Plan having the followings APIs: + * Discovery: Provides the user options to choose from, to add VMware products manually + * Report: To download the report generated by the interop, precheck, etc operations. + * Update client: Listing all available updates and upgrades for the products installed in the user( at the Moment we only do it for ESX and vCenter). Later on the user can select one of the patches available and can plan an actual patch or upgrade for the selected version. + +Overview of the directory code samples: + + * discovery_sample.py - running a simple workflow to discover the products . It's having below APIs. + GET https://{server}/lcm/rest/vcenter/lcm/discovery/product-catalog + GET https://{server}/lcm/rest/vcenter/lcm/discovery/associated-products + POST https://{server}/lcm/rest/vcenter/lcm/discovery/associated-products. Create spec as below. + CreateSpec { + /** + * The name of the product. + */ + String productName; + + /** + * Current product version. + */ + String version; + + /** + * The list of hostname/IPs of the instances of the VMware products + * deployed in the customer environment. + */ + Optional> deployments; + } + GET https://{server}/lcm/rest/vcenter/lcm/discovery/associated-products/{product-id} + PATCH https://{server}/lcm/rest/vcenter/lcm/discovery/associated-products/{product-id}. Update spec as below. + UpdateSpec { + /** + * The list of hostname/IPs of the instances of the VMware products + * deployed in the customer environment. + */ + Optional> deployments; + + } + DELETE https://{server}/lcm/rest/vcenter/lcm/discovery/associated-products/{product-id} + * lcm_sample.py - running a simple workflow to download report. + GET https://{server}/lcm/rest/vcenter/lcm/reports/{report} + * update_sample.py - running a simple workflow to find updates and upgrades + GET https://{server}/lcm/rest/vcenter/lcm/update/pending + GET https://{server}/lcm/rest/vcenter/lcm/update/pending/{version} + POST https://{server}/rest/vcenter/lcm/update/pending/{version}/pre-upgrade-checks + +To view the available command-line options: + + $ python discovery_sample.py --help + $ python lcm_sample.py --help + $ python update_sample.py --help + +Running the samples: + + $ python discovery_sample.py --server --username --password --skipverification + $ python lcm_sample.py --server --username --password --skipverification + $ python update_sample.py --server --username --password --skipverification + + +Testbed Requirement: + + * 1 vCenter Server appliance version 7.0 or above are supported. diff --git a/samples/vsphere/vcenter/discovery_and_plan/__init__.py b/samples/vsphere/vcenter/discovery_and_plan/__init__.py new file mode 100644 index 00000000..80b258ab --- /dev/null +++ b/samples/vsphere/vcenter/discovery_and_plan/__init__.py @@ -0,0 +1,26 @@ +""" +* ******************************************************* +* Copyright VMware, Inc. 2019. All Rights Reserved. +* SPDX-License-Identifier: MIT +* ******************************************************* +* +* DISCLAIMER. THIS PROGRAM IS PROVIDED TO YOU "AS IS" WITHOUT +* WARRANTIES OR CONDITIONS OF ANY KIND, WHETHER ORAL OR WRITTEN, +* EXPRESS OR IMPLIED. THE AUTHOR SPECIFICALLY DISCLAIMS ANY IMPLIED +* WARRANTIES OR CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, +* NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR PURPOSE. +""" + + +__author__ = 'VMware, Inc.' +__copyright__ = 'Copyright 2019 VMware, Inc. All rights reserved.' + + +# Required to distribute different parts of this +# package as multiple distribution +try: + import pkg_resources + pkg_resources.declare_namespace(__name__) +except ImportError: + from pkgutil import extend_path + __path__ = extend_path(__path__, __name__) # @ReservedAssignment diff --git a/samples/vsphere/vcenter/discovery_and_plan/discovery_sample.py b/samples/vsphere/vcenter/discovery_and_plan/discovery_sample.py new file mode 100644 index 00000000..d5b75df5 --- /dev/null +++ b/samples/vsphere/vcenter/discovery_and_plan/discovery_sample.py @@ -0,0 +1,84 @@ +#!/usr/bin/env python +""" +* ******************************************************* +* Copyright (c) VMware, Inc. 2019. All Rights Reserved. +* SPDX-License-Identifier: MIT +* ******************************************************* +* +* DISCLAIMER. THIS PROGRAM IS PROVIDED TO YOU "AS IS" WITHOUT +* WARRANTIES OR CONDITIONS OF ANY KIND, WHETHER ORAL OR WRITTEN, +* EXPRESS OR IMPLIED. THE AUTHOR SPECIFICALLY DISCLAIMS ANY IMPLIED +* WARRANTIES OR CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, +* NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR PURPOSE. +""" + +__author__ = 'VMware, Inc.' +__vcenter_version__ = '7.0+' + +from com.vmware.vcenter.lcm.discovery_client import ProductCatalog, AssociatedProducts + +from samples.vsphere.common import sample_cli, sample_util +from samples.vsphere.common.ssl_helper import get_unverified_session +from samples.vsphere.vcenter.hcl.utils import get_configuration + + +class SampleDiscovery(object): + """ + Sample demonstrating vCenter LCM Discovery APIs + Sample Prerequisites: + vCenter on linux platform + """ + + def __init__(self): + parser = sample_cli.build_arg_parser() + args = sample_util.process_cli_args(parser.parse_args()) + + session = get_unverified_session() if args.skipverification else None + stub_config = get_configuration( + args.server, args.username, args.password, + session) + self.product_client = ProductCatalog(stub_config) + self.associated_products_client = AssociatedProducts(stub_config) + + def run(self): + """ + Access the Discovery APIs to list available products and associated products + """ + # Product Catlog + product_catlog = self.product_client.list() + print("Product Catlog list: \n", product_catlog) + + # Associated Products + associated_products = self.associated_products_client.list() + print("Associated Products list : \n", associated_products) + + # Add product + spec = {'product_name': 'VMware Identity Manager', 'version': '3.3', 'deployments': '3'} + add_associated_product = self.associated_products_client.create(spec) + print('Added new product. \n', add_associated_product) + + associated_products = self.associated_products_client.list() + print("Associated Products after adding the product: \n", associated_products) + + # Update product + update_spec = {'deployments': '9'} + update_associated_product = self.associated_products_client.update(add_associated_product, update_spec) + associated_products = self.associated_products_client.list() + print("Associated Products after updating the product: \n", associated_products) + + # Delete product + delete_associated_product = self.associated_products_client.delete(add_associated_product) + associated_products = self.associated_products_client.list() + print("Associated Products after deleting the product: \n{0}", associated_products) + + +def main(): + """ + Entry point for the sample client + """ + discovery = SampleDiscovery() + discovery.run() + + +if __name__ == '__main__': + main() diff --git a/samples/vsphere/vcenter/discovery_and_plan/lcm_sample.py b/samples/vsphere/vcenter/discovery_and_plan/lcm_sample.py new file mode 100644 index 00000000..2a6ad705 --- /dev/null +++ b/samples/vsphere/vcenter/discovery_and_plan/lcm_sample.py @@ -0,0 +1,61 @@ +#!/usr/bin/env python +""" +* ******************************************************* +* Copyright (c) VMware, Inc. 2019-2020. All Rights Reserved. +* SPDX-License-Identifier: MIT +* ******************************************************* +* +* DISCLAIMER. THIS PROGRAM IS PROVIDED TO YOU "AS IS" WITHOUT +* WARRANTIES OR CONDITIONS OF ANY KIND, WHETHER ORAL OR WRITTEN, +* EXPRESS OR IMPLIED. THE AUTHOR SPECIFICALLY DISCLAIMS ANY IMPLIED +* WARRANTIES OR CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, +* NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR PURPOSE. +""" + +__author__ = 'VMware, Inc.' +__vcenter_version__ = '7.0+' + +from com.vmware.vcenter.lcm_client import Reports + +from samples.vsphere.common import sample_cli, sample_util +from samples.vsphere.common.ssl_helper import get_unverified_session +from samples.vsphere.vcenter.hcl.utils import get_configuration + + +class SampleLcm(object): + """ + Sample demonstrating vCenter LCM Update APIs + Sample Prerequisites: + vCenter on linux platform + """ + + def __init__(self): + parser = sample_cli.build_arg_parser() + parser.add_argument('-f', '--file_name', + help='Provide csv report file name.') + args = sample_util.process_cli_args(parser.parse_args()) + self.csv_report = args.file_name + session = get_unverified_session() if args.skipverification else None + stub_config = get_configuration( + args.server, args.username, args.password, + session) + self.report_client = Reports(stub_config) + + def run(self): + """ + Access to download the interop report APIs by providing csv_report name + """ + report_details = self.report_client.get(self.csv_report) + print("Report Details - ", report_details) + + +def main(): + """ + Entry point for the sample client + """ + lcm = SampleLcm() + lcm.run() + + +if __name__ == '__main__': + main() diff --git a/samples/vsphere/vcenter/discovery_and_plan/update_sample.py b/samples/vsphere/vcenter/discovery_and_plan/update_sample.py new file mode 100644 index 00000000..65fc2934 --- /dev/null +++ b/samples/vsphere/vcenter/discovery_and_plan/update_sample.py @@ -0,0 +1,66 @@ +#!/usr/bin/env python +""" +* ******************************************************* +* Copyright (c) VMware, Inc. 2019. All Rights Reserved. +* SPDX-License-Identifier: MIT +* ******************************************************* +* +* DISCLAIMER. THIS PROGRAM IS PROVIDED TO YOU "AS IS" WITHOUT +* WARRANTIES OR CONDITIONS OF ANY KIND, WHETHER ORAL OR WRITTEN, +* EXPRESS OR IMPLIED. THE AUTHOR SPECIFICALLY DISCLAIMS ANY IMPLIED +* WARRANTIES OR CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, +* NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR PURPOSE. +""" + +__author__ = 'VMware, Inc.' +__vcenter_version__ = '7.0+' + +from com.vmware.vcenter.lcm.update_client import Pending, PrecheckReport + +from samples.vsphere.common import sample_cli, sample_util +from samples.vsphere.common.ssl_helper import get_unverified_session +from samples.vsphere.vcenter.hcl.utils import get_configuration + + +class SampleUpdate(object): + """ + Sample demonstrating vCenter LCM Update APIs + Sample Prerequisites: + vCenter on linux platform + """ + def __init__(self): + parser = sample_cli.build_arg_parser() + args = sample_util.process_cli_args(parser.parse_args()) + session = get_unverified_session() if args.skipverification else None + stub_config = get_configuration( + args.server, args.username, args.password, + args.skipverification) + self.pending_client = Pending(stub_config) + self.precheck_client = PrecheckReport(stub_config) + + def run(self): + """ + Access the Update APIs to list available patches and details + """ + available_updates = self.pending_client.list() + print("vCenter available updates - ", available_updates) + if available_updates.updates: + target_version = available_updates.updates[0].version + update_details = self.pending_client.get(target_version) + print("vCenter available update details - ", update_details) + + # precheck API's + precheck_result = self.precheck_client.create_task(target_version) + print("Pre upgrade checks task id started with: \n{0}".format(precheck_result.get_task_id())) + + +def main(): + """ + Entry point for the sample client + """ + update = SampleUpdate() + update.run() + + +if __name__ == '__main__': + main() diff --git a/samples/vsphere/vcenter/hcl/README.md b/samples/vsphere/vcenter/hcl/README.md new file mode 100644 index 00000000..4cbdc8d2 --- /dev/null +++ b/samples/vsphere/vcenter/hcl/README.md @@ -0,0 +1,33 @@ +This directory contains samples for the ESXi Hardware Compatibility APIs. ESXi Hardware Compatibility feature generates a hardware compatibility report for a given ESXi against a target ESXi version. + +For more information, please review the official release notes. + +The feature is realized with the following APIs: + * Compatibility Data Download: Updates the local compatibility data on the vCenter based on the latest version in the VMware Official repository. + * Compatibility Data Status: Provides information about when the compatibility Datastore on the vCenter was last synced with VMware Official Repository. + * Compatibility Releases : Lists the available ESXi releases for a given host that can be used to generate a compatibility report. + * Compatibility Report: Generates a compatibility report for the source host against the target version. + +Overview of the directory code samples: + * compatibility_data_update_sample.py - Corresponds to Compatibiliy Data download operation as mentioned above. + * compatibility_data_status_sample.py - Corresponds to Compatibiliy Data status as mentioned above. + * compatibility_releases_sample.py - Corresponds to Compatibility Releases operation as mentioned above. + * compatibility_report_sample.py - Corresponds to Compatibility Report operation as mentioned above. + +To view the available command-line options: + + $ python compatibility_data_update_sample.py --help + $ python compatibility_data_status_sample.py --help + $ python compatibility_releases_sample.py --help + $ python compatibility_report_sample.py --help + +Running the samples: + + $ python compatibility_data_update_sample.py --server --username --password --skipverification + $ python compatibility_data_status_sample.py --server --username --password --skipverification + $ python compatibility_releases_sample.py --server --username --password --host --skipverification + $ python compatibility_report_sample.py --server --username --password --host --release --skipverification + +Testbed Requirement: + + * 1 vCenter Server appliance version 7.0 or above are supported. diff --git a/samples/vsphere/vcenter/hcl/__init__.py b/samples/vsphere/vcenter/hcl/__init__.py new file mode 100644 index 00000000..b047cfa1 --- /dev/null +++ b/samples/vsphere/vcenter/hcl/__init__.py @@ -0,0 +1,25 @@ +""" +* ******************************************************* +* Copyright VMware, Inc. 2019. All Rights Reserved. +* SPDX-License-Identifier: MIT +* ******************************************************* +* +* DISCLAIMER. THIS PROGRAM IS PROVIDED TO YOU "AS IS" WITHOUT +* WARRANTIES OR CONDITIONS OF ANY KIND, WHETHER ORAL OR WRITTEN, +* EXPRESS OR IMPLIED. THE AUTHOR SPECIFICALLY DISCLAIMS ANY IMPLIED +* WARRANTIES OR CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, +* NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR PURPOSE. +""" + + +__author__ = 'VMware, Inc.' + + +# Required to distribute different parts of this +# package as multiple distribution +try: + import pkg_resources + pkg_resources.declare_namespace(__name__) +except ImportError: + from pkgutil import extend_path + __path__ = extend_path(__path__, __name__) # @ReservedAssignment diff --git a/samples/vsphere/vcenter/hcl/compatibility_data_status_sample.py b/samples/vsphere/vcenter/hcl/compatibility_data_status_sample.py new file mode 100644 index 00000000..4b946c3a --- /dev/null +++ b/samples/vsphere/vcenter/hcl/compatibility_data_status_sample.py @@ -0,0 +1,58 @@ +#!/usr/bin/env python +""" +* ******************************************************* +* Copyright (c) VMware, Inc. 2019. All Rights Reserved. +* SPDX-License-Identifier: MIT +* ******************************************************* +* +* DISCLAIMER. THIS PROGRAM IS PROVIDED TO YOU "AS IS" WITHOUT +* WARRANTIES OR CONDITIONS OF ANY KIND, WHETHER ORAL OR WRITTEN, +* EXPRESS OR IMPLIED. THE AUTHOR SPECIFICALLY DISCLAIMS ANY IMPLIED +* WARRANTIES OR CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, +* NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR PURPOSE. +""" + +__author__ = 'VMware, Inc.' +__vcenter_version__ = '7.0+' + +from com.vmware.esx.hcl_client import CompatibilityData + +from samples.vsphere.vcenter.hcl.utils import get_configuration +from samples.vsphere.common import sample_cli, sample_util + + +class CompatibilityDataStatusSample(object): + """ + Sample demonstrating vCenter HCL Compatibility Data Status Check Operation + Sample Prerequisites: + vCenter on linux platform + """ + + def __init__(self): + parser = sample_cli.build_arg_parser() + args = sample_util.process_cli_args(parser.parse_args()) + + config = get_configuration(args.server, args.username, + args.password, + args.skipverification) + self.api_client = CompatibilityData(config) + + def run(self): + """ + Invokes the HCL Compatibility Data Status GET API to get information + about when the compatibility data was last updated + """ + data_status_info = self.api_client.get() + print("Compatibility Data Status : ", data_status_info) + + +def main(): + """ + Entry point for the CompatibilityDataStatusSample client + """ + dataStatusSample = CompatibilityDataStatusSample() + dataStatusSample.run() + + +if __name__ == '__main__': + main() diff --git a/samples/vsphere/vcenter/hcl/compatibility_data_update_sample.py b/samples/vsphere/vcenter/hcl/compatibility_data_update_sample.py new file mode 100644 index 00000000..0be62891 --- /dev/null +++ b/samples/vsphere/vcenter/hcl/compatibility_data_update_sample.py @@ -0,0 +1,56 @@ +#!/usr/bin/env python +""" +* ******************************************************* +* Copyright (c) VMware, Inc. 2019. All Rights Reserved. +* SPDX-License-Identifier: MIT +* ******************************************************* +* +* DISCLAIMER. THIS PROGRAM IS PROVIDED TO YOU "AS IS" WITHOUT +* WARRANTIES OR CONDITIONS OF ANY KIND, WHETHER ORAL OR WRITTEN, +* EXPRESS OR IMPLIED. THE AUTHOR SPECIFICALLY DISCLAIMS ANY IMPLIED +* WARRANTIES OR CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, +* NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR PURPOSE. +""" + +__author__ = 'VMware, Inc.' +__vcenter_version__ = '7.0+' + +from com.vmware.esx.hcl_client import CompatibilityData + +from samples.vsphere.vcenter.hcl.utils import get_configuration +from samples.vsphere.common import sample_cli, sample_util + + +class CompatibilityDataUpdateSample(object): + """ + Sample demonstrating vCenter HCL Compatibility Data Update Operation + Sample Prerequisites: + vCenter on linux platform + """ + + def __init__(self): + parser = sample_cli.build_arg_parser() + args = sample_util.process_cli_args(parser.parse_args()) + config = get_configuration(args.server, args.username, + args.password, + args.skipverification) + self.api_client = CompatibilityData(config) + + def run(self): + """ + Calls the HCL Compatibility Data Update POST API to update the HCL Datastore on the vCenter + """ + data_update_info = self.api_client.update_task() + print("Compatibility Data Update Task ID : ", data_update_info.get_task_id()) + + +def main(): + """ + Entry point for the CompatibilityDataUpdateSample client + """ + dataUpdateSample = CompatibilityDataUpdateSample() + dataUpdateSample.run() + + +if __name__ == '__main__': + main() diff --git a/samples/vsphere/vcenter/hcl/compatibility_releases_sample.py b/samples/vsphere/vcenter/hcl/compatibility_releases_sample.py new file mode 100644 index 00000000..35b709a6 --- /dev/null +++ b/samples/vsphere/vcenter/hcl/compatibility_releases_sample.py @@ -0,0 +1,61 @@ +#!/usr/bin/env python +""" +* ******************************************************* +* Copyright (c) VMware, Inc. 2019. All Rights Reserved. +* SPDX-License-Identifier: MIT +* ******************************************************* +* +* DISCLAIMER. THIS PROGRAM IS PROVIDED TO YOU "AS IS" WITHOUT +* WARRANTIES OR CONDITIONS OF ANY KIND, WHETHER ORAL OR WRITTEN, +* EXPRESS OR IMPLIED. THE AUTHOR SPECIFICALLY DISCLAIMS ANY IMPLIED +* WARRANTIES OR CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, +* NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR PURPOSE. +""" + +__author__ = 'VMware, Inc.' +__vcenter_version__ = '7.0+' + +from com.vmware.esx.hcl.hosts_client import CompatibilityReleases + +from samples.vsphere.vcenter.hcl.utils import get_configuration +from samples.vsphere.common import sample_cli, sample_util + + +class CompatibilityReleasesSample(object): + """ + Sample demonstrating vCenter HCL Get Compatibility Releases Operation + Sample Prerequisites: + vCenter on linux platform + The vCenter should have HCL DataStore(Compatibility Data) Populated + """ + + def __init__(self): + parser = sample_cli.build_arg_parser() + parser.add_argument('-id', '--host', + required=True, + help='MOID of the source host for eg "host-13"') + args = sample_util.process_cli_args(parser.parse_args()) + self.host_id = args.host + config = get_configuration(args.server, args.username, + args.password, + args.skipverification) + self.api_client = CompatibilityReleases(config) + + def run(self): + """ + Invokes the HCL Compatibility Releases GET API to get list of available releases for the source ESXi host + """ + releases_info = self.api_client.list(self.host_id) + print("Compatibility Releases Info : ", releases_info) + + +def main(): + """ + Entry point for the CompatibilityReleasesSample client + """ + releasesSample = CompatibilityReleasesSample() + releasesSample.run() + + +if __name__ == '__main__': + main() diff --git a/samples/vsphere/vcenter/hcl/compatibility_report_sample.py b/samples/vsphere/vcenter/hcl/compatibility_report_sample.py new file mode 100644 index 00000000..253fbcb6 --- /dev/null +++ b/samples/vsphere/vcenter/hcl/compatibility_report_sample.py @@ -0,0 +1,66 @@ +#!/usr/bin/env python +""" +* ******************************************************* +* Copyright (c) VMware, Inc. 2019. All Rights Reserved. +* SPDX-License-Identifier: MIT +* ******************************************************* +* +* DISCLAIMER. THIS PROGRAM IS PROVIDED TO YOU "AS IS" WITHOUT +* WARRANTIES OR CONDITIONS OF ANY KIND, WHETHER ORAL OR WRITTEN, +* EXPRESS OR IMPLIED. THE AUTHOR SPECIFICALLY DISCLAIMS ANY IMPLIED +* WARRANTIES OR CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, +* NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR PURPOSE. +""" + +__author__ = 'VMware, Inc.' +__vcenter_version__ = '7.0+' + +from com.vmware.esx.hcl.hosts_client import CompatibilityReport + +from samples.vsphere.vcenter.hcl.utils import get_configuration +from samples.vsphere.common import sample_cli, sample_util + + +class CompatibilityReportSample(object): + """ + Sample demonstrating vCenter HCL Get Compatibility Report Operation + Sample Prerequisites: + vCenter on linux platform + The vCenter should have HCL DataStore(Compatibility Data) Populated + """ + + def __init__(self): + parser = sample_cli.build_arg_parser() + parser.add_argument('-id', '--host', + required=True, + help='MOID of the source host for eg "host-13"') + parser.add_argument('-r', '--release', + required=True, + help='Target Release against which you want to generate the report for eg "ESXi 6.7"') + args = sample_util.process_cli_args(parser.parse_args()) + self.host_id = args.host + self.targetRelease = args.release + config = get_configuration(args.server, args.username, + args.password, + args.skipverification) + self.api_client = CompatibilityReport(config) + + def run(self): + """ + Access the HCL Compatibility Report GET API to get the task id + """ + report_info = self.api_client.create_task(self.host_id, + CompatibilityReport.Spec(self.targetRelease)) + print("Compatibility Report API Task ID : ", report_info.get_task_id()) + + +def main(): + """ + Entry point for the CompatibilityReportSample client + """ + reportSample = CompatibilityReportSample() + reportSample.run() + + +if __name__ == '__main__': + main() diff --git a/samples/vsphere/vcenter/hcl/utils.py b/samples/vsphere/vcenter/hcl/utils.py new file mode 100644 index 00000000..e6d85bcb --- /dev/null +++ b/samples/vsphere/vcenter/hcl/utils.py @@ -0,0 +1,59 @@ +""" +* ******************************************************* +* Copyright (c) VMware, Inc. 2019. All Rights Reserved. +* SPDX-License-Identifier: MIT +* ******************************************************* +* +* DISCLAIMER. THIS PROGRAM IS PROVIDED TO YOU "AS IS" WITHOUT +* WARRANTIES OR CONDITIONS OF ANY KIND, WHETHER ORAL OR WRITTEN, +* EXPRESS OR IMPLIED. THE AUTHOR SPECIFICALLY DISCLAIMS ANY IMPLIED +* WARRANTIES OR CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, +* NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR PURPOSE. +""" + +__author__ = 'VMware, Inc.' +__vcenter_version__ = '7.0+' + +import requests + +from com.vmware.cis_client import Session + +from samples.vsphere.common.ssl_helper import get_unverified_session +from vmware.vapi.security.session import create_session_security_context +from vmware.vapi.lib.connect import get_requests_connector +from vmware.vapi.stdlib.client.factories import StubConfigurationFactory +from vmware.vapi.security.client.security_context_filter import \ + LegacySecurityContextFilter +from vmware.vapi.security.user_password import \ + create_user_password_security_context + + +""" +Creates a session and returns the stub configuration +""" + + +def get_configuration(server, username, password, skipVerification): + session = get_unverified_session() if skipVerification else None + if not session: + session = requests.Session() + host_url = "https://{}/api".format(server) + sec_ctx = create_user_password_security_context(username, + password) + session_svc = Session( + StubConfigurationFactory.new_std_configuration( + get_requests_connector( + session=session, url=host_url, + provider_filter_chain=[ + LegacySecurityContextFilter( + security_context=sec_ctx)]))) + session_id = session_svc.create() + print("Session ID : ", session_id) + sec_ctx = create_session_security_context(session_id) + stub_config = StubConfigurationFactory.new_std_configuration( + get_requests_connector( + session=session, url=host_url, + provider_filter_chain=[ + LegacySecurityContextFilter( + security_context=sec_ctx)])) + return stub_config diff --git a/samples/vsphere/vcenter/topologysvc/README.md b/samples/vsphere/vcenter/topologysvc/README.md new file mode 100644 index 00000000..71acb0d4 --- /dev/null +++ b/samples/vsphere/vcenter/topologysvc/README.md @@ -0,0 +1,20 @@ +This directory contains samples for getting vCenter Server replication status and node information + +The samples are compatible with vSPhere 7.0+ + +### vCenter server node topology information List/Get operations +Sample | Description +----------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +get_node.py | Demonstrates getting the vCenter Server or Platform service controler node information. +list_nodes.py | Demonstrates listing of the vCenter Server or Platform service controller node's information in Link Mode in an SSO Domain. +list_embedded_nodes.py | Demonstrates listing of Embedded vCenter Server node's information in an SSO Domain. + +### vCenter server Replication Status List operations +Sample | Description +----------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------- +list_replication_status.py | Demonstrates listing of replication status of all vCenter Server's in an SSO Domain. +list_node_replication_status.py | Demonstrates status of replication for a vCenter Server. + +### Testbed Requirement: + - 1 vCenter Server on version 7.0+ + - The username being used to run the sample should have System.Read privilege for the operation to be performed. diff --git a/samples/vsphere/vcenter/topologysvc/get_node.py b/samples/vsphere/vcenter/topologysvc/get_node.py new file mode 100644 index 00000000..72ad527c --- /dev/null +++ b/samples/vsphere/vcenter/topologysvc/get_node.py @@ -0,0 +1,49 @@ +#!/usr/bin/env python + +""" +* ******************************************************* +* Copyright (c) VMware, Inc. 2020. All Rights Reserved. +* SPDX-License-Identifier: MIT +* ******************************************************* +* +* DISCLAIMER. THIS PROGRAM IS PROVIDED TO YOU "AS IS" WITHOUT +* WARRANTIES OR CONDITIONS OF ANY KIND, WHETHER ORAL OR WRITTEN, +* EXPRESS OR IMPLIED. THE AUTHOR SPECIFICALLY DISCLAIMS ANY IMPLIED +* WARRANTIES OR CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, +* NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR PURPOSE. +""" + +__author__ = 'VMware, Inc.' +__vcenter_version__ = '7.0+' + +from vmware.vapi.vsphere.client import create_vsphere_client +from samples.vsphere.common import (sample_cli, sample_util) +from samples.vsphere.common.ssl_helper import get_unverified_session + +""" +Description: Demonstrates getting the vCenter Server or Platform service +controler node information. + +Sample Prerequisites: +- The user invoking the API should have the System.Read privilege. +""" + +parser = sample_cli.build_arg_parser() + +parser.add_argument('--node', + required=True, + help='Identifier of the vCenter or Platform Services' + ' Controller node. Identifier should be DNS' + ' resolvable name of the node') + +args = sample_util.process_cli_args(parser.parse_args()) + +session = get_unverified_session() if args.skipverification else None + +# Login to vCenter +vsphere_client = create_vsphere_client(server=args.server, + username=args.username, + password=args.password, + session=session) + +print(vsphere_client.vcenter.topology.Nodes.get(args.node)) diff --git a/samples/vsphere/vcenter/topologysvc/list_embedded_nodes.py b/samples/vsphere/vcenter/topologysvc/list_embedded_nodes.py new file mode 100644 index 00000000..17ca6400 --- /dev/null +++ b/samples/vsphere/vcenter/topologysvc/list_embedded_nodes.py @@ -0,0 +1,47 @@ +#!/usr/bin/env python + +""" +* ******************************************************* +* Copyright (c) VMware, Inc. 2020. All Rights Reserved. +* SPDX-License-Identifier: MIT +* ******************************************************* +* +* DISCLAIMER. THIS PROGRAM IS PROVIDED TO YOU "AS IS" WITHOUT +* WARRANTIES OR CONDITIONS OF ANY KIND, WHETHER ORAL OR WRITTEN, +* EXPRESS OR IMPLIED. THE AUTHOR SPECIFICALLY DISCLAIMS ANY IMPLIED +* WARRANTIES OR CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, +* NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR PURPOSE. +""" + +__author__ = 'VMware, Inc.' +__vcenter_version__ = '7.0+' + + +from vmware.vapi.vsphere.client import create_vsphere_client +from com.vmware.vcenter.topology_client import Nodes +from samples.vsphere.common import (sample_cli, sample_util) +from samples.vsphere.common.ssl_helper import get_unverified_session + +""" +Description: Demonstrates listing of Embedded vCenter Server node's information +in an SSO Domain. + +Sample Prerequisites: +- The user invoking the API should have the System.Read privilege. +""" + +parser = sample_cli.build_arg_parser() + +args = sample_util.process_cli_args(parser.parse_args()) + +session = get_unverified_session() if args.skipverification else None + +# Login to vCenter +vsphere_client = create_vsphere_client(server=args.server, + username=args.username, + password=args.password, + session=session) + +filter_spec = Nodes.FilterSpec({Nodes.ApplianceType.VCSA_EMBEDDED}) + +print(vsphere_client.vcenter.topology.Nodes.list(filter_spec)) diff --git a/samples/vsphere/vcenter/topologysvc/list_node_replication_status.py b/samples/vsphere/vcenter/topologysvc/list_node_replication_status.py new file mode 100644 index 00000000..f6bc1c2e --- /dev/null +++ b/samples/vsphere/vcenter/topologysvc/list_node_replication_status.py @@ -0,0 +1,52 @@ +#!/usr/bin/env python + +""" +* ******************************************************* +* Copyright (c) VMware, Inc. 2020. All Rights Reserved. +* SPDX-License-Identifier: MIT +* ******************************************************* +* +* DISCLAIMER. THIS PROGRAM IS PROVIDED TO YOU "AS IS" WITHOUT +* WARRANTIES OR CONDITIONS OF ANY KIND, WHETHER ORAL OR WRITTEN, +* EXPRESS OR IMPLIED. THE AUTHOR SPECIFICALLY DISCLAIMS ANY IMPLIED +* WARRANTIES OR CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, +* NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR PURPOSE. +""" + +__author__ = 'VMware, Inc.' +__vcenter_version__ = '7.0+' + + +from vmware.vapi.vsphere.client import create_vsphere_client +from com.vmware.vcenter.topology_client import ReplicationStatus +from samples.vsphere.common import (sample_cli, sample_util) +from samples.vsphere.common.ssl_helper import get_unverified_session + +""" +Description: Demonstrates listing of replication status for a vCenter Server. + +Sample Prerequisites: +- The user invoking the API should have the System.Read privilege. +""" + +parser = sample_cli.build_arg_parser() + +parser.add_argument('--node', + required=True, + help='Identifier of the vCenter or Platform Services' + ' Controller node. Identifier should be DNS' + ' resolvable name of the node') + +args = sample_util.process_cli_args(parser.parse_args()) + +session = get_unverified_session() if args.skipverification else None + +# Login to vCenter +vsphere_client = create_vsphere_client(server=args.server, + username=args.username, + password=args.password, + session=session) + +filter_spec = ReplicationStatus.FilterSpec({args.node}) + +print(vsphere_client.vcenter.topology.ReplicationStatus.list(filter_spec)) diff --git a/samples/vsphere/vcenter/topologysvc/list_nodes.py b/samples/vsphere/vcenter/topologysvc/list_nodes.py new file mode 100644 index 00000000..fbd8924e --- /dev/null +++ b/samples/vsphere/vcenter/topologysvc/list_nodes.py @@ -0,0 +1,44 @@ +#!/usr/bin/env python + +""" +* ******************************************************* +* Copyright (c) VMware, Inc. 2020. All Rights Reserved. +* SPDX-License-Identifier: MIT +* ******************************************************* +* +* DISCLAIMER. THIS PROGRAM IS PROVIDED TO YOU "AS IS" WITHOUT +* WARRANTIES OR CONDITIONS OF ANY KIND, WHETHER ORAL OR WRITTEN, +* EXPRESS OR IMPLIED. THE AUTHOR SPECIFICALLY DISCLAIMS ANY IMPLIED +* WARRANTIES OR CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, +* NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR PURPOSE. +""" + +__author__ = 'VMware, Inc.' +__vcenter_version__ = '7.0+' + + +from vmware.vapi.vsphere.client import create_vsphere_client +from samples.vsphere.common import (sample_cli, sample_util) +from samples.vsphere.common.ssl_helper import get_unverified_session + +""" +Description: Demonstrates listing of the vCenter server or Platform service +controller nodes in Link Mode in an SSO Domain. + +Sample Prerequisites: +- The user invoking the API should have the System.Read privilege. +""" + +parser = sample_cli.build_arg_parser() + +args = sample_util.process_cli_args(parser.parse_args()) + +session = get_unverified_session() if args.skipverification else None + +# Login to vCenter +vsphere_client = create_vsphere_client(server=args.server, + username=args.username, + password=args.password, + session=session) + +print(vsphere_client.vcenter.topology.Nodes.list()) diff --git a/samples/vsphere/vcenter/topologysvc/list_replication_status.py b/samples/vsphere/vcenter/topologysvc/list_replication_status.py new file mode 100644 index 00000000..ed2ab50f --- /dev/null +++ b/samples/vsphere/vcenter/topologysvc/list_replication_status.py @@ -0,0 +1,44 @@ +#!/usr/bin/env python + +""" +* ******************************************************* +* Copyright (c) VMware, Inc. 2020. All Rights Reserved. +* SPDX-License-Identifier: MIT +* ******************************************************* +* +* DISCLAIMER. THIS PROGRAM IS PROVIDED TO YOU "AS IS" WITHOUT +* WARRANTIES OR CONDITIONS OF ANY KIND, WHETHER ORAL OR WRITTEN, +* EXPRESS OR IMPLIED. THE AUTHOR SPECIFICALLY DISCLAIMS ANY IMPLIED +* WARRANTIES OR CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, +* NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR PURPOSE. +""" + +__author__ = 'VMware, Inc.' +__vcenter_version__ = '7.0+' + + +from vmware.vapi.vsphere.client import create_vsphere_client +from samples.vsphere.common import (sample_cli, sample_util) +from samples.vsphere.common.ssl_helper import get_unverified_session + +""" +Description: Demonstrates listing of the vCenter Server or Platform service +controller node's information in Link Mode in an SSO Domain. + +Sample Prerequisites: +- The user invoking the API should have the System.Read privilege. +""" + +parser = sample_cli.build_arg_parser() + +args = sample_util.process_cli_args(parser.parse_args()) + +session = get_unverified_session() if args.skipverification else None + +# Login to vCenter +vsphere_client = create_vsphere_client(server=args.server, + username=args.username, + password=args.password, + session=session) + +print(vsphere_client.vcenter.topology.ReplicationStatus.list()) diff --git a/setup.py b/setup.py index 86ab0a91..9bccc135 100644 --- a/setup.py +++ b/setup.py @@ -5,7 +5,7 @@ import os from setuptools import setup setup(name='vSphere Automation SDK', - version='1.24.0', + version='1.25.0', description='VMware vSphere Automation SDK for Python', url='https://github.com/vmware/vsphere-automation-sdk-python', author='VMware, Inc.', @@ -15,9 +15,9 @@ setup(name='vSphere Automation SDK', 'suds ; python_version < "3"', 'suds-jurko ; python_version >= "3.0"', 'pyVmomi >= 6.7', - 'vapi-runtime @ file://localhost/{}/lib/vapi-runtime/vapi_runtime-2.14.0-py2.py3-none-any.whl'.format(os.getcwd()), - 'vapi-client-bindings @ file://localhost/{}/lib/vapi-client-bindings/vapi_client_bindings-3.2.0-py2.py3-none-any.whl'.format(os.getcwd()), - 'vapi-common-client @ file://localhost/{}/lib/vapi-common-client/vapi_common_client-2.14.0-py2.py3-none-any.whl'.format(os.getcwd()), + 'vapi-runtime @ file://localhost/{}/lib/vapi-runtime/vapi_runtime-2.15.0-py2.py3-none-any.whl'.format(os.getcwd()), + 'vapi-client-bindings @ file://localhost/{}/lib/vapi-client-bindings/vapi_client_bindings-3.3.0-py2.py3-none-any.whl'.format(os.getcwd()), + 'vapi-common-client @ file://localhost/{}/lib/vapi-common-client/vapi_common_client-2.15.0-py2.py3-none-any.whl'.format(os.getcwd()), 'vmc-client-bindings @ file://localhost/{}/lib/vmc-client-bindings/vmc_client_bindings-1.24.0-py2.py3-none-any.whl'.format(os.getcwd()), 'nsx-python-sdk @ file://localhost/{}/lib/nsx-python-sdk/nsx_python_sdk-2.5.1.0.1.15419398-py2.py3-none-any.whl'.format(os.getcwd()), 'nsx-policy-python-sdk @ file://localhost/{}/lib/nsx-policy-python-sdk/nsx_policy_python_sdk-2.5.1.0.1.15419398-py2.py3-none-any.whl'.format(os.getcwd()),