diff --git a/doc/client.zip b/doc/client.zip
index a083ec77..5759f828 100644
Binary files a/doc/client.zip and b/doc/client.zip differ
diff --git a/doc/vmc.zip b/doc/vmc.zip
index 3c79cff4..ca52f616 100644
Binary files a/doc/vmc.zip and b/doc/vmc.zip differ
diff --git a/lib/vapi-client-bindings/index.html b/lib/vapi-client-bindings/index.html
index 29d479e8..eaca6176 100644
--- a/lib/vapi-client-bindings/index.html
+++ b/lib/vapi-client-bindings/index.html
@@ -1 +1 @@
-vapi_client_bindings-1.0.0-py2.py3-none-any.whl
+vapi_client_bindings-1.1.0-py2.py3-none-any.whl
diff --git a/lib/vapi-client-bindings/vapi_client_bindings-1.0.0-py2.py3-none-any.whl b/lib/vapi-client-bindings/vapi_client_bindings-1.0.0-py2.py3-none-any.whl
deleted file mode 100644
index f4c924e9..00000000
Binary files a/lib/vapi-client-bindings/vapi_client_bindings-1.0.0-py2.py3-none-any.whl and /dev/null differ
diff --git a/lib/vapi-client-bindings/vapi_client_bindings-1.1.0-py2.py3-none-any.whl b/lib/vapi-client-bindings/vapi_client_bindings-1.1.0-py2.py3-none-any.whl
new file mode 100644
index 00000000..e6ba2c5d
Binary files /dev/null and b/lib/vapi-client-bindings/vapi_client_bindings-1.1.0-py2.py3-none-any.whl differ
diff --git a/lib/vapi-runtime/index.html b/lib/vapi-runtime/index.html
index 68a99568..40cbb403 100644
--- a/lib/vapi-runtime/index.html
+++ b/lib/vapi-runtime/index.html
@@ -1 +1 @@
-vapi_runtime-2.7.1-py2.py3-none-any.whl
+vapi_runtime-2.9.0-py2.py3-none-any.whl
diff --git a/lib/vapi-runtime/vapi_runtime-2.7.1-py2.py3-none-any.whl b/lib/vapi-runtime/vapi_runtime-2.9.0-py2.py3-none-any.whl
similarity index 65%
rename from lib/vapi-runtime/vapi_runtime-2.7.1-py2.py3-none-any.whl
rename to lib/vapi-runtime/vapi_runtime-2.9.0-py2.py3-none-any.whl
index 7175d584..d4ed4eb8 100644
Binary files a/lib/vapi-runtime/vapi_runtime-2.7.1-py2.py3-none-any.whl and b/lib/vapi-runtime/vapi_runtime-2.9.0-py2.py3-none-any.whl differ
diff --git a/lib/vapi-vmc-client/index.html b/lib/vapi-vmc-client/index.html
index cca85202..5813062e 100644
--- a/lib/vapi-vmc-client/index.html
+++ b/lib/vapi-vmc-client/index.html
@@ -1 +1 @@
-vapi_vmc_client-2.7.1-py2.py3-none-any.whl
+vapi_vmc_client-2.9.0-py2.py3-none-any.whl
diff --git a/lib/vapi-vmc-client/vapi_vmc_client-2.7.1-py2.py3-none-any.whl b/lib/vapi-vmc-client/vapi_vmc_client-2.9.0-py2.py3-none-any.whl
similarity index 50%
rename from lib/vapi-vmc-client/vapi_vmc_client-2.7.1-py2.py3-none-any.whl
rename to lib/vapi-vmc-client/vapi_vmc_client-2.9.0-py2.py3-none-any.whl
index d0d73c96..7b6532ff 100644
Binary files a/lib/vapi-vmc-client/vapi_vmc_client-2.7.1-py2.py3-none-any.whl and b/lib/vapi-vmc-client/vapi_vmc_client-2.9.0-py2.py3-none-any.whl differ
diff --git a/lib/vmc-client-bindings/index.html b/lib/vmc-client-bindings/index.html
index 98de3ffc..319a3dfa 100644
--- a/lib/vmc-client-bindings/index.html
+++ b/lib/vmc-client-bindings/index.html
@@ -1 +1 @@
-vmc_client_bindings-1.0.0-py2.py3-none-any.whl
+vmc_client_bindings-1.1.0-py2.py3-none-any.whl
\ No newline at end of file
diff --git a/lib/vmc-client-bindings/vmc_client_bindings-1.0.0-py2.py3-none-any.whl b/lib/vmc-client-bindings/vmc_client_bindings-1.0.0-py2.py3-none-any.whl
deleted file mode 100644
index db412bbe..00000000
Binary files a/lib/vmc-client-bindings/vmc_client_bindings-1.0.0-py2.py3-none-any.whl and /dev/null differ
diff --git a/lib/vmc-client-bindings/vmc_client_bindings-1.1.0-py2.py3-none-any.whl b/lib/vmc-client-bindings/vmc_client_bindings-1.1.0-py2.py3-none-any.whl
new file mode 100644
index 00000000..90965a7d
Binary files /dev/null and b/lib/vmc-client-bindings/vmc_client_bindings-1.1.0-py2.py3-none-any.whl differ
diff --git a/requirements.txt b/requirements.txt
index b84bd974..6b101abd 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -2,6 +2,6 @@ pyVmomi >= 6.5
suds ; python_version < '3'
suds-jurko ; python_version >= '3.0'
tabulate
-vapi-client-bindings == 1.0.0
-vmc-client-bindings
+vapi-client-bindings == 1.1.0
+vmc-client-bindings == 1.1.0
vapi-vmc-client
diff --git a/sample_template/README.md b/sample_template/README.md
index cd96a9c7..b04d0bfc 100644
--- a/sample_template/README.md
+++ b/sample_template/README.md
@@ -7,6 +7,4 @@ The steps included in the template code are:
* Cmd line argument parser.
* Login to vAPI services using vSphere Automation API.
- * Login to Vim service using [pyVmomi](https://github.com/vmware/pyvmomi).
* Cleanup after sample execution.
- * Logout from both services.
\ No newline at end of file
diff --git a/sample_template/sample_template.py b/sample_template/sample_template.py
index 0bb6a710..d8c9ee57 100644
--- a/sample_template/sample_template.py
+++ b/sample_template/sample_template.py
@@ -16,12 +16,12 @@
__author__ = 'TODO: '
__vcenter_version__ = 'TODO: '
-import atexit
-
from com.vmware.vcenter_client import VM
+from vmware.vapi.vsphere.client import create_vsphere_client
+
from samples.vsphere.common import sample_cli
from samples.vsphere.common import sample_util
-from samples.vsphere.common.service_manager import ServiceManager
+from samples.vsphere.common.ssl_helper import get_unverified_session
class Sample(object):
@@ -32,13 +32,7 @@ class Sample(object):
Sample Prerequisites:
- vCenter
"""
-
def __init__(self):
- self.service_manager = None
- self.vm_name = None
- self.cleardata = None
-
- def setup(self):
# Create argument parser for standard inputs:
# server, username, password, cleanup and skipverification
parser = sample_cli.build_arg_parser()
@@ -53,27 +47,24 @@ class Sample(object):
self.vm_name = args.vm_name
self.cleardata = args.cleardata
- # Connect to both Vim and vAPI services
- self.service_manager = ServiceManager(args.server,
- args.username,
- args.password,
- args.skipverification)
- self.service_manager.connect()
- atexit.register(self.service_manager.disconnect)
+ # Skip server cert verification if needed.
+ # This is not recommended in production code.
+ session = get_unverified_session() if args.skipverification else None
+
+ # Connect to vSphere client
+ self.client = create_vsphere_client(server=args.server,
+ username=args.username,
+ password=args.password,
+ session=session)
def run(self):
# TODO add your sample code here
# Using REST API service
- vm_service = VM(self.service_manager.stub_config)
filter_spec = VM.FilterSpec(names=set([self.vm_name]))
- vms = vm_service.list(filter_spec)
+ vms = self.client.vcenter.VM.list(filter_spec)
print(vms)
- # Using Vim API service (pyVmomi)
- current_time = self.service_manager.si.CurrentTime()
- print(current_time)
-
def cleanup(self):
if self.cleardata:
# TODO add cleanup code
@@ -82,7 +73,6 @@ class Sample(object):
def main():
sample = Sample()
- sample.setup()
sample.run()
sample.cleanup()
diff --git a/samples/vmc/README.md b/samples/vmc/README.md
index 74db60fb..cdfae291 100644
--- a/samples/vmc/README.md
+++ b/samples/vmc/README.md
@@ -6,4 +6,6 @@ Directory | Description
----------------| -------------
orgs | Samples for operations on organizations
sddc | Samples for operations on SDDCs
+networks | Samples for networking APIs
helpers | Helper methods used by VMware Cloud on AWS API samples
+
diff --git a/samples/vmc/networks/__init__.py b/samples/vmc/networks/__init__.py
new file mode 100644
index 00000000..7bdfbaaa
--- /dev/null
+++ b/samples/vmc/networks/__init__.py
@@ -0,0 +1,25 @@
+"""
+* *******************************************************
+* Copyright VMware, Inc. 2018. 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/vmc/networks/dns_crud.py b/samples/vmc/networks/dns_crud.py
new file mode 100644
index 00000000..e437f027
--- /dev/null
+++ b/samples/vmc/networks/dns_crud.py
@@ -0,0 +1,180 @@
+#!/usr/bin/env python
+
+"""
+* *******************************************************
+* Copyright (c) VMware, Inc. 2018. 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 argparse
+from com.vmware.vmc.model_client import *
+from tabulate import tabulate
+from vmware.vapi.vmc.client import create_vmc_client
+
+
+class DNSCrud(object):
+ """
+ Demonstrates DNS CRUD operations
+
+ Sample Prerequisites:
+ - An organization associated with the calling user.
+ - A SDDC in the organization
+ """
+
+ def __init__(self):
+ parser = argparse.ArgumentParser(
+ formatter_class=argparse.ArgumentDefaultsHelpFormatter)
+ parser.add_argument('-r', '--refresh-token',
+ required=True,
+ help='VMware Cloud API refresh token')
+
+ parser.add_argument('-o', '--org-id',
+ required=True,
+ help='Organization identifier.')
+
+ parser.add_argument('-s', '--sddc-id',
+ required=True,
+ help='Sddc Identifier.')
+
+ parser.add_argument('--use-compute-gateway',
+ action='store_true',
+ default=False,
+ help='Use compute gateway. Default is using '
+ 'management gateway')
+
+ parser.add_argument('-c', '--cleardata',
+ action='store_true',
+ help='Clean up after sample run')
+ args = parser.parse_args()
+
+ self.edge_id = None
+ self.org_id = args.org_id
+ self.sddc_id = args.sddc_id
+ self.compute_gw = args.use_compute_gateway
+ self.cleanup = args.cleardata
+ self.vmc_client = create_vmc_client(args.refresh_token)
+
+ def setup(self):
+ # Check if the organization exists
+ orgs = self.vmc_client.Orgs.list()
+ if self.org_id not in [org.id for org in orgs]:
+ raise ValueError("Org with ID {} doesn't exist".format(self.org_id))
+
+ # Check if the SDDC exists
+ sddcs = self.vmc_client.orgs.Sddcs.list(self.org_id)
+ if self.sddc_id not in [sddc.id for sddc in sddcs]:
+ raise ValueError("SDDC with ID {} doesn't exist in org {}".
+ format(self.sddc_id, self.org_id))
+
+ print('\n# Setup: List network gateway edges:')
+ edges = self.vmc_client.orgs.sddcs.networks.Edges.get(
+ org=self.org_id,
+ sddc=self.sddc_id,
+ edge_type='gatewayServices').edge_page.data
+
+ print(' Management Gateway ID: {}'.format(edges[0].id))
+ print(' Compute Gateway ID: {}'.format(edges[1].id))
+
+ if self.compute_gw:
+ self.edge_id = edges[1].id
+ print('# Use Compute Gateway in this Sample')
+ else:
+ self.edge_id = edges[0].id
+ print('# Use Management Gateway in this Sample')
+
+ def get_dns(self):
+ print('\n# Example: List basic DNS specs')
+
+ # Get the first DNS
+ dns = self.vmc_client.orgs.sddcs.networks.edges.dns.Config.get(
+ org=self.org_id,
+ sddc=self.sddc_id,
+ edge_id=self.edge_id).dns_views.dns_view[0]
+
+ self.print_output(dns)
+
+ def enable_disable_dns(self):
+ if self.compute_gw:
+ print('\n# Example: Enable or disable Compute Gateway DNS')
+ else:
+ print('\n# Example: Enable or disable DNS Management Gateway DNS')
+
+ dns_config = self.vmc_client.orgs.sddcs.networks.edges.dns.Config.get(
+ org=self.org_id,
+ sddc=self.sddc_id,
+ edge_id=self.edge_id)
+
+ new_state = True
+ if dns_config.enabled:
+ print('# DNS was enabled. Disable it now..')
+ new_state = False
+ else:
+ print('# DNS was disabled. Enable it now..')
+
+ self.vmc_client.orgs.sddcs.networks.edges.dns.Config.create(
+ org=self.org_id,
+ sddc=self.sddc_id,
+ edge_id=self.edge_id,
+ enable=new_state)
+
+ def update_dns(self):
+ print('\n# Example: Update the DNS IP Addresses')
+
+ dns_config = self.vmc_client.orgs.sddcs.networks.edges.dns.Config.get(
+ org=self.org_id,
+ sddc=self.sddc_id,
+ edge_id=self.edge_id)
+
+ dns_config.dns_views.dns_view[0].forwarders = DnsForwarders(
+ ip_address=['9.9.9.9', '9.9.4.4'])
+
+ self.vmc_client.orgs.sddcs.networks.edges.dns.Config.update(
+ org=self.org_id,
+ sddc=self.sddc_id,
+ edge_id=self.edge_id,
+ dns_config=dns_config
+ )
+
+ print('# List updated DNS specs')
+ updated_vpn = self.vmc_client.orgs.sddcs.networks.edges.dns.Config.get(
+ org=self.org_id,
+ sddc=self.sddc_id,
+ edge_id=self.edge_id).dns_views.dns_view[0]
+ self.print_output(updated_vpn)
+
+ def delete_dns(self):
+ if self.cleanup:
+ self.vmc_client.orgs.sddcs.networks.edges.dns.Config.delete(
+ org=self.org_id,
+ sddc=self.sddc_id,
+ edge_id=self.edge_id)
+ print('\n# Example: DNS is deleted')
+
+ def print_output(self, dns):
+ # DNS IP address might be empty
+ ips = getattr(dns.forwarders, 'ip_address', [])
+
+ result = [[dns.name, ips]]
+ print(tabulate(result, ['Name', 'IP Addresses']))
+
+
+def main():
+ dns_crud = DNSCrud()
+ dns_crud.setup()
+ dns_crud.get_dns()
+ dns_crud.enable_disable_dns()
+ dns_crud.update_dns()
+ dns_crud.delete_dns()
+
+
+if __name__ == '__main__':
+ main()
diff --git a/samples/vmc/networks/firewall_rules_crud.py b/samples/vmc/networks/firewall_rules_crud.py
new file mode 100644
index 00000000..6b827191
--- /dev/null
+++ b/samples/vmc/networks/firewall_rules_crud.py
@@ -0,0 +1,232 @@
+#!/usr/bin/env python
+
+"""
+* *******************************************************
+* Copyright (c) VMware, Inc. 2018. 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 argparse
+from com.vmware.vmc.model_client import *
+from tabulate import tabulate
+from vmware.vapi.vmc.client import create_vmc_client
+
+
+class FirewallRulesCrud(object):
+ """
+ Demonstrates firewall rule CRUD operations
+
+ Sample Prerequisites:
+ - An organization associated with the calling user.
+ - A SDDC in the organization
+ """
+
+ def __init__(self):
+ parser = argparse.ArgumentParser(
+ formatter_class=argparse.ArgumentDefaultsHelpFormatter)
+ parser.add_argument('-r', '--refresh-token',
+ required=True,
+ help='VMware Cloud API refresh token')
+
+ parser.add_argument('-o', '--org-id',
+ required=True,
+ help='Organization identifier.')
+
+ parser.add_argument('-s', '--sddc-id',
+ required=True,
+ help='Sddc Identifier.')
+
+ parser.add_argument('--rule-name',
+ default='Sample Firewall Rule',
+ help='Name of the new firewall rule')
+
+ parser.add_argument('--use-compute-gateway',
+ action='store_true',
+ default=False,
+ help='Use compute gateway. Default is using '
+ 'management gateway')
+
+ parser.add_argument('-c', '--cleardata',
+ action='store_true',
+ help='Clean up after sample run')
+ args = parser.parse_args()
+
+ self.edge_id = None
+ self.rule_id = None
+ self.nfwr = None
+ self.org_id = args.org_id
+ self.sddc_id = args.sddc_id
+ self.rule_name = args.rule_name
+ self.compute_gw = args.use_compute_gateway
+ self.cleanup = args.cleardata
+ self.vmc_client = create_vmc_client(args.refresh_token)
+
+ def setup(self):
+ # Check if the organization exists
+ orgs = self.vmc_client.Orgs.list()
+ if self.org_id not in [org.id for org in orgs]:
+ raise ValueError("Org with ID {} doesn't exist".format(self.org_id))
+
+ # Check if the SDDC exists
+ sddcs = self.vmc_client.orgs.Sddcs.list(self.org_id)
+ if self.sddc_id not in [sddc.id for sddc in sddcs]:
+ raise ValueError("SDDC with ID {} doesn't exist in org {}".
+ format(self.sddc_id, self.org_id))
+
+ def create_firewall_rule(self):
+
+ if self.compute_gw:
+ print('\n# Example: Add a firewall rule to the Compute Gateway')
+ else:
+ print('\n# Example: Add a firewall rule to the Management Gateway')
+
+ print('# List network gateway edges:')
+ edges = self.vmc_client.orgs.sddcs.networks.Edges.get(
+ org=self.org_id,
+ sddc=self.sddc_id,
+ edge_type='gatewayServices').edge_page.data
+
+ print(' Management Gateway ID: {}'.format(edges[0].id))
+ print(' Compute Gateway ID: {}'.format(edges[1].id))
+ self.edge_id = edges[1].id if self.compute_gw else edges[0].id
+
+ sddc = self.vmc_client.orgs.Sddcs.get(self.org_id, self.sddc_id)
+
+ # Construct an destination object for the new firewall rule
+ # You can use one of following destination IP addresses
+ # IPs for vCenter
+ ip_address = [sddc.resource_config.vc_public_ip,
+ sddc.resource_config.vc_management_ip]
+
+ # TODO: IPs for ESXi
+ # TODO: IPs for Site Recovery Manager
+ # TODO: IPs for vSphere Replication
+ # TODO: IPs for Management Gateway
+ # IPs for NSX Manager
+ # ip_address = [sddc.resource_config.nsx_mgr_management_ip]
+
+ destination = AddressFWSourceDestination(
+ exclude=False,
+ ip_address=ip_address,
+ grouping_object_id=[],
+ vnic_group_id=[])
+
+ # Construct a new NSX firewall rule object
+ self.nfwr = Nsxfirewallrule(rule_type='user',
+ name=self.rule_name,
+ enabled=True,
+ action='accept',
+ source=AddressFWSourceDestination(
+ exclude=False,
+ ip_address=['any'],
+ grouping_object_id=[],
+ vnic_group_id=[]),
+ destination=destination,
+ logging_enabled=False,
+ application=Application(
+ application_id=[],
+ service=[Nsxfirewallservice(
+ source_port=['any'],
+ protocol='TCP',
+ port=['443'],
+ icmp_type=None)]))
+
+ self.vmc_client.orgs.sddcs.networks.edges.firewall.config.Rules.add(
+ org=self.org_id,
+ sddc=self.sddc_id,
+ edge_id=self.edge_id,
+ firewall_rules=FirewallRules([self.nfwr]))
+
+ print('# New firewall rule "{}" is added'.format(self.rule_name))
+
+ def get_firewall_rule(self):
+
+ print('\n# Example: List basic firewall rule specs')
+ fw_config = self.vmc_client.orgs.sddcs.networks.edges.firewall.Config.get(
+ org=self.org_id,
+ sddc=self.sddc_id,
+ edge_id=self.edge_id)
+
+ fw_rules = fw_config.firewall_rules.firewall_rules
+
+ for r in fw_rules:
+ if r.name == self.rule_name:
+ self.rule_id = r.rule_id
+ break
+ else:
+ raise Exception("Can't find firewall rule with name {}".
+ format(self.rule_name))
+
+ rule = self.vmc_client.orgs.sddcs.networks.edges.firewall.config.Rules.get(
+ org=self.org_id,
+ sddc=self.sddc_id,
+ edge_id=self.edge_id,
+ rule_id=self.rule_id)
+
+ self.print_output(rule)
+
+ def update_firewall_rule(self):
+
+ print('\n# Example: Update the firewall rule')
+ self.nfwr.description = 'Updated description'
+ self.nfwr.name = 'Updated ' + self.rule_name
+ self.nfwr.action = 'deny'
+ self.nfwr.source.ip_address = ['127.0.0.1']
+
+ self.vmc_client.orgs.sddcs.networks.edges.firewall.config.Rules.update(
+ org=self.org_id,
+ sddc=self.sddc_id,
+ edge_id=self.edge_id,
+ rule_id=self.rule_id,
+ nsxfirewallrule=self.nfwr)
+
+ rule = self.vmc_client.orgs.sddcs.networks.edges.firewall.config.Rules.get(
+ org=self.org_id,
+ sddc=self.sddc_id,
+ edge_id=self.edge_id,
+ rule_id=self.rule_id)
+
+ print('# List the updated firewall rule specs')
+ self.print_output(rule)
+
+ def delete_firewall_rule(self):
+ if self.cleanup:
+ self.vmc_client.orgs.sddcs.networks.edges.firewall.config.Rules.delete(
+ org=self.org_id,
+ sddc=self.sddc_id,
+ edge_id=self.edge_id,
+ rule_id=self.rule_id)
+ print('\n# Example: Firewall rule {} is deleted'.
+ format(self.rule_name))
+
+ def print_output(self, rule):
+ result = [[rule.name, rule.action, rule.source.ip_address,
+ rule.destination.ip_address,
+ rule.application.service[0].protocol,
+ rule.application.service[0].port]]
+
+ print(tabulate(result, ['Name', 'Action', 'Source IPs',
+ 'Destination IPs', 'Service Protocol',
+ 'Service Port']))
+
+
+def main():
+ firewall_rules = FirewallRulesCrud()
+ firewall_rules.setup()
+ firewall_rules.create_firewall_rule()
+ firewall_rules.get_firewall_rule()
+ firewall_rules.update_firewall_rule()
+ firewall_rules.delete_firewall_rule()
+
+
+if __name__ == '__main__':
+ main()
diff --git a/samples/vmc/networks/ipsec_vpns_crud.py b/samples/vmc/networks/ipsec_vpns_crud.py
new file mode 100644
index 00000000..8dbcdc81
--- /dev/null
+++ b/samples/vmc/networks/ipsec_vpns_crud.py
@@ -0,0 +1,221 @@
+#!/usr/bin/env python
+
+"""
+* *******************************************************
+* Copyright (c) VMware, Inc. 2018. 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 argparse
+from com.vmware.vmc.model_client import *
+from tabulate import tabulate
+from vmware.vapi.vmc.client import create_vmc_client
+
+
+class IpsecVPNsCrud(object):
+ """
+ Demonstrates IPsec VPN CRUD operations
+
+ Sample Prerequisites:
+ - An organization associated with the calling user.
+ - A SDDC in the organization
+ """
+
+ def __init__(self):
+ parser = argparse.ArgumentParser(
+ formatter_class=argparse.ArgumentDefaultsHelpFormatter)
+ parser.add_argument('-r', '--refresh-token',
+ required=True,
+ help='VMware Cloud API refresh token')
+
+ parser.add_argument('-o', '--org-id',
+ required=True,
+ help='Organization identifier.')
+
+ parser.add_argument('-s', '--sddc-id',
+ required=True,
+ help='Sddc Identifier.')
+
+ parser.add_argument('--use-compute-gateway',
+ action='store_true',
+ default=False,
+ help='Use compute gateway. Default is using '
+ 'management gateway')
+
+ parser.add_argument('--vpn-name',
+ default='Sample IPsec VPN',
+ help='Name of the new VPN')
+
+ parser.add_argument('--public-ip',
+ default='10.10.10.10',
+ help='IP (IPv4) address or FQDN of the Peer')
+
+ parser.add_argument('--private-ip',
+ default='192.168.10.10',
+ help='Local IP of the IPsec Site')
+
+ parser.add_argument('--remote-networks',
+ default='192.168.20.10/24',
+ help='Peer subnets for which VPN is configured')
+
+ parser.add_argument('--local-networks',
+ default='192.168.30.10/24',
+ help='Local subnets for which VPN is configured')
+
+ parser.add_argument('--key',
+ default='00000000',
+ help='Pre Shared Key for the IPsec Site')
+
+ parser.add_argument('-c', '--cleardata',
+ action='store_true',
+ help='Clean up after sample run')
+ args = parser.parse_args()
+
+ self.edge_id = None
+ self.site_id = None
+ self.org_id = args.org_id
+ self.sddc_id = args.sddc_id
+ self.vpn_name = args.vpn_name
+ self.public_ip = args.public_ip
+ self.private_ip = args.private_ip
+ self.remote_networks = args.remote_networks
+ self.local_networks = args.local_networks
+ self.compute_gw = args.use_compute_gateway
+ self.key = args.key
+ self.cleanup = args.cleardata
+ self.vmc_client = create_vmc_client(args.refresh_token)
+
+ def setup(self):
+ # Check if the organization exists
+ orgs = self.vmc_client.Orgs.list()
+ if self.org_id not in [org.id for org in orgs]:
+ raise ValueError("Org with ID {} doesn't exist".format(self.org_id))
+
+ # Check if the SDDC exists
+ sddcs = self.vmc_client.orgs.Sddcs.list(self.org_id)
+ if self.sddc_id not in [sddc.id for sddc in sddcs]:
+ raise ValueError("SDDC with ID {} doesn't exist in org {}".
+ format(self.sddc_id, self.org_id))
+
+ print('\n# Setup: List network gateway edges:')
+ edges = self.vmc_client.orgs.sddcs.networks.Edges.get(
+ org=self.org_id,
+ sddc=self.sddc_id,
+ edge_type='gatewayServices').edge_page.data
+
+ print(' Management Gateway ID: {}'.format(edges[0].id))
+ print(' Compute Gateway ID: {}'.format(edges[1].id))
+ self.edge_id = edges[1].id if self.compute_gw else edges[0].id
+
+ def create_vpn(self):
+ if self.compute_gw:
+ print('\n# Example: Add a VPN to the Compute Gateway')
+ else:
+ print('\n# Example: Add a VPN to the Management Gateway')
+
+ ipsec_site = IpsecSite(
+ name=self.vpn_name,
+ psk=self.key,
+ enable_pfs=True,
+ authentication_mode='psk',
+ peer_subnets=Subnets(subnets=[self.remote_networks]),
+ peer_ip=self.public_ip,
+ local_ip=self.private_ip,
+ encryption_algorithm='aes256',
+ enabled=True,
+ local_subnets=Subnets(subnets=[self.local_networks]))
+
+ ipsec = Ipsec(enabled=True,
+ sites=IpsecSites(sites=[ipsec_site]))
+
+ # TODO: Find out how to add ipsec networks.
+ self.vmc_client.orgs.sddcs.networks.edges.ipsec.Config.update(
+ org=self.org_id,
+ sddc=self.sddc_id,
+ edge_id=self.edge_id,
+ ipsec=ipsec)
+
+ print('# New ipsec_vpn "{}" is added'.format(self.vpn_name))
+
+ def get_vpn(self):
+ print('\n# Example: List basic ipsec_vpn specs')
+ site = self.get_vpn_by_name(self.vpn_name)
+ self.site_id = site.site_id
+ self.print_output(site)
+
+ def update_vpn(self):
+ print('\n# Example: Update the IPsec VPN')
+ updated_name = 'Updated ' + self.vpn_name
+
+ ipsec = self.vmc_client.orgs.sddcs.networks.edges.ipsec.Config.get(
+ org=self.org_id,
+ sddc=self.sddc_id,
+ edge_id=self.edge_id)
+
+ for site in ipsec.sites.sites:
+ if site.name == self.vpn_name:
+ site.name = updated_name
+
+ self.vmc_client.orgs.sddcs.networks.edges.ipsec.Config.update(
+ org=self.org_id,
+ sddc=self.sddc_id,
+ edge_id=self.edge_id,
+ ipsec=ipsec)
+
+ print('# List updated VPN specs')
+ updated_vpn = self.get_vpn_by_name(updated_name)
+ self.print_output(updated_vpn)
+
+ def delete_vpn(self):
+ if self.cleanup:
+ self.vmc_client.orgs.sddcs.networks.edges.ipsec.Config.delete(
+ org=self.org_id,
+ sddc=self.sddc_id,
+ edge_id=self.edge_id)
+ print('\n# Example: IPsec VPN {} is deleted'.
+ format(self.vpn_name))
+
+ def get_vpn_by_name(self, name):
+ sites = self.vmc_client.orgs.sddcs.networks.edges.ipsec.Config.get(
+ org=self.org_id,
+ sddc=self.sddc_id,
+ edge_id=self.edge_id).sites.sites
+
+ for site in sites:
+ if site.name == name:
+ return site
+ else:
+ raise Exception("Can't find IPsec VPN with name {}".
+ format(self.vpn_name))
+
+ def print_output(self, site):
+ result = [[site.name, site.site_id, site.peer_ip, site.peer_id,
+ site.peer_subnets, site.local_ip, site.local_subnets]]
+
+ print(tabulate(result, ['Name', 'ID', 'Public IPs', 'Private IP',
+ 'Remote Networks', 'Local Gateway IP',
+ 'Local Network']))
+
+
+def main():
+ ipsec_vpns = IpsecVPNsCrud()
+ ipsec_vpns.setup()
+
+ # TODO: Find out which API should be used to add IPsec VPN
+ # ipsec_vpns.create_vpn()
+ ipsec_vpns.get_vpn()
+ ipsec_vpns.update_vpn()
+ ipsec_vpns.delete_vpn()
+
+
+if __name__ == '__main__':
+ main()
diff --git a/samples/vmc/networks/logical_network_crud.py b/samples/vmc/networks/logical_network_crud.py
new file mode 100644
index 00000000..69a53481
--- /dev/null
+++ b/samples/vmc/networks/logical_network_crud.py
@@ -0,0 +1,208 @@
+#!/usr/bin/env python
+
+"""
+* *******************************************************
+* Copyright (c) VMware, Inc. 2018. 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 argparse
+from com.vmware.vmc.model_client import *
+from tabulate import tabulate
+from vmware.vapi.vmc.client import create_vmc_client
+
+
+class LogicalNetworkCrud(object):
+ """
+ Demonstrates logical network CRUD operations
+
+ Sample Prerequisites:
+ - An organization associated with the calling user.
+ - A SDDC in the organization
+ """
+
+ def __init__(self):
+ parser = argparse.ArgumentParser(
+ formatter_class=argparse.ArgumentDefaultsHelpFormatter)
+ parser.add_argument('-r', '--refresh-token',
+ required=True,
+ help='VMware Cloud API refresh token')
+
+ parser.add_argument('-o', '--org-id',
+ required=True,
+ help='Organization identifier.')
+
+ parser.add_argument('-s', '--sddc-id',
+ required=True,
+ help='Sddc Identifier.')
+
+ parser.add_argument('--network-name',
+ default='Sample Logical Network',
+ help='Name of the new logical network')
+
+ parser.add_argument('--subnet',
+ default='192.168.100.1/24',
+ help='Logical network subnet')
+
+ parser.add_argument('--dhcp-range',
+ default='192.168.100.2-192.168.100.254',
+ help='DHCP IP range for the logical network')
+
+ parser.add_argument('-c', '--cleardata',
+ action='store_true',
+ help='Clean up after sample run')
+ args = parser.parse_args()
+
+ self.network_id = None
+ self.org_id = args.org_id
+ self.sddc_id = args.sddc_id
+ self.network_name = args.network_name
+ self.primary_address, self.prefix_length = args.subnet.split('/')
+ self.dhcp_range = args.dhcp_range
+ self.cleanup = args.cleardata
+ self.vmc_client = create_vmc_client(args.refresh_token)
+
+ def setup(self):
+ # Check if the organization exists
+ orgs = self.vmc_client.Orgs.list()
+ if self.org_id not in [org.id for org in orgs]:
+ raise ValueError("Org with ID {} doesn't exist".format(self.org_id))
+
+ # Check if the SDDC exists
+ sddcs = self.vmc_client.orgs.Sddcs.list(self.org_id)
+ if self.sddc_id not in [sddc.id for sddc in sddcs]:
+ raise ValueError("SDDC with ID {} doesn't exist in org {}".
+ format(self.sddc_id, self.org_id))
+
+ # Delete logical networks with same name
+ networks = self.vmc_client.orgs.sddcs.networks.Logical.get_0(
+ org=self.org_id,
+ sddc=self.sddc_id).data
+ for network in networks:
+ if network.name == self.network_name:
+ self.vmc_client.orgs.sddcs.networks.Logical.delete(
+ org=self.org_id,
+ sddc=self.sddc_id,
+ network_id=network.id)
+ print('\n# Setup: Logical network "{}" '
+ 'with the same name is deleted'.format(network.id))
+
+ def create_logical_network(self):
+ print('\n# Example: Add a logical network to the compute gateway')
+ edges = self.vmc_client.orgs.sddcs.networks.Edges.get(
+ org=self.org_id,
+ sddc=self.sddc_id,
+ edge_type='gatewayServices').edge_page.data
+ print(' Compute Gateway ID: {}'.format(edges[1].id))
+ edge_id = edges[1].id
+
+ # Construct a new NSX logical network spec
+ network = SddcNetwork(
+ subnets=SddcNetworkAddressGroups(
+ address_groups=[SddcNetworkAddressGroup(
+ prefix_length=self.prefix_length,
+ primary_address=self.primary_address)]),
+ name=self.network_name,
+ cgw_id=edge_id,
+ dhcp_configs=SddcNetworkDhcpConfig(
+ ip_pools=[SddcNetworkDhcpIpPool(
+ ip_range=self.dhcp_range,
+ domain_name=None)]))
+
+ self.vmc_client.orgs.sddcs.networks.Logical.create(
+ org=self.org_id,
+ sddc=self.sddc_id,
+ sddc_network=network)
+
+ print('\n# New logical network "{}" is added'.format(self.network_name))
+
+ def get_logical_network(self):
+ print('\n# Example: List all logical networks')
+ networks = self.vmc_client.orgs.sddcs.networks.Logical.get_0(
+ org=self.org_id,
+ sddc=self.sddc_id).data
+
+ self.print_output(networks)
+
+ for network in networks:
+ if network.name == self.network_name:
+ self.network_id = network.id
+ break
+ else:
+ raise Exception("Can't find logical network with name {}".
+ format(self.network_name))
+
+ print('\n# Get the new logical network specs')
+ network = self.vmc_client.orgs.sddcs.networks.Logical.get(
+ org=self.org_id,
+ sddc=self.sddc_id,
+ network_id=self.network_id)
+
+ self.print_output([network])
+
+ def update_logical_network(self):
+ print('\n# Example: Update the logical network')
+ network = self.vmc_client.orgs.sddcs.networks.Logical.get(
+ org=self.org_id,
+ sddc=self.sddc_id,
+ network_id=self.network_id)
+ network.l2_extension = L2Extension(123)
+ network.subnets = None
+ network.dhcp_configs = None
+
+ self.vmc_client.orgs.sddcs.networks.Logical.update(
+ org=self.org_id,
+ sddc=self.sddc_id,
+ network_id=self.network_id,
+ sddc_network=network)
+
+ network = self.vmc_client.orgs.sddcs.networks.Logical.get(
+ org=self.org_id,
+ sddc=self.sddc_id,
+ network_id=self.network_id)
+
+ print('# List the updated logical network specs')
+ self.print_output([network])
+
+ def delete_logical_network(self):
+ if self.cleanup:
+ self.vmc_client.orgs.sddcs.networks.Logical.delete(
+ org=self.org_id,
+ sddc=self.sddc_id,
+ network_id=self.network_id)
+ print('\n# Example: Logical network "{}" is deleted'.
+ format(self.network_name))
+
+ def print_output(self, networks):
+ table = []
+ for network in networks:
+ table.append([network.cgw_name, network.id, network.name,
+ '{}/{}'.format(
+ network.subnets.address_groups[0].primary_address,
+ network.subnets.address_groups[0].prefix_length),
+ network.dhcp_configs.ip_pools[0].ip_range])
+ print(tabulate(table, ['Gateway', 'Network ID', 'Network Name',
+ 'Subnets', 'DHCP']))
+
+
+def main():
+ logical_network_crud = LogicalNetworkCrud()
+ logical_network_crud.setup()
+ logical_network_crud.create_logical_network()
+ logical_network_crud.get_logical_network()
+ # TODO: figure out the requirements for updating logical network
+ # logical_network_crud.update_logical_network()
+ logical_network_crud.delete_logical_network()
+
+
+if __name__ == '__main__':
+ main()
diff --git a/samples/vmc/networks/nat_rule_crud.py b/samples/vmc/networks/nat_rule_crud.py
new file mode 100644
index 00000000..5ec20fa0
--- /dev/null
+++ b/samples/vmc/networks/nat_rule_crud.py
@@ -0,0 +1,199 @@
+#!/usr/bin/env python
+
+"""
+* *******************************************************
+* Copyright (c) VMware, Inc. 2018. 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 argparse
+from com.vmware.vmc.model_client import *
+from tabulate import tabulate
+from vmware.vapi.vmc.client import create_vmc_client
+
+
+class NatRuleCrud(object):
+ """
+ Demonstrates NAT rule CRUD operations
+
+ Sample Prerequisites:
+ - An organization associated with the calling user.
+ - A SDDC in the organization
+ """
+
+ def __init__(self):
+ parser = argparse.ArgumentParser(
+ formatter_class=argparse.ArgumentDefaultsHelpFormatter)
+ parser.add_argument('-r', '--refresh-token',
+ required=True,
+ help='VMware Cloud API refresh token')
+
+ parser.add_argument('-o', '--org-id',
+ required=True,
+ help='Organization identifier.')
+
+ parser.add_argument('-s', '--sddc-id',
+ required=True,
+ help='Sddc Identifier.')
+
+ parser.add_argument('--public-ip',
+ help='Public IP range for the NAT rule')
+
+ parser.add_argument('--rule-description',
+ default='Sample NAT rule',
+ help='Description for the rule')
+
+ parser.add_argument('--internal-ip',
+ default='192.168.200.1/24',
+ help='NAT rule subnet')
+
+ parser.add_argument('-c', '--cleardata',
+ action='store_true',
+ help='Clean up after sample run')
+ args = parser.parse_args()
+
+ self.network_id = None
+ self.edge_id = None
+ self.rule_id = None
+ self.org_id = args.org_id
+ self.sddc_id = args.sddc_id
+ self.public_ip = args.public_ip
+ self.internal_ip = args.internal_ip
+ self.rule_description = args.rule_description
+ self.internal_ip = args.internal_ip
+ self.cleanup = args.cleardata
+ self.vmc_client = create_vmc_client(args.refresh_token)
+
+ def setup(self):
+ # Check if the organization exists
+ orgs = self.vmc_client.Orgs.list()
+ if self.org_id not in [org.id for org in orgs]:
+ raise ValueError("Org with ID {} doesn't exist".format(self.org_id))
+
+ # Check if the SDDC exists
+ sddcs = self.vmc_client.orgs.Sddcs.list(self.org_id)
+ if self.sddc_id not in [sddc.id for sddc in sddcs]:
+ raise ValueError("SDDC with ID {} doesn't exist in org {}".
+ format(self.sddc_id, self.org_id))
+
+ edges = self.vmc_client.orgs.sddcs.networks.Edges.get(
+ org=self.org_id,
+ sddc=self.sddc_id,
+ edge_type='gatewayServices').edge_page.data
+ print('\n# Setup: Compute Gateway ID: {}'.format(edges[1].id))
+ self.edge_id = edges[1].id
+
+ # Delete NAT rules with same name
+ rules = self.get_nat_rules_by_description(self.rule_description)
+ for rule in rules:
+ self.vmc_client.orgs.sddcs.networks.edges.nat.config.Rules.delete(
+ org=self.org_id,
+ sddc=self.sddc_id,
+ edge_id=self.edge_id,
+ rule_id=rule.rule_id)
+ print('\n# Setup: NAT Rule "{}" '
+ 'with the same name is deleted'.format(rule.description))
+
+ def create_net_rule(self):
+ print('\n# Example: Add a NAT rule to the compute gateway')
+
+ # Construct a new NSX NAT rule spec
+ rule = Nsxnatrule(vnic='0',
+ rule_type='user',
+ action='dnat', # Supported types are DNAT|SNAT
+ protocol='tcp',
+ description=self.rule_description,
+ original_address=self.public_ip,
+ original_port='443',
+ translated_address=self.internal_ip,
+ translated_port='443',
+ enabled=True)
+
+ self.vmc_client.orgs.sddcs.networks.edges.nat.config.Rules.add(
+ org=self.org_id,
+ sddc=self.sddc_id,
+ edge_id=self.edge_id,
+ nat_rules=NatRules([rule]))
+
+ print('\n# New NAT rule "{}" is added'.format(self.rule_description))
+
+ def get_net_rule(self):
+ print('\n# Example: List all NAT rules')
+ rules = self.vmc_client.orgs.sddcs.networks.edges.nat.Config.get(
+ org=self.org_id,
+ sddc=self.sddc_id,
+ edge_id=self.edge_id).rules.nat_rules_dtos
+ self.print_output(rules)
+
+ def update_net_rule(self):
+ print("\n# Example: Update the NAT rule")
+
+ rule = self.get_nat_rules_by_description(self.rule_description)[0]
+ rule.Description = 'Updated' + self.rule_description
+ rule.original_port = 'any'
+
+ self.vmc_client.orgs.sddcs.networks.edges.nat.config.Rules.update(
+ org=self.org_id,
+ sddc=self.sddc_id,
+ edge_id=self.edge_id,
+ rule_id=rule.rule_id,
+ nsxnatrule=rule)
+
+ self.rule_id = rule.rule_id
+
+ print('# List the updated NAT rule specs')
+ rule = self.get_nat_rules_by_description(self.rule_description)[0]
+ self.print_output([rule])
+
+ def delete_net_rule(self):
+ if self.cleanup:
+ self.vmc_client.orgs.sddcs.networks.edges.nat.config.Rules.delete(
+ org=self.org_id,
+ sddc=self.sddc_id,
+ edge_id=self.edge_id,
+ rule_id=self.rule_id)
+ print('\n# Example: NAT rule "{}" is deleted'.
+ format(self.rule_description))
+
+ def get_nat_rules_by_description(self, description):
+ rules = self.vmc_client.orgs.sddcs.networks.edges.nat.Config.get(
+ org=self.org_id,
+ sddc=self.sddc_id,
+ edge_id=self.edge_id).rules.nat_rules_dtos
+ result = []
+ for rule in rules:
+ if rule.description == description:
+ result.append(rule)
+ return result
+
+ def print_output(self, rules):
+ table = []
+ for rule in rules:
+ table.append([rule.description, rule.rule_id, rule.action,
+ rule.original_address, rule.original_port,
+ rule.translated_address, rule.translated_port])
+ print(tabulate(table, ['Description', 'Rule ID', 'Action',
+ 'Public IP', 'Public Ports',
+ 'Internal IP', 'Internal Ports']))
+
+
+def main():
+ net_rule_crud = NatRuleCrud()
+ net_rule_crud.setup()
+ net_rule_crud.create_net_rule()
+ net_rule_crud.get_net_rule()
+ net_rule_crud.update_net_rule()
+ net_rule_crud.delete_net_rule()
+
+
+if __name__ == '__main__':
+ main()
diff --git a/samples/vmc/networks/public_ip_crud.py b/samples/vmc/networks/public_ip_crud.py
new file mode 100644
index 00000000..d8e0499d
--- /dev/null
+++ b/samples/vmc/networks/public_ip_crud.py
@@ -0,0 +1,171 @@
+#!/usr/bin/env python
+
+"""
+* *******************************************************
+* Copyright (c) VMware, Inc. 2018. 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 argparse
+from com.vmware.vmc.model_client import *
+from tabulate import tabulate
+from vmware.vapi.vmc.client import create_vmc_client
+
+from samples.vmc.helpers.vmc_task_helper import wait_for_task
+
+
+class PublicIPsCrud(object):
+ """
+ Demonstrates public IP CRUD operations
+
+ Sample Prerequisites:
+ - An organization associated with the calling user.
+ - A SDDC in the organization
+ """
+
+ def __init__(self):
+ parser = argparse.ArgumentParser(
+ formatter_class=argparse.ArgumentDefaultsHelpFormatter)
+ parser.add_argument('-r', '--refresh-token',
+ required=True,
+ help='VMware Cloud API refresh token')
+
+ parser.add_argument('-o', '--org-id',
+ required=True,
+ help='Organization identifier.')
+
+ parser.add_argument('-s', '--sddc-id',
+ required=True,
+ help='Sddc Identifier.')
+
+ parser.add_argument('--notes',
+ default='Sample public IP',
+ help='Notes of the new public IP')
+
+ parser.add_argument('-c', '--cleardata',
+ action='store_true',
+ help='Clean up after sample run')
+ args = parser.parse_args()
+
+ self.ip_id = None
+ self.org_id = args.org_id
+ self.sddc_id = args.sddc_id
+ self.notes = args.notes
+ self.cleanup = args.cleardata
+ self.vmc_client = create_vmc_client(args.refresh_token)
+
+ def setup(self):
+ # Check if the organization exists
+ orgs = self.vmc_client.Orgs.list()
+ if self.org_id not in [org.id for org in orgs]:
+ raise ValueError("Org with ID {} doesn't exist".format(self.org_id))
+
+ # Check if the SDDC exists
+ sddcs = self.vmc_client.orgs.Sddcs.list(self.org_id)
+ if self.sddc_id not in [sddc.id for sddc in sddcs]:
+ raise ValueError("SDDC with ID {} doesn't exist in org {}".
+ format(self.sddc_id, self.org_id))
+
+ def request_public_ip(self):
+
+ print('\n# Example: Request a new IP for SDDC')
+ ip_spec = SddcAllocatePublicIpSpec(names=[self.notes], count=1)
+ task = self.vmc_client.orgs.sddcs.Publicips.create(
+ org=self.org_id,
+ sddc=self.sddc_id,
+ spec=ip_spec)
+
+ wait_for_task(task_client=self.vmc_client.orgs.Tasks,
+ org_id=self.org_id,
+ task_id=task.id,
+ interval_sec=2)
+
+ ips = self.vmc_client.orgs.sddcs.Publicips.list(
+ org=self.org_id,
+ sddc=self.sddc_id)
+
+ for ip in ips:
+ if ip.name == self.notes:
+ self.ip_id = ip.allocation_id
+ print('# Successfully requested public IP {}'.
+ format(ip.public_ip))
+ break
+ else:
+ raise Exception("Can't find public IP with notes {}".
+ format(self.notes))
+
+ def get_public_ip(self):
+
+ print('\n# Example: List all public IPs for the SDDC')
+ ips = self.vmc_client.orgs.sddcs.Publicips.list(
+ org=self.org_id,
+ sddc=self.sddc_id)
+ self.print_output(ips)
+
+ print('\n# Example: Get the specific IP with ID {}'.format(self.ip_id))
+ ip = self.vmc_client.orgs.sddcs.Publicips.get(
+ org=self.org_id,
+ sddc=self.sddc_id,
+ id=self.ip_id)
+ self.print_output([ip])
+
+ def update_public_ip(self):
+
+ print('\n# Example: Update the public IP notes')
+ ip = self.vmc_client.orgs.sddcs.Publicips.get(
+ org=self.org_id,
+ sddc=self.sddc_id,
+ id=self.ip_id)
+ ip.name = 'Updated ' + ip.name
+
+ self.vmc_client.orgs.sddcs.Publicips.update(
+ org=self.org_id,
+ sddc=self.sddc_id,
+ id=self.ip_id,
+ action='rename',
+ sddc_public_ip_object=ip)
+
+ ip = self.vmc_client.orgs.sddcs.Publicips.get(
+ org=self.org_id,
+ sddc=self.sddc_id,
+ id=self.ip_id)
+
+ print('# List the updated public IP')
+ self.print_output([ip])
+
+ def delete_public_ip(self):
+ if self.cleanup:
+ self.vmc_client.orgs.sddcs.Publicips.delete(
+ org=self.org_id,
+ sddc=self.sddc_id,
+ id=self.ip_id)
+ print('\n# Example: Public IP "{}" is deleted'.
+ format(self.notes))
+
+ def print_output(self, ips):
+ result = []
+ for ip in ips:
+ result.append([ip.public_ip, ip.allocation_id, ip.name])
+ print(tabulate(result, ['Public IP', 'ID', 'Notes']))
+
+
+def main():
+ public_ips_crud = PublicIPsCrud()
+ public_ips_crud.setup()
+ public_ips_crud.request_public_ip()
+ public_ips_crud.get_public_ip()
+ public_ips_crud.update_public_ip()
+ public_ips_crud.delete_public_ip()
+
+
+if __name__ == '__main__':
+ main()
diff --git a/samples/vmc/orgs/README.md b/samples/vmc/orgs/README.md
index 1ae9ec6a..22bae0d8 100644
--- a/samples/vmc/orgs/README.md
+++ b/samples/vmc/orgs/README.md
@@ -2,7 +2,7 @@ This directory contains samples for VMC organization APIs:
Running the samples
- $ python organization_operations.py
+ $ python organization_operations.py -r
* Testbed Requirement:
- At least one org associated with the calling user.
diff --git a/samples/vmc/orgs/organization_operations.py b/samples/vmc/orgs/organization_operations.py
index a41a5d1b..7e5c40cb 100644
--- a/samples/vmc/orgs/organization_operations.py
+++ b/samples/vmc/orgs/organization_operations.py
@@ -41,8 +41,10 @@ class OperationsOnOrganizations(object):
parser = argparse.ArgumentParser(
formatter_class=argparse.ArgumentDefaultsHelpFormatter)
- parser.add_argument('refresh_token',
+ parser.add_argument('-r', '--refresh-token',
+ required=True,
help='VMware Cloud API refresh token')
+
self.refresh_token = parser.parse_args().refresh_token
def setup(self):
diff --git a/samples/vmc/sddc/add_remove_hosts.py b/samples/vmc/sddc/add_remove_hosts.py
index 0581759c..068845cf 100644
--- a/samples/vmc/sddc/add_remove_hosts.py
+++ b/samples/vmc/sddc/add_remove_hosts.py
@@ -45,16 +45,19 @@ class AddRemoveHosts(object):
parser = argparse.ArgumentParser(
formatter_class=argparse.ArgumentDefaultsHelpFormatter)
- parser.add_argument('refresh_token',
+ parser.add_argument('-r', '--refresh-token',
+ required=True,
help='VMware Cloud API refresh token')
- parser.add_argument('org_id',
+ parser.add_argument('-o', '--org-id',
+ required=True,
help='Organization identifier.')
- parser.add_argument('sddc_id',
+ parser.add_argument('-s', '--sddc-id',
+ required=True,
help='Sddc Identifier.')
- parser.add_argument('-i', '--interval_sec',
+ parser.add_argument('-i', '--interval-sec',
default=60,
help='Task pulling interval in sec')
diff --git a/samples/vmc/sddc/create_delete_sddc.py b/samples/vmc/sddc/create_delete_sddc.py
index 84a2ae6e..f2fed5b1 100644
--- a/samples/vmc/sddc/create_delete_sddc.py
+++ b/samples/vmc/sddc/create_delete_sddc.py
@@ -48,17 +48,19 @@ class CreateDeleteSDDC(object):
def option(self):
parser = argparse.ArgumentParser()
- parser.add_argument('refresh_token',
+ parser.add_argument('-r', '--refresh-token',
+ required=True,
help='VMware Cloud API refresh token')
- parser.add_argument('org_id',
- help='Organization identifier')
+ parser.add_argument('-o', '--org-id',
+ required=True,
+ help='Organization identifier.')
- parser.add_argument('-sn', '--sddc_name',
+ parser.add_argument('-sn', '--sddc-name',
help="Name of the SDDC to be created. "
"Default is 'Sample SDDC xx'")
- parser.add_argument('-i', '--interval_sec',
+ parser.add_argument('-i', '--interval-sec',
default=60,
help='Task pulling interval in sec')
diff --git a/samples/vsphere/README.md b/samples/vsphere/README.md
index 4022f027..8d01a4dc 100644
--- a/samples/vsphere/README.md
+++ b/samples/vsphere/README.md
@@ -1,4 +1,4 @@
-# vSphere Samples
+#Client Samples
The following table shows the sample sub-directories and their contents.
diff --git a/samples/vsphere/__init__.py b/samples/vsphere/__init__.py
index 1a000fbf..42b8a50b 100644
--- a/samples/vsphere/__init__.py
+++ b/samples/vsphere/__init__.py
@@ -12,14 +12,14 @@
"""
__author__ = 'VMware, Inc.'
+__copyright__ = 'Copyright 2016 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/common/connect_with_cert.py b/samples/vsphere/common/connect_with_cert.py
index 187efe30..ddea82ec 100644
--- a/samples/vsphere/common/connect_with_cert.py
+++ b/samples/vsphere/common/connect_with_cert.py
@@ -2,7 +2,7 @@
"""
* *******************************************************
-* Copyright (c) VMware, Inc. 2017. All Rights Reserved.
+* Copyright (c) VMware, Inc. 2017, 2018. All Rights Reserved.
* SPDX-License-Identifier: MIT
* *******************************************************
*
@@ -14,14 +14,16 @@
"""
__author__ = 'VMware, Inc.'
-__copyright__ = 'Copyright 2017 VMware, Inc. All rights reserved.'
__vcenter_version__ = '6.0+'
-import atexit
-from com.vmware.cis.tagging_client import (Category, CategoryModel)
-from samples.vsphere.common import vapiconnect
+import requests
+
+from vmware.vapi.vsphere.client import create_vsphere_client
+
+from com.vmware.cis.tagging_client import CategoryModel
+
from samples.vsphere.common.sample_util import process_cli_args
-from samples.vsphere.common.sample_cli import build_arg_parser
+from samples.vsphere.common import sample_cli
class CertConnect(object):
@@ -31,66 +33,44 @@ class CertConnect(object):
"""
def __init__(self):
- self.server = None
- self.username = None
- self.password = None
- self.stub_config = None
- self.cleardata = None
- self.skip_verification = False
- self.cert_path = None
- self.category_svc = None
- self.category_id = None
-
- def setup(self):
- parser = build_arg_parser()
+ parser = sample_cli.build_arg_parser()
parser.add_argument('-cpath', '--cert_path',
action='store',
help='path to a CA_BUNDLE file or directory with certificates of trusted CAs')
args = parser.parse_args()
-
- self.server, self.username, self.password, self.cleardata, self.skip_verification = \
- process_cli_args(args)
-
- if args.cert_path:
- self.cert_path = args.cert_path
+ self.args = process_cli_args(args)
def run(self):
print('\n\n#### Example: Login to vCenter server with '
'Valid Cert Verification')
+
+ # Create a requests session and load the CA cert
+ session = requests.session()
+ session.verify = self.args.cert_path
+
# Connect to VAPI
- self.stub_config = vapiconnect.connect(self.server, self.username, self.password,
- self.skip_verification,
- cert_path=self.cert_path)
- atexit.register(vapiconnect.logout, self.stub_config)
+ client = create_vsphere_client(server=self.args.server,
+ username=self.args.username,
+ password=self.args.password,
+ session=session)
- # Create and Delete TagCategory to Verify connection is successful
- print('\nStep 3: Creating and Deleting Tag Category...\n')
- self.category_svc = Category(self.stub_config)
-
- self.category_id = self.create_tag_category('TestTagCat', 'TestTagDesc',
- CategoryModel.Cardinality.MULTIPLE)
- assert self.category_id is not None
- print('Tag category created; Id: {0}\n'.format(self.category_id))
+ # List Tag Categories to verify the connection is successful
+ print('\nStep 3: Listing the Tag Categories...\n')
+ create_spec = client.tagging.Category.CreateSpec()
+ create_spec.name = 'TestTag_connect_with_cert'
+ create_spec.description = 'TestTagDesc'
+ create_spec.cardinality = CategoryModel.Cardinality.MULTIPLE
+ create_spec.associable_types = set()
+ category_id = client.tagging.Category.create(create_spec)
+ assert category_id is not None
+ print('Tag category created; Id: {0}\n'.format(category_id))
# Delete TagCategory
- self.category_svc.delete(self.category_id)
-
- print('VAPI session disconnected successfully...')
-
- def create_tag_category(self, name, description, cardinality):
- """create a category. User who invokes this needs create category privilege."""
- create_spec = self.category_svc.CreateSpec()
- create_spec.name = name
- create_spec.description = description
- create_spec.cardinality = cardinality
- associableTypes = set()
- create_spec.associable_types = associableTypes
- return self.category_svc.create(create_spec)
+ client.tagging.Category.delete(category_id)
def main():
connect_with_cert = CertConnect()
- connect_with_cert.setup()
connect_with_cert.run()
diff --git a/samples/vsphere/common/sample_util.py b/samples/vsphere/common/sample_util.py
index a92f8336..262343b6 100644
--- a/samples/vsphere/common/sample_util.py
+++ b/samples/vsphere/common/sample_util.py
@@ -1,6 +1,6 @@
"""
* *******************************************************
-* Copyright (c) VMware, Inc. 2016. All Rights Reserved.
+* Copyright (c) VMware, Inc. 2016-2018. All Rights Reserved.
* SPDX-License-Identifier: MIT
* *******************************************************
*
@@ -12,7 +12,6 @@
"""
__author__ = 'VMware, Inc.'
-__copyright__ = 'Copyright 2016 VMware, Inc. All rights reserved.'
from six.moves import cStringIO
from vmware.vapi.bindings.struct import PrettyPrinter
@@ -85,17 +84,17 @@ def process_cli_args(args):
class Context(object):
"""Class that holds common context for running vcenter samples."""
- def __init__(self, testbed, service_instance, stub_config):
+ def __init__(self, testbed, service_instance, client):
# Testbed configuration
- self.testbed = testbed
+ self._testbed = testbed
# pyVmomi SOAP Service Instance
- self.service_instance = service_instance
+ self._service_instance = service_instance
- # vAPI stub configuration used to make other stubs
- self.stub_config = stub_config
+ # vAPI vSphere client
+ self._client = client
- self.option = {}
+ self._option = {}
@property
def testbed(self):
@@ -122,12 +121,12 @@ class Context(object):
self._soap_stub = value
@property
- def stub_config(self):
- return self._stub_config
+ def client(self):
+ return self._client
- @stub_config.setter
- def stub_config(self, value):
- self._stub_config = value
+ @client.setter
+ def client(self, value):
+ self._client = value
@property
def option(self):
diff --git a/samples/vsphere/common/ssl_helper.py b/samples/vsphere/common/ssl_helper.py
index d645e2c6..aa968ef3 100644
--- a/samples/vsphere/common/ssl_helper.py
+++ b/samples/vsphere/common/ssl_helper.py
@@ -12,9 +12,9 @@
"""
__author__ = 'VMware, Inc.'
-__copyright__ = 'Copyright 2016 VMware, Inc. All rights reserved.'
import ssl
+import requests
def get_unverified_context():
@@ -27,3 +27,16 @@ def get_unverified_context():
if hasattr(ssl, '_create_unverified_context'):
context = ssl._create_unverified_context()
return context
+
+
+def get_unverified_session():
+ """
+ Get a requests session with cert verification disabled.
+ Also disable the insecure warnings message.
+ Note this is not recommended in production code.
+ @return: a requests session with verification disabled.
+ """
+ session = requests.session()
+ session.verify = False
+ requests.packages.urllib3.disable_warnings()
+ return session
diff --git a/samples/vsphere/common/vim/file.py b/samples/vsphere/common/vim/file.py
index 0a56034e..4c95398e 100644
--- a/samples/vsphere/common/vim/file.py
+++ b/samples/vsphere/common/vim/file.py
@@ -1,6 +1,6 @@
"""
* *******************************************************
-* Copyright (c) VMware, Inc. 2016. All Rights Reserved.
+* Copyright (c) VMware, Inc. 2016-2018. All Rights Reserved.
* SPDX-License-Identifier: MIT
* *******************************************************
*
@@ -12,7 +12,6 @@
"""
__author__ = 'VMware, Inc.'
-__copyright__ = 'Copyright 2016 VMware, Inc. All rights reserved.'
import re
@@ -35,7 +34,7 @@ def parse_datastore_path(datastore_path):
def detect_directory(context, description, datacenter_name, datastore_path):
"""Find directory based on specific datacenter and datastore path"""
(datastore_name, path) = parse_datastore_path(datastore_path)
- datastore_mo = get_datastore_mo(context.stub_config,
+ datastore_mo = get_datastore_mo(context.client,
context.service_instance._stub,
datacenter_name,
datastore_name)
@@ -57,7 +56,7 @@ def detect_directory(context, description, datacenter_name, datastore_path):
def create_directory(context, description, datacenter_name, datastore_path):
"""Create directory in specific datacenter"""
(datastore_name, path) = parse_datastore_path(datastore_path)
- datastore_mo = get_datastore_mo(context.stub_config,
+ datastore_mo = get_datastore_mo(context.client,
context.service_instance._stub,
datacenter_name,
datastore_name)
@@ -76,7 +75,7 @@ def create_directory(context, description, datacenter_name, datastore_path):
def delete_directory(context, description, datacenter_name, datastore_path):
"""Delete directory from specific datacenter"""
(datastore_name, path) = parse_datastore_path(datastore_path)
- datastore_mo = get_datastore_mo(context.stub_config,
+ datastore_mo = get_datastore_mo(context.client,
context.service_instance._stub,
datacenter_name,
datastore_name)
@@ -92,7 +91,7 @@ def delete_directory(context, description, datacenter_name, datastore_path):
def detect_file(context, description, datacenter_name, datastore_path):
"""Find specific file in specific datacenter"""
(datastore_name, path) = parse_datastore_path(datastore_path)
- datastore_mo = get_datastore_mo(context.stub_config,
+ datastore_mo = get_datastore_mo(context.client,
context.service_instance._stub,
datacenter_name,
datastore_name)
@@ -111,11 +110,11 @@ def detect_file(context, description, datacenter_name, datastore_path):
return True
-def delete_file(stub_config, service_instance,
+def delete_file(client, service_instance,
description, datacenter_name, datastore_path):
"""Delete a file from specific datacenter"""
(datastore_name, path) = parse_datastore_path(datastore_path)
- datastore_mo = get_datastore_mo(stub_config,
+ datastore_mo = get_datastore_mo(client,
service_instance._stub,
datacenter_name,
datastore_name)
diff --git a/samples/vsphere/common/vim/inventory.py b/samples/vsphere/common/vim/inventory.py
index 1917c4dc..ceb9bf79 100644
--- a/samples/vsphere/common/vim/inventory.py
+++ b/samples/vsphere/common/vim/inventory.py
@@ -1,6 +1,6 @@
"""
* *******************************************************
-* Copyright (c) VMware, Inc. 2016. All Rights Reserved.
+* Copyright (c) VMware, Inc. 2016-2018. All Rights Reserved.
* SPDX-License-Identifier: MIT
* *******************************************************
*
@@ -12,7 +12,6 @@
"""
__author__ = 'VMware, Inc.'
-__copyright__ = 'Copyright 2016 VMware, Inc. All rights reserved.'
__vcenter__ = 'since 6.0'
from pyVmomi import vim
@@ -20,12 +19,12 @@ from pyVmomi import vim
from samples.vsphere.vcenter.helper.datastore_helper import get_datastore
-def get_datastore_mo(stub_config, soap_stub,
+def get_datastore_mo(client, soap_stub,
datacenter_name, datastore_name):
"""
Return datastore managed object with specific datacenter and datastore name
"""
- datastore = get_datastore(stub_config, datacenter_name, datastore_name)
+ datastore = get_datastore(client, datacenter_name, datastore_name)
if not datastore:
return None
datastore_mo = vim.Datastore(datastore, soap_stub)
diff --git a/samples/vsphere/common/vim/vmdk.py b/samples/vsphere/common/vim/vmdk.py
index c4a7ca76..7c4b6139 100644
--- a/samples/vsphere/common/vim/vmdk.py
+++ b/samples/vsphere/common/vim/vmdk.py
@@ -1,6 +1,6 @@
"""
* *******************************************************
-* Copyright (c) VMware, Inc. 2016. All Rights Reserved.
+* Copyright (c) VMware, Inc. 2016-2018. All Rights Reserved.
* SPDX-License-Identifier: MIT
* *******************************************************
*
@@ -12,7 +12,6 @@
"""
__author__ = 'VMware, Inc.'
-__copyright__ = 'Copyright 2016 VMware, Inc. All rights reserved.'
import pyVim.task
from pyVmomi import vim
@@ -42,10 +41,10 @@ def delete_vmdk(service_instance, datacenter_mo, datastore_path):
pyVim.task.WaitForTask(task)
-def detect_vmdk(stub_config, soap_stub, datacenter_name, datastore_name,
+def detect_vmdk(client, soap_stub, datacenter_name, datastore_name,
datastore_path):
"""Find vmdk in specific datastore"""
- datastore_mo = get_datastore_mo(stub_config,
+ datastore_mo = get_datastore_mo(client,
soap_stub,
datacenter_name,
datastore_name)
diff --git a/samples/vsphere/contentlibrary/README.md b/samples/vsphere/contentlibrary/README.md
index 5467e24c..10849936 100644
--- a/samples/vsphere/contentlibrary/README.md
+++ b/samples/vsphere/contentlibrary/README.md
@@ -7,8 +7,8 @@ This directory contains samples for Content Library APIs:
* Basic workflow to publish and subscribe content libraries - publishsubscribe/library_publish_subscribe.py
* Workflow to capture a virtual machine into a content library - vmcapture/vm_template_capture.py
* Content library ISO item mount and unmount workflow - isomount/iso_mount.py
- * Create a library item containing a native VMware virtual machine template - vmtemplate/create_vm_template.py
- * Deploy a virtual machine from a library item containing a native VMware virtual machine template - vmtemplate/deploy_vm_template.py
+ * Create a library item containing a virtual machine template - vmtemplate/create_vm_template.py
+ * Deploy a virtual machine from a library item containing a virtual machine template - vmtemplate/deploy_vm_template.py
Running the samples
@@ -23,8 +23,8 @@ The additional sample parameters are as follows (all parameters can be displayed
* library_publish_subscribe.py --datastorename
* vm_template_capture.py --datastorename --vmname
* iso_mount.py --datastorename --vmname
- * create_vm_template.py --datastorename --vmname
- * deploy_vm_template.py --itemname --datacentername --foldername --resourcepoolname --datastorename
+ * create_vm_template.py --datacentername --resourcepoolname --datastorename --vmname
+ * deploy_vm_template.py --itemname --datacentername --foldername --resourcepoolname --datastorename
* Testbed Requirement:
- 1 vCenter Server
diff --git a/samples/vsphere/contentlibrary/isomount/iso_mount.py b/samples/vsphere/contentlibrary/isomount/iso_mount.py
index ede1cde1..57ce5b7d 100644
--- a/samples/vsphere/contentlibrary/isomount/iso_mount.py
+++ b/samples/vsphere/contentlibrary/isomount/iso_mount.py
@@ -2,7 +2,7 @@
"""
* *******************************************************
-* Copyright VMware, Inc. 2016. All Rights Reserved.
+* Copyright VMware, Inc. 2016, 2018. All Rights Reserved.
* SPDX-License-Identifier: MIT
* *******************************************************
*
@@ -14,13 +14,14 @@
"""
__author__ = 'VMware, Inc.'
-__copyright__ = 'Copyright 2016 VMware, Inc. All rights reserved.'
__vcenter_version__ = '6.5+'
+from vmware.vapi.vsphere.client import create_vsphere_client
+
from samples.vsphere.common.sample_base import SampleBase
+from samples.vsphere.common.ssl_helper import get_unverified_session
from samples.vsphere.contentlibrary.lib.cls_api_client import ClsApiClient
from samples.vsphere.contentlibrary.lib.cls_api_helper import ClsApiHelper
-
from samples.vsphere.vcenter.helper.vm_helper import get_vm
@@ -46,10 +47,12 @@ class IsoMount(SampleBase):
def _options(self):
self.argparser.add_argument('-datastorename',
'--datastorename',
+ required=True,
help='The name of a datastore (of type vmfs) that is'
- ' acceassible to the vm specified with --vmname.')
+ ' accessible to the vm specified with --vmname.')
self.argparser.add_argument('-vmname',
'--vmname',
+ required=True,
help='The name of the vm where iso will be mounted. '
'The vm needs to be already created on the vCenter')
@@ -65,6 +68,12 @@ class IsoMount(SampleBase):
self.client = ClsApiClient(self.servicemanager)
self.helper = ClsApiHelper(self.client, self.skip_verification)
+ session = get_unverified_session() if self.skip_verification else None
+ self.vsphere_client = create_vsphere_client(server=self.server,
+ username=self.username,
+ password=self.password,
+ session=session)
+
def _execute(self):
storage_backings = self.helper.create_storage_backings(
self.servicemanager, self.datastore_name)
@@ -77,7 +86,7 @@ class IsoMount(SampleBase):
self.iso_item_name,
self.ISO_FILENAME)
- vm_id = get_vm(self.servicemanager.stub_config, self.vm_name)
+ vm_id = get_vm(self.vsphere_client, self.vm_name)
assert vm_id is not None
# Mount the iso item as a CDROM device
diff --git a/samples/vsphere/contentlibrary/lib/cls_api_client.py b/samples/vsphere/contentlibrary/lib/cls_api_client.py
index 37ab1084..e5e48b99 100644
--- a/samples/vsphere/contentlibrary/lib/cls_api_client.py
+++ b/samples/vsphere/contentlibrary/lib/cls_api_client.py
@@ -1,6 +1,6 @@
"""
* *******************************************************
-* Copyright VMware, Inc. 2016-2017. All Rights Reserved.
+* Copyright VMware, Inc. 2016-2018. All Rights Reserved.
* SPDX-License-Identifier: MIT
* *******************************************************
*
@@ -12,7 +12,6 @@
"""
__author__ = 'VMware, Inc.'
-__copyright__ = 'Copyright 2016-2017 VMware, Inc. All rights reserved.'
__vcenter_version__ = '6.0+'
from com.vmware.content_client import (Library,
@@ -28,6 +27,7 @@ from com.vmware.vcenter.iso_client import Image
from com.vmware.vcenter.ovf_client import LibraryItem
from com.vmware.vcenter.vm_template_client import LibraryItems as VmtxLibraryItem
+
class ClsApiClient(object):
"""
This is a simplified wrapper around the Content Library APIs.
@@ -73,8 +73,8 @@ class ClsApiClient(object):
# Returns the service for managing subscribed library items
self.subscribed_item_service = SubscribedItem(self.service_manager.stub_config)
- # Returns the service for managing library items containing native
- # VMware virtual machine templates
+ # Returns the service for managing library items containing virtual
+ # machine templates
self.vmtx_service = VmtxLibraryItem(self.service_manager.stub_config)
# Creates the service that communicates with virtual machines
diff --git a/samples/vsphere/contentlibrary/lib/cls_api_helper.py b/samples/vsphere/contentlibrary/lib/cls_api_helper.py
index c677af6a..a4cadfd2 100644
--- a/samples/vsphere/contentlibrary/lib/cls_api_helper.py
+++ b/samples/vsphere/contentlibrary/lib/cls_api_helper.py
@@ -1,6 +1,6 @@
"""
* *******************************************************
-* Copyright VMware, Inc. 2016-2017. All Rights Reserved.
+* Copyright VMware, Inc. 2016-2018. All Rights Reserved.
* SPDX-License-Identifier: MIT
* *******************************************************
*
@@ -12,7 +12,6 @@
"""
__author__ = 'VMware, Inc.'
-__copyright__ = 'Copyright 2016-2017 VMware, Inc. All rights reserved.'
__vcenter_version__ = '6.0+'
import os
diff --git a/samples/vsphere/contentlibrary/ovfdeploy/deploy_ovf_template.py b/samples/vsphere/contentlibrary/ovfdeploy/deploy_ovf_template.py
index 4d46a806..ad24d392 100644
--- a/samples/vsphere/contentlibrary/ovfdeploy/deploy_ovf_template.py
+++ b/samples/vsphere/contentlibrary/ovfdeploy/deploy_ovf_template.py
@@ -2,7 +2,7 @@
"""
* *******************************************************
-* Copyright VMware, Inc. 2016-2017. All Rights Reserved.
+* Copyright VMware, Inc. 2016-2018. All Rights Reserved.
* SPDX-License-Identifier: MIT
* *******************************************************
*
@@ -14,7 +14,6 @@
"""
__author__ = 'VMware, Inc.'
-__copyright__ = 'Copyright 2016-2017 VMware, Inc. All rights reserved.'
__vcenter_version__ = '6.0+'
try:
diff --git a/samples/vsphere/contentlibrary/vmcapture/vm_template_capture.py b/samples/vsphere/contentlibrary/vmcapture/vm_template_capture.py
index 0ae92b7e..d1dea536 100644
--- a/samples/vsphere/contentlibrary/vmcapture/vm_template_capture.py
+++ b/samples/vsphere/contentlibrary/vmcapture/vm_template_capture.py
@@ -2,7 +2,7 @@
"""
* *******************************************************
-* Copyright VMware, Inc. 2013, 2016. All Rights Reserved.
+* Copyright VMware, Inc. 2016, 2018. All Rights Reserved.
* SPDX-License-Identifier: MIT
* *******************************************************
*
@@ -14,7 +14,6 @@
"""
__author__ = 'VMware, Inc.'
-__copyright__ = 'Copyright 2016 VMware, Inc. All rights reserved.'
__vcenter_version__ = '6.0+'
try:
@@ -22,11 +21,13 @@ try:
except ImportError:
import urllib.request as urllib2
from com.vmware.vcenter.ovf_client import LibraryItem
+from vmware.vapi.vsphere.client import create_vsphere_client
+
from samples.vsphere.common.id_generator import generate_random_uuid
from samples.vsphere.common.sample_base import SampleBase
+from samples.vsphere.common.ssl_helper import get_unverified_session
from samples.vsphere.contentlibrary.lib.cls_api_client import ClsApiClient
from samples.vsphere.contentlibrary.lib.cls_api_helper import ClsApiHelper
-
from samples.vsphere.vcenter.helper.vm_helper import get_vm
@@ -53,9 +54,11 @@ class CaptureVMTemplateToContentLibrary(SampleBase):
def _options(self):
self.argparser.add_argument('-datastorename', '--datastorename',
+ required=True,
help='The name of the datastore for'
' content library backing (of type vmfs)')
self.argparser.add_argument('-vmname', '--vmname',
+ required=True,
help='Name of the VM to be captured')
def _setup(self):
@@ -71,6 +74,12 @@ class CaptureVMTemplateToContentLibrary(SampleBase):
self.client = ClsApiClient(self.servicemanager)
self.helper = ClsApiHelper(self.client, self.skip_verification)
+ session = get_unverified_session() if self.skip_verification else None
+ self.vsphere_client = create_vsphere_client(server=self.server,
+ username=self.username,
+ password=self.password,
+ session=session)
+
def _execute(self):
storage_backings = self.helper.create_storage_backings(
self.servicemanager,
@@ -82,7 +91,7 @@ class CaptureVMTemplateToContentLibrary(SampleBase):
self.cl_name)
self.content_library = self.client.local_library_service.get(library_id)
- vm_id = get_vm(self.servicemanager.stub_config, self.vm_name)
+ vm_id = get_vm(self.vsphere_client, self.vm_name)
assert vm_id is not None
param = self.create_capture_param(self.content_library,
@@ -92,7 +101,7 @@ class CaptureVMTemplateToContentLibrary(SampleBase):
assert self.library_item_id is not None
assert self.client.library_item_service.get(self.library_item_id) is not None
print('The VM id : {0} is captured as vm template library item id : {1}'.format
- (vm_id, self.library_item_id))
+ (vm_id, self.library_item_id))
def capture_source_vm(self, vm_id, param):
source = LibraryItem.DeployableIdentity(self.deployable_resource_type,
diff --git a/samples/vsphere/contentlibrary/vmtemplate/create_vm_template.py b/samples/vsphere/contentlibrary/vmtemplate/create_vm_template.py
index 8c756685..14c2998c 100644
--- a/samples/vsphere/contentlibrary/vmtemplate/create_vm_template.py
+++ b/samples/vsphere/contentlibrary/vmtemplate/create_vm_template.py
@@ -2,7 +2,7 @@
"""
* *******************************************************
-* Copyright VMware, Inc. 2017. All Rights Reserved.
+* Copyright VMware, Inc. 2017-2018. All Rights Reserved.
* SPDX-License-Identifier: MIT
* *******************************************************
*
@@ -15,26 +15,32 @@
__author__ = 'VMware, Inc.'
-__copyright__ = 'Copyright 2017 VMware, Inc. All rights reserved.'
__vcenter_version__ = '6.6.2+'
from com.vmware.vcenter.vm_template_client import (
LibraryItems as VmtxLibraryItem)
+from vmware.vapi.vsphere.client import create_vsphere_client
+
from samples.vsphere.common.id_generator import rand
from samples.vsphere.common.sample_base import SampleBase
+from samples.vsphere.common.ssl_helper import get_unverified_session
from samples.vsphere.contentlibrary.lib.cls_api_client import ClsApiClient
from samples.vsphere.contentlibrary.lib.cls_api_helper import ClsApiHelper
+from samples.vsphere.vcenter.helper.resource_pool_helper import (
+ get_resource_pool)
from samples.vsphere.vcenter.helper.vm_helper import get_vm
class CreateVmTemplate(SampleBase):
"""
- Demonstrates how to create a library item containing a native VMware
- virtual machine template from a virtual machine.
+ Demonstrates how to create a library item containing a virtual machine
+ template from a virtual machine.
Prerequisites:
- A virtual machine
+ - A datacenter
+ - A resource pool
- A datastore
"""
@@ -54,19 +60,29 @@ class CreateVmTemplate(SampleBase):
required=True,
help='The name of the source VM from '
'which to create a library item')
+ self.argparser.add_argument('-datacentername', '--datacentername',
+ required=True,
+ help='The name of the datacenter in which '
+ 'to place the VM template')
+ self.argparser.add_argument('-resourcepoolname', '--resourcepoolname',
+ required=True,
+ help='The name of the resource pool in '
+ 'the datacenter in which to place '
+ 'the VM template')
self.argparser.add_argument('-datastorename', '--datastorename',
required=True,
help='The name of the datastore in which '
- 'to create a library and native VM '
- 'template')
+ 'to create a library and VM template')
self.argparser.add_argument('-itemname', '--itemname',
help='The name of the library item to '
'create. The item will contain a '
- 'native VM template.')
+ 'VM template.')
def _setup(self):
# Required arguments
self.vm_name = self.args.vmname
+ self.datacenter_name = self.args.datacentername
+ self.resource_pool_name = self.args.resourcepoolname
self.datastore_name = self.args.datastorename
# Optional arguments
@@ -77,10 +93,20 @@ class CreateVmTemplate(SampleBase):
self.client = ClsApiClient(self.servicemanager)
self.helper = ClsApiHelper(self.client, self.skip_verification)
+ session = get_unverified_session() if self.skip_verification else None
+ self.vsphere_client = create_vsphere_client(server=self.server,
+ username=self.username,
+ password=self.password,
+ session=session)
+
def _execute(self):
- # Get the identifier of the source VM
- vm_id = get_vm(self.servicemanager.stub_config, self.vm_name)
+ # Get the identifiers
+ vm_id = get_vm(self.vsphere_client, self.vm_name)
assert vm_id
+ resource_pool_id = get_resource_pool(self.vsphere_client,
+ self.datacenter_name,
+ self.resource_pool_name)
+ assert resource_pool_id
# Create a library
storage_backings = self.helper.create_storage_backings(
@@ -93,6 +119,8 @@ class CreateVmTemplate(SampleBase):
create_spec.source_vm = vm_id
create_spec.library = self.library_id
create_spec.name = self.item_name
+ create_spec.placement = VmtxLibraryItem.CreatePlacementSpec(
+ resource_pool=resource_pool_id)
# Create a new library item from the source VM
self.item_id = self.client.vmtx_service.create(create_spec)
diff --git a/samples/vsphere/contentlibrary/vmtemplate/deploy_vm_template.py b/samples/vsphere/contentlibrary/vmtemplate/deploy_vm_template.py
index 09394e2b..690a5ce1 100644
--- a/samples/vsphere/contentlibrary/vmtemplate/deploy_vm_template.py
+++ b/samples/vsphere/contentlibrary/vmtemplate/deploy_vm_template.py
@@ -2,7 +2,7 @@
"""
* *******************************************************
-* Copyright VMware, Inc. 2017. All Rights Reserved.
+* Copyright VMware, Inc. 2017-2018. All Rights Reserved.
* SPDX-License-Identifier: MIT
* *******************************************************
*
@@ -15,15 +15,17 @@
__author__ = 'VMware, Inc.'
-__copyright__ = 'Copyright 2017 VMware, Inc. All rights reserved.'
__vcenter_version__ = '6.6.2+'
from pyVmomi import vim
from com.vmware.vcenter.vm_template_client import (
LibraryItems as VmtxLibraryItem)
+from vmware.vapi.vsphere.client import create_vsphere_client
+
from samples.vsphere.common.id_generator import rand
from samples.vsphere.common.sample_base import SampleBase
+from samples.vsphere.common.ssl_helper import get_unverified_session
from samples.vsphere.common.vim.helpers.get_datastore_by_name import (
get_datastore_id)
from samples.vsphere.common.vim.helpers.vim_utils import (
@@ -38,12 +40,13 @@ from samples.vsphere.vcenter.helper.resource_pool_helper import (
class DeployVmTemplate(SampleBase):
"""
Demonstrates how to deploy a virtual machine from a library item containing
- a native VMware virtual machine template.
+ a virtual machine template.
Prerequisites:
- - A library item containing a native VMware virtual machine template
+ - A library item containing a virtual machine template
- A datacenter
- A VM folder
+ - A resource pool
- A datastore
"""
@@ -65,8 +68,8 @@ class DeployVmTemplate(SampleBase):
self.argparser.add_argument('-itemname', '--itemname',
required=True,
help='The name of the library item '
- 'containing a native VM template to '
- 'be deployed')
+ 'containing a VM template to be '
+ 'deployed')
self.argparser.add_argument('-datacentername', '--datacentername',
required=True,
help='The name of the datacenter in which '
@@ -103,15 +106,21 @@ class DeployVmTemplate(SampleBase):
self.client = ClsApiClient(self.servicemanager)
self.helper = ClsApiHelper(self.client, self.skip_verification)
+ session = get_unverified_session() if self.skip_verification else None
+ self.vsphere_client = create_vsphere_client(server=self.server,
+ username=self.username,
+ password=self.password,
+ session=session)
+
def _execute(self):
# Get the identifiers of the resources used for deployment
item_id = self.helper.get_item_id_by_name(self.item_name)
assert item_id
- folder_id = get_folder(self.servicemanager.stub_config,
+ folder_id = get_folder(self.vsphere_client,
self.datacenter_name,
self.folder_name)
assert folder_id
- resource_pool_id = get_resource_pool(self.servicemanager.stub_config,
+ resource_pool_id = get_resource_pool(self.vsphere_client,
self.datacenter_name,
self.resource_pool_name)
assert resource_pool_id
@@ -120,7 +129,7 @@ class DeployVmTemplate(SampleBase):
assert datastore_id
# Build the deployment specification
- placement_spec = VmtxLibraryItem.PlacementSpec(
+ placement_spec = VmtxLibraryItem.DeployPlacementSpec(
folder=folder_id,
resource_pool=resource_pool_id)
vm_home_storage_spec = VmtxLibraryItem.DeploySpecVmHomeStorage(
diff --git a/samples/vsphere/sso/embedded_psc_sso_workflow.py b/samples/vsphere/sso/embedded_psc_sso_workflow.py
index c6083ad5..9b86269c 100644
--- a/samples/vsphere/sso/embedded_psc_sso_workflow.py
+++ b/samples/vsphere/sso/embedded_psc_sso_workflow.py
@@ -14,22 +14,17 @@
"""
__author__ = 'VMware, Inc.'
-__copyright__ = 'Copyright 2017 VMware, Inc. All rights reserved.'
__vcenter_version__ = '6.0+'
-import requests
+from vmware.vapi.vsphere.client import create_vsphere_client
+
from com.vmware.cis.tagging_client import (Category, CategoryModel)
-from com.vmware.cis_client import Session
-from vmware.vapi.lib.connect import get_requests_connector
-from vmware.vapi.security.session import create_session_security_context
-from vmware.vapi.security.sso import create_saml_bearer_security_context
-from vmware.vapi.stdlib.client.factories import StubConfigurationFactory
from samples.vsphere.common import sample_cli
from samples.vsphere.common import sample_util
from samples.vsphere.common import sso
from samples.vsphere.common.ssl_helper import get_unverified_context
-from samples.vsphere.common.vapiconnect import create_unverified_session
+from samples.vsphere.common.ssl_helper import get_unverified_session
class EmbeddedPscSsoWorkflow(object):
@@ -39,13 +34,6 @@ class EmbeddedPscSsoWorkflow(object):
"""
def __init__(self):
- self.args = None
- self.session = None
- self.session_id = None
- self.category_svc = None
- self.category_id = None
-
- def setup(self):
parser = sample_cli.build_arg_parser()
self.args = sample_util.process_cli_args(parser.parse_args())
@@ -55,12 +43,12 @@ class EmbeddedPscSsoWorkflow(object):
# Since the platform services controller is embedded, the sso server
# is the same as the vCenter server.
- ssoUrl = 'https://{}/sts/STSService'.format(self.args.server)
+ sso_url = 'https://{}/sts/STSService'.format(self.args.server)
print('\nStep 1: Connect to the Single Sign-On URL and '
'retrieve the SAML bearer token.')
- authenticator = sso.SsoAuthenticator(ssoUrl)
+ authenticator = sso.SsoAuthenticator(sso_url)
context = None
if self.args.skipverification:
context = get_unverified_context()
@@ -70,62 +58,30 @@ class EmbeddedPscSsoWorkflow(object):
delegatable=True,
ssl_context=context)
- # Creating SAML Bearer Security Context
- sec_ctx = create_saml_bearer_security_context(bearer_token)
+ session = get_unverified_session() if self.args.skipverification else None
- print('\nStep 2. Login to vAPI services using the SAML bearer token.')
-
- # The URL for the stub requests are made against the /api HTTP endpoint
- # of the vCenter system.
- vapi_url = 'https://{}/api'.format(self.args.server)
-
- # Create an authenticated stub configuration object that can be used to
- # issue requests against vCenter.
- session = requests.Session()
- if self.args.skipverification:
- session = create_unverified_session(session)
- connector = get_requests_connector(session=session, url=vapi_url)
- connector.set_security_context(sec_ctx)
- stub_config = StubConfigurationFactory.new_std_configuration(
- connector)
- self.session = Session(stub_config)
-
- # Login to VAPI endpoint and get the session_id
- self.session_id = self.session.create()
-
- # Update the VAPI connection with session_id
- session_sec_ctx = create_session_security_context(self.session_id)
- connector.set_security_context(session_sec_ctx)
+ # Connect to vSphere client
+ client = create_vsphere_client(server=self.args.server,
+ bearer_token=bearer_token,
+ session=session)
# Create and Delete TagCategory to Verify connection is successful
print('\nStep 3: Creating and Deleting Tag Category...\n')
- self.category_svc = Category(stub_config)
-
- self.category_id = self.create_tag_category('TestTagCat', 'TestTagDesc',
- CategoryModel.Cardinality.MULTIPLE)
- assert self.category_id is not None
- print('Tag category created; Id: {0}\n'.format(self.category_id))
+ create_spec = client.tagging.Category.CreateSpec()
+ create_spec.name = 'TestTag_embeded_psc_sso_workflow'
+ create_spec.description = 'TestTagDesc'
+ create_spec.cardinality = CategoryModel.Cardinality.MULTIPLE
+ create_spec.associable_types = set()
+ category_id = client.tagging.Category.create(create_spec)
+ assert category_id is not None
+ print('Tag category created; Id: {0}\n'.format(category_id))
# Delete TagCategory
- self.category_svc.delete(self.category_id)
-
- self.session.delete()
- print('VAPI session disconnected successfully...')
-
- def create_tag_category(self, name, description, cardinality):
- """create a category. User who invokes this needs create category privilege."""
- create_spec = self.category_svc.CreateSpec()
- create_spec.name = name
- create_spec.description = description
- create_spec.cardinality = cardinality
- associableTypes = set()
- create_spec.associable_types = associableTypes
- return self.category_svc.create(create_spec)
+ client.tagging.Category.delete(category_id)
def main():
embedded_psc_sso_workflow = EmbeddedPscSsoWorkflow()
- embedded_psc_sso_workflow.setup()
embedded_psc_sso_workflow.run()
diff --git a/samples/vsphere/sso/external_psc_sso_workflow.py b/samples/vsphere/sso/external_psc_sso_workflow.py
index 350aee0e..200a6fe5 100644
--- a/samples/vsphere/sso/external_psc_sso_workflow.py
+++ b/samples/vsphere/sso/external_psc_sso_workflow.py
@@ -2,7 +2,7 @@
"""
* *******************************************************
-* Copyright (c) VMware, Inc. 2017. All Rights Reserved.
+* Copyright (c) VMware, Inc. 2017, 2018. All Rights Reserved.
* SPDX-License-Identifier: MIT
* *******************************************************
*
@@ -14,28 +14,20 @@
"""
__author__ = 'VMware, Inc.'
-__copyright__ = 'Copyright 2017 VMware, Inc. All rights reserved.'
__vcenter_version__ = '6.0+'
import os
import argparse
-import requests
-from pprint import pprint
from six.moves.urllib import request, parse
-from com.vmware.cis_client import Session
-
-from vmware.vapi.lib.connect import get_requests_connector
-from vmware.vapi.security.session import create_session_security_context
-from vmware.vapi.security.sso import create_saml_bearer_security_context
-from vmware.vapi.stdlib.client.factories import StubConfigurationFactory
-from com.vmware.cis.tagging_client import (Category, CategoryModel)
+from vmware.vapi.vsphere.client import create_vsphere_client
+from com.vmware.cis.tagging_client import CategoryModel
from samples.vsphere.common import sso
from samples.vsphere.common.lookup_service_helper import LookupServiceHelper
from samples.vsphere.common.ssl_helper import get_unverified_context
-from samples.vsphere.common.vapiconnect import create_unverified_session
+from samples.vsphere.common.ssl_helper import get_unverified_session
class ExternalPscSsoWorkflow(object):
@@ -45,21 +37,6 @@ class ExternalPscSsoWorkflow(object):
"""
def __init__(self):
- self.lswsdl = None
- self.lsurl = None
- self.mgmtinstancename = None
- self.username = None
- self.password = None
- self.session = None
- self.session_id = None
- self.args = None
- self.argparser = None
- self.mgmtinstancename = None
- self.skip_verification = False
- self.category_svc = None
- self.category_id = None
-
- def options(self):
self.argparser = argparse.ArgumentParser(description=self.__doc__)
# setup the argument parser
self.argparser.add_argument('-w', '--lswsdl',
@@ -83,7 +60,6 @@ class ExternalPscSsoWorkflow(object):
help='Do not verify server certificate')
self.args = self.argparser.parse_args()
- def setup(self):
if self.args.lswsdl:
self.lswsdl = os.path.abspath(self.args.lswsdl)
else:
@@ -145,66 +121,33 @@ class ExternalPscSsoWorkflow(object):
delegatable=True,
ssl_context=context)
- # Creating SAML Bearer Security Context
- sec_ctx = create_saml_bearer_security_context(bearer_token)
-
print('\nStep 4. Discover the vAPI service URL from lookup service.')
vapi_url = lookupservicehelper.find_vapi_url(self.mgmtnodeid)
print('vAPI URL: {0}'.format(vapi_url))
print('\nStep 5. Login to vAPI service using the SAML bearer token.')
-
- # Create an authenticated stub configuration object that can be used to
- # issue requests against vCenter.
- session = requests.Session()
- if self.skip_verification:
- session = create_unverified_session(session)
- connector = get_requests_connector(session=session, url=vapi_url)
- connector.set_security_context(sec_ctx)
- stub_config = StubConfigurationFactory.new_std_configuration(
- connector)
- self.session = Session(stub_config)
-
- # Login to VAPI endpoint and get the session_id
- self.session_id = self.session.create()
-
- # Update the VAPI connection with session_id
- session_sec_ctx = create_session_security_context(self.session_id)
- connector.set_security_context(session_sec_ctx)
+ session = get_unverified_session() if self.skip_verification else None
+ client = create_vsphere_client(server=parse.urlparse(vapi_url).hostname,
+ bearer_token=bearer_token,
+ session=session)
# Create and Delete TagCategory to Verify connection is successful
- print('\nStep 6: Creating and Deleting Tag Category...\n')
- self.category_svc = Category(stub_config)
-
- self.category_id = self.create_tag_category('TestTagCat', 'TestTagDesc',
- CategoryModel.Cardinality.MULTIPLE)
- assert self.category_id is not None
- print('Tag category created; Id: {0}\n'.format(self.category_id))
+ print('\nStep 3: Creating and Deleting Tag Category...\n')
+ create_spec = client.tagging.Category.CreateSpec()
+ create_spec.name = 'TestTag_embeded_psc_sso_workflow'
+ create_spec.description = 'TestTagDesc'
+ create_spec.cardinality = CategoryModel.Cardinality.MULTIPLE
+ create_spec.associable_types = set()
+ category_id = client.tagging.Category.create(create_spec)
+ assert category_id is not None
+ print('Tag category created; Id: {0}\n'.format(category_id))
# Delete TagCategory
- self.category_svc.delete(self.category_id)
-
- self.session.delete()
- print('VAPI session disconnected successfully...')
-
- def create_tag_category(self, name, description, cardinality):
- """create a category. User who invokes this needs create category privilege."""
- create_spec = self.category_svc.CreateSpec()
- create_spec.name = name
- create_spec.description = description
- create_spec.cardinality = cardinality
- associableTypes = set()
- create_spec.associable_types = associableTypes
- return self.category_svc.create(create_spec)
-
- self.session.delete()
- print('VAPI session disconnected successfully...')
+ client.tagging.Category.delete(category_id)
def main():
external_psc_sso_workflow = ExternalPscSsoWorkflow()
- external_psc_sso_workflow.options()
- external_psc_sso_workflow.setup()
external_psc_sso_workflow.run()
diff --git a/samples/vsphere/vcenter/helper/cluster_helper.py b/samples/vsphere/vcenter/helper/cluster_helper.py
index df26463c..3f6eb81e 100644
--- a/samples/vsphere/vcenter/helper/cluster_helper.py
+++ b/samples/vsphere/vcenter/helper/cluster_helper.py
@@ -1,6 +1,6 @@
"""
* *******************************************************
-* Copyright (c) VMware, Inc. 2016. All Rights Reserved.
+* Copyright (c) VMware, Inc. 2016-2018. All Rights Reserved.
* SPDX-License-Identifier: MIT
* *******************************************************
*
@@ -12,7 +12,6 @@
"""
__author__ = 'VMware, Inc.'
-__copyright__ = 'Copyright 2016 VMware, Inc. All rights reserved.'
__vcenter_version__ = '6.5+'
from com.vmware.vcenter_client import Cluster
@@ -20,14 +19,14 @@ from com.vmware.vcenter_client import Cluster
from samples.vsphere.vcenter.helper import datacenter_helper
-def get_cluster(stub_config, datacenter_name, cluster_name):
+def get_cluster(client, datacenter_name, cluster_name):
"""
Returns the identifier of a cluster
Note: The method assumes only one cluster and datacenter
with the mentioned name.
"""
- datacenter = datacenter_helper.get_datacenter(stub_config, datacenter_name)
+ datacenter = datacenter_helper.get_datacenter(client, datacenter_name)
if not datacenter:
print("Datacenter '{}' not found".format(datacenter_name))
return None
@@ -35,8 +34,7 @@ def get_cluster(stub_config, datacenter_name, cluster_name):
filter_spec = Cluster.FilterSpec(names=set([cluster_name]),
datacenters=set([datacenter]))
- cluster_svc = Cluster(stub_config)
- cluster_summaries = cluster_svc.list(filter_spec)
+ cluster_summaries = client.vcenter.Cluster.list(filter_spec)
if len(cluster_summaries) > 0:
cluster = cluster_summaries[0].cluster
print("Detected cluster '{}' as {}".format(cluster_name, cluster))
diff --git a/samples/vsphere/vcenter/helper/datacenter_helper.py b/samples/vsphere/vcenter/helper/datacenter_helper.py
index 24f8f70f..36ade571 100644
--- a/samples/vsphere/vcenter/helper/datacenter_helper.py
+++ b/samples/vsphere/vcenter/helper/datacenter_helper.py
@@ -1,6 +1,6 @@
"""
* *******************************************************
-* Copyright (c) VMware, Inc. 2016. All Rights Reserved.
+* Copyright (c) VMware, Inc. 2016-2018. All Rights Reserved.
* SPDX-License-Identifier: MIT
* *******************************************************
*
@@ -12,13 +12,12 @@
"""
__author__ = 'VMware, Inc.'
-__copyright__ = 'Copyright 2016 VMware, Inc. All rights reserved.'
__vcenter_version__ = '6.5+'
from com.vmware.vcenter_client import Datacenter
-def get_datacenter(stub_config, datacenter_name):
+def get_datacenter(client, datacenter_name):
"""
Returns the identifier of a datacenter
Note: The method assumes only one datacenter with the mentioned name.
@@ -26,8 +25,7 @@ def get_datacenter(stub_config, datacenter_name):
filter_spec = Datacenter.FilterSpec(names=set([datacenter_name]))
- datacenter_svc = Datacenter(stub_config)
- datacenter_summaries = datacenter_svc.list(filter_spec)
+ datacenter_summaries = client.vcenter.Datacenter.list(filter_spec)
if len(datacenter_summaries) > 0:
datacenter = datacenter_summaries[0].datacenter
return datacenter
diff --git a/samples/vsphere/vcenter/helper/datastore_helper.py b/samples/vsphere/vcenter/helper/datastore_helper.py
index 3dc721e4..a6afa736 100644
--- a/samples/vsphere/vcenter/helper/datastore_helper.py
+++ b/samples/vsphere/vcenter/helper/datastore_helper.py
@@ -1,6 +1,6 @@
"""
* *******************************************************
-* Copyright (c) VMware, Inc. 2016. All Rights Reserved.
+* Copyright (c) VMware, Inc. 2016-2018. All Rights Reserved.
* SPDX-License-Identifier: MIT
* *******************************************************
*
@@ -12,7 +12,6 @@
"""
__author__ = 'VMware, Inc.'
-__copyright__ = 'Copyright 2016 VMware, Inc. All rights reserved.'
__vcenter_version__ = '6.5+'
from com.vmware.vcenter_client import Datastore
@@ -20,13 +19,13 @@ from com.vmware.vcenter_client import Datastore
from samples.vsphere.vcenter.helper import datacenter_helper
-def get_datastore(stub_config, datacenter_name, datastore_name):
+def get_datastore(client, datacenter_name, datastore_name):
"""
Returns the identifier of a datastore
Note: The method assumes that there is only one datastore and datacenter
with the mentioned names.
"""
- datacenter = datacenter_helper.get_datacenter(stub_config, datacenter_name)
+ datacenter = datacenter_helper.get_datacenter(client, datacenter_name)
if not datacenter:
print("Datacenter '{}' not found".format(datacenter_name))
return None
@@ -34,8 +33,7 @@ def get_datastore(stub_config, datacenter_name, datastore_name):
filter_spec = Datastore.FilterSpec(names=set([datastore_name]),
datacenters=set([datacenter]))
- datastore_svc = Datastore(stub_config)
- datastore_summaries = datastore_svc.list(filter_spec)
+ datastore_summaries = client.vcenter.Datastore.list(filter_spec)
if len(datastore_summaries) > 0:
datastore = datastore_summaries[0].datastore
return datastore
diff --git a/samples/vsphere/vcenter/helper/folder_helper.py b/samples/vsphere/vcenter/helper/folder_helper.py
index b2bc1543..40cfa900 100644
--- a/samples/vsphere/vcenter/helper/folder_helper.py
+++ b/samples/vsphere/vcenter/helper/folder_helper.py
@@ -1,6 +1,6 @@
"""
* *******************************************************
-* Copyright (c) VMware, Inc. 2016. All Rights Reserved.
+* Copyright (c) VMware, Inc. 2016-2018. All Rights Reserved.
* SPDX-License-Identifier: MIT
* *******************************************************
*
@@ -12,7 +12,6 @@
"""
__author__ = 'VMware, Inc.'
-__copyright__ = 'Copyright 2016 VMware, Inc. All rights reserved.'
__vcenter_version__ = '6.5+'
from com.vmware.vcenter_client import Folder
@@ -20,13 +19,13 @@ from com.vmware.vcenter_client import Folder
from samples.vsphere.vcenter.helper import datacenter_helper
-def get_folder(stub_config, datacenter_name, folder_name):
+def get_folder(client, datacenter_name, folder_name):
"""
Returns the identifier of a folder
Note: The method assumes that there is only one folder and datacenter
with the mentioned names.
"""
- datacenter = datacenter_helper.get_datacenter(stub_config, datacenter_name)
+ datacenter = datacenter_helper.get_datacenter(client, datacenter_name)
if not datacenter:
print("Datacenter '{}' not found".format(datacenter_name))
return None
@@ -35,8 +34,7 @@ def get_folder(stub_config, datacenter_name, folder_name):
names=set([folder_name]),
datacenters=set([datacenter]))
- folder_svc = Folder(stub_config)
- folder_summaries = folder_svc.list(filter_spec)
+ folder_summaries = client.vcenter.Folder.list(filter_spec)
if len(folder_summaries) > 0:
folder = folder_summaries[0].folder
print("Detected folder '{}' as {}".format(folder_name, folder))
diff --git a/samples/vsphere/vcenter/helper/network_helper.py b/samples/vsphere/vcenter/helper/network_helper.py
index 5893fdb5..90357a34 100644
--- a/samples/vsphere/vcenter/helper/network_helper.py
+++ b/samples/vsphere/vcenter/helper/network_helper.py
@@ -1,6 +1,6 @@
"""
* *******************************************************
-* Copyright (c) VMware, Inc. 2016. All Rights Reserved.
+* Copyright (c) VMware, Inc. 2016-2018. All Rights Reserved.
* SPDX-License-Identifier: MIT
* *******************************************************
*
@@ -12,7 +12,6 @@
"""
__author__ = 'VMware, Inc.'
-__copyright__ = 'Copyright 2016 VMware, Inc. All rights reserved.'
__vcenter_version__ = '6.5+'
from com.vmware.vcenter_client import Network
@@ -20,7 +19,7 @@ from com.vmware.vcenter_client import Network
from samples.vsphere.vcenter.helper import datacenter_helper
-def get_standard_network_backing(stub_config,
+def get_standard_network_backing(client,
std_porggroup_name,
datacenter_name):
"""
@@ -28,18 +27,16 @@ def get_standard_network_backing(stub_config,
Note: The method assumes that there is only one standard portgroup
and datacenter with the mentioned names.
"""
- datacenter = datacenter_helper.get_datacenter(stub_config, datacenter_name)
+ datacenter = datacenter_helper.get_datacenter(client, datacenter_name)
if not datacenter:
print("Datacenter '{}' not found".format(datacenter_name))
return None
- network_svc = Network(stub_config)
filter = Network.FilterSpec(datacenters=set([datacenter]),
names=set([std_porggroup_name]),
types=set([Network.Type.STANDARD_PORTGROUP]))
- network_summaries = network_svc.list(filter=filter)
+ network_summaries = client.vcenter.Network.list(filter=filter)
- network = None
if len(network_summaries) > 0:
network = network_summaries[0].network
print("Selecting Standard Portgroup Network '{}' ({})".
@@ -51,7 +48,7 @@ def get_standard_network_backing(stub_config,
return None
-def get_distributed_network_backing(stub_config,
+def get_distributed_network_backing(client,
dv_portgroup_name,
datacenter_name):
"""
@@ -59,18 +56,16 @@ def get_distributed_network_backing(stub_config,
Note: The method assumes that there is only one distributed portgroup
and datacenter with the mentioned names.
"""
- datacenter = datacenter_helper.get_datacenter(stub_config, datacenter_name)
+ datacenter = datacenter_helper.get_datacenter(client, datacenter_name)
if not datacenter:
print("Datacenter '{}' not found".format(datacenter_name))
return None
- network_svc = Network(stub_config)
filter = Network.FilterSpec(datacenters=set([datacenter]),
names=set([dv_portgroup_name]),
types=set([Network.Type.DISTRIBUTED_PORTGROUP]))
- network_summaries = network_svc.list(filter=filter)
+ network_summaries = client.vcenter.Network.list(filter=filter)
- network = None
if len(network_summaries) > 0:
network = network_summaries[0].network
print("Selecting Distributed Portgroup Network '{}' ({})".
diff --git a/samples/vsphere/vcenter/helper/resource_pool_helper.py b/samples/vsphere/vcenter/helper/resource_pool_helper.py
index fa24a929..c15e7973 100644
--- a/samples/vsphere/vcenter/helper/resource_pool_helper.py
+++ b/samples/vsphere/vcenter/helper/resource_pool_helper.py
@@ -1,6 +1,6 @@
"""
* *******************************************************
-* Copyright (c) VMware, Inc. 2016. All Rights Reserved.
+* Copyright (c) VMware, Inc. 2016-2018. All Rights Reserved.
* SPDX-License-Identifier: MIT
* *******************************************************
*
@@ -12,7 +12,6 @@
"""
__author__ = 'VMware, Inc.'
-__copyright__ = 'Copyright 2016 VMware, Inc. All rights reserved.'
__vcenter_version__ = '6.5+'
from com.vmware.vcenter_client import ResourcePool
@@ -20,12 +19,12 @@ from com.vmware.vcenter_client import ResourcePool
from samples.vsphere.vcenter.helper import datacenter_helper
-def get_resource_pool(stub_config, datacenter_name, resource_pool_name=None):
+def get_resource_pool(client, datacenter_name, resource_pool_name=None):
"""
Returns the identifier of the resource pool with the given name or the
first resource pool in the datacenter if the name is not provided.
"""
- datacenter = datacenter_helper.get_datacenter(stub_config, datacenter_name)
+ datacenter = datacenter_helper.get_datacenter(client, datacenter_name)
if not datacenter:
print("Datacenter '{}' not found".format(datacenter_name))
return None
@@ -34,8 +33,7 @@ def get_resource_pool(stub_config, datacenter_name, resource_pool_name=None):
filter_spec = ResourcePool.FilterSpec(datacenters=set([datacenter]),
names=names)
- resource_pool_svc = ResourcePool(stub_config)
- resource_pool_summaries = resource_pool_svc.list(filter_spec)
+ resource_pool_summaries = client.vcenter.ResourcePool.list(filter_spec)
if len(resource_pool_summaries) > 0:
resource_pool = resource_pool_summaries[0].resource_pool
print("Selecting ResourcePool '{}'".format(resource_pool))
diff --git a/samples/vsphere/vcenter/helper/vm_helper.py b/samples/vsphere/vcenter/helper/vm_helper.py
index dd678827..83f7ed16 100644
--- a/samples/vsphere/vcenter/helper/vm_helper.py
+++ b/samples/vsphere/vcenter/helper/vm_helper.py
@@ -1,6 +1,6 @@
"""
* *******************************************************
-* Copyright (c) VMware, Inc. 2016. All Rights Reserved.
+* Copyright (c) VMware, Inc. 2016-2018. All Rights Reserved.
* SPDX-License-Identifier: MIT
* *******************************************************
*
@@ -12,20 +12,18 @@
"""
__author__ = 'VMware, Inc.'
-__copyright__ = 'Copyright 2016 VMware, Inc. All rights reserved.'
__vcenter_version__ = '6.5+'
from com.vmware.vcenter_client import VM
-def get_vm(stub_config, vm_name):
+def get_vm(client, vm_name):
"""
Return the identifier of a vm
Note: The method assumes that there is only one vm with the mentioned name.
"""
- vm_svc = VM(stub_config)
names = set([vm_name])
- vms = vm_svc.list(VM.FilterSpec(names=names))
+ vms = client.vcenter.VM.list(VM.FilterSpec(names=names))
if len(vms) == 0:
print("VM with name ({}) not found".format(vm_name))
@@ -36,10 +34,9 @@ def get_vm(stub_config, vm_name):
return vm
-def get_vms(stub_config, vm_names):
+def get_vms(client, vm_names):
"""Return identifiers of a list of vms"""
- vm_svc = VM(stub_config)
- vms = vm_svc.list(VM.FilterSpec(names=vm_names))
+ vms = client.vcenter.VM.list(VM.FilterSpec(names=vm_names))
if len(vms) == 0:
print('No vm found')
diff --git a/samples/vsphere/vcenter/helper/vm_placement_helper.py b/samples/vsphere/vcenter/helper/vm_placement_helper.py
index 35464d2f..9dd0300f 100644
--- a/samples/vsphere/vcenter/helper/vm_placement_helper.py
+++ b/samples/vsphere/vcenter/helper/vm_placement_helper.py
@@ -1,6 +1,6 @@
"""
* *******************************************************
-* Copyright (c) VMware, Inc. 2016. All Rights Reserved.
+* Copyright (c) VMware, Inc. 2016-2018. All Rights Reserved.
* SPDX-License-Identifier: MIT
* *******************************************************
*
@@ -12,7 +12,6 @@
"""
__author__ = 'VMware, Inc.'
-__copyright__ = 'Copyright 2016 VMware, Inc. All rights reserved.'
__vcenter_version__ = '6.5+'
from com.vmware.vcenter_client import VM
@@ -22,7 +21,7 @@ from samples.vsphere.vcenter.helper import folder_helper
from samples.vsphere.vcenter.helper import resource_pool_helper
-def get_placement_spec_for_resource_pool(stub_config,
+def get_placement_spec_for_resource_pool(client,
datacenter_name,
vm_folder_name,
datastore_name):
@@ -30,14 +29,14 @@ def get_placement_spec_for_resource_pool(stub_config,
Returns a VM placement spec for a resourcepool. Ensures that the
vm folder and datastore are all in the same datacenter which is specified.
"""
- resource_pool = resource_pool_helper.get_resource_pool(stub_config,
+ resource_pool = resource_pool_helper.get_resource_pool(client,
datacenter_name)
- folder = folder_helper.get_folder(stub_config,
+ folder = folder_helper.get_folder(client,
datacenter_name,
vm_folder_name)
- datastore = datastore_helper.get_datastore(stub_config,
+ datastore = datastore_helper.get_datastore(client,
datacenter_name,
datastore_name)
diff --git a/samples/vsphere/vcenter/setup/backend_directory.py b/samples/vsphere/vcenter/setup/backend_directory.py
index 4e1e1347..11557aa4 100644
--- a/samples/vsphere/vcenter/setup/backend_directory.py
+++ b/samples/vsphere/vcenter/setup/backend_directory.py
@@ -1,6 +1,6 @@
"""
* *******************************************************
-* Copyright (c) VMware, Inc. 2016. All Rights Reserved.
+* Copyright (c) VMware, Inc. 2016-2018. All Rights Reserved.
* SPDX-License-Identifier: MIT
* *******************************************************
*
@@ -12,7 +12,6 @@
"""
__author__ = 'VMware, Inc.'
-__copyright__ = 'Copyright 2016 VMware, Inc. All rights reserved.'
from samples.vsphere.common.vim.file import (detect_directory,
diff --git a/samples/vsphere/vcenter/setup/cluster.py b/samples/vsphere/vcenter/setup/cluster.py
index 19a15917..274dc78b 100644
--- a/samples/vsphere/vcenter/setup/cluster.py
+++ b/samples/vsphere/vcenter/setup/cluster.py
@@ -1,6 +1,6 @@
"""
* *******************************************************
-* Copyright (c) VMware, Inc. 2016. All Rights Reserved.
+* Copyright (c) VMware, Inc. 2016-2018. All Rights Reserved.
* SPDX-License-Identifier: MIT
* *******************************************************
*
@@ -12,11 +12,9 @@
"""
__author__ = 'VMware, Inc.'
-__copyright__ = 'Copyright 2016 VMware, Inc. All rights reserved.'
-
import pyVim.task
-from com.vmware.vcenter_client import Cluster
+from com.vmware.vcenter_client import Cluster, Folder
from pyVmomi import vim
from samples.vsphere.vcenter.helper import cluster_helper
@@ -27,7 +25,7 @@ def detect_cluster(context):
cluster1_name = context.testbed.config['CLUSTER1_NAME']
datacenter_name = context.testbed.config['VM_DATACENTER_NAME']
- cluster = cluster_helper.get_cluster(context.stub_config, datacenter_name,
+ cluster = cluster_helper.get_cluster(context.client, datacenter_name,
cluster1_name)
if cluster:
@@ -43,8 +41,8 @@ def cleanup_cluster(context):
cluster1_name = context.testbed.config['CLUSTER1_NAME']
names = set([cluster1_name])
- cluster_svc = Cluster(context.stub_config)
- cluster_summaries = cluster_svc.list(Cluster.FilterSpec(names=names))
+ cluster_summaries = context.client.vcenter.Cluster.list(
+ Cluster.FilterSpec(names=names))
print("Found '{}' Clusters matching names {}".
format(len(cluster_summaries), ", ".join(["'{}'".
format(n) for n in names])))
@@ -92,8 +90,7 @@ def setup_cluster_vapi2(context):
datacenter_name = context.testbed.config['DATACENTER2_NAME']
datacenter = context.testbed.entities['DATACENTER_IDS'][datacenter_name]
- folder_svc = Folder(context.stub_config)
- folder_summaries = folder_svc.list(
+ folder_summaries = context.client.vcenter.Folder.list(
Folder.FilterSpec(type=Folder.Type.HOST, datacenters=set([datacenter])))
folder = folder_summaries[0].folder
diff --git a/samples/vsphere/vcenter/setup/datacenter.py b/samples/vsphere/vcenter/setup/datacenter.py
index 1e5a6a92..624637a8 100644
--- a/samples/vsphere/vcenter/setup/datacenter.py
+++ b/samples/vsphere/vcenter/setup/datacenter.py
@@ -1,6 +1,6 @@
"""
* *******************************************************
-* Copyright (c) VMware, Inc. 2016. All Rights Reserved.
+* Copyright (c) VMware, Inc. 2016-2018. All Rights Reserved.
* SPDX-License-Identifier: MIT
* *******************************************************
*
@@ -12,22 +12,18 @@
"""
__author__ = 'VMware, Inc.'
-__copyright__ = 'Copyright 2016 VMware, Inc. All rights reserved.'
from com.vmware.vcenter_client import (Datacenter, Folder)
def folder_list_datacenter_folder(context):
- folder_svc = Folder(context.stub_config)
- return folder_svc.list(Folder.FilterSpec(type=Folder.Type.DATACENTER))
+ return context.client.vcenter.Folder.list(Folder.FilterSpec(type=Folder.Type.DATACENTER))
def detect_datacenter(context, datacenter_name):
"""Find the datacenter with the given name"""
- datacenter_svc = Datacenter(context.stub_config)
-
names = set([datacenter_name])
- datacenter_summaries = datacenter_svc.list(
+ datacenter_summaries = context.client.vcenter.Datacenter.list(
Datacenter.FilterSpec(names=names))
if len(datacenter_summaries) > 0:
datacenter = datacenter_summaries[0].datacenter
@@ -54,14 +50,13 @@ def detect_datacenters(context):
def cleanup_datacenters(context):
"""Cleanup datacenters after sample run"""
- datacenter_svc = Datacenter(context.stub_config)
# Look for the two datacenters
datacenter1_name = context.testbed.config['DATACENTER1_NAME']
datacenter2_name = context.testbed.config['DATACENTER2_NAME']
names = set([datacenter1_name, datacenter2_name])
- datacenter_summaries = datacenter_svc.list(
+ datacenter_summaries = context.client.vcenter.Datacenter.list(
Datacenter.FilterSpec(names=names))
print("Found {} Datacenters matching names {}".
format(len(datacenter_summaries), ", ".
@@ -71,7 +66,7 @@ def cleanup_datacenters(context):
datacenter = datacenter_summary.datacenter
print("Deleting Datacenter '{}' ({})".
format(datacenter, datacenter_summary.name))
- datacenter_svc.delete(datacenter, force=True)
+ context.client.vcenter.Datacenter.delete(datacenter, force=True)
def setup_datacenters(context):
@@ -82,18 +77,16 @@ def setup_datacenters(context):
print("Creating datacenters in Folder '{}' ({})".
format(folder, folder_summaries[0].name))
- datacenter_svc = Datacenter(context.stub_config)
-
# Create first datacenter
datacenter1_name = context.testbed.config['DATACENTER1_NAME']
- datacenter1 = datacenter_svc.create(
+ datacenter1 = context.client.vcenter.Datacenter.create(
Datacenter.CreateSpec(name=datacenter1_name, folder=folder)
)
print("Created Datacenter '{}' ({})".format(datacenter1, datacenter1_name))
# Create second datacenter
datacenter2_name = context.testbed.config['DATACENTER2_NAME']
- datacenter2 = datacenter_svc.create(
+ datacenter2 = context.client.vcenter.Datacenter.create(
Datacenter.CreateSpec(name=datacenter2_name, folder=folder)
)
print("Created Datacenter '{}' ({})".format(datacenter2, datacenter2_name))
diff --git a/samples/vsphere/vcenter/setup/datastore.py b/samples/vsphere/vcenter/setup/datastore.py
index 8566edfe..7d4cd9c5 100644
--- a/samples/vsphere/vcenter/setup/datastore.py
+++ b/samples/vsphere/vcenter/setup/datastore.py
@@ -1,6 +1,6 @@
"""
* *******************************************************
-* Copyright (c) VMware, Inc. 2016. All Rights Reserved.
+* Copyright (c) VMware, Inc. 2016-2018. All Rights Reserved.
* SPDX-License-Identifier: MIT
* *******************************************************
*
@@ -12,7 +12,6 @@
"""
__author__ = 'VMware, Inc.'
-__copyright__ = 'Copyright 2016 VMware, Inc. All rights reserved.'
import pyVim.task
from com.vmware.vcenter_client import Host
@@ -25,8 +24,8 @@ def detect_nfs_datastore_on_host(context, host_name):
datastore_name = context.testbed.config['NFS_DATASTORE_NAME']
# Use vAPI find the Host managed identities
- host_svc = Host(context.stub_config)
- host_summaries = host_svc.list(Host.FilterSpec(names=names))
+ host_summaries = context.client.vcenter.Host.list(
+ Host.FilterSpec(names=names))
for host_summary in host_summaries:
# Convert the host identifier into a ManagedObject
@@ -67,8 +66,8 @@ def cleanup_nfs_datastore(context):
datastore_name = context.testbed.config['NFS_DATASTORE_NAME']
# Use vAPI find the Host managed identities
- host_svc = Host(context.stub_config)
- host_summaries = host_svc.list(Host.FilterSpec(names=names))
+ host_summaries = context.client.vcenter.Host.list(
+ Host.FilterSpec(names=names))
for host_summary in host_summaries:
# Convert the host identifier into a ManagedObject
@@ -154,8 +153,8 @@ def detect_vmfs_datastore(context, host_name, datastore_name):
names = set([host_name])
# Use vAPI find the Host managed identities
- host_svc = Host(context.stub_config)
- host_summaries = host_svc.list(Host.FilterSpec(names=names))
+ host_summaries = context.client.vcenter.Host.list(
+ Host.FilterSpec(names=names))
for host_summary in host_summaries:
# Convert the host identifier into a ManagedObject
@@ -199,8 +198,8 @@ def setup_vmfs_datastore(context, host_name, datastore_name):
names = set([host_name])
# Use vAPI find the Host managed identities
- host_svc = Host(context.stub_config)
- host_summaries = host_svc.list(Host.FilterSpec(names=names))
+ host_summaries = context.client.vcenter.Host.list(
+ Host.FilterSpec(names=names))
host_summary = host_summaries[0]
# Convert the host identifier into a ManagedObject
diff --git a/samples/vsphere/vcenter/setup/floppy_image.py b/samples/vsphere/vcenter/setup/floppy_image.py
index 63ec9df8..7a0c64f6 100644
--- a/samples/vsphere/vcenter/setup/floppy_image.py
+++ b/samples/vsphere/vcenter/setup/floppy_image.py
@@ -1,6 +1,6 @@
"""
* *******************************************************
-* Copyright (c) VMware, Inc. 2016. All Rights Reserved.
+* Copyright (c) VMware, Inc. 2016-2018. All Rights Reserved.
* SPDX-License-Identifier: MIT
* *******************************************************
*
@@ -12,7 +12,6 @@
"""
__author__ = 'VMware, Inc.'
-__copyright__ = 'Copyright 2016 VMware, Inc. All rights reserved.'
from samples.vsphere.common.vim.file import (detect_file, delete_file,
@@ -29,7 +28,7 @@ def setup_floppy_image(context):
datastore_path = context.testbed.config['FLOPPY_DATASTORE_PATH']
(datastore_name, path) = parse_datastore_path(datastore_path)
- datastore_mo = get_datastore_mo(context.stub_config,
+ datastore_mo = get_datastore_mo(context.client,
context.service_instance._stub,
datacenter_name,
datastore_name)
@@ -49,7 +48,7 @@ def cleanup_floppy_image(context):
"""Delete floppy image after running samples"""
datacenter_name = context.testbed.config['FLOPPY_DATACENTER_NAME']
datastore_path = context.testbed.config['FLOPPY_DATASTORE_PATH']
- delete_file(context.stub_config,
+ delete_file(context.client,
context.service_instance,
'Floppy Image',
datacenter_name,
diff --git a/samples/vsphere/vcenter/setup/folder.py b/samples/vsphere/vcenter/setup/folder.py
index f677ce54..2aecf8cf 100644
--- a/samples/vsphere/vcenter/setup/folder.py
+++ b/samples/vsphere/vcenter/setup/folder.py
@@ -1,6 +1,6 @@
"""
* *******************************************************
-* Copyright (c) VMware, Inc. 2016. All Rights Reserved.
+* Copyright (c) VMware, Inc. 2016-2018. All Rights Reserved.
* SPDX-License-Identifier: MIT
* *******************************************************
*
@@ -12,7 +12,6 @@
"""
__author__ = 'VMware, Inc.'
-__copyright__ = 'Copyright 2016 VMware, Inc. All rights reserved.'
import pyVim.task
@@ -24,14 +23,13 @@ from samples.vsphere.vcenter.helper import datacenter_helper
def detect_vm_folder(context, datacenter_name, folder_name):
"""Find vm folder based on datacenter and folder name"""
- datacenter = datacenter_helper.get_datacenter(context.stub_config,
+ datacenter = datacenter_helper.get_datacenter(context.client,
datacenter_name)
if not datacenter:
print("Datacenter '{}' not found".format(datacenter_name))
return None
- folder_svc = Folder(context.stub_config)
- folder_summaries = folder_svc.list(
+ folder_summaries = context.client.vcenter.Folder.list(
Folder.FilterSpec(type=Folder.Type.VIRTUAL_MACHINE,
names=set([folder_name]),
datacenters=set([datacenter])))
diff --git a/samples/vsphere/vcenter/setup/host.py b/samples/vsphere/vcenter/setup/host.py
index cbd9e7f9..585b0a15 100644
--- a/samples/vsphere/vcenter/setup/host.py
+++ b/samples/vsphere/vcenter/setup/host.py
@@ -1,6 +1,6 @@
"""
* *******************************************************
-* Copyright (c) VMware, Inc. 2016. All Rights Reserved.
+* Copyright (c) VMware, Inc. 2016-2018. All Rights Reserved.
* SPDX-License-Identifier: MIT
* *******************************************************
*
@@ -12,7 +12,6 @@
"""
__author__ = 'VMware, Inc.'
-__copyright__ = 'Copyright 2016 VMware, Inc. All rights reserved.'
import pyVim.task
@@ -22,10 +21,10 @@ from pyVmomi import vim
def detect_host(context, host_name):
"""Find host based on host name"""
- host_svc = Host(context.stub_config)
names = set([host_name])
- host_summaries = host_svc.list(Host.FilterSpec(names=names))
+ host_summaries = context.client.vcenter.Host.list(
+ Host.FilterSpec(names=names))
if len(host_summaries) > 0:
host = host_summaries[0].host
print("Detected Host '{}' as {}".format(host_name, host))
@@ -47,13 +46,12 @@ def detect_hosts(context):
def cleanup_hosts(context):
"""Delete hosts after sample run"""
- host_svc = Host(context.stub_config)
-
host1_name = context.testbed.config['ESX_HOST1']
host2_name = context.testbed.config['ESX_HOST2']
names = set([host1_name, host2_name])
- host_summaries = host_svc.list(Host.FilterSpec(names=names))
+ host_summaries = context.client.vcenter.Host.list(
+ Host.FilterSpec(names=names))
print('Found {} Hosts matching names {}'.
format(len(host_summaries), ', '.
join(["'{}'".format(n) for n in names])))
@@ -61,7 +59,7 @@ def cleanup_hosts(context):
for host_summary in host_summaries:
host = host_summary.host
print("Deleting Host '{}' ({})".format(host_summary.name, host))
- host_svc.delete(host)
+ context.client.vcenter.Host.delete(host)
def create_host_vapi(context, host_name, datacenter_name):
@@ -69,16 +67,12 @@ def create_host_vapi(context, host_name, datacenter_name):
Adds a single Host to the vCenter inventory under the named Datacenter
using vAPI.
"""
- host_svc = Host(context.stub_config)
-
user = context.testbed.config['ESX_USER']
pwd = context.testbed.config['ESX_PASS']
# Get the host folder for the Datacenter1 using the folder query
datacenter = context.testbed.entities['DATACENTER_IDS'][datacenter_name]
-
- folder_svc = Folder(context.stub_config)
- folder_summaries = folder_svc.list(
+ folder_summaries = context.client.vcenter.Folder.list(
Folder.FilterSpec(type=Folder.Type.HOST, datacenters=set([datacenter])))
folder = folder_summaries[0].folder
@@ -88,7 +82,7 @@ def create_host_vapi(context, host_name, datacenter_name):
password=pwd,
folder=folder,
thumbprint_verification=Host.CreateSpec.ThumbprintVerification.NONE)
- host = host_svc.create(create_spec)
+ host = context.client.vcenter.Host.create(create_spec)
print("Created Host '{}' ({})".format(host, host_name))
return host
diff --git a/samples/vsphere/vcenter/setup/iso_image.py b/samples/vsphere/vcenter/setup/iso_image.py
index f70eade3..8796b6e1 100644
--- a/samples/vsphere/vcenter/setup/iso_image.py
+++ b/samples/vsphere/vcenter/setup/iso_image.py
@@ -1,6 +1,6 @@
"""
* *******************************************************
-* Copyright (c) VMware, Inc. 2016. All Rights Reserved.
+* Copyright (c) VMware, Inc. 2016-2018. All Rights Reserved.
* SPDX-License-Identifier: MIT
* *******************************************************
*
@@ -12,7 +12,6 @@
"""
__author__ = 'VMware, Inc.'
-__copyright__ = 'Copyright 2016 VMware, Inc. All rights reserved.'
from samples.vsphere.common.vim.file import (detect_file, delete_file,
@@ -28,7 +27,7 @@ def setup_iso_image(context):
datacenter_name = context.testbed.config['ISO_DATACENTER_NAME']
datastore_path = context.testbed.config['ISO_DATASTORE_PATH']
(datastore_name, path) = parse_datastore_path(datastore_path)
- datastore_mo = get_datastore_mo(context.stub_config,
+ datastore_mo = get_datastore_mo(context.client,
context.service_instance._stub,
datacenter_name,
datastore_name)
@@ -47,7 +46,7 @@ def cleanup_iso_image(context):
"""Cleanup iso image after sample run"""
datacenter_name = context.testbed.config['ISO_DATACENTER_NAME']
datastore_path = context.testbed.config['ISO_DATASTORE_PATH']
- delete_file(context.stub_config,
+ delete_file(context.client,
context.service_instance,
"ISO Image",
datacenter_name,
diff --git a/samples/vsphere/vcenter/setup/main.py b/samples/vsphere/vcenter/setup/main.py
index 7330fd7e..d36b86e7 100644
--- a/samples/vsphere/vcenter/setup/main.py
+++ b/samples/vsphere/vcenter/setup/main.py
@@ -2,7 +2,7 @@
"""
* *******************************************************
-* Copyright (c) VMware, Inc. 2016. All Rights Reserved.
+* Copyright (c) VMware, Inc. 2016-2018. All Rights Reserved.
* SPDX-License-Identifier: MIT
* *******************************************************
*
@@ -13,46 +13,43 @@
* NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR PURPOSE.
"""
-
"""
Script that runs through all the setup and samples.
"""
__author__ = 'VMware, Inc.'
-__copyright__ = 'Copyright 2016 VMware, Inc. All rights reserved.'
-
import pyVim.connect
+from vmware.vapi.vsphere.client import create_vsphere_client
+
from samples.vsphere.common import sample_util
-from samples.vsphere.common import vapiconnect
from samples.vsphere.vcenter.setup import testbed
-from samples.vsphere.vcenter.setup.setup_cli import build_arg_parser
+from samples.vsphere.vcenter.setup import setup_cli
from samples.vsphere.vcenter.setup.testbed_setup import cleanup as testbed_cleanup
from samples.vsphere.vcenter.setup.testbed_setup import setup as testbed_setup
from samples.vsphere.vcenter.setup.testbed_setup import validate as testbed_validate
from samples.vsphere.vcenter.vm.main import VMSetup
-
-from samples.vsphere.common.ssl_helper import get_unverified_context
-
+from samples.vsphere.common.ssl_helper import get_unverified_context, \
+ get_unverified_session
# Parse command line params for setup script
-args = build_arg_parser().parse_args()
+args = setup_cli.build_arg_parser().parse_args()
_testbed = testbed.get()
# If VC/ESX/NFS Server IPs are passed as arguments,
# then override testbed.py values
-if (args.vcenterserver):
+if args.vcenterserver:
_testbed.config['SERVER'] = args.vcenterserver
-if (args.vcenterpassword):
+if args.vcenterpassword:
_testbed.config['PASSWORD'] = args.vcenterpassword
-if (args.esxhost1):
+if args.esxhost1:
_testbed.config['ESX_HOST1'] = args.esxhost1
-if (args.esxhost2):
+if args.esxhost2:
_testbed.config['ESX_HOST2'] = args.esxhost2
-if (args.esxpassword):
+if args.esxpassword:
_testbed.config['ESX_PASS'] = args.esxpassword
-if (args.nfsserver):
+if args.nfsserver:
_testbed.config['NFS_HOST'] = args.nfsserver
@@ -68,12 +65,13 @@ service_instance = pyVim.connect.SmartConnect(host=_testbed.config['SERVER'],
sslContext=context)
# Connect to vAPI Endpoint on vCenter system
-stub_config = vapiconnect.connect(host=_testbed.config['SERVER'],
- user=_testbed.config['USERNAME'],
- pwd=_testbed.config['PASSWORD'],
- skip_verification=args.skipverification)
+session = get_unverified_session() if args.skipverification else None
+client = create_vsphere_client(server=_testbed.config['SERVER'],
+ username=_testbed.config['USERNAME'],
+ password=_testbed.config['PASSWORD'],
+ session=session)
-context = sample_util.Context(_testbed, service_instance, stub_config)
+context = sample_util.Context(_testbed, service_instance, client)
context.option['DO_TESTBED_SETUP'] = args.testbed_setup
context.option['DO_TESTBED_VALIDATE'] = args.testbed_validate
diff --git a/samples/vsphere/vcenter/setup/network.py b/samples/vsphere/vcenter/setup/network.py
index 0b720a27..03772209 100644
--- a/samples/vsphere/vcenter/setup/network.py
+++ b/samples/vsphere/vcenter/setup/network.py
@@ -1,6 +1,6 @@
"""
* *******************************************************
-* Copyright (c) VMware, Inc. 2016. All Rights Reserved.
+* Copyright (c) VMware, Inc. 2016-2018. All Rights Reserved.
* SPDX-License-Identifier: MIT
* *******************************************************
*
@@ -12,7 +12,6 @@
"""
__author__ = 'VMware, Inc.'
-__copyright__ = 'Copyright 2016 VMware, Inc. All rights reserved.'
import pyVim.task
from com.vmware.vcenter_client import Host
@@ -235,8 +234,8 @@ def detect_stdportgroup(context, host_name, network_name):
names = set([host_name])
# Use vAPI find the Host managed identities
- host_svc = Host(context.stub_config)
- host_summaries = host_svc.list(Host.FilterSpec(names=names))
+ host_summaries = context.client.vcenter.Host.list(
+ Host.FilterSpec(names=names))
for host_summary in host_summaries:
# Convert the host identifier into a ManagedObject
diff --git a/samples/vsphere/vcenter/vm/create/create_basic_vm.py b/samples/vsphere/vcenter/vm/create/create_basic_vm.py
index 7f0196f9..18c31cde 100644
--- a/samples/vsphere/vcenter/vm/create/create_basic_vm.py
+++ b/samples/vsphere/vcenter/vm/create/create_basic_vm.py
@@ -2,7 +2,7 @@
"""
* *******************************************************
-* Copyright (c) VMware, Inc. 2016. All Rights Reserved.
+* Copyright (c) VMware, Inc. 2016-2018. All Rights Reserved.
* SPDX-License-Identifier: MIT
* *******************************************************
*
@@ -14,22 +14,20 @@
"""
__author__ = 'VMware, Inc.'
-__copyright__ = 'Copyright 2016 VMware, Inc. All rights reserved.'
__vcenter_version__ = '6.5+'
-import atexit
-
from com.vmware.vcenter.vm.hardware.boot_client import Device as BootDevice
from com.vmware.vcenter.vm.hardware_client import (
Disk, Ethernet)
from com.vmware.vcenter.vm.hardware_client import ScsiAddressSpec
from com.vmware.vcenter.vm_client import (Power)
from com.vmware.vcenter_client import VM
+from vmware.vapi.vsphere.client import create_vsphere_client
+from samples.vsphere.common.ssl_helper import get_unverified_session
from samples.vsphere.common import sample_cli
from samples.vsphere.common import sample_util
from samples.vsphere.common.sample_util import pp
-from samples.vsphere.common.service_manager import ServiceManager
from samples.vsphere.vcenter.helper import network_helper
from samples.vsphere.vcenter.helper import vm_placement_helper
from samples.vsphere.vcenter.helper.vm_helper import get_vm
@@ -48,32 +46,28 @@ class CreateBasicVM(object):
- standard switch network
"""
- def __init__(self, stub_config=None, placement_spec=None):
- self.context = None
- self.service_manager = None
- self.stub_config = stub_config
+ def __init__(self, client=None, placement_spec=None):
+ self.client = client
self.placement_spec = placement_spec
self.vm_name = testbed.config['VM_NAME_BASIC']
self.cleardata = None
- def setup(self):
- parser = sample_cli.build_arg_parser()
- parser.add_argument('-n', '--vm_name',
- action='store',
- help='Name of the testing vm')
- args = sample_util.process_cli_args(parser.parse_args())
- if args.vm_name:
- self.vm_name = args.vm_name
- self.cleardata = args.cleardata
+ # Execute the sample in standalone mode.
+ if not self.client:
+ parser = sample_cli.build_arg_parser()
+ parser.add_argument('-n', '--vm_name',
+ action='store',
+ help='Name of the testing vm')
+ args = sample_util.process_cli_args(parser.parse_args())
+ if args.vm_name:
+ self.vm_name = args.vm_name
+ self.cleardata = args.cleardata
- self.service_manager = ServiceManager(args.server,
- args.username,
- args.password,
- args.skipverification)
- self.service_manager.connect()
- atexit.register(self.service_manager.disconnect)
-
- self.stub_config = self.service_manager.stub_config
+ session = get_unverified_session() if args.skipverification else None
+ self.client = create_vsphere_client(server=args.server,
+ username=args.username,
+ password=args.password,
+ session=session)
def run(self):
# Get a placement spec
@@ -84,14 +78,14 @@ class CreateBasicVM(object):
if not self.placement_spec:
self.placement_spec = vm_placement_helper.get_placement_spec_for_resource_pool(
- self.stub_config,
+ self.client,
datacenter_name,
vm_folder_name,
datastore_name)
# Get a standard network backing
standard_network = network_helper.get_standard_network_backing(
- self.stub_config,
+ self.client,
std_portgroup_name,
datacenter_name)
@@ -135,34 +129,30 @@ class CreateBasicVM(object):
print(pp(vm_create_spec))
print('-----')
- vm_svc = VM(self.stub_config)
- vm = vm_svc.create(vm_create_spec)
+ vm = self.client.vcenter.VM.create(vm_create_spec)
print("create_basic_vm: Created VM '{}' ({})".format(self.vm_name, vm))
- vm_info = vm_svc.get(vm)
+ vm_info = self.client.vcenter.VM.get(vm)
print('vm.get({}) -> {}'.format(vm, pp(vm_info)))
return vm
def cleanup(self):
- vm = get_vm(self.stub_config, self.vm_name)
+ vm = get_vm(self.client, self.vm_name)
if vm:
- power_svc = Power(self.stub_config)
- vm_svc = VM(self.stub_config)
- state = power_svc.get(vm)
+ state = self.client.vcenter.vm.Power.get(vm)
if state == Power.Info(state=Power.State.POWERED_ON):
- power_svc.stop(vm)
+ self.client.vcenter.vm.Power.stop(vm)
elif state == Power.Info(state=Power.State.SUSPENDED):
- power_svc.start(vm)
- power_svc.stop(vm)
+ self.client.vcenter.vm.Power.start(vm)
+ self.client.vcenter.vm.Power.stop(vm)
print("Deleting VM '{}' ({})".format(self.vm_name, vm))
- vm_svc.delete(vm)
+ self.client.vcenter.VM.delete(vm)
def main():
create_basic_vm = CreateBasicVM()
- create_basic_vm.setup()
create_basic_vm.cleanup()
create_basic_vm.run()
if create_basic_vm.cleardata:
diff --git a/samples/vsphere/vcenter/vm/create/create_default_vm.py b/samples/vsphere/vcenter/vm/create/create_default_vm.py
index 3872fd03..9ca3ddb4 100644
--- a/samples/vsphere/vcenter/vm/create/create_default_vm.py
+++ b/samples/vsphere/vcenter/vm/create/create_default_vm.py
@@ -2,7 +2,7 @@
"""
* *******************************************************
-* Copyright (c) VMware, Inc. 2016. All Rights Reserved.
+* Copyright (c) VMware, Inc. 2016-2018. All Rights Reserved.
* SPDX-License-Identifier: MIT
* *******************************************************
*
@@ -14,18 +14,16 @@
"""
__author__ = 'VMware, Inc.'
-__copyright__ = 'Copyright 2016 VMware, Inc. All rights reserved.'
__vcenter_version__ = '6.5+'
-import atexit
-
-from com.vmware.vcenter.vm_client import (Power)
+from com.vmware.vcenter.vm_client import Power
from com.vmware.vcenter_client import VM
+from vmware.vapi.vsphere.client import create_vsphere_client
from samples.vsphere.common import sample_cli
from samples.vsphere.common import sample_util
+from samples.vsphere.common.ssl_helper import get_unverified_session
from samples.vsphere.common.sample_util import pp
-from samples.vsphere.common.service_manager import ServiceManager
from samples.vsphere.vcenter.helper import vm_placement_helper
from samples.vsphere.vcenter.helper.vm_helper import get_vm
from samples.vsphere.vcenter.setup import testbed
@@ -41,32 +39,29 @@ class CreateDefaultVM(object):
- datastore
"""
- def __init__(self, stub_config=None, placement_spec=None):
- self.context = None
- self.service_manager = None
- self.stub_config = stub_config
+ def __init__(self, client=None, placement_spec=None):
+ self.client = client
self.placement_spec = placement_spec
self.vm_name = testbed.config['VM_NAME_DEFAULT']
self.cleardata = None
- def setup(self):
- parser = sample_cli.build_arg_parser()
- parser.add_argument('-n', '--vm_name',
- action='store',
- help='Name of the testing vm')
- args = sample_util.process_cli_args(parser.parse_args())
- if args.vm_name:
- self.vm_name = args.vm_name
- self.cleardata = args.cleardata
+ # Execute the sample in standalone mode.
+ if not self.client:
+ parser = sample_cli.build_arg_parser()
+ parser.add_argument('-n', '--vm_name',
+ action='store',
+ help='Name of the testing vm')
+ args = sample_util.process_cli_args(parser.parse_args())
- self.service_manager = ServiceManager(args.server,
- args.username,
- args.password,
- args.skipverification)
- self.service_manager.connect()
- atexit.register(self.service_manager.disconnect)
+ if args.vm_name:
+ self.vm_name = args.vm_name
+ self.cleardata = args.cleardata
- self.stub_config = self.service_manager.stub_config
+ session = get_unverified_session() if args.skipverification else None
+ self.client = create_vsphere_client(server=args.server,
+ username=args.username,
+ password=args.password,
+ session=session)
def run(self):
# Get a placement spec
@@ -76,7 +71,7 @@ class CreateDefaultVM(object):
if not self.placement_spec:
self.placement_spec = vm_placement_helper.get_placement_spec_for_resource_pool(
- self.stub_config,
+ self.client,
datacenter_name,
vm_folder_name,
datastore_name)
@@ -95,32 +90,28 @@ class CreateDefaultVM(object):
print(pp(vm_create_spec))
print('-----')
- vm_svc = VM(self.stub_config)
- vm = vm_svc.create(vm_create_spec)
+ vm = self.client.vcenter.VM.create(vm_create_spec)
print("create_default_vm: Created VM '{}' ({})".format(self.vm_name, vm))
- vm_info = vm_svc.get(vm)
+ vm_info = self.client.vcenter.VM.get(vm)
print('vm.get({}) -> {}'.format(vm, pp(vm_info)))
return vm
def cleanup(self):
- vm = get_vm(self.stub_config, self.vm_name)
+ vm = get_vm(self.client, self.vm_name)
if vm:
- power_svc = Power(self.stub_config)
- vm_svc = VM(self.stub_config)
- state = power_svc.get(vm)
+ state = self.client.vcenter.vm.Power.get(vm)
if state == Power.Info(state=Power.State.POWERED_ON):
- power_svc.stop(vm)
+ self.client.vcenter.vm.Power.stop(vm)
elif state == Power.Info(state=Power.State.SUSPENDED):
- power_svc.start(vm)
- power_svc.stop(vm)
+ self.client.vcenter.vm.Power.start(vm)
+ self.client.vcenter.vm.Power.stop(vm)
print("Deleting VM '{}' ({})".format(self.vm_name, vm))
- vm_svc.delete(vm)
+ self.client.vcenter.VM.delete(vm)
def main():
create_default_vm = CreateDefaultVM()
- create_default_vm.setup()
create_default_vm.cleanup()
create_default_vm.run()
if create_default_vm.cleardata:
diff --git a/samples/vsphere/vcenter/vm/create/create_exhaustive_vm.py b/samples/vsphere/vcenter/vm/create/create_exhaustive_vm.py
index ee53e237..40e2cb68 100644
--- a/samples/vsphere/vcenter/vm/create/create_exhaustive_vm.py
+++ b/samples/vsphere/vcenter/vm/create/create_exhaustive_vm.py
@@ -2,7 +2,7 @@
"""
* *******************************************************
-* Copyright (c) VMware, Inc. 2016. All Rights Reserved.
+* Copyright (c) VMware, Inc. 2016-2018. All Rights Reserved.
* SPDX-License-Identifier: MIT
* *******************************************************
*
@@ -14,22 +14,20 @@
"""
__author__ = 'VMware, Inc.'
-__copyright__ = 'Copyright 2016 VMware, Inc. All rights reserved.'
__vcenter_version__ = '6.5+'
-import atexit
-
from com.vmware.vcenter.vm.hardware.boot_client import Device as BootDevice
from com.vmware.vcenter.vm.hardware_client import (
Cpu, Memory, Disk, Ethernet, Cdrom, Serial, Parallel, Floppy, Boot)
from com.vmware.vcenter.vm.hardware_client import ScsiAddressSpec
from com.vmware.vcenter.vm_client import (Hardware, Power)
from com.vmware.vcenter_client import VM
+from vmware.vapi.vsphere.client import create_vsphere_client
+from samples.vsphere.common.ssl_helper import get_unverified_session
from samples.vsphere.common import sample_cli
from samples.vsphere.common import sample_util
from samples.vsphere.common.sample_util import pp
-from samples.vsphere.common.service_manager import ServiceManager
from samples.vsphere.vcenter.helper import network_helper
from samples.vsphere.vcenter.helper import vm_placement_helper
from samples.vsphere.vcenter.helper.vm_helper import get_vm
@@ -52,35 +50,32 @@ class CreateExhaustiveVM(object):
- An iso file on the datastore mentioned above
"""
- def __init__(self, stub_config=None, placement_spec=None,
+ def __init__(self, client=None, placement_spec=None,
standard_network=None, distributed_network=None):
- self.context = None
- self.service_manager = None
- self.stub_config = stub_config
+ self.client = client
self.placement_spec = placement_spec
self.standard_network = standard_network
self.distributed_network = distributed_network
self.vm_name = testbed.config['VM_NAME_EXHAUSTIVE']
self.cleardata = None
- def setup(self):
- parser = sample_cli.build_arg_parser()
- parser.add_argument('-n', '--vm_name',
- action='store',
- help='Name of the testing vm')
- args = sample_util.process_cli_args(parser.parse_args())
- if args.vm_name:
- self.vm_name = args.vm_name
- self.cleardata = args.cleardata
+ # Execute the sample in standalone mode.
+ if not self.client:
- self.service_manager = ServiceManager(args.server,
- args.username,
- args.password,
- args.skipverification)
- self.service_manager.connect()
- atexit.register(self.service_manager.disconnect)
+ parser = sample_cli.build_arg_parser()
+ parser.add_argument('-n', '--vm_name',
+ action='store',
+ help='Name of the testing vm')
+ args = sample_util.process_cli_args(parser.parse_args())
+ if args.vm_name:
+ self.vm_name = args.vm_name
+ self.cleardata = args.cleardata
- self.stub_config = self.service_manager.stub_config
+ session = get_unverified_session() if args.skipverification else None
+ self.client = create_vsphere_client(server=args.server,
+ username=args.username,
+ password=args.password,
+ session=session)
def run(self):
# Get a placement spec
@@ -92,7 +87,7 @@ class CreateExhaustiveVM(object):
if not self.placement_spec:
self.placement_spec = vm_placement_helper.get_placement_spec_for_resource_pool(
- self.stub_config,
+ self.client,
datacenter_name,
vm_folder_name,
datastore_name)
@@ -100,14 +95,14 @@ class CreateExhaustiveVM(object):
# Get a standard network backing
if not self.standard_network:
self.standard_network = network_helper.get_standard_network_backing(
- self.stub_config,
+ self.client,
std_portgroup_name,
datacenter_name)
# Get a distributed network backing
if not self.distributed_network:
self.distributed_network = network_helper.get_distributed_network_backing(
- self.stub_config,
+ self.client,
dv_portgroup_name,
datacenter_name)
@@ -228,35 +223,31 @@ class CreateExhaustiveVM(object):
print(pp(vm_create_spec))
print('-----')
- vm_svc = VM(self.stub_config)
- vm = vm_svc.create(vm_create_spec)
+ vm = self.client.vcenter.VM.create(vm_create_spec)
print("create_exhaustive_vm: Created VM '{}' ({})".format(self.vm_name,
vm))
- vm_info = vm_svc.get(vm)
+ vm_info = self.client.vcenter.VM.get(vm)
print('vm.get({}) -> {}'.format(vm, pp(vm_info)))
return vm
def cleanup(self):
- vm = get_vm(self.stub_config, self.vm_name)
+ vm = get_vm(self.client, self.vm_name)
if vm:
- power_svc = Power(self.stub_config)
- vm_svc = VM(self.stub_config)
- state = power_svc.get(vm)
+ state = self.client.vcenter.vm.Power.get(vm)
if state == Power.Info(state=Power.State.POWERED_ON):
- power_svc.stop(vm)
+ self.client.vcenter.vm.Power.stop(vm)
elif state == Power.Info(state=Power.State.SUSPENDED):
- power_svc.start(vm)
- power_svc.stop(vm)
+ self.client.vcenter.vm.Power.start(vm)
+ self.client.vcenter.vm.Power.stop(vm)
print("Deleting VM '{}' ({})".format(self.vm_name, vm))
- vm_svc.delete(vm)
+ self.client.vcenter.VM.delete(vm)
def main():
create_exhaustive_vm = CreateExhaustiveVM()
- create_exhaustive_vm.setup()
create_exhaustive_vm.cleanup()
create_exhaustive_vm.run()
if create_exhaustive_vm.cleardata:
diff --git a/samples/vsphere/vcenter/vm/delete_vm.py b/samples/vsphere/vcenter/vm/delete_vm.py
index 472113b0..42f91a2c 100644
--- a/samples/vsphere/vcenter/vm/delete_vm.py
+++ b/samples/vsphere/vcenter/vm/delete_vm.py
@@ -2,7 +2,7 @@
"""
* *******************************************************
-* Copyright (c) VMware, Inc. 2017. All Rights Reserved.
+* Copyright (c) VMware, Inc. 2017, 2018. All Rights Reserved.
* SPDX-License-Identifier: MIT
* *******************************************************
*
@@ -14,18 +14,16 @@
"""
__author__ = 'VMware, Inc.'
-__copyright__ = 'Copyright 2017 VMware, Inc. All rights reserved.'
__vcenter_version__ = '6.5+'
-import atexit
+from vmware.vapi.vsphere.client import create_vsphere_client
from com.vmware.vcenter.vm_client import Power
-from com.vmware.vcenter_client import VM
from samples.vsphere.common import sample_cli
from samples.vsphere.common import sample_util
-from samples.vsphere.common.service_manager import ServiceManager
from samples.vsphere.vcenter.helper.vm_helper import get_vm
+from samples.vsphere.common.ssl_helper import get_unverified_session
class DeleteVM(object):
@@ -36,10 +34,6 @@ class DeleteVM(object):
"""
def __init__(self):
- self.service_manager = None
- self.vm_name = None
-
- def setup(self):
parser = sample_cli.build_arg_parser()
parser.add_argument('-n', '--vm_name',
action='store',
@@ -48,37 +42,35 @@ class DeleteVM(object):
args = sample_util.process_cli_args(parser.parse_args())
self.vm_name = args.vm_name
- self.service_manager = ServiceManager(args.server,
- args.username,
- args.password,
- args.skipverification)
- self.service_manager.connect()
- atexit.register(self.service_manager.disconnect)
+ session = get_unverified_session() if args.skipverification else None
+
+ # Connect to vSphere client
+ self.client = create_vsphere_client(server=args.server,
+ username=args.username,
+ password=args.password,
+ session=session)
def run(self):
"""
Delete User specified VM from Server
"""
- vm_svc = VM(self.service_manager.stub_config)
- power_svc = Power(self.service_manager.stub_config)
- vm = get_vm(self.service_manager.stub_config, self.vm_name)
+ vm = get_vm(self.client, self.vm_name)
if not vm:
raise Exception('Sample requires an existing vm with name ({}).'
- 'Please create the vm first.'.format(vm_name))
+ 'Please create the vm first.'.format(self.vm_name))
print("Deleting VM -- '{}-({})')".format(self.vm_name, vm))
- state = power_svc.get(vm)
+ state = self.client.vcenter.vm.Power.get(vm)
if state == Power.Info(state=Power.State.POWERED_ON):
- power_svc.stop(vm)
+ self.client.vcenter.vm.Power.stop(vm)
elif state == Power.Info(state=Power.State.SUSPENDED):
- power_svc.start(vm)
- power_svc.stop(vm)
- vm_svc.delete(vm)
+ self.client.vcenter.vm.Power.start(vm)
+ self.client.vcenter.vm.Power.stop(vm)
+ self.client.vcenter.VM.delete(vm)
print("Deleted VM -- '{}-({})".format(self.vm_name, vm))
def main():
delete_vm = DeleteVM()
- delete_vm.setup()
delete_vm.run()
diff --git a/samples/vsphere/vcenter/vm/hardware/adapter/sata.py b/samples/vsphere/vcenter/vm/hardware/adapter/sata.py
index 3b39ff4a..6603376e 100644
--- a/samples/vsphere/vcenter/vm/hardware/adapter/sata.py
+++ b/samples/vsphere/vcenter/vm/hardware/adapter/sata.py
@@ -2,7 +2,7 @@
"""
* *******************************************************
-* Copyright (c) VMware, Inc. 2016. All Rights Reserved.
+* Copyright (c) VMware, Inc. 2016-2018. All Rights Reserved.
* SPDX-License-Identifier: MIT
* *******************************************************
*
@@ -14,18 +14,17 @@
"""
__author__ = 'VMware, Inc.'
-__copyright__ = 'Copyright 2016 VMware, Inc. All rights reserved.'
__vcenter_version__ = '6.5+'
-import atexit
+from vmware.vapi.vsphere.client import create_vsphere_client
from com.vmware.vcenter.vm.hardware.adapter_client import Sata
-from samples.vsphere.common import vapiconnect
from samples.vsphere.common.sample_util import pp, \
parse_cli_args_vm
from samples.vsphere.vcenter.setup import testbed
from samples.vsphere.vcenter.helper.vm_helper import get_vm
+from samples.vsphere.common.ssl_helper import get_unverified_session
"""
Demonstrates how to configure virtual SATA adapters of a virtual machine.
@@ -36,44 +35,41 @@ The sample needs an existing VM.
vm = None
vm_name = None
-stub_config = None
-sata_svc = None
+client = None
cleardata = False
satas_to_delete = []
orig_sata_summaries = None
def setup(context=None):
- global vm, vm_name, stub_config, cleardata
+ global vm, vm_name, client, cleardata
if context:
# Run sample suite via setup script
- stub_config = context.stub_config
+ client = context.client
vm_name = testbed.config['VM_NAME_DEFAULT']
else:
# Run sample in standalone mode
server, username, password, cleardata, skip_verification, vm_name = \
parse_cli_args_vm(testbed.config['VM_NAME_DEFAULT'])
- stub_config = vapiconnect.connect(server,
- username,
- password,
- skip_verification)
- atexit.register(vapiconnect.logout, stub_config)
+ session = get_unverified_session() if skip_verification else None
+
+ # Connect to vSphere client
+ client = create_vsphere_client(server=server,
+ username=username,
+ password=password,
+ session=session)
def run():
global vm
- vm = get_vm(stub_config, vm_name)
+ vm = get_vm(client, vm_name)
if not vm:
raise Exception('Sample requires an existing vm with name ({}). '
'Please create the vm first.'.format(vm_name))
print("Using VM '{}' ({}) for SATA Sample".format(vm_name, vm))
- # Create SATA adapter stub used for making requests
- global sata_svc
- sata_svc = Sata(stub_config)
-
print('\n# Example: List all SATA adapters for a VM')
- sata_summaries = sata_svc.list(vm=vm)
+ sata_summaries = client.vcenter.vm.hardware.adapter.Sata.list(vm=vm)
print('vm.hardware.adapter.Sata.list({}) -> {}'.format(vm, sata_summaries))
# Save current list of SATA adapters to verify that we have cleaned up
@@ -84,7 +80,7 @@ def run():
# Get information for each SATA adapter on the VM
for sata_summary in sata_summaries:
sata = sata_summary.adapter
- sata_info = sata_svc.get(vm=vm, adapter=sata)
+ sata_info = client.vcenter.vm.hardware.adapter.Sata.get(vm=vm, adapter=sata)
print('vm.hardware.adapter.Sata.get({}, {}) -> {}'.
format(vm, sata, pp(sata_info)))
@@ -92,36 +88,36 @@ def run():
print('\n# Example: Create SATA adapter with defaults')
sata_create_spec = Sata.CreateSpec()
- sata = sata_svc.create(vm, sata_create_spec)
+ sata = client.vcenter.vm.hardware.adapter.Sata.create(vm, sata_create_spec)
print('vm.hardware.adapter.Sata.create({}, {}) -> {}'.
format(vm, sata_create_spec, sata))
satas_to_delete.append(sata)
- sata_info = sata_svc.get(vm, sata)
+ sata_info = client.vcenter.vm.hardware.adapter.Sata.get(vm, sata)
print('vm.hardware.adapter.Sata.get({}, {}) -> {}'.
format(vm, sata, pp(sata_info)))
print('\n# Example: Create SATA adapter with a specific bus')
sata_create_spec = Sata.CreateSpec(bus=2)
- sata = sata_svc.create(vm, sata_create_spec)
+ sata = client.vcenter.vm.hardware.adapter.Sata.create(vm, sata_create_spec)
print('vm.hardware.adapter.Sata.create({}, {}) -> {}'.
format(vm, sata_create_spec, sata))
satas_to_delete.append(sata)
- sata_info = sata_svc.get(vm, sata)
+ sata_info = client.vcenter.vm.hardware.adapter.Sata.get(vm, sata)
print('vm.hardware.adapter.Sata.get({}, {}) -> {}'.
format(vm, sata, pp(sata_info)))
# List all SATA adapters for a VM
- sata_summaries = sata_svc.list(vm=vm)
+ sata_summaries = client.vcenter.vm.hardware.adapter.Sata.list(vm=vm)
print('vm.hardware.adapter.Sata.list({}) -> {}'.format(vm, sata_summaries))
def cleanup():
print('\n# Cleanup: Delete VM SATA adapters that were added')
for sata in satas_to_delete:
- sata_svc.delete(vm, sata)
+ client.vcenter.vm.hardware.adapter.Sata.delete(vm, sata)
print('vm.hardware.adapter.Sata.delete({}, {})'.format(vm, sata))
- sata_summaries = sata_svc.list(vm)
+ sata_summaries = client.vcenter.vm.hardware.adapter.Sata.list(vm)
print('vm.hardware.adapter.Sata.list({}) -> {}'.format(vm, sata_summaries))
if set(orig_sata_summaries) != set(sata_summaries):
print('vm.hardware.adapter.Sata WARNING: '
diff --git a/samples/vsphere/vcenter/vm/hardware/adapter/scsi.py b/samples/vsphere/vcenter/vm/hardware/adapter/scsi.py
index a773f64f..2fe0e319 100644
--- a/samples/vsphere/vcenter/vm/hardware/adapter/scsi.py
+++ b/samples/vsphere/vcenter/vm/hardware/adapter/scsi.py
@@ -2,7 +2,7 @@
"""
* *******************************************************
-* Copyright (c) VMware, Inc. 2016. All Rights Reserved.
+* Copyright (c) VMware, Inc. 2016-2018. All Rights Reserved.
* SPDX-License-Identifier: MIT
* *******************************************************
*
@@ -14,18 +14,16 @@
"""
__author__ = 'VMware, Inc.'
-__copyright__ = 'Copyright 2016 VMware, Inc. All rights reserved.'
__vcenter_version__ = '6.5+'
-import atexit
+from vmware.vapi.vsphere.client import create_vsphere_client
from com.vmware.vcenter.vm.hardware.adapter_client import Scsi
-from samples.vsphere.common import vapiconnect
from samples.vsphere.common.sample_util import pp, \
parse_cli_args_vm
from samples.vsphere.vcenter.setup import testbed
-
from samples.vsphere.vcenter.helper.vm_helper import get_vm
+from samples.vsphere.common.ssl_helper import get_unverified_session
"""
Demonstrates how to configure virtual SCSI adapters of a virtual machine.
@@ -36,44 +34,41 @@ The sample needs an existing VM.
vm = None
vm_name = None
-stub_config = None
-scsi_svc = None
+client = None
cleardata = False
scsis_to_delete = []
orig_scsi_summaries = None
def setup(context=None):
- global vm, vm_name, stub_config, cleardata
+ global vm, vm_name, client, cleardata
if context:
# Run sample suite via setup script
- stub_config = context.stub_config
+ client = context.client
vm_name = testbed.config['VM_NAME_DEFAULT']
else:
# Run sample in standalone mode
server, username, password, cleardata, skip_verification, vm_name = \
parse_cli_args_vm(testbed.config['VM_NAME_DEFAULT'])
- stub_config = vapiconnect.connect(server,
- username,
- password,
- skip_verification)
- atexit.register(vapiconnect.logout, stub_config)
+ session = get_unverified_session() if skip_verification else None
+
+ # Connect to vSphere client
+ client = create_vsphere_client(server=server,
+ username=username,
+ password=password,
+ session=session)
def run():
global vm
- vm = get_vm(stub_config, vm_name)
+ vm = get_vm(client, vm_name)
if not vm:
raise Exception('Sample requires an existing vm with name ({}). '
'Please create the vm first.'.format(vm_name))
print("Using VM '{}' ({}) for SCSI Sample".format(vm_name, vm))
- # Create SCSI adapter stub used for making requests
- global scsi_svc
- scsi_svc = Scsi(stub_config)
-
print('\n# Example: List all SCSI adapters for a VM')
- scsi_summaries = scsi_svc.list(vm=vm)
+ scsi_summaries = client.vcenter.vm.hardware.adapter.Scsi.list(vm=vm)
print('vm.hardware.adapter.Scsi.list({}) -> {}'.format(vm, scsi_summaries))
# Save current list of SCSI adapters to verify that we have cleaned up
@@ -84,7 +79,7 @@ def run():
# Get information for each SCSI adapter on the VM
for scsi_summary in scsi_summaries:
scsi = scsi_summary.adapter
- scsi_info = scsi_svc.get(vm=vm, adapter=scsi)
+ scsi_info = client.vcenter.vm.hardware.adapter.Scsi.get(vm=vm, adapter=scsi)
print('vm.hardware.adapter.Scsi.get({}, {}) -> {}'.
format(vm, scsi, pp(scsi_info)))
@@ -92,11 +87,11 @@ def run():
print('\n# Example: Create SCSI adapter with defaults')
scsi_create_spec = Scsi.CreateSpec()
- scsi = scsi_svc.create(vm, scsi_create_spec)
+ scsi = client.vcenter.vm.hardware.adapter.Scsi.create(vm, scsi_create_spec)
print('vm.hardware.adapter.Scsi.create({}, {}) -> {}'.
format(vm, scsi_create_spec, scsi))
scsis_to_delete.append(scsi)
- scsi_info = scsi_svc.get(vm, scsi)
+ scsi_info = client.vcenter.vm.hardware.adapter.Scsi.get(vm, scsi)
print('vm.hardware.adapter.Scsi.get({}, {}) -> {}'.
format(vm, scsi, pp(scsi_info)))
@@ -104,35 +99,35 @@ def run():
'and sharing=True')
scsi_create_spec = Scsi.CreateSpec(bus=2,
sharing=Scsi.Sharing.VIRTUAL)
- scsi = scsi_svc.create(vm, scsi_create_spec)
+ scsi = client.vcenter.vm.hardware.adapter.Scsi.create(vm, scsi_create_spec)
print('vm.hardware.adapter.Scsi.create({}, {}) -> {}'.
format(vm, scsi_create_spec, scsi))
scsis_to_delete.append(scsi)
- scsi_info = scsi_svc.get(vm, scsi)
+ scsi_info = client.vcenter.vm.hardware.adapter.Scsi.get(vm, scsi)
print('vm.hardware.adapter.Scsi.get({}, {}) -> {}'.
format(vm, scsi, pp(scsi_info)))
print('\n# Example: Update SCSI adapter by setting sharing=False')
scsi_update_spec = Scsi.UpdateSpec(sharing=Scsi.Sharing.NONE)
- scsi_svc.update(vm, scsi, scsi_update_spec)
+ client.vcenter.vm.hardware.adapter.Scsi.update(vm, scsi, scsi_update_spec)
print('vm.hardware.adapter.Scsi.update({}, {}, {})'.
format(vm, scsi, scsi_create_spec))
- scsi_info = scsi_svc.get(vm, scsi)
+ scsi_info = client.vcenter.vm.hardware.adapter.Scsi.get(vm, scsi)
print('vm.hardware.adapter.Scsi.get({}, {}) -> {}'.
format(vm, scsi, pp(scsi_info)))
# List all SCSI adapters for a VM
- scsi_summaries = scsi_svc.list(vm=vm)
+ scsi_summaries = client.vcenter.vm.hardware.adapter.Scsi.list(vm=vm)
print('vm.hardware.adapter.Scsi.list({}) -> {}'.format(vm, scsi_summaries))
def cleanup():
print('\n# Cleanup: Delete VM SCSI adapters that were added')
for scsi in scsis_to_delete:
- scsi_svc.delete(vm, scsi)
+ client.vcenter.vm.hardware.adapter.Scsi.delete(vm, scsi)
print('vm.hardware.adapter.Scsi.delete({}, {})'.format(vm, scsi))
- scsi_summaries = scsi_svc.list(vm)
+ scsi_summaries = client.vcenter.vm.hardware.adapter.Scsi.list(vm)
print('vm.hardware.adapter.Scsi.list({}) -> {}'.format(vm, scsi_summaries))
if set(orig_scsi_summaries) != set(scsi_summaries):
print('vm.hardware.adapter.Scsi WARNING: '
diff --git a/samples/vsphere/vcenter/vm/hardware/boot.py b/samples/vsphere/vcenter/vm/hardware/boot.py
index 2669e278..e748e1c6 100644
--- a/samples/vsphere/vcenter/vm/hardware/boot.py
+++ b/samples/vsphere/vcenter/vm/hardware/boot.py
@@ -2,7 +2,7 @@
"""
* *******************************************************
-* Copyright (c) VMware, Inc. 2016. All Rights Reserved.
+* Copyright (c) VMware, Inc. 2016-2018. All Rights Reserved.
* SPDX-License-Identifier: MIT
* *******************************************************
*
@@ -14,18 +14,18 @@
"""
__author__ = 'VMware, Inc.'
-__copyright__ = 'Copyright 2016 VMware, Inc. All rights reserved.'
__vcenter_version__ = '6.5+'
-import atexit
-
from com.vmware.vcenter.vm.hardware_client import Boot
-from samples.vsphere.common import vapiconnect
+from vmware.vapi.vsphere.client import create_vsphere_client
+
from samples.vsphere.common.sample_util import parse_cli_args_vm
from samples.vsphere.common.sample_util import pp
from samples.vsphere.vcenter.setup import testbed
from samples.vsphere.vcenter.helper.vm_helper import get_vm
+from samples.vsphere.common.ssl_helper import get_unverified_session
+
"""
Demonstrates how to configure the settings used when booting a virtual machine.
@@ -36,43 +36,41 @@ The sample needs an existing VM.
vm = None
vm_name = None
-stub_config = None
-boot_svc = None
+client = None
cleardata = False
orig_boot_info = None
def setup(context=None):
- global vm, vm_name, stub_config, cleardata
+ global vm, vm_name, client, cleardata
if context:
# Run sample suite via setup script
- stub_config = context.stub_config
+ client = context.client
vm_name = testbed.config['VM_NAME_DEFAULT']
else:
# Run sample in standalone mode
server, username, password, cleardata, skip_verification, vm_name = \
parse_cli_args_vm(testbed.config['VM_NAME_DEFAULT'])
- stub_config = vapiconnect.connect(server,
- username,
- password,
- skip_verification)
- atexit.register(vapiconnect.logout, stub_config)
+
+ session = get_unverified_session() if skip_verification else None
+
+ # Connect to vSphere client
+ client = create_vsphere_client(server=server,
+ username=username,
+ password=password,
+ session=session)
def run():
global vm
- vm = get_vm(stub_config, vm_name)
+ vm = get_vm(client, vm_name)
if not vm:
raise Exception('Sample requires an existing vm with name ({}). '
'Please create the vm first.'.format(vm_name))
print("Using VM '{}' ({}) for Boot Sample".format(vm_name, vm))
- # Create Boot stub used for making requests
- global boot_svc
- boot_svc = Boot(stub_config)
-
print('\n# Example: Get current Boot configuration')
- boot_info = boot_svc.get(vm)
+ boot_info = client.vcenter.vm.hardware.Boot.get(vm)
print('vm.hardware.Boot.get({}) -> {}'.format(vm, pp(boot_info)))
# Save current Boot info to verify that we have cleaned up properly
@@ -82,16 +80,16 @@ def run():
print('\n# Example: Update firmware to EFI for Boot configuration')
update_spec = Boot.UpdateSpec(type=Boot.Type.EFI)
print('vm.hardware.Boot.update({}, {})'.format(vm, update_spec))
- boot_svc.update(vm, update_spec)
- boot_info = boot_svc.get(vm)
+ client.vcenter.vm.hardware.Boot.update(vm, update_spec)
+ boot_info = client.vcenter.vm.hardware.Boot.get(vm)
print('vm.hardware.Boot.get({}) -> {}'.format(vm, pp(boot_info)))
print('\n# Example: Update boot firmware to tell it to enter setup mode on '
'next boot')
update_spec = Boot.UpdateSpec(enter_setup_mode=True)
print('vm.hardware.Boot.update({}, {})'.format(vm, update_spec))
- boot_svc.update(vm, update_spec)
- boot_info = boot_svc.get(vm)
+ client.vcenter.vm.hardware.Boot.update(vm, update_spec)
+ boot_info = client.vcenter.vm.hardware.Boot.get(vm)
print('vm.hardware.Boot.get({}) -> {}'.format(vm, pp(boot_info)))
print('\n# Example: Update boot firmware to introduce a delay in boot'
@@ -103,8 +101,8 @@ def run():
retry=True,
retry_delay=30000)
print('vm.hardware.Boot.update({}, {})'.format(vm, update_spec))
- boot_svc.update(vm, update_spec)
- boot_info = boot_svc.get(vm)
+ client.vcenter.vm.hardware.Boot.update(vm, update_spec)
+ boot_info = client.vcenter.vm.hardware.Boot.get(vm)
print('vm.hardware.Boot.get({}) -> {}'.format(vm, pp(boot_info)))
@@ -119,8 +117,8 @@ def cleanup():
retry_delay=orig_boot_info.retry_delay,
enter_setup_mode=orig_boot_info.enter_setup_mode)
print('vm.hardware.Boot.update({}, {})'.format(vm, update_spec))
- boot_svc.update(vm, update_spec)
- boot_info = boot_svc.get(vm)
+ client.vcenter.vm.hardware.Boot.update(vm, update_spec)
+ boot_info = client.vcenter.vm.hardware.Boot.get(vm)
print('vm.hardware.Boot.get({}) -> {}'.format(vm, pp(boot_info)))
if boot_info != orig_boot_info:
diff --git a/samples/vsphere/vcenter/vm/hardware/boot_device.py b/samples/vsphere/vcenter/vm/hardware/boot_device.py
index 987daec2..9e25ccb0 100644
--- a/samples/vsphere/vcenter/vm/hardware/boot_device.py
+++ b/samples/vsphere/vcenter/vm/hardware/boot_device.py
@@ -2,7 +2,7 @@
"""
* *******************************************************
-* Copyright (c) VMware, Inc. 2016. All Rights Reserved.
+* Copyright (c) VMware, Inc. 2016-2018. All Rights Reserved.
* SPDX-License-Identifier: MIT
* *******************************************************
*
@@ -14,18 +14,16 @@
"""
__author__ = 'VMware, Inc.'
-__copyright__ = 'Copyright 2016 VMware, Inc. All rights reserved.'
__vcenter_version__ = '6.5+'
-import atexit
+from vmware.vapi.vsphere.client import create_vsphere_client
from com.vmware.vcenter.vm.hardware.boot_client import Device as BootDevice
-from com.vmware.vcenter.vm.hardware_client import (Disk, Ethernet)
-from samples.vsphere.common import vapiconnect
from samples.vsphere.common.sample_util import parse_cli_args_vm
from samples.vsphere.common.sample_util import pp
from samples.vsphere.vcenter.setup import testbed
from samples.vsphere.vcenter.helper.vm_helper import get_vm
+from samples.vsphere.common.ssl_helper import get_unverified_session
"""
Demonstrates how to modify the boot devices used by a virtual machine, and in
@@ -41,43 +39,39 @@ The sample needs an existing VM with the following configuration:
vm = None
vm_name = None
-stub_config = None
-boot_device_svc = None
+client = None
cleardata = False
orig_boot_device_entries = None
def setup(context=None):
- global vm, vm_name, stub_config, cleardata
+ global vm, vm_name, client, cleardata
if context:
# Run sample suite via setup script
- stub_config = context.stub_config
+ client = context.client
vm_name = testbed.config['VM_NAME_EXHAUSTIVE']
else:
# Run sample in standalone mode
server, username, password, cleardata, skip_verification, vm_name = \
parse_cli_args_vm(testbed.config['VM_NAME_EXHAUSTIVE'])
- stub_config = vapiconnect.connect(server,
- username,
- password,
- skip_verification)
- atexit.register(vapiconnect.logout, stub_config)
+ session = get_unverified_session() if skip_verification else None
+ # Connect to vSphere client
+ client = create_vsphere_client(server=server,
+ username=username,
+ password=password,
+ session=session)
def run():
global vm
- vm = get_vm(stub_config, vm_name)
+ vm = get_vm(client, vm_name)
if not vm:
raise Exception('Sample requires an existing vm with name ({}). '
'Please create the vm first.'.format(vm_name))
print("Using VM '{}' ({}) for BootDevice Sample".format(vm_name, vm))
- # Create BootDevice stub used for making requests
- global boot_device_svc
- boot_device_svc = BootDevice(stub_config)
-
print('\n# Example: Get current BootDevice configuration')
- boot_device_entries = boot_device_svc.get(vm)
+ boot_device_entries = client.vcenter.vm.hardware.boot.Device.get(vm)
print('vm.hardware.boot.Device.get({}) -> {}'.
format(vm, pp(boot_device_entries)))
@@ -86,14 +80,12 @@ def run():
orig_boot_device_entries = boot_device_entries
# Get device identifiers for Disks
- disk_svc = Disk(stub_config)
- disk_summaries = disk_svc.list(vm)
+ disk_summaries = client.vcenter.vm.hardware.Disk.list(vm)
print('vm.hardware.Disk.list({}) -> {}'.format(vm, pp(disk_summaries)))
disks = [disk_summary.disk for disk_summary in disk_summaries]
# Get device identifiers for Ethernet nics
- ethernet_svc = Ethernet(stub_config)
- nic_summaries = ethernet_svc.list(vm)
+ nic_summaries = client.vcenter.vm.hardware.Ethernet.list(vm)
print('vm.hardware.Ethernet.list({}) -> {}'.format(vm, pp(nic_summaries)))
nics = [nic_summary.nic for nic_summary in nic_summaries]
@@ -108,8 +100,8 @@ def run():
boot_device_entries.append(
BootDevice.Entry(BootDevice.Type.ETHERNET, nic=nic))
print('vm.hardware.boot.Device.set({}, {})'.format(vm, boot_device_entries))
- boot_device_svc.set(vm, boot_device_entries)
- boot_device_entries = boot_device_svc.get(vm)
+ client.vcenter.vm.hardware.boot.Device.set(vm, boot_device_entries)
+ boot_device_entries = client.vcenter.vm.hardware.boot.Device.get(vm)
print('vm.hardware.boot.Device.get({}) -> {}'.
format(vm, pp(boot_device_entries)))
@@ -118,8 +110,8 @@ def cleanup():
print('\n# Cleanup: Revert BootDevice configuration')
boot_device_entries = orig_boot_device_entries
print('vm.hardware.boot.Device.set({}, {})'.format(vm, boot_device_entries))
- boot_device_svc.set(vm, boot_device_entries)
- boot_device_entries = boot_device_svc.get(vm)
+ client.vcenter.vm.hardware.boot.Device.set(vm, boot_device_entries)
+ boot_device_entries = client.vcenter.vm.hardware.boot.Device.get(vm)
print('vm.hardware.boot.Device.get({}) -> {}'.
format(vm, pp(boot_device_entries)))
diff --git a/samples/vsphere/vcenter/vm/hardware/cdrom.py b/samples/vsphere/vcenter/vm/hardware/cdrom.py
index 416ad34d..45b7677d 100644
--- a/samples/vsphere/vcenter/vm/hardware/cdrom.py
+++ b/samples/vsphere/vcenter/vm/hardware/cdrom.py
@@ -2,7 +2,7 @@
"""
* *******************************************************
-* Copyright (c) VMware, Inc. 2016. All Rights Reserved.
+* Copyright (c) VMware, Inc. 2016-2018. All Rights Reserved.
* SPDX-License-Identifier: MIT
* *******************************************************
*
@@ -14,22 +14,20 @@
"""
__author__ = 'VMware, Inc.'
-__copyright__ = 'Copyright 2016 VMware, Inc. All rights reserved.'
__vcenter_version__ = '6.5+'
-import atexit
+from vmware.vapi.vsphere.client import create_vsphere_client
from com.vmware.vcenter.vm.hardware.adapter_client import Sata
from com.vmware.vcenter.vm.hardware_client import (Cdrom,
IdeAddressSpec,
SataAddressSpec)
-from com.vmware.vcenter.vm_client import Power
-from samples.vsphere.common import vapiconnect
from samples.vsphere.common.sample_util import parse_cli_args_vm
from samples.vsphere.common.sample_util import pp
from samples.vsphere.vcenter.setup import testbed
from samples.vsphere.vcenter.helper.vm_helper import get_vm
+from samples.vsphere.common.ssl_helper import get_unverified_session
"""
Demonstrates how to configure CD-ROM devices for a VM.
@@ -41,58 +39,50 @@ The sample needs an existing VM.
vm = None
vm_name = None
sata = None
-stub_config = None
-cdrom_svc = None
-vm_power_svc = None
-sata_svc = None
+client = None
cleardata = False
cdroms_to_delete = []
orig_cdrom_summaries = None
def setup(context=None):
- global vm, vm_name, stub_config, cleardata
+ global vm, vm_name, client, cleardata
if context:
# Run sample suite via setup script
- stub_config = context.stub_config
+ client = context.client
vm_name = testbed.config['VM_NAME_DEFAULT']
else:
# Run sample in standalone mode
server, username, password, cleardata, skip_verification, vm_name = \
parse_cli_args_vm(testbed.config['VM_NAME_DEFAULT'])
- stub_config = vapiconnect.connect(server,
- username,
- password,
- skip_verification)
- atexit.register(vapiconnect.logout, stub_config)
+ session = get_unverified_session() if skip_verification else None
+ # Connect to vSphere client
+ client = create_vsphere_client(server=server,
+ username=username,
+ password=password,
+ session=session)
def run():
global vm
- vm = get_vm(stub_config, vm_name)
+ vm = get_vm(client, vm_name)
if not vm:
raise Exception('Sample requires an existing vm with name ({}). '
'Please create the vm first.'.format(vm_name))
print("Using VM '{}' ({}) for CD-ROM Sample".format(vm_name, vm))
iso_datastore_path = testbed.config['ISO_DATASTORE_PATH']
- # Create CD-ROM stub used for making requests
- global cdrom_svc, vm_power_svc, sata_svc
- cdrom_svc = Cdrom(stub_config)
- vm_power_svc = Power(stub_config)
-
# Create SATA controller
print('\n# Setup: Create a SATA controller')
- sata_svc = Sata(stub_config)
sata_create_spec = Sata.CreateSpec()
print('# Adding SATA controller for SATA Disk samples')
global sata
- sata = sata_svc.create(vm, sata_create_spec)
+ sata = client.vcenter.vm.hardware.adapter.Sata.create(vm, sata_create_spec)
print('vm.hardware.adapter.Sata.create({}, {}) -> {}'.
format(vm, sata_create_spec, sata))
print('\n# Example: List all Cdroms for a VM')
- cdrom_summaries = cdrom_svc.list(vm=vm)
+ cdrom_summaries = client.vcenter.vm.hardware.Cdrom.list(vm=vm)
print('vm.hardware.Cdrom.list({}) -> {}'.format(vm, cdrom_summaries))
# Save current list of Cdroms to verify that we have cleaned up properly
@@ -102,7 +92,7 @@ def run():
# Get information for each CD-ROM on the VM
for cdrom_summary in cdrom_summaries:
cdrom = cdrom_summary.cdrom
- cdrom_info = cdrom_svc.get(vm=vm, cdrom=cdrom)
+ cdrom_info = client.vcenter.vm.hardware.Cdrom.get(vm=vm, cdrom=cdrom)
print('vm.hardware.Cdrom.get({}, {}) -> {}'.
format(vm, cdrom, pp(cdrom_info)))
@@ -113,31 +103,31 @@ def run():
start_connected=True,
backing=Cdrom.BackingSpec(type=Cdrom.BackingType.ISO_FILE,
iso_file=iso_datastore_path))
- cdrom = cdrom_svc.create(vm, cdrom_create_spec)
+ cdrom = client.vcenter.vm.hardware.Cdrom.create(vm, cdrom_create_spec)
cdroms_to_delete.append(cdrom)
- cdrom_info = cdrom_svc.get(vm, cdrom)
+ cdrom_info = client.vcenter.vm.hardware.Cdrom.get(vm, cdrom)
print('vm.hardware.Cdrom.get({}, {}) -> {}'.
format(vm, cdrom, pp(cdrom_info)))
print('\n# Example: Create CD-ROM with CLIENT_DEVICE backing')
cdrom_create_spec = Cdrom.CreateSpec(
backing=Cdrom.BackingSpec(type=Cdrom.BackingType.CLIENT_DEVICE))
- cdrom = cdrom_svc.create(vm, cdrom_create_spec)
+ cdrom = client.vcenter.vm.hardware.Cdrom.create(vm, cdrom_create_spec)
print('vm.hardware.Cdrom.create({}, {}) -> {}'.
format(vm, cdrom_create_spec, cdrom))
cdroms_to_delete.append(cdrom)
- cdrom_info = cdrom_svc.get(vm, cdrom)
+ cdrom_info = client.vcenter.vm.hardware.Cdrom.get(vm, cdrom)
print('vm.hardware.Cdrom.get({}, {}) -> {}'.
format(vm, cdrom, pp(cdrom_info)))
print('\n# Example: Create CD-ROM using auto-detect HOST_DEVICE backing')
cdrom_create_spec = Cdrom.CreateSpec(
backing=Cdrom.BackingSpec(type=Cdrom.BackingType.HOST_DEVICE))
- cdrom = cdrom_svc.create(vm, cdrom_create_spec)
+ cdrom = client.vcenter.vm.hardware.Cdrom.create(vm, cdrom_create_spec)
print('vm.hardware.Cdrom.create({}, {}) -> {}'.
format(vm, cdrom_create_spec, cdrom))
cdroms_to_delete.append(cdrom)
- cdrom_info = cdrom_svc.get(vm, cdrom)
+ cdrom_info = client.vcenter.vm.hardware.Cdrom.get(vm, cdrom)
print('vm.hardware.Cdrom.get({}, {}) -> {}'.
format(vm, cdrom, pp(cdrom_info)))
@@ -145,11 +135,11 @@ def run():
cdrom_create_spec = Cdrom.CreateSpec(
type=Cdrom.HostBusAdapterType.SATA,
backing=Cdrom.BackingSpec(type=Cdrom.BackingType.CLIENT_DEVICE))
- cdrom = cdrom_svc.create(vm, cdrom_create_spec)
+ cdrom = client.vcenter.vm.hardware.Cdrom.create(vm, cdrom_create_spec)
print('vm.hardware.Cdrom.create({}, {}) -> {}'.
format(vm, cdrom_create_spec, cdrom))
cdroms_to_delete.append(cdrom)
- cdrom_info = cdrom_svc.get(vm, cdrom)
+ cdrom_info = client.vcenter.vm.hardware.Cdrom.get(vm, cdrom)
print('vm.hardware.Cdrom.get({}, {}) -> {}'.
format(vm, cdrom, pp(cdrom_info)))
@@ -159,11 +149,11 @@ def run():
type=Cdrom.HostBusAdapterType.SATA,
sata=SataAddressSpec(bus=0),
backing=Cdrom.BackingSpec(type=Cdrom.BackingType.CLIENT_DEVICE))
- cdrom = cdrom_svc.create(vm, cdrom_create_spec)
+ cdrom = client.vcenter.vm.hardware.Cdrom.create(vm, cdrom_create_spec)
print('vm.hardware.Cdrom.create({}, {}) -> {}'.
format(vm, cdrom_create_spec, cdrom))
cdroms_to_delete.append(cdrom)
- cdrom_info = cdrom_svc.get(vm, cdrom)
+ cdrom_info = client.vcenter.vm.hardware.Cdrom.get(vm, cdrom)
print('vm.hardware.Cdrom.get({}, {}) -> {}'.
format(vm, cdrom, pp(cdrom_info)))
@@ -173,11 +163,11 @@ def run():
type=Cdrom.HostBusAdapterType.SATA,
sata=SataAddressSpec(bus=0, unit=10),
backing=Cdrom.BackingSpec(type=Cdrom.BackingType.CLIENT_DEVICE))
- cdrom = cdrom_svc.create(vm, cdrom_create_spec)
+ cdrom = client.vcenter.vm.hardware.Cdrom.create(vm, cdrom_create_spec)
print('vm.hardware.Cdrom.create({}, {}) -> {}'.
format(vm, cdrom_create_spec, cdrom))
cdroms_to_delete.append(cdrom)
- cdrom_info = cdrom_svc.get(vm, cdrom)
+ cdrom_info = client.vcenter.vm.hardware.Cdrom.get(vm, cdrom)
print('vm.hardware.Cdrom.get({}, {}) -> {}'.
format(vm, cdrom, pp(cdrom_info)))
@@ -185,11 +175,11 @@ def run():
cdrom_create_spec = Cdrom.CreateSpec(
type=Cdrom.HostBusAdapterType.IDE,
backing=Cdrom.BackingSpec(type=Cdrom.BackingType.CLIENT_DEVICE))
- cdrom = cdrom_svc.create(vm, cdrom_create_spec)
+ cdrom = client.vcenter.vm.hardware.Cdrom.create(vm, cdrom_create_spec)
print('vm.hardware.Cdrom.create({}, {}) -> {}'.
format(vm, cdrom_create_spec, cdrom))
cdroms_to_delete.append(cdrom)
- cdrom_info = cdrom_svc.get(vm, cdrom)
+ cdrom_info = client.vcenter.vm.hardware.Cdrom.get(vm, cdrom)
print('vm.hardware.Cdrom.get({}, {}) -> {}'.
format(vm, cdrom, pp(cdrom_info)))
@@ -199,11 +189,11 @@ def run():
type=Cdrom.HostBusAdapterType.IDE,
ide=IdeAddressSpec(False, True),
backing=Cdrom.BackingSpec(type=Cdrom.BackingType.CLIENT_DEVICE))
- cdrom = cdrom_svc.create(vm, cdrom_create_spec)
+ cdrom = client.vcenter.vm.hardware.Cdrom.create(vm, cdrom_create_spec)
print('vm.hardware.Cdrom.create({}, {}) -> {}'.
format(vm, cdrom_create_spec, cdrom))
cdroms_to_delete.append(cdrom)
- cdrom_info = cdrom_svc.get(vm, cdrom)
+ cdrom_info = client.vcenter.vm.hardware.Cdrom.get(vm, cdrom)
print('vm.hardware.Cdrom.get({}, {}) -> {}'.
format(vm, cdrom, pp(cdrom_info)))
@@ -215,8 +205,8 @@ def run():
iso_file=iso_datastore_path))
print('vm.hardware.Cdrom.update({}, {}, {})'.
format(vm, cdrom, cdrom_update_spec))
- cdrom_svc.update(vm, cdrom, cdrom_update_spec)
- cdrom_info = cdrom_svc.get(vm, cdrom)
+ client.vcenter.vm.hardware.Cdrom.update(vm, cdrom, cdrom_update_spec)
+ cdrom_info = client.vcenter.vm.hardware.Cdrom.get(vm, cdrom)
print('vm.hardware.Cdrom.get({}, {}) -> {}'.
format(vm, cdrom, pp(cdrom_info)))
@@ -226,55 +216,55 @@ def run():
start_connected=False, allow_guest_control=False)
print('vm.hardware.Cdrom.update({}, {}, {})'.
format(vm, cdrom, cdrom_update_spec))
- cdrom_svc.update(vm, cdrom, cdrom_update_spec)
- cdrom_info = cdrom_svc.get(vm, cdrom)
+ client.vcenter.vm.hardware.Cdrom.update(vm, cdrom, cdrom_update_spec)
+ cdrom_info = client.vcenter.vm.hardware.Cdrom.get(vm, cdrom)
print('vm.hardware.Cdrom.get({}, {}) -> {}'.
format(vm, cdrom, pp(cdrom_info)))
print('\n# Starting VM to run connect/disconnect sample')
print('vm.Power.start({})'.format(vm))
- vm_power_svc.start(vm)
- cdrom_info = cdrom_svc.get(vm, cdrom)
+ client.vcenter.vm.Power.start(vm)
+ cdrom_info = client.vcenter.vm.hardware.Cdrom.get(vm, cdrom)
print('vm.hardware.Cdrom.get({}, {}) -> {}'.
format(vm, cdrom, pp(cdrom_info)))
print('\n# Example: Connect CD-ROM after powering on VM')
- cdrom_svc.connect(vm, cdrom)
+ client.vcenter.vm.hardware.Cdrom.connect(vm, cdrom)
print('vm.hardware.Cdrom.connect({}, {})'.format(vm, cdrom))
- cdrom_info = cdrom_svc.get(vm, cdrom)
+ cdrom_info = client.vcenter.vm.hardware.Cdrom.get(vm, cdrom)
print('vm.hardware.Cdrom.get({}, {}) -> {}'.
format(vm, cdrom, pp(cdrom_info)))
print('\n# Example: Disconnect CD-ROM while VM is powered on')
- cdrom_svc.disconnect(vm, cdrom)
+ client.vcenter.vm.hardware.Cdrom.disconnect(vm, cdrom)
print('vm.hardware.Cdrom.disconnect({}, {})'.format(vm, cdrom))
- cdrom_info = cdrom_svc.get(vm, cdrom)
+ cdrom_info = client.vcenter.vm.hardware.Cdrom.get(vm, cdrom)
print('vm.hardware.Cdrom.get({}, {}) -> {}'.
format(vm, cdrom, pp(cdrom_info)))
print('\n# Stopping VM after connect/disconnect sample')
print('vm.Power.start({})'.format(vm))
- vm_power_svc.stop(vm)
- cdrom_info = cdrom_svc.get(vm, cdrom)
+ client.vcenter.vm.Power.stop(vm)
+ cdrom_info = client.vcenter.vm.hardware.Cdrom.get(vm, cdrom)
print('vm.hardware.Cdrom.get({}, {}) -> {}'.
format(vm, cdrom, pp(cdrom_info)))
# List all Cdroms for a VM
- cdrom_summaries = cdrom_svc.list(vm=vm)
+ cdrom_summaries = client.vcenter.vm.hardware.Cdrom.list(vm=vm)
print('vm.hardware.Cdrom.list({}) -> {}'.format(vm, cdrom_summaries))
def cleanup():
print('\n# Cleanup: Delete VM Cdroms that were added')
for cdrom in cdroms_to_delete:
- cdrom_svc.delete(vm, cdrom)
+ client.vcenter.vm.hardware.Cdrom.delete(vm, cdrom)
print('vm.hardware.Cdrom.delete({}, {})'.format(vm, cdrom))
print('\n# Cleanup: Remove SATA controller')
print('vm.hardware.adapter.Sata.delete({}, {})'.format(vm, sata))
- sata_svc.delete(vm, sata)
+ client.vcenter.vm.hardware.adapter.Sata.delete(vm, sata)
- cdrom_summaries = cdrom_svc.list(vm)
+ cdrom_summaries = client.vcenter.vm.hardware.Cdrom.list(vm)
print('vm.hardware.Cdrom.list({}) -> {}'.format(vm, cdrom_summaries))
if set(orig_cdrom_summaries) != set(cdrom_summaries):
print('vm.hardware.Cdrom WARNING: '
diff --git a/samples/vsphere/vcenter/vm/hardware/cpu.py b/samples/vsphere/vcenter/vm/hardware/cpu.py
index 655c6f77..0b2254d9 100644
--- a/samples/vsphere/vcenter/vm/hardware/cpu.py
+++ b/samples/vsphere/vcenter/vm/hardware/cpu.py
@@ -2,7 +2,7 @@
"""
* *******************************************************
-* Copyright (c) VMware, Inc. 2016. All Rights Reserved.
+* Copyright (c) VMware, Inc. 2016-2018. All Rights Reserved.
* SPDX-License-Identifier: MIT
* *******************************************************
*
@@ -14,18 +14,17 @@
"""
__author__ = 'VMware, Inc.'
-__copyright__ = 'Copyright 2016 VMware, Inc. All rights reserved.'
__vcenter_version__ = '6.5+'
-import atexit
+from vmware.vapi.vsphere.client import create_vsphere_client
from com.vmware.vcenter.vm.hardware_client import Cpu
-from samples.vsphere.common import vapiconnect
from samples.vsphere.common.sample_util import parse_cli_args_vm
from samples.vsphere.common.sample_util import pp
from samples.vsphere.vcenter.setup import testbed
from samples.vsphere.vcenter.helper.vm_helper import get_vm
+from samples.vsphere.common.ssl_helper import get_unverified_session
"""
Demonstrates how to configure CPU settings for a VM.
@@ -36,43 +35,39 @@ The sample needs an existing VM.
vm = None
vm_name = None
-stub_config = None
-cpu_svc = None
+client = None
cleardata = False
orig_cpu_info = None
def setup(context=None):
- global vm, vm_name, stub_config, cleardata
+ global vm, vm_name, client, cleardata
if context:
# Run sample suite via setup script
- stub_config = context.stub_config
+ client = context.client
vm_name = testbed.config['VM_NAME_DEFAULT']
else:
# Run sample in standalone mode
server, username, password, cleardata, skip_verification, vm_name = \
parse_cli_args_vm(testbed.config['VM_NAME_DEFAULT'])
- stub_config = vapiconnect.connect(server,
- username,
- password,
- skip_verification)
- atexit.register(vapiconnect.logout, stub_config)
+ session = get_unverified_session() if skip_verification else None
+ # Connect to vSphere client
+ client = create_vsphere_client(server=server,
+ username=username,
+ password=password,
+ session=session)
def run():
global vm
- vm = get_vm(stub_config, vm_name)
+ vm = get_vm(client, vm_name)
if not vm:
raise Exception('Sample requires an existing vm with name ({}). '
'Please create the vm first.'.format(vm_name))
print("Using VM '{}' ({}) for Cpu Sample".format(vm_name, vm))
- # Create Cpu stub used for making requests
- global cpu_svc
- cpu_svc = Cpu(stub_config)
-
print('\n# Example: Get current Cpu configuration')
- cpu_info = cpu_svc.get(vm)
+ cpu_info = client.vcenter.vm.hardware.Cpu.get(vm)
print('vm.hardware.Cpu.get({}) -> {}'.format(vm, pp(cpu_info)))
# Save current Cpu info to verify that we have cleaned up properly
@@ -82,19 +77,19 @@ def run():
print('\n# Example: Update cpu field of Cpu configuration')
update_spec = Cpu.UpdateSpec(count=2)
print('vm.hardware.Cpu.update({}, {})'.format(vm, update_spec))
- cpu_svc.update(vm, update_spec)
+ client.vcenter.vm.hardware.Cpu.update(vm, update_spec)
# Get new Cpu configuration
- cpu_info = cpu_svc.get(vm)
+ cpu_info = client.vcenter.vm.hardware.Cpu.get(vm)
print('vm.hardware.Cpu.get({}) -> {}'.format(vm, pp(cpu_info)))
print('\n# Example: Update other less likely used fields of Cpu configuration')
update_spec = Cpu.UpdateSpec(cores_per_socket=2, hot_add_enabled=True)
print('vm.hardware.Cpu.update({}, {})'.format(vm, update_spec))
- cpu_svc.update(vm, update_spec)
+ client.vcenter.vm.hardware.Cpu.update(vm, update_spec)
# Get new Cpu configuration
- cpu_info = cpu_svc.get(vm)
+ cpu_info = client.vcenter.vm.hardware.Cpu.get(vm)
print('vm.hardware.Cpu.get({}) -> {}'.format(vm, pp(cpu_info)))
@@ -106,10 +101,10 @@ def cleanup():
hot_add_enabled=orig_cpu_info.hot_add_enabled,
hot_remove_enabled=orig_cpu_info.hot_remove_enabled)
print('vm.hardware.Cpu.update({}, {})'.format(vm, update_spec))
- cpu_svc.update(vm, update_spec)
+ client.vcenter.vm.hardware.Cpu.update(vm, update_spec)
# Get final Cpu configuration
- cpu_info = cpu_svc.get(vm)
+ cpu_info = client.vcenter.vm.hardware.Cpu.get(vm)
print('vm.hardware.Cpu.get({}) -> {}'.format(vm, pp(cpu_info)))
if cpu_info != orig_cpu_info:
diff --git a/samples/vsphere/vcenter/vm/hardware/disk.py b/samples/vsphere/vcenter/vm/hardware/disk.py
index c07fdd73..43a865fb 100644
--- a/samples/vsphere/vcenter/vm/hardware/disk.py
+++ b/samples/vsphere/vcenter/vm/hardware/disk.py
@@ -2,7 +2,7 @@
"""
* *******************************************************
-* Copyright (c) VMware, Inc. 2016. All Rights Reserved.
+* Copyright (c) VMware, Inc. 2016-2018. All Rights Reserved.
* SPDX-License-Identifier: MIT
* *******************************************************
*
@@ -14,10 +14,10 @@
"""
__author__ = 'VMware, Inc.'
-__copyright__ = 'Copyright 2016 VMware, Inc. All rights reserved.'
__vcenter_version__ = '6.5+'
import atexit
+from vmware.vapi.vsphere.client import create_vsphere_client
from com.vmware.vcenter.vm.hardware.adapter_client import Sata
from com.vmware.vcenter.vm.hardware_client import Disk
@@ -27,7 +27,6 @@ from com.vmware.vcenter.vm.hardware_client import (IdeAddressSpec,
from pyVim.connect import SmartConnect, Disconnect
from samples.vsphere.common.vim.vmdk import (create_vmdk, delete_vmdk, detect_vmdk)
-from samples.vsphere.common import vapiconnect
from samples.vsphere.common.sample_util import parse_cli_args_vm
from samples.vsphere.common.sample_util import pp
from samples.vsphere.common.ssl_helper import get_unverified_context
@@ -35,6 +34,7 @@ from samples.vsphere.common.vim.inventory import \
(get_datacenter_for_datastore, get_datastore_mo)
from samples.vsphere.vcenter.helper.vm_helper import get_vm
from samples.vsphere.vcenter.setup import testbed
+from samples.vsphere.common.ssl_helper import get_unverified_session
"""
Demonstrates how to configure disk settings for a VM.
@@ -44,11 +44,9 @@ The sample needs an existing VM.
"""
vm = None
-stub_config = None
+client = None
soap_stub = None
service_instance = None
-sata_svc = None
-disk_svc = None
cleardata = False
saved_disk_info = None
datacenter_mo = None
@@ -57,23 +55,24 @@ orig_disk_summaries = None
def setup(context=None):
- global stub_config, service_instance, cleardata
+ global client, service_instance, cleardata
if context:
# Run sample suite via setup script
vm_name = testbed.config['VM_NAME_DEFAULT']
- stub_config = context.stub_config
+ client = context.client
service_instance = context.service_instance
else:
# Run sample in standalone mode
server, username, password, cleardata, skip_verification, vm_name = \
parse_cli_args_vm(testbed.config['VM_NAME_DEFAULT'])
- # Connect to vAPI Endpoint on vCenter system
- stub_config = vapiconnect.connect(server,
- username,
- password,
- skip_verification)
- atexit.register(vapiconnect.logout, stub_config)
+ session = get_unverified_session() if skip_verification else None
+
+ # Connect to vSphere client
+ client = create_vsphere_client(server=server,
+ username=username,
+ password=password,
+ session=session)
# Connect to VIM API Endpoint on vCenter system
context = None
@@ -87,7 +86,7 @@ def setup(context=None):
global vm, datacenter_name, datastore_name
global datastore_mo, datacenter_mo, datastore_root_path
- vm = get_vm(stub_config, vm_name)
+ vm = get_vm(client, vm_name)
if not vm:
raise Exception('Sample requires an existing vm with name ({}). '
'Please create the vm first.'.format(vm_name))
@@ -97,7 +96,7 @@ def setup(context=None):
# delete VMDKs, which are backings for a VM Disk.
datacenter_name = testbed.config['VM_DATACENTER_NAME']
datastore_name = testbed.config['VM_DATASTORE_NAME']
- datastore_mo = get_datastore_mo(stub_config,
+ datastore_mo = get_datastore_mo(client,
service_instance._stub,
datacenter_name,
datastore_name)
@@ -111,12 +110,8 @@ def setup(context=None):
def run():
GiB = 1024 * 1024 * 1024
- # Create Disk stub used for making requests
- global disk_svc
- disk_svc = Disk(stub_config)
-
print('\n# Example: List all Disks for a VM')
- disk_summaries = disk_svc.list(vm=vm)
+ disk_summaries = client.vcenter.vm.hardware.Disk.list(vm=vm)
print('vm.hardware.Disk.list({}) -> {}'.format(vm, disk_summaries))
# Save current list of disks to verify that we have cleaned up properly
@@ -126,18 +121,18 @@ def run():
# Get information for each Disk on the VM
for disk_summary in disk_summaries:
disk = disk_summary.disk
- disk_info = disk_svc.get(vm=vm, disk=disk)
+ disk_info = client.vcenter.vm.hardware.Disk.get(vm=vm, disk=disk)
print('vm.hardware.Disk.get({}, {}) -> {}'.
format(vm, disk, pp(disk_info)))
print('\n# Example: Create a new Disk using default settings')
disk_create_spec = Disk.CreateSpec(new_vmdk=Disk.VmdkCreateSpec())
- disk = disk_svc.create(vm=vm, spec=disk_create_spec)
+ disk = client.vcenter.vm.hardware.Disk.create(vm=vm, spec=disk_create_spec)
print('vm.hardware.Disk.create({}, {}) -> {}'.
format(vm, disk_create_spec, disk))
global disks_to_delete
disks_to_delete.append(disk)
- disk_info = disk_svc.get(vm, disk)
+ disk_info = client.vcenter.vm.hardware.Disk.get(vm, disk)
print('vm.hardware.Disk.get({}, {}) -> {}'.
format(vm, disk, pp(disk_info)))
@@ -145,22 +140,22 @@ def run():
'# and that the flat format (ie. SeSparse format) should be used.')
disk_create_spec = Disk.CreateSpec(
new_vmdk=Disk.VmdkCreateSpec(capacity=10 * GiB))
- disk = disk_svc.create(vm=vm, spec=disk_create_spec)
+ disk = client.vcenter.vm.hardware.Disk.create(vm=vm, spec=disk_create_spec)
print('vm.hardware.Disk.create({}, {}) -> {}'.
format(vm, disk_create_spec, disk))
disks_to_delete.append(disk)
- disk_info = disk_svc.get(vm, disk)
+ disk_info = client.vcenter.vm.hardware.Disk.get(vm, disk)
print('vm.hardware.Disk.get({}, {}) -> {}'.format(vm, disk, pp(disk_info)))
print('\n# Example: Create a new SCSI Disk')
disk_create_spec = Disk.CreateSpec(
type=Disk.HostBusAdapterType.SCSI,
new_vmdk=Disk.VmdkCreateSpec(capacity=10 * GiB))
- disk = disk_svc.create(vm=vm, spec=disk_create_spec)
+ disk = client.vcenter.vm.hardware.Disk.create(vm=vm, spec=disk_create_spec)
print('vm.hardware.Disk.create({}, {}) -> {}'.
format(vm, disk_create_spec, disk))
disks_to_delete.append(disk)
- disk_info = disk_svc.get(vm, disk)
+ disk_info = client.vcenter.vm.hardware.Disk.get(vm, disk)
print('vm.hardware.Disk.get({}, {}) -> {}'.
format(vm, disk, pp(disk_info)))
@@ -169,11 +164,11 @@ def run():
type=Disk.HostBusAdapterType.SCSI,
scsi=ScsiAddressSpec(bus=0),
new_vmdk=Disk.VmdkCreateSpec(capacity=10 * GiB))
- disk = disk_svc.create(vm=vm, spec=disk_create_spec)
+ disk = client.vcenter.vm.hardware.Disk.create(vm=vm, spec=disk_create_spec)
print('vm.hardware.Disk.create({}, {}) -> {}'.
format(vm, disk_create_spec, disk))
disks_to_delete.append(disk)
- disk_info = disk_svc.get(vm, disk)
+ disk_info = client.vcenter.vm.hardware.Disk.get(vm, disk)
print('vm.hardware.Disk.get({}, {}) -> {}'.format(vm, disk, pp(disk_info)))
print(
@@ -182,20 +177,18 @@ def run():
type=Disk.HostBusAdapterType.SCSI,
scsi=ScsiAddressSpec(bus=0, unit=10),
new_vmdk=Disk.VmdkCreateSpec(capacity=10 * GiB))
- disk = disk_svc.create(vm=vm, spec=disk_create_spec)
+ disk = client.vcenter.vm.hardware.Disk.create(vm=vm, spec=disk_create_spec)
print('vm.hardware.Disk.create({}, {}) -> {}'.
format(vm, disk_create_spec, disk))
disks_to_delete.append(disk)
- disk_info = disk_svc.get(vm, disk)
+ disk_info = client.vcenter.vm.hardware.Disk.get(vm, disk)
print('vm.hardware.Disk.get({}, {}) -> {}'.format(vm, disk, pp(disk_info)))
print('\n# Example: Create a SATA controller')
- global sata_svc
- sata_svc = Sata(stub_config)
sata_create_spec = Sata.CreateSpec()
print('# Adding SATA controller for SATA Disk')
global sata
- sata = sata_svc.create(vm, sata_create_spec)
+ sata = client.vcenter.vm.hardware.adapter.Sata.create(vm, sata_create_spec)
print('vm.hardware.adapter.Sata.create({}, {}) -> {}'.
format(vm, sata_create_spec, sata))
@@ -203,11 +196,11 @@ def run():
disk_create_spec = Disk.CreateSpec(
type=Disk.HostBusAdapterType.SATA,
new_vmdk=Disk.VmdkCreateSpec(capacity=10 * GiB))
- disk = disk_svc.create(vm=vm, spec=disk_create_spec)
+ disk = client.vcenter.vm.hardware.Disk.create(vm=vm, spec=disk_create_spec)
print('vm.hardware.Disk.create({}, {}) -> {}'.
format(vm, disk_create_spec, disk))
disks_to_delete.append(disk)
- disk_info = disk_svc.get(vm, disk)
+ disk_info = client.vcenter.vm.hardware.Disk.get(vm, disk)
print('vm.hardware.Disk.get({}, {}) -> {}'.format(vm, disk, pp(disk_info)))
print('\n# Example: Create a new SATA disk on a specific bus')
@@ -215,11 +208,11 @@ def run():
type=Disk.HostBusAdapterType.SATA,
sata=SataAddressSpec(bus=0),
new_vmdk=Disk.VmdkCreateSpec(capacity=10 * GiB))
- disk = disk_svc.create(vm=vm, spec=disk_create_spec)
+ disk = client.vcenter.vm.hardware.Disk.create(vm=vm, spec=disk_create_spec)
print('vm.hardware.Disk.create({}, {}) -> {}'.
format(vm, disk_create_spec, disk))
disks_to_delete.append(disk)
- disk_info = disk_svc.get(vm, disk)
+ disk_info = client.vcenter.vm.hardware.Disk.get(vm, disk)
print('vm.hardware.Disk.get({}, {}) -> {}'.format(vm, disk, pp(disk_info)))
print('\n# Example: Create a new SATA disk on a specific bus and specific '
@@ -228,11 +221,11 @@ def run():
type=Disk.HostBusAdapterType.SATA,
sata=SataAddressSpec(bus=0, unit=20),
new_vmdk=Disk.VmdkCreateSpec(capacity=10 * GiB))
- disk = disk_svc.create(vm=vm, spec=disk_create_spec)
+ disk = client.vcenter.vm.hardware.Disk.create(vm=vm, spec=disk_create_spec)
print('vm.hardware.Disk.create({}, {}) -> {}'.
format(vm, disk_create_spec, disk))
disks_to_delete.append(disk)
- disk_info = disk_svc.get(vm, disk)
+ disk_info = client.vcenter.vm.hardware.Disk.get(vm, disk)
print('vm.hardware.Disk.get({}, {}) -> {}'.
format(vm, disk, pp(disk_info)))
@@ -240,11 +233,11 @@ def run():
disk_create_spec = Disk.CreateSpec(
type=Disk.HostBusAdapterType.IDE,
new_vmdk=Disk.VmdkCreateSpec(capacity=10 * GiB))
- disk = disk_svc.create(vm=vm, spec=disk_create_spec)
+ disk = client.vcenter.vm.hardware.Disk.create(vm=vm, spec=disk_create_spec)
print('vm.hardware.Disk.create({}, {}) -> {}'.
format(vm, disk_create_spec, disk))
disks_to_delete.append(disk)
- disk_info = disk_svc.get(vm, disk)
+ disk_info = client.vcenter.vm.hardware.Disk.get(vm, disk)
print('vm.hardware.Disk.get({}, {}) -> {}'.format(vm, disk, pp(disk_info)))
print('\n# Example: Create a new IDE disk on a specific bus and '
@@ -253,31 +246,31 @@ def run():
type=Disk.HostBusAdapterType.IDE,
ide=IdeAddressSpec(False, False),
new_vmdk=Disk.VmdkCreateSpec(capacity=10 * GiB))
- disk = disk_svc.create(vm=vm, spec=disk_create_spec)
+ disk = client.vcenter.vm.hardware.Disk.create(vm=vm, spec=disk_create_spec)
print('vm.hardware.Disk.create({}, {}) -> {}'.
format(vm, disk_create_spec, disk))
disks_to_delete.append(disk)
- disk_info = disk_svc.get(vm, disk)
+ disk_info = client.vcenter.vm.hardware.Disk.get(vm, disk)
print('vm.hardware.Disk.get({}, {}) -> {}'.format(vm, disk, pp(disk_info)))
print('\n# Example: Attach an existing VMDK using the default bus and unit')
datastore_path = datastore_root_path + '/attach-defaults.vmdk'
- delete_vmdk_if_exist(stub_config, service_instance._stub, datacenter_name,
+ delete_vmdk_if_exist(client, service_instance._stub, datacenter_name,
datastore_name, datastore_path)
create_vmdk(service_instance, datacenter_mo, datastore_path)
disk_create_spec = Disk.CreateSpec(
backing=Disk.BackingSpec(type=Disk.BackingType.VMDK_FILE,
vmdk_file=datastore_path))
- disk = disk_svc.create(vm=vm, spec=disk_create_spec)
+ disk = client.vcenter.vm.hardware.Disk.create(vm=vm, spec=disk_create_spec)
print('vm.hardware.Disk.create({}, {}) -> {}'.
format(vm, disk_create_spec, disk))
disks_to_delete.append(disk)
- disk_info = disk_svc.get(vm, disk)
+ disk_info = client.vcenter.vm.hardware.Disk.get(vm, disk)
print('vm.hardware.Disk.get({}, {}) -> {}'.format(vm, disk, pp(disk_info)))
print('\n# Example: Attach an existing VMDK as a SCSI disk')
datastore_path = datastore_root_path + '/attach-scsi.vmdk'
- delete_vmdk_if_exist(stub_config, service_instance._stub, datacenter_name,
+ delete_vmdk_if_exist(client, service_instance._stub, datacenter_name,
datastore_name, datastore_path)
create_vmdk(service_instance, datacenter_mo, datastore_path)
@@ -285,18 +278,18 @@ def run():
type=Disk.HostBusAdapterType.SCSI,
backing=Disk.BackingSpec(type=Disk.BackingType.VMDK_FILE,
vmdk_file=datastore_path))
- disk = disk_svc.create(vm=vm, spec=disk_create_spec)
+ disk = client.vcenter.vm.hardware.Disk.create(vm=vm, spec=disk_create_spec)
print('vm.hardware.Disk.create({}, {}) -> {}'.
format(vm, disk_create_spec, disk))
disks_to_delete.append(disk)
- disk_info = disk_svc.get(vm, disk)
+ disk_info = client.vcenter.vm.hardware.Disk.get(vm, disk)
print('vm.hardware.Disk.get({}, {}) -> {}'.
format(vm, disk, pp(disk_info)))
print('\n# Example: Attach an existing VMDK as a SCSI disk '
'to a specific bus')
datastore_path = datastore_root_path + '/attach-scsi0.vmdk'
- delete_vmdk_if_exist(stub_config, service_instance._stub, datacenter_name,
+ delete_vmdk_if_exist(client, service_instance._stub, datacenter_name,
datastore_name, datastore_path)
create_vmdk(service_instance, datacenter_mo, datastore_path)
disk_create_spec = Disk.CreateSpec(
@@ -304,17 +297,17 @@ def run():
scsi=ScsiAddressSpec(bus=0),
backing=Disk.BackingSpec(type=Disk.BackingType.VMDK_FILE,
vmdk_file=datastore_path))
- disk = disk_svc.create(vm=vm, spec=disk_create_spec)
+ disk = client.vcenter.vm.hardware.Disk.create(vm=vm, spec=disk_create_spec)
print('vm.hardware.Disk.create({}, {}) -> {}'.
format(vm, disk_create_spec, disk))
disks_to_delete.append(disk)
- disk_info = disk_svc.get(vm, disk)
+ disk_info = client.vcenter.vm.hardware.Disk.get(vm, disk)
print('vm.hardware.Disk.get({}, {}) -> {}'.format(vm, disk, pp(disk_info)))
print('\n# Example: Attach an existing VMDK as a SCSI disk '
'to a specific bus and specific unit')
datastore_path = datastore_root_path + '/attach-scsi0:11.vmdk'
- delete_vmdk_if_exist(stub_config, service_instance._stub, datacenter_name,
+ delete_vmdk_if_exist(client, service_instance._stub, datacenter_name,
datastore_name, datastore_path)
create_vmdk(service_instance, datacenter_mo, datastore_path)
disk_create_spec = Disk.CreateSpec(
@@ -322,11 +315,11 @@ def run():
scsi=ScsiAddressSpec(bus=0, unit=11),
backing=Disk.BackingSpec(type=Disk.BackingType.VMDK_FILE,
vmdk_file=datastore_path))
- disk = disk_svc.create(vm=vm, spec=disk_create_spec)
+ disk = client.vcenter.vm.hardware.Disk.create(vm=vm, spec=disk_create_spec)
print('vm.hardware.Disk.create({}, {}) -> {}'.
format(vm, disk_create_spec, disk))
disks_to_delete.append(disk)
- disk_info = disk_svc.get(vm, disk)
+ disk_info = client.vcenter.vm.hardware.Disk.get(vm, disk)
print('vm.hardware.Disk.get({}, {}) -> {}'.format(vm, disk, pp(disk_info)))
# Samples to update operation to change backing
@@ -336,7 +329,7 @@ def run():
print(
'\n# Example: Change the backing of the last disk to a new VMDK file.')
datastore_path = datastore_root_path + '/update-scsi0:11.vmdk'
- delete_vmdk_if_exist(stub_config, service_instance._stub, datacenter_name,
+ delete_vmdk_if_exist(client, service_instance._stub, datacenter_name,
datastore_name, datastore_path)
create_vmdk(service_instance, datacenter_mo, datastore_path)
disk_update_spec = Disk.UpdateSpec(
@@ -344,8 +337,8 @@ def run():
vmdk_file=datastore_path))
print('vm.hardware.Disk.update({}, {}, {})'.
format(vm, disk, disk_update_spec))
- disk_svc.update(vm=vm, disk=disk, spec=disk_update_spec)
- disk_info = disk_svc.get(vm, disk)
+ client.vcenter.vm.hardware.Disk.update(vm=vm, disk=disk, spec=disk_update_spec)
+ disk_info = client.vcenter.vm.hardware.Disk.get(vm, disk)
print('vm.hardware.Disk.get({}, {}) -> {}'.format(vm, disk, pp(disk_info)))
@@ -356,17 +349,17 @@ def cleanup():
delete_vmdk(service_instance, datacenter_mo, vmdk_file)
# List all Disks for a VM
- disk_summaries = disk_svc.list(vm=vm)
+ disk_summaries = client.vcenter.vm.hardware.Disk.list(vm=vm)
print('vm.hardware.Disk.list({}) -> {}'.format(vm, disk_summaries))
print('\n# Cleanup: Delete VM Disks that were added')
for disk in disks_to_delete:
- disk_info = disk_svc.get(vm, disk)
+ disk_info = client.vcenter.vm.hardware.Disk.get(vm, disk)
print('vm.hardware.Disk.get({}, {}) -> {}'.
format(vm, disk, pp(disk_info)))
vmdk_file = disk_info.backing.vmdk_file
- disk_svc.delete(vm, disk)
+ client.vcenter.vm.hardware.Disk.delete(vm, disk)
print('vm.hardware.Disk.delete({}, {})'.format(vm, disk))
print("\n# Cleanup: Delete VMDK '{}'".format(vmdk_file))
@@ -374,18 +367,18 @@ def cleanup():
print('\n# Cleanup: Remove SATA controller')
print('vm.hardware.adapter.Sata.delete({}, {})'.format(vm, sata))
- sata_svc.delete(vm, sata)
+ client.vcenter.vm.hardware.adapter.Sata.delete(vm, sata)
- disk_summaries = disk_svc.list(vm)
+ disk_summaries = client.vcenter.vm.hardware.Disk.list(vm)
print('vm.hardware.Disk.list({}) -> {}'.format(vm, disk_summaries))
if set(orig_disk_summaries) != set(disk_summaries):
print(
'vm.hardware.Disk WARNING: Final Disk info does not match original')
-def delete_vmdk_if_exist(stub_config, soap_stub, datacenter_name,
+def delete_vmdk_if_exist(client, soap_stub, datacenter_name,
datastore_name, datastore_path):
- if detect_vmdk(stub_config, soap_stub, datacenter_name,
+ if detect_vmdk(client, soap_stub, datacenter_name,
datastore_name, datastore_path):
print("Detected VMDK '{}' {}".format(datastore_name, datastore_path))
delete_vmdk(service_instance, datacenter_mo, datastore_path)
diff --git a/samples/vsphere/vcenter/vm/hardware/ethernet.py b/samples/vsphere/vcenter/vm/hardware/ethernet.py
index 9edc1619..13e918a8 100644
--- a/samples/vsphere/vcenter/vm/hardware/ethernet.py
+++ b/samples/vsphere/vcenter/vm/hardware/ethernet.py
@@ -2,7 +2,7 @@
"""
* *******************************************************
-* Copyright (c) VMware, Inc. 2016. All Rights Reserved.
+* Copyright (c) VMware, Inc. 2016-2018. All Rights Reserved.
* SPDX-License-Identifier: MIT
* *******************************************************
*
@@ -14,19 +14,17 @@
"""
__author__ = 'VMware, Inc.'
-__copyright__ = 'Copyright 2016 VMware, Inc. All rights reserved.'
__vcenter_version__ = '6.5+'
-import atexit
+from vmware.vapi.vsphere.client import create_vsphere_client
from com.vmware.vcenter.vm.hardware_client import Ethernet
-from com.vmware.vcenter.vm_client import Power
-from samples.vsphere.common import vapiconnect
from samples.vsphere.common.sample_util import parse_cli_args_vm
from samples.vsphere.common.sample_util import pp
from samples.vsphere.vcenter.helper import network_helper
from samples.vsphere.vcenter.setup import testbed
from samples.vsphere.vcenter.helper.vm_helper import get_vm
+from samples.vsphere.common.ssl_helper import get_unverified_session
"""
Demonstrates how to configure virtual ethernet adapters of a virtual machine.
@@ -37,33 +35,33 @@ The sample needs an existing VM.
vm = None
vm_name = None
-stub_config = None
-ethernet_svc = None
+client = None
cleardata = False
nics_to_delete = []
orig_nic_summaries = None
def setup(context=None):
- global vm, vm_name, stub_config, cleardata
+ global vm, vm_name, client, cleardata
if context:
# Run sample suite via setup script
- stub_config = context.stub_config
+ client = context.client
vm_name = testbed.config['VM_NAME_DEFAULT']
else:
# Run sample in standalone mode
server, username, password, cleardata, skip_verification, vm_name = \
parse_cli_args_vm(testbed.config['VM_NAME_DEFAULT'])
- stub_config = vapiconnect.connect(server,
- username,
- password,
- skip_verification)
- atexit.register(vapiconnect.logout, stub_config)
+ session = get_unverified_session() if skip_verification else None
+ # Connect to vSphere client
+ client = create_vsphere_client(server=server,
+ username=username,
+ password=password,
+ session=session)
def run():
global vm
- vm = get_vm(stub_config, vm_name)
+ vm = get_vm(client, vm_name)
if not vm:
raise Exception('Sample requires an existing vm with name ({}). '
'Please create the vm first.'.format(vm_name))
@@ -71,23 +69,18 @@ def run():
# Get standard portgroup to use as backing for sample
standard_network = network_helper.get_standard_network_backing(
- stub_config,
+ client,
testbed.config['STDPORTGROUP_NAME'],
testbed.config['VM_DATACENTER_NAME'])
# Get distributed portgroup to use as backing for sample
distributed_network = network_helper.get_distributed_network_backing(
- stub_config,
+ client,
testbed.config['VDPORTGROUP1_NAME'],
testbed.config['VM_DATACENTER_NAME'])
- # Create Ethernet stub used for making requests
- global ethernet_svc
- ethernet_svc = Ethernet(stub_config)
- vm_power_svc = Power(stub_config)
-
print('\n# Example: List all Ethernet adapters for a VM')
- nic_summaries = ethernet_svc.list(vm=vm)
+ nic_summaries = client.vcenter.vm.hardware.Ethernet.list(vm=vm)
print('vm.hardware.Ethernet.list({}) -> {}'.format(vm, nic_summaries))
# Save current list of Ethernet adapters to verify that we have cleaned
@@ -98,7 +91,7 @@ def run():
# Get information for each Ethernet on the VM
for nic_summary in nic_summaries:
nic = nic_summary.nic
- nic_info = ethernet_svc.get(vm=vm, nic=nic)
+ nic_info = client.vcenter.vm.hardware.Ethernet.get(vm=vm, nic=nic)
print('vm.hardware.Ethernet.get({}, {}) -> {}'.
format(vm, nic, nic_info))
@@ -110,11 +103,11 @@ def run():
backing=Ethernet.BackingSpec(
type=Ethernet.BackingType.STANDARD_PORTGROUP,
network=standard_network))
- nic = ethernet_svc.create(vm, nic_create_spec)
+ nic = client.vcenter.vm.hardware.Ethernet.create(vm, nic_create_spec)
print('vm.hardware.Ethernet.create({}, {}) -> {}'.
format(vm, nic_create_spec, nic))
nics_to_delete.append(nic)
- nic_info = ethernet_svc.get(vm, nic)
+ nic_info = client.vcenter.vm.hardware.Ethernet.get(vm, nic)
print('vm.hardware.Ethernet.get({}, {}) -> {}'.
format(vm, nic, pp(nic_info)))
@@ -124,11 +117,11 @@ def run():
backing=Ethernet.BackingSpec(
type=Ethernet.BackingType.DISTRIBUTED_PORTGROUP,
network=distributed_network))
- nic = ethernet_svc.create(vm, nic_create_spec)
+ nic = client.vcenter.vm.hardware.Ethernet.create(vm, nic_create_spec)
print('vm.hardware.Ethernet.create({}, {}) -> {}'.
format(vm, nic_create_spec, nic))
nics_to_delete.append(nic)
- nic_info = ethernet_svc.get(vm, nic)
+ nic_info = client.vcenter.vm.hardware.Ethernet.get(vm, nic)
print('vm.hardware.Ethernet.get({}, {}) -> {}'.
format(vm, nic, pp(nic_info)))
@@ -145,11 +138,11 @@ def run():
backing=Ethernet.BackingSpec(
type=Ethernet.BackingType.STANDARD_PORTGROUP,
network=standard_network))
- nic = ethernet_svc.create(vm, nic_create_spec)
+ nic = client.vcenter.vm.hardware.Ethernet.create(vm, nic_create_spec)
print('vm.hardware.Ethernet.create({}, {}) -> {}'.
format(vm, nic_create_spec, nic))
nics_to_delete.append(nic)
- nic_info = ethernet_svc.get(vm, nic)
+ nic_info = client.vcenter.vm.hardware.Ethernet.get(vm, nic)
print('vm.hardware.Ethernet.get({}, {}) -> {}'.
format(vm, nic, pp(nic_info)))
@@ -166,11 +159,11 @@ def run():
backing=Ethernet.BackingSpec(
type=Ethernet.BackingType.DISTRIBUTED_PORTGROUP,
network=distributed_network))
- nic = ethernet_svc.create(vm, nic_create_spec)
+ nic = client.vcenter.vm.hardware.Ethernet.create(vm, nic_create_spec)
print('vm.hardware.Ethernet.create({}, {}) -> {}'.
format(vm, nic_create_spec, nic))
nics_to_delete.append(nic)
- nic_info = ethernet_svc.get(vm, nic)
+ nic_info = client.vcenter.vm.hardware.Ethernet.get(vm, nic)
print('vm.hardware.Ethernet.get({}, {}) -> {}'.
format(vm, nic, pp(nic_info)))
@@ -182,8 +175,8 @@ def run():
network=standard_network))
print('vm.hardware.Ethernet.update({}, {}, {})'.
format(vm, nic, nic_update_spec))
- ethernet_svc.update(vm, nic, nic_update_spec)
- nic_info = ethernet_svc.get(vm, nic)
+ client.vcenter.vm.hardware.Ethernet.update(vm, nic, nic_update_spec)
+ nic_info = client.vcenter.vm.hardware.Ethernet.get(vm, nic)
print('vm.hardware.Ethernet.get({}, {}) -> {}'.
format(vm, nic, pp(nic_info)))
@@ -198,51 +191,51 @@ def run():
allow_guest_control=False)
print('vm.hardware.Ethernet.update({}, {}, {})'.
format(vm, nic, nic_update_spec))
- ethernet_svc.update(vm, nic, nic_update_spec)
- nic_info = ethernet_svc.get(vm, nic)
+ client.vcenter.vm.hardware.Ethernet.update(vm, nic, nic_update_spec)
+ nic_info = client.vcenter.vm.hardware.Ethernet.get(vm, nic)
print('vm.hardware.Ethernet.get({}, {}) -> {}'.
format(vm, nic, pp(nic_info)))
print('\n# Starting VM to run connect/disconnect sample')
print('vm.Power.start({})'.format(vm))
- vm_power_svc.start(vm)
- nic_info = ethernet_svc.get(vm, nic)
+ client.vcenter.vm.Power.start(vm)
+ nic_info = client.vcenter.vm.hardware.Ethernet.get(vm, nic)
print('vm.hardware.Ethernet.get({}, {}) -> {}'.
format(vm, nic, pp(nic_info)))
print('\n# Example: Connect Ethernet Nic after powering on VM')
- ethernet_svc.connect(vm, nic)
+ client.vcenter.vm.hardware.Ethernet.connect(vm, nic)
print('vm.hardware.Ethernet.connect({}, {})'.format(vm, nic))
- nic_info = ethernet_svc.get(vm, nic)
+ nic_info = client.vcenter.vm.hardware.Ethernet.get(vm, nic)
print('vm.hardware.Ethernet.get({}, {}) -> {}'.
format(vm, nic, pp(nic_info)))
print('\n# Example: Disconnect Ethernet Nic while VM is powered on')
- ethernet_svc.disconnect(vm, nic)
+ client.vcenter.vm.hardware.Ethernet.disconnect(vm, nic)
print('vm.hardware.Ethernet.disconnect({}, {})'.format(vm, nic))
- nic_info = ethernet_svc.get(vm, nic)
+ nic_info = client.vcenter.vm.hardware.Ethernet.get(vm, nic)
print('vm.hardware.Ethernet.get({}, {}) -> {}'.
format(vm, nic, pp(nic_info)))
print('\n# Stopping VM after connect/disconnect sample')
print('vm.Power.start({})'.format(vm))
- vm_power_svc.stop(vm)
- nic_info = ethernet_svc.get(vm, nic)
+ client.vcenter.vm.Power.stop(vm)
+ nic_info = client.vcenter.vm.hardware.Ethernet.get(vm, nic)
print('vm.hardware.Ethernet.get({}, {}) -> {}'.
format(vm, nic, pp(nic_info)))
# List all Nics for a VM
- nic_summaries = ethernet_svc.list(vm=vm)
+ nic_summaries = client.vcenter.vm.hardware.Ethernet.list(vm=vm)
print('vm.hardware.Ethernet.list({}) -> {}'.format(vm, nic_summaries))
def cleanup():
print('\n# Cleanup: Delete VM Nics that were added')
for nic in nics_to_delete:
- ethernet_svc.delete(vm, nic)
+ client.vcenter.vm.hardware.Ethernet.delete(vm, nic)
print('vm.hardware.Ethernet.delete({}, {})'.format(vm, nic))
- nic_summaries = ethernet_svc.list(vm)
+ nic_summaries = client.vcenter.vm.hardware.Ethernet.list(vm)
print('vm.hardware.Ethernet.list({}) -> {}'.format(vm, nic_summaries))
if set(orig_nic_summaries) != set(nic_summaries):
print('vm.hardware.Ethernet WARNING: '
diff --git a/samples/vsphere/vcenter/vm/hardware/floppy.py b/samples/vsphere/vcenter/vm/hardware/floppy.py
index 2ce04d3c..695edb9c 100644
--- a/samples/vsphere/vcenter/vm/hardware/floppy.py
+++ b/samples/vsphere/vcenter/vm/hardware/floppy.py
@@ -2,7 +2,7 @@
"""
* *******************************************************
-* Copyright (c) VMware, Inc. 2016. All Rights Reserved.
+* Copyright (c) VMware, Inc. 2016-2018. All Rights Reserved.
* SPDX-License-Identifier: MIT
* *******************************************************
*
@@ -14,19 +14,17 @@
"""
__author__ = 'VMware, Inc.'
-__copyright__ = 'Copyright 2016 VMware, Inc. All rights reserved.'
__vcenter_version__ = '6.5+'
-import atexit
+from vmware.vapi.vsphere.client import create_vsphere_client
from com.vmware.vcenter.vm.hardware_client import Floppy
-from com.vmware.vcenter.vm_client import Power
-from samples.vsphere.common import vapiconnect
from samples.vsphere.common.sample_util import parse_cli_args_vm
from samples.vsphere.common.sample_util import pp
from samples.vsphere.vcenter.setup import testbed
from samples.vsphere.vcenter.helper.vm_helper import get_vm
+from samples.vsphere.common.ssl_helper import get_unverified_session
"""
Demonstrates how to configure Floppy settings for a VM.
@@ -38,46 +36,42 @@ The sample needs an existing VM.
vm = None
vm_name = None
floppy = None
-stub_config = None
+client = None
cleardata = False
orig_floppy_summaries = None
def setup(context=None):
- global vm, vm_name, stub_config, cleardata
+ global vm, vm_name, client, cleardata
if context:
# Run sample suite via setup script
- stub_config = context.stub_config
+ client = context.client
vm_name = testbed.config['VM_NAME_DEFAULT']
else:
# Run sample in standalone mode
server, username, password, cleardata, skip_verification, vm_name = \
parse_cli_args_vm(testbed.config['VM_NAME_DEFAULT'])
- stub_config = vapiconnect.connect(server,
- username,
- password,
- skip_verification)
- atexit.register(vapiconnect.logout, stub_config)
+ session = get_unverified_session() if skip_verification else None
+ # Connect to vSphere client
+ client = create_vsphere_client(server=server,
+ username=username,
+ password=password,
+ session=session)
def run():
# * Floppy images must be pre-existing. This API does not expose
# a way to create new floppy images.
global vm
- vm = get_vm(stub_config, vm_name)
+ vm = get_vm(client, vm_name)
if not vm:
raise Exception('Sample requires an existing vm with name ({}). '
'Please create the vm first.'.format(vm_name))
print("Using VM '{}' ({}) for Floppy Sample".format(vm_name, vm))
img_datastore_path = testbed.config['FLOPPY_DATASTORE_PATH']
- # Create Floppy stub used for making requests
- global floppy_svc
- floppy_svc = Floppy(stub_config)
- vm_power_svc = Power(stub_config)
-
print('\n# Example: List all Floppys for a VM')
- floppy_summaries = floppy_svc.list(vm=vm)
+ floppy_summaries = client.vcenter.vm.hardware.Floppy.list(vm=vm)
print('vm.hardware.Floppy.list({}) -> {}'.format(vm, floppy_summaries))
# Save current list of Floppys to verify that we have cleaned up properly
@@ -88,7 +82,7 @@ def run():
global floppy
for floppy_summary in floppy_summaries:
floppy = floppy_summary.floppy
- floppy_info = floppy_svc.get(vm=vm, floppy=floppy)
+ floppy_info = client.vcenter.vm.hardware.Floppy.get(vm=vm, floppy=floppy)
print('vm.hardware.Floppy.get({}, {}) -> {}'.
format(vm, floppy, pp(floppy_info)))
@@ -97,25 +91,25 @@ def run():
print('\n# Example: Create Floppy port with defaults')
floppy_create_spec = Floppy.CreateSpec()
- floppy = floppy_svc.create(vm, floppy_create_spec)
+ floppy = client.vcenter.vm.hardware.Floppy.create(vm, floppy_create_spec)
print('vm.hardware.Floppy.create({}, {}) -> {}'.
format(vm, floppy_create_spec, floppy))
- floppy_info = floppy_svc.get(vm, floppy)
+ floppy_info = client.vcenter.vm.hardware.Floppy.get(vm, floppy)
print('vm.hardware.Floppy.get({}, {}) -> {}'.
format(vm, floppy, pp(floppy_info)))
- floppy_svc.delete(vm, floppy)
+ client.vcenter.vm.hardware.Floppy.delete(vm, floppy)
print('vm.hardware.Floppy.delete({}, {})'.format(vm, floppy))
print('\n# Example: Create Floppy with CLIENT_DEVICE backing')
floppy_create_spec = Floppy.CreateSpec(
backing=Floppy.BackingSpec(type=Floppy.BackingType.CLIENT_DEVICE))
- floppy = floppy_svc.create(vm, floppy_create_spec)
+ floppy = client.vcenter.vm.hardware.Floppy.create(vm, floppy_create_spec)
print('vm.hardware.Floppy.create({}, {}) -> {}'.
format(vm, floppy_create_spec, floppy))
- floppy_info = floppy_svc.get(vm, floppy)
+ floppy_info = client.vcenter.vm.hardware.Floppy.get(vm, floppy)
print('vm.hardware.Floppy.get({}, {}) -> {}'.
format(vm, floppy, pp(floppy_info)))
- floppy_svc.delete(vm, floppy)
+ client.vcenter.vm.hardware.Floppy.delete(vm, floppy)
print('vm.hardware.Floppy.delete({}, {})'.format(vm, floppy))
print('\n# Example: Create Floppy with IMAGE_FILE backing, '
@@ -126,8 +120,8 @@ def run():
start_connected=True,
backing=Floppy.BackingSpec(type=Floppy.BackingType.IMAGE_FILE,
image_file=img_datastore_path))
- floppy = floppy_svc.create(vm, floppy_create_spec)
- floppy_info = floppy_svc.get(vm, floppy)
+ floppy = client.vcenter.vm.hardware.Floppy.create(vm, floppy_create_spec)
+ floppy_info = client.vcenter.vm.hardware.Floppy.get(vm, floppy)
print('vm.hardware.Floppy.get({}, {}) -> {}'.
format(vm, floppy, pp(floppy_info)))
@@ -137,50 +131,50 @@ def run():
start_connected=False, allow_guest_control=False)
print('vm.hardware.Floppy.update({}, {}, {})'.
format(vm, floppy, floppy_update_spec))
- floppy_svc.update(vm, floppy, floppy_update_spec)
- floppy_info = floppy_svc.get(vm, floppy)
+ client.vcenter.vm.hardware.Floppy.update(vm, floppy, floppy_update_spec)
+ floppy_info = client.vcenter.vm.hardware.Floppy.get(vm, floppy)
print('vm.hardware.Floppy.get({}, {}) -> {}'.
format(vm, floppy, pp(floppy_info)))
print('\n# Starting VM to run connect/disconnect sample')
print('vm.Power.start({})'.format(vm))
- vm_power_svc.start(vm)
- floppy_info = floppy_svc.get(vm, floppy)
+ client.vcenter.vm.Power.start(vm)
+ floppy_info = client.vcenter.vm.hardware.Floppy.get(vm, floppy)
print('vm.hardware.Floppy.get({}, {}) -> {}'.
format(vm, floppy, pp(floppy_info)))
print('\n# Example: Connect Floppy after powering on VM')
- floppy_svc.connect(vm, floppy)
+ client.vcenter.vm.hardware.Floppy.connect(vm, floppy)
print('vm.hardware.Floppy.connect({}, {})'.format(vm, floppy))
- floppy_info = floppy_svc.get(vm, floppy)
+ floppy_info = client.vcenter.vm.hardware.Floppy.get(vm, floppy)
print('vm.hardware.Floppy.get({}, {}) -> {}'.
format(vm, floppy, pp(floppy_info)))
print('\n# Example: Disconnect Floppy while VM is powered on')
- floppy_svc.disconnect(vm, floppy)
+ client.vcenter.vm.hardware.Floppy.disconnect(vm, floppy)
print('vm.hardware.Floppy.disconnect({}, {})'.format(vm, floppy))
- floppy_info = floppy_svc.get(vm, floppy)
+ floppy_info = client.vcenter.vm.hardware.Floppy.get(vm, floppy)
print('vm.hardware.Floppy.get({}, {}) -> {}'.
format(vm, floppy, pp(floppy_info)))
print('\n# Stopping VM after connect/disconnect sample')
print('vm.Power.start({})'.format(vm))
- vm_power_svc.stop(vm)
- floppy_info = floppy_svc.get(vm, floppy)
+ client.vcenter.vm.Power.stop(vm)
+ floppy_info = client.vcenter.vm.hardware.Floppy.get(vm, floppy)
print('vm.hardware.Floppy.get({}, {}) -> {}'.
format(vm, floppy, pp(floppy_info)))
# List all Floppys for a VM
- floppy_summaries = floppy_svc.list(vm=vm)
+ floppy_summaries = client.vcenter.vm.hardware.Floppy.list(vm=vm)
print('vm.hardware.Floppy.list({}) -> {}'.format(vm, floppy_summaries))
def cleanup():
print('\n# Cleanup: Delete VM Floppys that were added')
- floppy_svc.delete(vm, floppy)
+ client.vcenter.vm.hardware.Floppy.delete(vm, floppy)
print('vm.hardware.Floppy.delete({}, {})'.format(vm, floppy))
- floppy_summaries = floppy_svc.list(vm)
+ floppy_summaries = client.vcenter.vm.hardware.Floppy.list(vm)
print('vm.hardware.Floppy.list({}) -> {}'.format(vm, floppy_summaries))
if set(orig_floppy_summaries) != set(floppy_summaries):
print('vm.hardware.Floppy WARNING: '
diff --git a/samples/vsphere/vcenter/vm/hardware/main.py b/samples/vsphere/vcenter/vm/hardware/main.py
index 21a18f48..b513883c 100644
--- a/samples/vsphere/vcenter/vm/hardware/main.py
+++ b/samples/vsphere/vcenter/vm/hardware/main.py
@@ -1,6 +1,6 @@
"""
* *******************************************************
-* Copyright (c) VMware, Inc. 2016. All Rights Reserved.
+* Copyright (c) VMware, Inc. 2016-2018. All Rights Reserved.
* SPDX-License-Identifier: MIT
* *******************************************************
*
@@ -12,7 +12,6 @@
"""
__author__ = 'VMware, Inc.'
-__copyright__ = 'Copyright 2016 VMware, Inc. All rights reserved.'
__vcenter_version__ = '6.5+'
import samples.vsphere.vcenter.vm.hardware.adapter.sata
@@ -73,7 +72,7 @@ def validate(context):
testbed.config['VM_NAME_EXHAUSTIVE']])
valid = True
for name in names:
- if not get_vm(context.stub_config, name):
+ if not get_vm(context.client, name):
valid = False
if not valid:
raise Exception('==> Samples Setup validation failed: '
diff --git a/samples/vsphere/vcenter/vm/hardware/memory.py b/samples/vsphere/vcenter/vm/hardware/memory.py
index c7239972..71d60ee1 100644
--- a/samples/vsphere/vcenter/vm/hardware/memory.py
+++ b/samples/vsphere/vcenter/vm/hardware/memory.py
@@ -2,7 +2,7 @@
"""
* *******************************************************
-* Copyright (c) VMware, Inc. 2016. All Rights Reserved.
+* Copyright (c) VMware, Inc. 2016-2018. All Rights Reserved.
* SPDX-License-Identifier: MIT
* *******************************************************
*
@@ -14,18 +14,17 @@
"""
__author__ = 'VMware, Inc.'
-__copyright__ = 'Copyright 2016 VMware, Inc. All rights reserved.'
__vcenter_version__ = '6.5+'
-import atexit
-
from com.vmware.vcenter.vm.hardware_client import Memory
-from samples.vsphere.common import vapiconnect
+from vmware.vapi.vsphere.client import create_vsphere_client
+
from samples.vsphere.common.sample_util import parse_cli_args_vm
from samples.vsphere.common.sample_util import pp
from samples.vsphere.vcenter.setup import testbed
from samples.vsphere.vcenter.helper.vm_helper import get_vm
+from samples.vsphere.common.ssl_helper import get_unverified_session
"""
Demonstrates how to configure the memory related settings of a virtual machine.
@@ -36,43 +35,39 @@ The sample needs an existing VM.
vm = None
vm_name = None
-stub_config = None
-memory_svc = None
+client = None
cleardata = False
orig_memory_info = None
def setup(context=None):
- global vm, vm_name, stub_config, cleardata
+ global vm, vm_name, client, cleardata
if context:
# Run sample suite via setup script
- stub_config = context.stub_config
+ client = context.client
vm_name = testbed.config['VM_NAME_DEFAULT']
else:
# Run sample in standalone mode
server, username, password, cleardata, skip_verification, vm_name = \
parse_cli_args_vm(testbed.config['VM_NAME_DEFAULT'])
- stub_config = vapiconnect.connect(server,
- username,
- password,
- skip_verification)
- atexit.register(vapiconnect.logout, stub_config)
+ session = get_unverified_session() if skip_verification else None
+ # Connect to vSphere client
+ client = create_vsphere_client(server=server,
+ username=username,
+ password=password,
+ session=session)
def run():
global vm
- vm = get_vm(stub_config, vm_name)
+ vm = get_vm(client, vm_name)
if not vm:
raise Exception('Sample requires an existing vm with name ({}). '
'Please create the vm first.'.format(vm_name))
print("Using VM '{}' ({}) for Memory Sample".format(vm_name, vm))
- # Create Memory stub used for making requests
- global memory_svc
- memory_svc = Memory(stub_config)
-
print('\n# Example: Get current Memory configuration')
- memory_info = memory_svc.get(vm)
+ memory_info = client.vcenter.vm.hardware.Memory.get(vm)
print('vm.hardware.Memory.get({}) -> {}'.format(vm, pp(memory_info)))
# Save current Memory info to verify that we have cleaned up properly
@@ -82,19 +77,19 @@ def run():
print('\n# Example: Update memory size_mib field of Memory configuration')
update_spec = Memory.UpdateSpec(size_mib=8 * 1024)
print('vm.hardware.Memory.update({}, {})'.format(vm, update_spec))
- memory_svc.update(vm, update_spec)
+ client.vcenter.vm.hardware.Memory.update(vm, update_spec)
# Get new Memory configuration
- memory_info = memory_svc.get(vm)
+ memory_info = client.vcenter.vm.hardware.Memory.get(vm)
print('vm.hardware.Memory.get({}) -> {}'.format(vm, pp(memory_info)))
print('\n# Example: Update hot_add_enabled field of Memory configuration')
update_spec = Memory.UpdateSpec(hot_add_enabled=True)
print('vm.hardware.Memory.update({}, {})'.format(vm, update_spec))
- memory_svc.update(vm, update_spec)
+ client.vcenter.vm.hardware.Memory.update(vm, update_spec)
# Get new Memory configuration
- memory_info = memory_svc.get(vm)
+ memory_info = client.vcenter.vm.hardware.Memory.get(vm)
print('vm.hardware.Memory.get({}) -> {}'.format(vm, pp(memory_info)))
@@ -104,10 +99,10 @@ def cleanup():
hot_add_enabled=orig_memory_info.
hot_add_enabled)
print('vm.hardware.Memory.update({}, {})'.format(vm, update_spec))
- memory_svc.update(vm, update_spec)
+ client.vcenter.vm.hardware.Memory.update(vm, update_spec)
# Get final Memory configuration
- memory_info = memory_svc.get(vm)
+ memory_info = client.vcenter.vm.hardware.Memory.get(vm)
print('vm.hardware.Memory.get({}) -> {}'.format(vm, pp(memory_info)))
if memory_info != orig_memory_info:
diff --git a/samples/vsphere/vcenter/vm/hardware/parallel.py b/samples/vsphere/vcenter/vm/hardware/parallel.py
index b7764e7a..402e2d07 100644
--- a/samples/vsphere/vcenter/vm/hardware/parallel.py
+++ b/samples/vsphere/vcenter/vm/hardware/parallel.py
@@ -2,7 +2,7 @@
"""
* *******************************************************
-* Copyright (c) VMware, Inc. 2016. All Rights Reserved.
+* Copyright (c) VMware, Inc. 2016-2018. All Rights Reserved.
* SPDX-License-Identifier: MIT
* *******************************************************
*
@@ -12,21 +12,20 @@
* WARRANTIES OR CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY,
* NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR PURPOSE.
"""
+from vmware.vapi.vsphere.client import create_vsphere_client
__author__ = 'VMware, Inc.'
-__copyright__ = 'Copyright 2016 VMware, Inc. All rights reserved.'
__vcenter_version__ = '6.5+'
import atexit
from com.vmware.vcenter.vm.hardware_client import Parallel
-from com.vmware.vcenter.vm_client import Power
from pyVim.connect import SmartConnect, Disconnect
-from samples.vsphere.common import vapiconnect
from samples.vsphere.common.sample_util import parse_cli_args_vm
from samples.vsphere.common.sample_util import pp
-from samples.vsphere.common.ssl_helper import get_unverified_context
+from samples.vsphere.common.ssl_helper import get_unverified_context, \
+ get_unverified_session
from samples.vsphere.common.vim.file import delete_file
from samples.vsphere.vcenter.helper.vm_helper import get_vm
from samples.vsphere.vcenter.setup import testbed
@@ -40,30 +39,29 @@ The sample needs an existing VM.
vm = None
vm_name = None
-stub_config = None
+client = None
service_instance = None
-parallel_svc = None
cleardata = False
parallels_to_delete = []
orig_parallel_summaries = None
def setup(context=None):
- global vm_name, stub_config, service_instance, cleardata
+ global vm_name, client, service_instance, cleardata
if context:
# Run sample suite via setup script
- stub_config = context.stub_config
+ client = context.client
vm_name = testbed.config['VM_NAME_DEFAULT']
service_instance = context.service_instance
else:
# Run sample in standalone mode
server, username, password, cleardata, skip_verification, vm_name = \
parse_cli_args_vm(testbed.config['VM_NAME_DEFAULT'])
- stub_config = vapiconnect.connect(server,
- username,
- password,
- skip_verification)
- atexit.register(vapiconnect.logout, stub_config)
+ session = get_unverified_session() if skip_verification else None
+ client = create_vsphere_client(server=server,
+ username=username,
+ password=password,
+ session=session)
context = None
if skip_verification:
@@ -76,19 +74,15 @@ def setup(context=None):
def run():
- global vm, parallel_svc
- vm = get_vm(stub_config, vm_name)
+ global vm, client
+ vm = get_vm(client, vm_name)
if not vm:
raise Exception('Sample requires an existing vm with name ({}). '
'Please create the vm first.'.format(vm_name))
print("Using VM '{}' ({}) for Parallel Sample".format(vm_name, vm))
- # Create Parallel port stub used for making requests
- parallel_svc = Parallel(stub_config)
- vm_power_svc = Power(stub_config)
-
print('\n# Example: List all Parallel ports for a VM')
- parallel_summaries = parallel_svc.list(vm=vm)
+ parallel_summaries = client.vcenter.vm.hardware.Parallel.list(vm=vm)
print('vm.hardware.Parallel.list({}) -> {}'.format(vm, parallel_summaries))
# Save current list of Parallel ports to verify that we have cleaned up
@@ -99,7 +93,8 @@ def run():
# Get information for each Parallel port on the VM
for parallel_summary in parallel_summaries:
parallel = parallel_summary.port
- parallel_info = parallel_svc.get(vm=vm, port=parallel)
+ parallel_info = client.vcenter.vm.hardware.Parallel.get(vm=vm,
+ port=parallel)
print('vm.hardware.Parallel.get({}, {}) -> {}'.format(vm, parallel, pp(
parallel_info)))
@@ -108,12 +103,12 @@ def run():
print('\n# Example: Create Parallel port with defaults')
parallel_create_spec = Parallel.CreateSpec()
- parallel = parallel_svc.create(vm, parallel_create_spec)
+ parallel = client.vcenter.vm.hardware.Parallel.create(vm, parallel_create_spec)
print('vm.hardware.Parallel.create({}, {}) -> {}'.
format(vm, parallel_create_spec, parallel))
global parallels_to_delete
parallels_to_delete.append(parallel)
- parallel_info = parallel_svc.get(vm, parallel)
+ parallel_info = client.vcenter.vm.hardware.Parallel.get(vm, parallel)
print('vm.hardware.Parallel.get({}, {}) -> {}'.format(vm, parallel,
pp(parallel_info)))
@@ -125,11 +120,11 @@ def run():
allow_guest_control=True,
backing=Parallel.BackingSpec(type=Parallel.BackingType.FILE,
file=parallel_port_datastore_path))
- parallel = parallel_svc.create(vm, parallel_create_spec)
+ parallel = client.vcenter.vm.hardware.Parallel.create(vm, parallel_create_spec)
print('vm.hardware.Parallel.create({}, {}) -> {}'.
format(vm, parallel_create_spec, parallel))
parallels_to_delete.append(parallel)
- parallel_info = parallel_svc.get(vm, parallel)
+ parallel_info = client.vcenter.vm.hardware.Parallel.get(vm, parallel)
print('vm.hardware.Parallel.get({}, {}) -> {}'.
format(vm, parallel, pp(parallel_info)))
@@ -143,43 +138,43 @@ def run():
allow_guest_control=False,
backing=Parallel.BackingSpec(type=Parallel.BackingType.FILE,
file=parallel_port_datastore_path))
- parallel_svc.update(vm, parallel, parallel_update_spec)
+ client.vcenter.vm.hardware.Parallel.update(vm, parallel, parallel_update_spec)
print('vm.hardware.Parallel.update({}, {}) -> {}'.
format(vm, parallel_update_spec, parallel))
- parallel_info = parallel_svc.get(vm, parallel)
+ parallel_info = client.vcenter.vm.hardware.Parallel.get(vm, parallel)
print('vm.hardware.Parallel.get({}, {}) -> {}'.
format(vm, parallel, pp(parallel_info)))
print('\n# Starting VM to run connect/disconnect sample')
print('vm.Power.start({})'.format(vm))
- vm_power_svc.start(vm)
- parallel_info = parallel_svc.get(vm, parallel)
+ client.vcenter.vm.Power.start(vm)
+ parallel_info = client.vcenter.vm.hardware.Parallel.get(vm, parallel)
print('vm.hardware.Parallel.get({}, {}) -> {}'.
format(vm, parallel, pp(parallel_info)))
print('\n# Example: Connect Parallel port after powering on VM')
- parallel_svc.connect(vm, parallel)
+ client.vcenter.vm.hardware.Parallel.connect(vm, parallel)
print('vm.hardware.Parallel.connect({}, {})'.format(vm, parallel))
- parallel_info = parallel_svc.get(vm, parallel)
+ parallel_info = client.vcenter.vm.hardware.Parallel.get(vm, parallel)
print('vm.hardware.Parallel.get({}, {}) -> {}'.
format(vm, parallel, pp(parallel_info)))
print('\n# Example: Disconnect Parallel port while VM is powered on')
- parallel_svc.disconnect(vm, parallel)
+ client.vcenter.vm.hardware.Parallel.disconnect(vm, parallel)
print('vm.hardware.Parallel.disconnect({}, {})'.format(vm, parallel))
- parallel_info = parallel_svc.get(vm, parallel)
+ parallel_info = client.vcenter.vm.hardware.Parallel.get(vm, parallel)
print('vm.hardware.Parallel.get({}, {}) -> {}'.
format(vm, parallel, pp(parallel_info)))
print('\n# Stopping VM after connect/disconnect sample')
print('vm.Power.start({})'.format(vm))
- vm_power_svc.stop(vm)
- parallel_info = parallel_svc.get(vm, parallel)
+ client.vcenter.vm.Power.stop(vm)
+ parallel_info = client.vcenter.vm.hardware.Parallel.get(vm, parallel)
print('vm.hardware.Parallel.get({}, {}) -> {}'.
format(vm, parallel, pp(parallel_info)))
# List all Parallel ports for a VM
- parallel_summaries = parallel_svc.list(vm=vm)
+ parallel_summaries = client.vcenter.vm.hardware.Parallel.list(vm=vm)
print('vm.hardware.Parallel.list({}) -> {}'.
format(vm, parallel_summaries))
@@ -190,10 +185,10 @@ def run():
def cleanup():
print('\n# Cleanup: Delete VM Parallel ports that were added')
for parallel in parallels_to_delete:
- parallel_svc.delete(vm, parallel)
+ client.vcenter.vm.hardware.Parallel.delete(vm, parallel)
print('vm.hardware.Parallel.delete({}, {})'.format(vm, parallel))
- parallel_summaries = parallel_svc.list(vm)
+ parallel_summaries = client.vcenter.vm.hardware.Parallel.list(vm)
print('vm.hardware.Parallel.list({}) -> {}'.format(vm, parallel_summaries))
if set(orig_parallel_summaries) != set(parallel_summaries):
print('vm.hardware.Parallel WARNING: '
@@ -212,7 +207,7 @@ def cleanup_backends():
"""
datacenter_name = testbed.config['PARALLEL_PORT_DATACENTER_NAME']
datastore_path = testbed.config['PARALLEL_PORT_DATASTORE_PATH']
- delete_file(stub_config,
+ delete_file(client,
service_instance,
'Parallel Port',
datacenter_name,
diff --git a/samples/vsphere/vcenter/vm/hardware/serial.py b/samples/vsphere/vcenter/vm/hardware/serial.py
index 3e9d9286..f0079f3d 100644
--- a/samples/vsphere/vcenter/vm/hardware/serial.py
+++ b/samples/vsphere/vcenter/vm/hardware/serial.py
@@ -2,7 +2,7 @@
"""
* *******************************************************
-* Copyright (c) VMware, Inc. 2016. All Rights Reserved.
+* Copyright (c) VMware, Inc. 2016-2018. All Rights Reserved.
* SPDX-License-Identifier: MIT
* *******************************************************
*
@@ -14,21 +14,22 @@
"""
__author__ = 'VMware, Inc.'
-__copyright__ = 'Copyright 2016 VMware, Inc. All rights reserved.'
+__vcenter_version__ = '6.5+'
import atexit
+from vmware.vapi.vsphere.client import create_vsphere_client
+
from com.vmware.vcenter.vm.hardware_client import Serial
-from com.vmware.vcenter.vm_client import Power
from pyVim.connect import SmartConnect, Disconnect
-from samples.vsphere.common import vapiconnect
from samples.vsphere.common.sample_util import parse_cli_args_vm
from samples.vsphere.common.sample_util import pp
from samples.vsphere.common.ssl_helper import get_unverified_context
from samples.vsphere.common.vim.file import delete_file
from samples.vsphere.vcenter.helper.vm_helper import get_vm
from samples.vsphere.vcenter.setup import testbed
+from samples.vsphere.common.ssl_helper import get_unverified_session
"""
Demonstrates how to configure Serial ports for a VM.
@@ -48,30 +49,31 @@ delete them after running the sample.
vm = None
vm_name = None
-stub_config = None
+client = None
service_instance = None
-serial_svc = None
cleardata = False
serials_to_delete = []
orig_serial_summaries = None
def setup(context=None):
- global vm_name, stub_config, service_instance, cleardata
+ global vm_name, client, service_instance, cleardata
if context:
# Run sample suite via setup script
- stub_config = context.stub_config
+ client = context.client
vm_name = testbed.config['VM_NAME_DEFAULT']
service_instance = context.service_instance
else:
# Run sample in standalone mode
server, username, password, cleardata, skip_verification, vm_name = \
parse_cli_args_vm(testbed.config['VM_NAME_DEFAULT'])
- stub_config = vapiconnect.connect(server,
- username,
- password,
- skip_verification)
- atexit.register(vapiconnect.logout, stub_config)
+ session = get_unverified_session() if skip_verification else None
+
+ # Connect to vSphere client
+ client = create_vsphere_client(server=server,
+ username=username,
+ password=password,
+ session=session)
context = None
if skip_verification:
@@ -92,19 +94,15 @@ def run():
# * Proxy: https://www.vmware.com/support/developer/vc-sdk/visdk41pubs
# /vsp41_usingproxy_virtual_serial_ports.pdf
- global vm, serial_svc
- vm = get_vm(stub_config, vm_name)
+ global vm
+ vm = get_vm(client, vm_name)
if not vm:
raise Exception('Sample requires an existing vm with name ({}). '
'Please create the vm first.'.format(vm_name))
print("Using VM '{}' ({}) for Serial Sample".format(vm_name, vm))
- # Create Serial port stub used for making requests
- serial_svc = Serial(stub_config)
- vm_power_svc = Power(stub_config)
-
print('\n# Example: List all Serial ports for a VM')
- serial_summaries = serial_svc.list(vm=vm)
+ serial_summaries = client.vcenter.vm.hardware.Serial.list(vm=vm)
print('vm.hardware.Serial.list({}) -> {}'.format(vm, serial_summaries))
# Save current list of Serial ports to verify that we have cleaned up
@@ -115,7 +113,7 @@ def run():
# Get information for each Serial port on the VM
for serial_summary in serial_summaries:
serial = serial_summary.port
- serial_info = serial_svc.get(vm=vm, port=serial)
+ serial_info = client.vcenter.vm.hardware.Serial.get(vm=vm, port=serial)
print('vm.hardware.Serial.get({}, {}) -> {}'.format(vm, serial,
pp(serial_info)))
@@ -123,11 +121,11 @@ def run():
print('\n# Example: Create Serial port with defaults')
serial_create_spec = Serial.CreateSpec()
- serial = serial_svc.create(vm, serial_create_spec)
+ serial = client.vcenter.vm.hardware.Serial.create(vm, serial_create_spec)
print('vm.hardware.Serial.create({}, {}) -> {}'.
format(vm, serial_create_spec, serial))
serials_to_delete.append(serial)
- serial_info = serial_svc.get(vm, serial)
+ serial_info = client.vcenter.vm.hardware.Serial.get(vm, serial)
print('vm.hardware.Serial.get({}, {}) -> {}'.
format(vm, serial, pp(serial_info)))
@@ -141,11 +139,11 @@ def run():
allow_guest_control=True,
backing=Serial.BackingSpec(type=Serial.BackingType.FILE,
file=serial_port_datastore_path))
- serial = serial_svc.create(vm, serial_create_spec)
+ serial = client.vcenter.vm.hardware.Serial.create(vm, serial_create_spec)
print('vm.hardware.Serial.create({}, {}) -> {}'.
format(vm, serial_create_spec, serial))
serials_to_delete.append(serial)
- serial_info = serial_svc.get(vm, serial)
+ serial_info = client.vcenter.vm.hardware.Serial.get(vm, serial)
print('vm.hardware.Serial.get({}, {}) -> {}'.
format(vm, serial, pp(serial_info)))
@@ -157,11 +155,11 @@ def run():
allow_guest_control=True,
backing=Serial.BackingSpec(type=Serial.BackingType.NETWORK_SERVER,
network_location=serial_port_network_server_location))
- serial = serial_svc.create(vm, serial_create_spec)
+ serial = client.vcenter.vm.hardware.Serial.create(vm, serial_create_spec)
print('vm.hardware.Serial.create({}, {}) -> {}'.
format(vm, serial_create_spec, serial))
serials_to_delete.append(serial)
- serial_info = serial_svc.get(vm, serial)
+ serial_info = client.vcenter.vm.hardware.Serial.get(vm, serial)
print('vm.hardware.Serial.get({}, {}) -> {}'.
format(vm, serial, pp(serial_info)))
@@ -175,43 +173,43 @@ def run():
backing=Serial.BackingSpec(type=Serial.BackingType.NETWORK_CLIENT,
network_location=serial_port_network_client_location,
proxy=serial_port_network_proxy))
- serial_svc.update(vm, serial, serial_update_spec)
+ client.vcenter.vm.hardware.Serial.update(vm, serial, serial_update_spec)
print('vm.hardware.Serial.update({}, {}) -> {}'.
format(vm, serial_update_spec, serial))
- serial_info = serial_svc.get(vm, serial)
+ serial_info = client.vcenter.vm.hardware.Serial.get(vm, serial)
print('vm.hardware.Serial.get({}, {}) -> {}'.
format(vm, serial, pp(serial_info)))
print('\n# Starting VM to run connect/disconnect sample')
print('vm.Power.start({})'.format(vm))
- vm_power_svc.start(vm)
- serial_info = serial_svc.get(vm, serial)
+ client.vcenter.vm.Power.start(vm)
+ serial_info = client.vcenter.vm.hardware.Serial.get(vm, serial)
print('vm.hardware.Serial.get({}, {}) -> {}'.
format(vm, serial, pp(serial_info)))
print('\n# Example: Connect Serial port after powering on VM')
- serial_svc.connect(vm, serial)
+ client.vcenter.vm.hardware.Serial.connect(vm, serial)
print('vm.hardware.Serial.connect({}, {})'.format(vm, serial))
- serial_info = serial_svc.get(vm, serial)
+ serial_info = client.vcenter.vm.hardware.Serial.get(vm, serial)
print('vm.hardware.Serial.get({}, {}) -> {}'.
format(vm, serial, pp(serial_info)))
print('\n# Example: Disconnect Serial port while VM is powered on')
- serial_svc.disconnect(vm, serial)
+ client.vcenter.vm.hardware.Serial.disconnect(vm, serial)
print('vm.hardware.Serial.disconnect({}, {})'.format(vm, serial))
- serial_info = serial_svc.get(vm, serial)
+ serial_info = client.vcenter.vm.hardware.Serial.get(vm, serial)
print('vm.hardware.Serial.get({}, {}) -> {}'.
format(vm, serial, pp(serial_info)))
print('\n# Stopping VM after connect/disconnect sample')
print('vm.Power.start({})'.format(vm))
- vm_power_svc.stop(vm)
- serial_info = serial_svc.get(vm, serial)
+ client.vcenter.vm.Power.stop(vm)
+ serial_info = client.vcenter.vm.hardware.Serial.get(vm, serial)
print('vm.hardware.Serial.get({}, {}) -> {}'.
format(vm, serial, pp(serial_info)))
# List all Serial ports for a VM
- serial_summaries = serial_svc.list(vm=vm)
+ serial_summaries = client.vcenter.vm.hardware.Serial.list(vm=vm)
print('vm.hardware.Serial.list({}) -> {}'.format(vm, serial_summaries))
# Always cleanup output file so the VM can be powered on next time
@@ -221,10 +219,10 @@ def run():
def cleanup():
print('\n# Delete VM Serial ports that were added')
for serial in serials_to_delete:
- serial_svc.delete(vm, serial)
+ client.vcenter.vm.hardware.Serial.delete(vm, serial)
print('vm.hardware.Serial.delete({}, {})'.format(vm, serial))
- serial_summaries = serial_svc.list(vm)
+ serial_summaries = client.vcenter.vm.hardware.Serial.list(vm)
print('vm.hardware.Serial.list({}) -> {}'.format(vm, serial_summaries))
if set(orig_serial_summaries) != set(serial_summaries):
print('vm.hardware.Serial WARNING: '
@@ -243,7 +241,7 @@ def cleanup_backends():
"""
datacenter_name = testbed.config['SERIAL_PORT_DATACENTER_NAME']
datastore_path = testbed.config['SERIAL_PORT_DATASTORE_PATH']
- delete_file(stub_config,
+ delete_file(client,
service_instance,
'Serial Port',
datacenter_name,
diff --git a/samples/vsphere/vcenter/vm/list_vms.py b/samples/vsphere/vcenter/vm/list_vms.py
index 365fc8a9..9825498e 100644
--- a/samples/vsphere/vcenter/vm/list_vms.py
+++ b/samples/vsphere/vcenter/vm/list_vms.py
@@ -17,14 +17,13 @@ __author__ = 'VMware, Inc.'
__copyright__ = 'Copyright 2017 VMware, Inc. All rights reserved.'
__vcenter_version__ = '6.5+'
-import atexit
+from pprint import pprint
-from com.vmware.vcenter_client import VM
+from vmware.vapi.vsphere.client import create_vsphere_client
from samples.vsphere.common import sample_cli
from samples.vsphere.common import sample_util
-from samples.vsphere.common.service_manager import ServiceManager
-from pprint import pprint
+from samples.vsphere.common.ssl_helper import get_unverified_session
class ListVM(object):
@@ -33,27 +32,20 @@ class ListVM(object):
Sample Prerequisites:
vCenter/ESX
"""
-
def __init__(self):
- self.service_manager = None
-
- def setup(self):
parser = sample_cli.build_arg_parser()
args = sample_util.process_cli_args(parser.parse_args())
-
- self.service_manager = ServiceManager(args.server,
- args.username,
- args.password,
- args.skipverification)
- self.service_manager.connect()
- atexit.register(self.service_manager.disconnect)
+ session = get_unverified_session() if args.skipverification else None
+ self.client = create_vsphere_client(server=args.server,
+ username=args.username,
+ password=args.password,
+ session=session)
def run(self):
"""
List VMs present in server
"""
- vm_svc = VM(self.service_manager.stub_config)
- list_of_vms = vm_svc.list()
+ list_of_vms = self.client.vcenter.VM.list()
print("----------------------------")
print("List Of VMs")
print("----------------------------")
@@ -63,7 +55,6 @@ class ListVM(object):
def main():
list_vm = ListVM()
- list_vm.setup()
list_vm.run()
diff --git a/samples/vsphere/vcenter/vm/main.py b/samples/vsphere/vcenter/vm/main.py
index 37f15f87..282298b5 100644
--- a/samples/vsphere/vcenter/vm/main.py
+++ b/samples/vsphere/vcenter/vm/main.py
@@ -1,6 +1,6 @@
"""
* *******************************************************
-* Copyright (c) VMware, Inc. 2016. All Rights Reserved.
+* Copyright (c) VMware, Inc. 2016-2018. All Rights Reserved.
* SPDX-License-Identifier: MIT
* *******************************************************
*
@@ -12,7 +12,6 @@
"""
__author__ = 'VMware, Inc.'
-__copyright__ = 'Copyright 2016 VMware, Inc. All rights reserved.'
__vcenter_version__ = '6.5+'
import samples.vsphere.vcenter.helper.network_helper
@@ -57,24 +56,24 @@ class VMSetup(object):
###########################################################################
standard_network = samples.vsphere.vcenter.helper \
.network_helper.get_standard_network_backing(
- context.stub_config,
+ context.client,
context.testbed.config['STDPORTGROUP_NAME'],
context.testbed.config['VM_DATACENTER_NAME'])
print('standard_network={}'.format(standard_network))
distributed_network = samples.vsphere.vcenter.helper \
.network_helper.get_distributed_network_backing(
- context.stub_config,
+ context.client,
context.testbed.config['VDPORTGROUP1_NAME'],
context.testbed.config['VM_DATACENTER_NAME'])
print('distributed_network={}'.format(distributed_network))
print('=' * 79)
- self.default_vm = CreateDefaultVM(context.stub_config,
+ self.default_vm = CreateDefaultVM(context.client,
placement_spec)
- self.basic_vm = CreateBasicVM(context.stub_config, placement_spec)
- self.exhaustive_vm = CreateExhaustiveVM(context.stub_config,
+ self.basic_vm = CreateBasicVM(context.client, placement_spec)
+ self.exhaustive_vm = CreateExhaustiveVM(context.client,
placement_spec,
standard_network,
distributed_network)
@@ -84,9 +83,9 @@ class VMSetup(object):
def cleanup(self):
print('Cleanup Samples Started')
- CreateDefaultVM(self.context.stub_config).cleanup()
- CreateBasicVM(self.context.stub_config).cleanup()
- CreateExhaustiveVM(self.context.stub_config).cleanup()
+ CreateDefaultVM(self.context.client).cleanup()
+ CreateBasicVM(self.context.client).cleanup()
+ CreateExhaustiveVM(self.context.client).cleanup()
print('Cleanup Samples Complete\n')
def validate(self):
diff --git a/samples/vsphere/vcenter/vm/placement.py b/samples/vsphere/vcenter/vm/placement.py
index 38431cbb..f29fe0fb 100644
--- a/samples/vsphere/vcenter/vm/placement.py
+++ b/samples/vsphere/vcenter/vm/placement.py
@@ -1,6 +1,6 @@
"""
* *******************************************************
-* Copyright (c) VMware, Inc. 2016. All Rights Reserved.
+* Copyright (c) VMware, Inc. 2016-2018. All Rights Reserved.
* SPDX-License-Identifier: MIT
* *******************************************************
*
@@ -12,7 +12,6 @@
"""
__author__ = 'VMware, Inc.'
-__copyright__ = 'Copyright 2016 VMware, Inc. All rights reserved.'
__vcenter_version__ = '6.5+'
from com.vmware.vcenter_client import (Cluster, Datastore, Folder, ResourcePool,
@@ -45,17 +44,13 @@ def get_placement_spec_for_cluster(context):
# Select a Cluster meeting our requirements
datacenter_name = context.testbed.config['DATACENTER2_NAME']
datacenter = context.testbed.entities['DATACENTER_IDS'][datacenter_name]
-
cluster_name = context.testbed.config['CLUSTER1_NAME']
- names = set([cluster_name])
- cluster_svc = Cluster(context.stub_config)
filter = Cluster.FilterSpec(
names=set([cluster_name]),
datacenters=set([datacenter]))
- cluster_summaries = cluster_svc.list(filter=filter)
+ cluster_summaries = context.client.vcenter.Cluster.list(filter=filter)
- cluster = None
if len(cluster_summaries) > 0:
cluster = cluster_summaries[0].cluster
print("Selecting Cluster '{}' ({})".format(cluster_name, cluster))
@@ -71,13 +66,11 @@ def get_placement_spec_for_cluster(context):
folder_name = context.testbed.config['VM_FOLDER2_NAME']
- folder_svc = Folder(context.stub_config)
filter = Folder.FilterSpec(
names=set([folder_name]),
datacenters=set([datacenter]))
- folder_summaries = folder_svc.list(filter=filter)
+ folder_summaries = context.client.vcenter.Folder.list(filter=filter)
- folder = None
if len(folder_summaries) > 0:
folder = folder_summaries[0].folder
print("Selecting Folder '{}' ({})".format(folder_name, folder))
@@ -95,13 +88,11 @@ def get_placement_spec_for_cluster(context):
# TODO Parameterize based on NFS or VMFS
datastore_name = context.testbed.config['NFS_DATASTORE_NAME']
- datastore_svc = Datastore(context.stub_config)
filter = Datastore.FilterSpec(
names=set([datastore_name]),
datacenters=set([datacenter]))
- datastore_summaries = datastore_svc.list(filter=filter)
+ datastore_summaries = context.client.vcenter.Datastore.list(filter=filter)
- datastore = None
if len(datastore_summaries) > 0:
datastore = datastore_summaries[0].datastore
print("Selecting Datastore '{}' ({})".format(datastore_name, datastore))
@@ -122,11 +113,9 @@ def get_placement_spec_for_resource_pool(context):
datacenter_name = context.testbed.config['DATACENTER2_NAME']
datacenter = context.testbed.entities['DATACENTER_IDS'][datacenter_name]
- resource_pool_svc = ResourcePool(context.stub_config)
filter = ResourcePool.FilterSpec(datacenters=set([datacenter]))
- resource_pool_summaries = resource_pool_svc.list(filter=filter)
+ resource_pool_summaries = context.client.vcenter.ResourcePool.list(filter=filter)
- resource_pool = None
if len(resource_pool_summaries) > 0:
resource_pool = resource_pool_summaries[0].resource_pool
print('Selecting ResourcePool ({})'.format(resource_pool))
@@ -143,13 +132,11 @@ def get_placement_spec_for_resource_pool(context):
folder_name = context.testbed.config['VM_FOLDER2_NAME']
- folder_svc = Folder(context.stub_config)
filter = Folder.FilterSpec(
names=set([folder_name]),
datacenters=set([datacenter]))
- folder_summaries = folder_svc.list(filter=filter)
+ folder_summaries = context.client.vcenter.Folder.list(filter=filter)
- folder = None
if len(folder_summaries) > 0:
folder = folder_summaries[0].folder
print("Selecting Folder '{}' ({})".format(folder_name, folder))
@@ -166,13 +153,11 @@ def get_placement_spec_for_resource_pool(context):
# TODO Parameterize based on NFS or VMFS
datastore_name = context.testbed.config['NFS_DATASTORE_NAME']
- datastore_svc = Datastore(context.stub_config)
filter = Datastore.FilterSpec(
names=set([datastore_name]),
datacenters=set([datacenter]))
- datastore_summaries = datastore_svc.list(filter=filter)
+ datastore_summaries = context.client.vcenter.Datastore.list(filter=filter)
- datastore = None
if len(datastore_summaries) > 0:
datastore = datastore_summaries[0].datastore
print("Selecting Datastore '{}' ({})".format(datastore_name, datastore))
diff --git a/samples/vsphere/vcenter/vm/power.py b/samples/vsphere/vcenter/vm/power.py
index 83286311..2ddeb51a 100644
--- a/samples/vsphere/vcenter/vm/power.py
+++ b/samples/vsphere/vcenter/vm/power.py
@@ -2,7 +2,7 @@
"""
* *******************************************************
-* Copyright (c) VMware, Inc. 2016. All Rights Reserved.
+* Copyright (c) VMware, Inc. 2016-2018. All Rights Reserved.
* SPDX-License-Identifier: MIT
* *******************************************************
*
@@ -14,18 +14,18 @@
"""
__author__ = 'VMware, Inc.'
-__copyright__ = 'Copyright 2016 VMware, Inc. All rights reserved.'
__vcenter_version__ = '6.5+'
-import atexit
-
from com.vmware.vcenter.vm_client import Power
-from samples.vsphere.common import vapiconnect
+from vmware.vapi.vsphere.client import create_vsphere_client
+
from samples.vsphere.common.sample_util import parse_cli_args_vm
from samples.vsphere.common.sample_util import pp
from samples.vsphere.vcenter.setup import testbed
from samples.vsphere.vcenter.helper.vm_helper import get_vm
+from samples.vsphere.common.ssl_helper import get_unverified_session
+
"""
Demonstrates the virtual machine power lifecycle
@@ -36,78 +36,75 @@ The sample needs an existing VM.
vm = None
vm_name = None
-stub_config = None
-vm_power_svc = None
+client = None
cleardata = False
def setup(context=None):
- global stub_config, cleardata, vm_name
+ global client, cleardata, vm_name
if context:
# Run sample suite via setup script
vm_name = testbed.config['VM_NAME_DEFAULT']
- stub_config = context.stub_config
+ client = context.client
else:
# Run sample in standalone mode
server, username, password, cleardata, skip_verification, vm_name = \
parse_cli_args_vm(testbed.config['VM_NAME_DEFAULT'])
- stub_config = vapiconnect.connect(server,
- username,
- password,
- skip_verification)
- atexit.register(vapiconnect.logout, stub_config)
+ session = get_unverified_session() if skip_verification else None
+
+ # Connect to vSphere client
+ client = create_vsphere_client(server=server,
+ username=username,
+ password=password,
+ session=session)
def run():
global vm
- vm = get_vm(stub_config, vm_name)
+ vm = get_vm(client, vm_name)
if not vm:
raise Exception('Sample requires an existing vm with name ({}).'
'Please create the vm first.'.format(vm_name))
print("Using VM '{}' ({}) for Power Sample".format(vm_name, vm))
- # Create Power stub used for making requests
- global vm_power_svc
- vm_power_svc = Power(stub_config)
-
# Get the vm power state
print('\n# Example: Get current vm power state')
- status = vm_power_svc.get(vm)
+ status = client.vcenter.vm.Power.get(vm)
print('vm.Power.get({}) -> {}'.format(vm, pp(status)))
# Power off the vm if it is on
if status == Power.Info(state=Power.State.POWERED_ON):
print('\n# Example: VM is powered on, power it off')
- vm_power_svc.stop(vm)
+ client.vcenter.vm.Power.stop(vm)
print('vm.Power.stop({})'.format(vm))
# Power on the vm
print('# Example: Power on the vm')
- vm_power_svc.start(vm)
+ client.vcenter.vm.Power.start(vm)
print('vm.Power.start({})'.format(vm))
# Suspend the vm
print('\n# Example: Suspend the vm')
- vm_power_svc.suspend(vm)
+ client.vcenter.vm.Power.suspend(vm)
print('vm.Power.suspend({})'.format(vm))
# Resume the vm
print('\n# Example: Resume the vm')
- vm_power_svc.start(vm)
+ client.vcenter.vm.Power.start(vm)
print('vm.Power.start({})'.format(vm))
# Reset the vm
print('\n# Example: Reset the vm')
- vm_power_svc.reset(vm)
+ client.vcenter.vm.Power.reset(vm)
print('vm.Power.reset({})'.format(vm))
def cleanup():
# Power off the vm
print('\n# Cleanup: Power off the vm')
- vm_power_svc.stop(vm)
+ client.vcenter.vm.Power.stop(vm)
print('vm.Power.stop({})'.format(vm))
- status = vm_power_svc.get(vm)
+ status = client.vcenter.vm.Power.get(vm)
if status == Power.Info(state=Power.State.POWERED_OFF,
clean_power_off=True):
print('VM is powered off')