From 18b2ed120ae9e9bbc8dd5f38f241be72d4cc7458 Mon Sep 17 00:00:00 2001 From: het Date: Thu, 22 Nov 2018 15:51:21 +0800 Subject: [PATCH] Remove tabulate from the dependency list Signed-off-by: het --- requirements.txt | 1 - samples/vmc/helpers/vmc_task_helper.py | 15 +- samples/vmc/networks/dns_crud.py | 8 +- samples/vmc/networks/firewall_rules_crud.py | 132 +++++++++-------- samples/vmc/networks/ipsec_vpns_crud.py | 125 ++++++++-------- samples/vmc/networks/logical_network_crud.py | 135 +++++++++--------- samples/vmc/networks/nat_rule_crud.py | 101 +++++++------ samples/vmc/networks/public_ip_crud.py | 95 ++++++------ samples/vmc/orgs/organization_operations.py | 32 ++--- ...t_to_vsphere_with_default_sddc_password.py | 44 +++--- samples/vmc/sddc/sddc_crud.py | 128 +++++++++-------- .../vsphere/backuprestore/backup_job_list.py | 27 ++-- .../vsphere/backuprestore/backup_schedule.py | 83 +++++------ .../vsphere/logforwarding/log_forwarding.py | 67 ++++----- samples/vsphere/services/services_list.py | 27 ++-- 15 files changed, 494 insertions(+), 526 deletions(-) diff --git a/requirements.txt b/requirements.txt index 015c92d9..91c44f5b 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,7 +1,6 @@ pyVmomi >= 6.7 suds ; python_version < '3' suds-jurko ; python_version >= '3.0' -tabulate vapi-client-bindings == 1.5.0 vmc-client-bindings vapi-vmc-client diff --git a/samples/vmc/helpers/vmc_task_helper.py b/samples/vmc/helpers/vmc_task_helper.py index 73163b10..e20522df 100644 --- a/samples/vmc/helpers/vmc_task_helper.py +++ b/samples/vmc/helpers/vmc_task_helper.py @@ -1,6 +1,6 @@ """ * ******************************************************* -* Copyright (c) VMware, Inc. 2017. All Rights Reserved. +* Copyright (c) VMware, Inc. 2017, 2018. All Rights Reserved. * SPDX-License-Identifier: MIT * ******************************************************* * @@ -14,7 +14,6 @@ __author__ = 'VMware, Inc.' from time import sleep -from tabulate import tabulate from com.vmware.vmc.model_client import Task @@ -44,8 +43,8 @@ def wait_for_task(task_client, org_id, task_id, interval_sec=60): print('\nTask {} cancelled'.format(task_id)) return False else: - print("Estimated time remaining: {} minutes". - format(task.estimated_remaining_minutes)) + print("Estimated time remaining: {} minutes".format( + task.estimated_remaining_minutes)) sleep(interval_sec) @@ -56,9 +55,7 @@ def list_all_tasks(task_client, org_id): :param org_id: organization id """ tasks = task_client.list(org_id) - headers = ['ID', 'Status', 'Progress', 'Started', 'User'] - table = [] for task in tasks: - table.append([task.id, task.status, task.progress_percent, - task.start_time, task.user_name]) - print(tabulate(table, headers)) + print('ID: {}, Status: {}, Progress: {}, Started: {}, User: {}'.format( + task.id, task.status, task.progress_percent, task.start_time, + task.user_name)) diff --git a/samples/vmc/networks/dns_crud.py b/samples/vmc/networks/dns_crud.py index e437f027..4ce8fc2e 100644 --- a/samples/vmc/networks/dns_crud.py +++ b/samples/vmc/networks/dns_crud.py @@ -16,8 +16,8 @@ __author__ = 'VMware, Inc.' import argparse -from com.vmware.vmc.model_client import * -from tabulate import tabulate + +from com.vmware.vmc.model_client import DnsForwarders from vmware.vapi.vmc.client import create_vmc_client @@ -162,9 +162,7 @@ class DNSCrud(object): 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'])) + print('Name: {}, IP Addresses: {}'.format(dns.name, ips)) def main(): diff --git a/samples/vmc/networks/firewall_rules_crud.py b/samples/vmc/networks/firewall_rules_crud.py index 6b827191..b42fa6a9 100644 --- a/samples/vmc/networks/firewall_rules_crud.py +++ b/samples/vmc/networks/firewall_rules_crud.py @@ -1,5 +1,4 @@ #!/usr/bin/env python - """ * ******************************************************* * Copyright (c) VMware, Inc. 2018. All Rights Reserved. @@ -16,8 +15,10 @@ __author__ = 'VMware, Inc.' import argparse -from com.vmware.vmc.model_client import * -from tabulate import tabulate + +from com.vmware.vmc.model_client import (AddressFWSourceDestination, + Application, FirewallRules, + Nsxfirewallrule, Nsxfirewallservice) from vmware.vapi.vmc.client import create_vmc_client @@ -33,31 +34,35 @@ class FirewallRulesCrud(object): 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( + '-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( + '-o', '--org-id', required=True, help='Organization identifier.') - parser.add_argument('-s', '--sddc-id', - required=True, - help='Sddc 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( + '--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( + '--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') + parser.add_argument( + '-c', + '--cleardata', + action='store_true', + help='Clean up after sample run') args = parser.parse_args() self.edge_id = None @@ -74,13 +79,14 @@ class FirewallRulesCrud(object): # 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)) + 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)) + raise ValueError("SDDC with ID {} doesn't exist in org {}".format( + self.sddc_id, self.org_id)) def create_firewall_rule(self): @@ -91,8 +97,7 @@ class FirewallRulesCrud(object): print('# List network gateway edges:') edges = self.vmc_client.orgs.sddcs.networks.Edges.get( - org=self.org_id, - sddc=self.sddc_id, + org=self.org_id, sddc=self.sddc_id, edge_type='gatewayServices').edge_page.data print(' Management Gateway ID: {}'.format(edges[0].id)) @@ -104,8 +109,10 @@ class FirewallRulesCrud(object): # 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] + ip_address = [ + sddc.resource_config.vc_public_ip, + sddc.resource_config.vc_management_ip + ] # TODO: IPs for ESXi # TODO: IPs for Site Recovery Manager @@ -121,24 +128,27 @@ class FirewallRulesCrud(object): 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.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, @@ -152,9 +162,7 @@ class FirewallRulesCrud(object): 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) + org=self.org_id, sddc=self.sddc_id, edge_id=self.edge_id) fw_rules = fw_config.firewall_rules.firewall_rules @@ -163,8 +171,8 @@ class FirewallRulesCrud(object): self.rule_id = r.rule_id break else: - raise Exception("Can't find firewall rule with name {}". - format(self.rule_name)) + 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, @@ -205,18 +213,16 @@ class FirewallRulesCrud(object): 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)) + 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'])) + print( + 'Name: {}, Action: {}, Source IPs: {}, Destination IPs: {},Service Protocol: {}, Service Port: {}' + .format(rule.name, rule.action, rule.source.ip_address, + rule.destination.ip_address, + rule.application.service[0].protocol, + rule.application.service[0].port)) def main(): diff --git a/samples/vmc/networks/ipsec_vpns_crud.py b/samples/vmc/networks/ipsec_vpns_crud.py index 8dbcdc81..e80046b0 100644 --- a/samples/vmc/networks/ipsec_vpns_crud.py +++ b/samples/vmc/networks/ipsec_vpns_crud.py @@ -1,5 +1,4 @@ #!/usr/bin/env python - """ * ******************************************************* * Copyright (c) VMware, Inc. 2018. All Rights Reserved. @@ -16,8 +15,8 @@ __author__ = 'VMware, Inc.' import argparse -from com.vmware.vmc.model_client import * -from tabulate import tabulate + +from com.vmware.vmc.model_client import Ipsec, IpsecSite, IpsecSites, Subnets from vmware.vapi.vmc.client import create_vmc_client @@ -33,51 +32,60 @@ class IpsecVPNsCrud(object): 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( + '-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( + '-o', '--org-id', required=True, help='Organization identifier.') - parser.add_argument('-s', '--sddc-id', - required=True, - help='Sddc 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( + '--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( + '--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( + '--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( + '--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( + '--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( + '--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( + '--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') + parser.add_argument( + '-c', + '--cleardata', + action='store_true', + help='Clean up after sample run') args = parser.parse_args() self.edge_id = None @@ -98,18 +106,18 @@ class IpsecVPNsCrud(object): # 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)) + 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)) + 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, + org=self.org_id, sddc=self.sddc_id, edge_type='gatewayServices').edge_page.data print(' Management Gateway ID: {}'.format(edges[0].id)) @@ -134,8 +142,7 @@ class IpsecVPNsCrud(object): enabled=True, local_subnets=Subnets(subnets=[self.local_networks])) - ipsec = Ipsec(enabled=True, - sites=IpsecSites(sites=[ipsec_site])) + 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( @@ -157,9 +164,7 @@ class IpsecVPNsCrud(object): 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) + 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: @@ -178,32 +183,26 @@ class IpsecVPNsCrud(object): 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)) + 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, + 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)) + 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'])) + print( + 'Name: {}, ID: {}, Public IPs: {}, Private IP: {}, Remote Networks: {}, Local Gateway IP: {}, Local Network {}' + .format(site.name, site.site_id, site.peer_ip, site.peer_id, + site.peer_subnets, site.local_ip, site.local_subnets)) def main(): diff --git a/samples/vmc/networks/logical_network_crud.py b/samples/vmc/networks/logical_network_crud.py index bf8ffe96..6294463d 100644 --- a/samples/vmc/networks/logical_network_crud.py +++ b/samples/vmc/networks/logical_network_crud.py @@ -1,5 +1,4 @@ #!/usr/bin/env python - """ * ******************************************************* * Copyright (c) VMware, Inc. 2018. All Rights Reserved. @@ -16,8 +15,12 @@ __author__ = 'VMware, Inc.' import argparse -from com.vmware.vmc.model_client import * -from tabulate import tabulate + +from com.vmware.vmc.model_client import (L2Extension, SddcNetwork, + SddcNetworkAddressGroups, + SddcNetworkAddressGroup, + SddcNetworkDhcpConfig, + SddcNetworkDhcpIpPool) from vmware.vapi.vmc.client import create_vmc_client @@ -33,33 +36,38 @@ class LogicalNetworkCrud(object): 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( + '-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( + '-o', '--org-id', required=True, help='Organization identifier.') - parser.add_argument('-s', '--sddc-id', - required=True, - help='Sddc 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( + '--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( + '--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( + '--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') + parser.add_argument( + '-c', + '--cleardata', + action='store_true', + help='Clean up after sample run') args = parser.parse_args() self.network_id = None @@ -75,61 +83,57 @@ class LogicalNetworkCrud(object): # 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)) + 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)) + 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 + 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) + 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, + 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( + subnets=SddcNetworkAddressGroups(address_groups=[ + SddcNetworkAddressGroup( prefix_length=self.prefix_length, - primary_address=self.primary_address)]), + 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)])) + 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) + org=self.org_id, sddc=self.sddc_id, sddc_network=network) - print('\n# New logical network "{}" is added'.format(self.network_name)) + 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 + org=self.org_id, sddc=self.sddc_id).data self.print_output(networks) @@ -138,23 +142,19 @@ class LogicalNetworkCrud(object): self.network_id = network.id break else: - raise Exception("Can't find logical network with name {}". - format(self.network_name)) + 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) + 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) + 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 @@ -166,9 +166,7 @@ class LogicalNetworkCrud(object): 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) + org=self.org_id, sddc=self.sddc_id, network_id=self.network_id) print('# List the updated logical network specs') self.print_output([network]) @@ -176,21 +174,18 @@ class LogicalNetworkCrud(object): 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)) + 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)]) - print(tabulate(table, ['Gateway', 'Network ID', 'Network Name', - 'Subnets'])) + print('Gateway: {}, Network ID: {}, Network Name: {}, Subnets: {}'. + format( + network.cgw_name, network.id, network.name, + '{}/{}'.format( + network.subnets.address_groups[0].primary_address, + network.subnets.address_groups[0].prefix_length))) def main(): diff --git a/samples/vmc/networks/nat_rule_crud.py b/samples/vmc/networks/nat_rule_crud.py index 5ec20fa0..80179fd4 100644 --- a/samples/vmc/networks/nat_rule_crud.py +++ b/samples/vmc/networks/nat_rule_crud.py @@ -1,5 +1,4 @@ #!/usr/bin/env python - """ * ******************************************************* * Copyright (c) VMware, Inc. 2018. All Rights Reserved. @@ -16,8 +15,7 @@ __author__ = 'VMware, Inc.' import argparse -from com.vmware.vmc.model_client import * -from tabulate import tabulate +from com.vmware.vmc.model_client import Nsxnatrule, NatRules from vmware.vapi.vmc.client import create_vmc_client @@ -33,32 +31,36 @@ class NatRuleCrud(object): 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( + '-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( + '-o', '--org-id', required=True, help='Organization identifier.') - parser.add_argument('-s', '--sddc-id', - required=True, - help='Sddc 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( + '--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( + '--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( + '--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') + parser.add_argument( + '-c', + '--cleardata', + action='store_true', + help='Clean up after sample run') args = parser.parse_args() self.network_id = None @@ -77,17 +79,17 @@ class NatRuleCrud(object): # 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)) + 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)) + 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, + 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 @@ -107,16 +109,17 @@ class NatRuleCrud(object): 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) + 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, @@ -129,8 +132,7 @@ class NatRuleCrud(object): 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, + org=self.org_id, sddc=self.sddc_id, edge_id=self.edge_id).rules.nat_rules_dtos self.print_output(rules) @@ -161,13 +163,12 @@ class NatRuleCrud(object): 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)) + 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, + org=self.org_id, sddc=self.sddc_id, edge_id=self.edge_id).rules.nat_rules_dtos result = [] for rule in rules: @@ -176,14 +177,12 @@ class NatRuleCrud(object): 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'])) + print( + 'Description: {}, Rule ID: {}, Action: {}, Public IP: {}, Public Ports: {}, Internal IP: {}, Internal Ports: {}' + .format(rule.description, rule.rule_id, rule.action, + rule.original_address, rule.original_port, + rule.translated_address, rule.translated_port)) def main(): diff --git a/samples/vmc/networks/public_ip_crud.py b/samples/vmc/networks/public_ip_crud.py index d8e0499d..768f0035 100644 --- a/samples/vmc/networks/public_ip_crud.py +++ b/samples/vmc/networks/public_ip_crud.py @@ -1,5 +1,4 @@ #!/usr/bin/env python - """ * ******************************************************* * Copyright (c) VMware, Inc. 2018. All Rights Reserved. @@ -16,8 +15,7 @@ __author__ = 'VMware, Inc.' import argparse -from com.vmware.vmc.model_client import * -from tabulate import tabulate +from com.vmware.vmc.model_client import SddcAllocatePublicIpSpec from vmware.vapi.vmc.client import create_vmc_client from samples.vmc.helpers.vmc_task_helper import wait_for_task @@ -35,25 +33,28 @@ class PublicIPsCrud(object): 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( + '-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( + '-o', '--org-id', required=True, help='Organization identifier.') - parser.add_argument('-s', '--sddc-id', - required=True, - help='Sddc 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( + '--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') + parser.add_argument( + '-c', + '--cleardata', + action='store_true', + help='Clean up after sample run') args = parser.parse_args() self.ip_id = None @@ -67,64 +68,58 @@ class PublicIPsCrud(object): # 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)) + 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)) + 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) + 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) + 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) + 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)) + print('# Successfully requested public IP {}'.format( + ip.public_ip)) break else: - raise Exception("Can't find public IP with notes {}". - format(self.notes)) + 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) + 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) + 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) + org=self.org_id, sddc=self.sddc_id, id=self.ip_id) ip.name = 'Updated ' + ip.name self.vmc_client.orgs.sddcs.Publicips.update( @@ -135,9 +130,7 @@ class PublicIPsCrud(object): 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) + org=self.org_id, sddc=self.sddc_id, id=self.ip_id) print('# List the updated public IP') self.print_output([ip]) @@ -145,17 +138,13 @@ class PublicIPsCrud(object): 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)) + 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'])) + print('Public IP: {}, ID: {}, Notes: {}'.format( + ip.public_ip, ip.allocation_id, ip.name)) def main(): diff --git a/samples/vmc/orgs/organization_operations.py b/samples/vmc/orgs/organization_operations.py index 7e5c40cb..6f8707dd 100644 --- a/samples/vmc/orgs/organization_operations.py +++ b/samples/vmc/orgs/organization_operations.py @@ -1,8 +1,7 @@ #!/usr/bin/env python - """ * ******************************************************* -* Copyright (c) VMware, Inc. 2017. All Rights Reserved. +* Copyright (c) VMware, Inc. 2017, 2018. All Rights Reserved. * SPDX-License-Identifier: MIT * ******************************************************* * @@ -18,7 +17,6 @@ __author__ = 'VMware, Inc.' import requests import argparse import atexit -from tabulate import tabulate from vmware.vapi.vmc.client import create_vmc_client @@ -41,9 +39,11 @@ class OperationsOnOrganizations(object): parser = argparse.ArgumentParser( formatter_class=argparse.ArgumentDefaultsHelpFormatter) - parser.add_argument('-r', '--refresh-token', - required=True, - help='VMware Cloud API refresh token') + parser.add_argument( + '-r', + '--refresh-token', + required=True, + help='VMware Cloud API refresh token') self.refresh_token = parser.parse_args().refresh_token @@ -59,25 +59,21 @@ class OperationsOnOrganizations(object): raise ValueError('The sample requires at least one org associated' 'with the calling user') print("\n# Example: List organizations") - table = [] for org in orgs: - table.append([org.id, org.display_name]) - print(tabulate(table, ['ID', 'Display Name'])) + print('ID: {}, Display Name: {}'.format(org.id, org.display_name)) self.org = orgs[0] def get_org_detail(self): org = self.org - print('\n# Example: List details of the first organization {}:'. - format(org.id)) + print('\n# Example: List details of the first organization {}:'.format( + org.id)) - headers = ['ID', 'Display Name', 'Name', 'Created', 'Updated', - 'Project State', 'SLA'] - data = [org.id, org.display_name, org.name, - org.created.strftime('%m/%d/%Y'), - org.updated.strftime('%m/%d/%Y'), - org.project_state, org.sla] - print(tabulate([data], headers)) + print( + 'ID: {}, Display Name: {}, Name: {}, Created: {}, Updated: {}, Project State: {}' + .format(org.id, org.display_name, org.name, + org.created.strftime('%m/%d/%Y'), + org.updated.strftime('%m/%d/%Y'), org.project_state)) def main(): diff --git a/samples/vmc/sddc/connect_to_vsphere_with_default_sddc_password.py b/samples/vmc/sddc/connect_to_vsphere_with_default_sddc_password.py index 17c030b2..292ab9fa 100644 --- a/samples/vmc/sddc/connect_to_vsphere_with_default_sddc_password.py +++ b/samples/vmc/sddc/connect_to_vsphere_with_default_sddc_password.py @@ -1,5 +1,4 @@ #!/usr/bin/env python - """ * ******************************************************* * Copyright (c) VMware, Inc. 2018. All Rights Reserved. @@ -21,7 +20,6 @@ import argparse from com.vmware.vapi.std.errors_client import NotFound from com.vmware.vmc.model_client import ErrorResponse from six.moves.urllib import parse -from tabulate import tabulate from vmware.vapi.vmc.client import create_vmc_client from vmware.vapi.vsphere.client import create_vsphere_client @@ -38,17 +36,17 @@ class ConnectTovSphereWithDefaultCredentials(object): def __init__(self): parser = argparse.ArgumentParser() - parser.add_argument('-r', '--refresh-token', - required=True, - help='VMware Cloud API refresh token') + 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( + '-o', '--org-id', required=True, help='Organization identifier.') - parser.add_argument('-s', '--sddc-id', - required=True, - help='Sddc Identifier.') + parser.add_argument( + '-s', '--sddc-id', required=True, help='Sddc Identifier.') args = parser.parse_args() self.refresh_token = args.refresh_token @@ -59,12 +57,14 @@ class ConnectTovSphereWithDefaultCredentials(object): # Connect to VMware Cloud on AWS vmc_client = create_vmc_client(self.refresh_token) - print('\n# Example: Successfully login to VMware Cloud on AWS instance') + print( + '\n# Example: Successfully login to VMware Cloud on AWS instance') # Check if the organization exists orgs = 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)) + raise ValueError("Org with ID {} doesn't exist".format( + self.org_id)) # Check if the SDDC exists try: @@ -78,18 +78,20 @@ class ConnectTovSphereWithDefaultCredentials(object): # Connect to vSphere client using the initial cloud admin credentials. # Please use the new credentials to login after you reset the default one. - vsphere_client = create_vsphere_client(server, - username=sddc.resource_config.cloud_username, - password=sddc.resource_config.cloud_password) - print("\n# Example: Successfully connect to vCenter at '{}'".format(server)) + vsphere_client = create_vsphere_client( + server, + username=sddc.resource_config.cloud_username, + password=sddc.resource_config.cloud_password) + print("\n# Example: Successfully connect to vCenter at '{}'".format( + server)) # List VMs in the vSphere instance vms = vsphere_client.vcenter.VM.list() - table = [] - for vm_summary in vms: - table.append([vm_summary.vm, vm_summary.name]) + print('\n# Example: List VMs in the vSphere') - print(tabulate(table, ['VM ID', 'VM Name'])) + for vm_summary in vms: + print('VM ID: {}, VM Name: {}'.format(vm_summary.vm, + vm_summary.name)) def main(): diff --git a/samples/vmc/sddc/sddc_crud.py b/samples/vmc/sddc/sddc_crud.py index 3c7567d3..d9005ded 100644 --- a/samples/vmc/sddc/sddc_crud.py +++ b/samples/vmc/sddc/sddc_crud.py @@ -1,5 +1,4 @@ #!/usr/bin/env python - """ * ******************************************************* * Copyright (c) VMware, Inc. 2017. All Rights Reserved. @@ -21,7 +20,6 @@ from random import randrange from com.vmware.vapi.std.errors_client import InvalidRequest from com.vmware.vmc.model_client import AwsSddcConfig, ErrorResponse, AccountLinkSddcConfig, SddcConfig -from tabulate import tabulate from vmware.vapi.vmc.client import create_vmc_client from samples.vmc.helpers.vmc_task_helper import wait_for_task @@ -38,41 +36,52 @@ class CreateDeleteSDDC(object): def __init__(self): parser = argparse.ArgumentParser() - parser.add_argument('-r', '--refresh-token', - required=True, - help='VMware Cloud API refresh token') + 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( + '-o', '--org-id', required=True, help='Organization identifier.') - parser.add_argument('-sn', '--sddc-name', - help="Name of the SDDC to be created. " - "Default is 'Sample SDDC xx'") + parser.add_argument( + '-sn', + '--sddc-name', + help="Name of the SDDC to be created. " + "Default is 'Sample SDDC xx'") - parser.add_argument('--region', - default='us-west-2', - help='AWS Region') + parser.add_argument('--region', default='US_WEST_2', help='AWS Region') - parser.add_argument('-i', '--interval-sec', - default=60, - help='Task pulling interval in sec') + parser.add_argument( + '-i', + '--interval-sec', + default=60, + help='Task pulling interval in sec') - parser.add_argument('-ls', '--listsddc', - action='store_true', - help='List SDDCs in the specified Org') + parser.add_argument( + '-ls', + '--listsddc', + action='store_true', + help='List SDDCs in the specified Org') - parser.add_argument('-cs', '--createsddc', - action='store_true', - help='Create an SDDC in the specified Org') + parser.add_argument( + '-cs', + '--createsddc', + action='store_true', + help='Create an SDDC in the specified Org') - parser.add_argument('-ds', '--deletesddc', - action='store_true', - help='Deletes the SDDC in the specified Org ') + parser.add_argument( + '-ds', + '--deletesddc', + action='store_true', + help='Deletes the SDDC in the specified Org ') - parser.add_argument('-c', '--cleardata', - action='store_true', - help='Clean up after sample run') + parser.add_argument( + '-c', + '--cleardata', + action='store_true', + help='Clean up after sample run') args = parser.parse_args() @@ -84,7 +93,8 @@ class CreateDeleteSDDC(object): self.deletesddc = args.deletesddc self.cleanup = args.cleardata self.sddc_id = None - self.sddc_name = args.sddc_name or 'Sample SDDC {}'.format(randrange(100)) + self.sddc_name = args.sddc_name or 'Sample SDDC {}'.format( + randrange(100)) self.interval_sec = int(args.interval_sec) # Login to VMware Cloud on AWS @@ -95,45 +105,49 @@ class CreateDeleteSDDC(object): # 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)) + raise ValueError("Org with ID {} doesn't exist".format( + self.org_id)) def create_sddc(self): - print('\n# Example: Create a SDDC ({}) in org {}:'. - format(self.sddc_name, self.org_id)) + print('\n# Example: Create a SDDC ({}) in org {}:'.format( + self.sddc_name, self.org_id)) account_id = self.vmc_client.orgs.account_link.ConnectedAccounts.get( self.org_id)[0].id vpc_map = self.vmc_client.orgs.account_link.CompatibleSubnets.get( - org=self.org_id, - linked_account_id=account_id).vpc_map + org=self.org_id, linked_account_id=account_id).vpc_map customer_subnet_id = self.get_subnet_id(vpc_map) if not customer_subnet_id: - raise ValueError('No available subnet for region {}'.format(self.region)) + raise ValueError('No available subnet for region {}'.format( + self.region)) sddc_config = AwsSddcConfig( region=self.region, name=self.sddc_name, - account_link_sddc_config=[AccountLinkSddcConfig( - customer_subnet_ids=[customer_subnet_id], - connected_account_id=account_id)], + account_link_sddc_config=[ + AccountLinkSddcConfig( + customer_subnet_ids=[customer_subnet_id], + connected_account_id=account_id) + ], provider=os.environ.get('VMC_PROVIDER', SddcConfig.PROVIDER_AWS), num_hosts=1, deployment_type=SddcConfig.DEPLOYMENT_TYPE_SINGLEAZ) try: - task = self.vmc_client.orgs.Sddcs.create(org=self.org_id, - sddc_config=sddc_config) + task = self.vmc_client.orgs.Sddcs.create( + org=self.org_id, sddc_config=sddc_config) except InvalidRequest as e: # Convert InvalidRequest to ErrorResponse to get error message error_response = e.data.convert_to(ErrorResponse) raise Exception(error_response.error_messages) - wait_for_task(task_client=self.vmc_client.orgs.Tasks, - org_id=self.org_id, - task_id=task.id, - interval_sec=self.interval_sec) + wait_for_task( + task_client=self.vmc_client.orgs.Tasks, + org_id=self.org_id, + task_id=task.id, + interval_sec=self.interval_sec) print('\n# Example: SDDC created:') self.sddc_id = task.resource_id @@ -141,23 +155,24 @@ class CreateDeleteSDDC(object): self.print_output([sddc]) def delete_sddc(self): - print('\n# Example: Delete SDDC {} from org {}'.format(self.sddc_id, - self.org_id)) + print('\n# Example: Delete SDDC {} from org {}'.format( + self.sddc_id, self.org_id)) try: - task = self.vmc_client.orgs.Sddcs.delete(org=self.org_id, - sddc=self.sddc_id) + task = self.vmc_client.orgs.Sddcs.delete( + org=self.org_id, sddc=self.sddc_id) except InvalidRequest as e: # Convert InvalidRequest to ErrorResponse to get error message error_response = e.data.convert_to(ErrorResponse) raise Exception(error_response.error_messages) - wait_for_task(task_client=self.vmc_client.orgs.Tasks, - org_id=self.org_id, - task_id=task.id, - interval_sec=self.interval_sec) + wait_for_task( + task_client=self.vmc_client.orgs.Tasks, + org_id=self.org_id, + task_id=task.id, + interval_sec=self.interval_sec) - print('\n# Example: Remaining SDDCs:'.format(self.org_id)) + print('\n# Example: Remaining SDDCs:') sddcs = self.vmc_client.orgs.Sddcs.list(self.org_id) self.print_output(sddcs) @@ -170,10 +185,9 @@ class CreateDeleteSDDC(object): self.print_output(sddcs) def print_output(self, sddcs): - table = [] for sddc in sddcs: - table.append([sddc.id, sddc.name, sddc.resource_config.region]) - print(tabulate(table, ['ID', 'Name', 'AWS Region'])) + print('ID: {}, Name: {}, AWS Region: {}'.format( + sddc.id, sddc.name, sddc.resource_config.region)) def get_subnet_id(self, vpc_map): for v in vpc_map.values(): diff --git a/samples/vsphere/backuprestore/backup_job_list.py b/samples/vsphere/backuprestore/backup_job_list.py index e83d0a5c..fce47cbb 100644 --- a/samples/vsphere/backuprestore/backup_job_list.py +++ b/samples/vsphere/backuprestore/backup_job_list.py @@ -1,5 +1,4 @@ #!/usr/bin/env python - """ * ******************************************************* * Copyright (c) VMware, Inc. 2017. All Rights Reserved. @@ -17,7 +16,6 @@ __author__ = 'VMware, Inc.' __copyright__ = 'Copyright 2017 VMware, Inc. All rights reserved.' __vcenter_version__ = '6.7+' -from tabulate import tabulate from samples.vsphere.common import sample_cli from samples.vsphere.common import sample_util from samples.vsphere.common import vapiconnect @@ -28,8 +26,7 @@ class BackupJobList(object): """ Demonstrates backup job list operation - Retrieves backup job details from vCenter and prints the data in - tabular format + Retrieves backup job details from vCenter and prints the data Prerequisites: - vCenter @@ -46,25 +43,21 @@ class BackupJobList(object): # Connect to vAPI services self.stub_config = vapiconnect.connect( - host=args.server, - user=args.username, - pwd=args.password, - skip_verification=args.skipverification) + host=args.server, + user=args.username, + pwd=args.password, + skip_verification=args.skipverification) def run(self): details_client = Details(self.stub_config) job_list = details_client.list() - table = [] for info in job_list.values(): - row = [info.start_time.strftime("%b %d %Y %H:%M"), - info.duration, - info.type, - info.status, - info.location] - table.append(row) - headers = ["Start time", "Duration", "Type", "Status", "Location"] - print(tabulate(table, headers)) + print( + 'Start time: {}, Duration: {}, Type: {}, Status: {}, Location: {}' + .format( + info.start_time.strftime("%b %d %Y %H:%M"), info.duration, + info.type, info.status, info.location)) def main(): diff --git a/samples/vsphere/backuprestore/backup_schedule.py b/samples/vsphere/backuprestore/backup_schedule.py index 27742181..cd4dafd9 100644 --- a/samples/vsphere/backuprestore/backup_schedule.py +++ b/samples/vsphere/backuprestore/backup_schedule.py @@ -1,8 +1,7 @@ #!/usr/bin/env python - """ * ******************************************************* -* Copyright (c) VMware, Inc. 2017. All Rights Reserved. +* Copyright (c) VMware, Inc. 2017, 2018. All Rights Reserved. * SPDX-License-Identifier: MIT * ******************************************************* * @@ -17,11 +16,9 @@ __author__ = 'VMware, Inc.' __copyright__ = 'Copyright 2017 VMware, Inc. All rights reserved.' __vcenter_version__ = '6.7+' - from samples.vsphere.common import sample_cli from samples.vsphere.common import sample_util from samples.vsphere.common import vapiconnect -from tabulate import tabulate from com.vmware.appliance.recovery.backup_client import Schedules @@ -51,18 +48,22 @@ class BackupSchedule(object): def setup(self): parser = sample_cli.build_arg_parser() - parser.add_argument('-location', '--location', - required=True, - action='store', - help='URL of the backup location') - parser.add_argument('--location_user', - required=True, - action='store', - help='Username for the given location') - parser.add_argument('--location_password', - required=True, - action='store', - help='Password for the given location') + parser.add_argument( + '-location', + '--location', + required=True, + action='store', + help='URL of the backup location') + parser.add_argument( + '--location_user', + required=True, + action='store', + help='Username for the given location') + parser.add_argument( + '--location_password', + required=True, + action='store', + help='Password for the given location') args = sample_util.process_cli_args(parser.parse_args()) self.location = args.location @@ -71,10 +72,10 @@ class BackupSchedule(object): # Connect to vAPI services self.stub_config = vapiconnect.connect( - host=args.server, - user=args.username, - pwd=args.password, - skip_verification=args.skipverification) + host=args.server, + user=args.username, + pwd=args.password, + skip_verification=args.skipverification) self.schedule_client = Schedules(self.stub_config) @@ -98,30 +99,26 @@ class BackupSchedule(object): def create_schedule(self): retention_info = Schedules.RetentionInfo(self.max_count) recurrence_info = Schedules.RecurrenceInfo( - days=self.days, - hour=self.hour, - minute=self.minute) + days=self.days, hour=self.hour, minute=self.minute) create_spec = Schedules.CreateSpec( - location=self.location, - location_user=self.location_user, - location_password=self.location_password, - recurrence_info=recurrence_info, - retention_info=retention_info) + location=self.location, + location_user=self.location_user, + location_password=self.location_password, + recurrence_info=recurrence_info, + retention_info=retention_info) self.schedule_client.create(self._schedule_id, create_spec) def update_schedule(self): retention_info = Schedules.RetentionInfo(self.max_count) recurrence_info = Schedules.RecurrenceInfo( - days=self.days, - hour=self.hour, - minute=self.minute) + days=self.days, hour=self.hour, minute=self.minute) update_spec = Schedules.UpdateSpec( - location=self.location, - location_user=self.location_user, - location_password=self.location_password, - recurrence_info=recurrence_info, - retention_info=retention_info) + location=self.location, + location_user=self.location_user, + location_password=self.location_password, + recurrence_info=recurrence_info, + retention_info=retention_info) self.schedule_client.update(self._schedule_id, update_spec) @@ -132,17 +129,13 @@ class BackupSchedule(object): recurrence_info = schedule_spec.recurrence_info retention_info = schedule_spec.retention_info - table = [] - data = [self._schedule_id, - "{}:{}".format(recurrence_info.hour, recurrence_info.minute), - " ".join(recurrence_info.days), - retention_info.max_count] - table.append(data) - headers = ["Schedule ID", "Time", "Days", "Retention"] - print(tabulate(table, headers)) + print('Schedule ID: {}, Time: {}, Days: {}, Retention: {}'.format( + self._schedule_id, "{}:{}".format(recurrence_info.hour, + recurrence_info.minute), + " ".join(recurrence_info.days), retention_info.max_count)) def run_backup(self): - schedule_spec = self.schedule_client.run(self._schedule_id) + self.schedule_client.run(self._schedule_id) def delete_schedule(self): self.schedule_client.delete(self._schedule_id) diff --git a/samples/vsphere/logforwarding/log_forwarding.py b/samples/vsphere/logforwarding/log_forwarding.py index 823f835b..77d7bb18 100644 --- a/samples/vsphere/logforwarding/log_forwarding.py +++ b/samples/vsphere/logforwarding/log_forwarding.py @@ -1,8 +1,7 @@ #!/usr/bin/env python - """ * ******************************************************* -* Copyright (c) VMware, Inc. 2017, 2018. All Rights Reserved. +* Copyright (c) VMware, Inc. 2017, 2018, 2018. All Rights Reserved. * SPDX-License-Identifier: MIT * ******************************************************* * @@ -16,11 +15,9 @@ __author__ = 'VMware, Inc.' __vcenter_version__ = '6.7+' - from samples.vsphere.common import sample_cli from samples.vsphere.common import sample_util from samples.vsphere.common import vapiconnect -from tabulate import tabulate from com.vmware.appliance.logging_client import Forwarding @@ -45,18 +42,18 @@ class LogForwarding(object): def setup(self): parser = sample_cli.build_arg_parser() - parser.add_argument('--loghost', - required=True, - action='store', - help='The log host') - parser.add_argument('--port', - required=True, - action='store', - help='The log host port number') - parser.add_argument('--protocol', - required=True, - action='store', - help='The log host protocol (TCP/UDP/TLS)') + parser.add_argument( + '--loghost', required=True, action='store', help='The log host') + parser.add_argument( + '--port', + required=True, + action='store', + help='The log host port number') + parser.add_argument( + '--protocol', + required=True, + action='store', + help='The log host protocol (TCP/UDP/TLS)') args = sample_util.process_cli_args(parser.parse_args()) self.loghost = args.loghost @@ -65,10 +62,10 @@ class LogForwarding(object): # Connect to vAPI services self.stub_config = vapiconnect.connect( - host=args.server, - user=args.username, - pwd=args.password, - skip_verification=args.skipverification) + host=args.server, + user=args.username, + pwd=args.password, + skip_verification=args.skipverification) self.log_forwarding_client = Forwarding(self.stub_config) @@ -86,38 +83,36 @@ class LogForwarding(object): self.update_log_forwarding() def set_log_forwarding(self): - log_forwarding_config = [Forwarding.Config(hostname=self.loghost, - port=self.port, - protocol=self.protocol)] + log_forwarding_config = [ + Forwarding.Config( + hostname=self.loghost, port=self.port, protocol=self.protocol) + ] self.log_forwarding_client.set(log_forwarding_config) def get_log_forwarding(self): configs = self.log_forwarding_client.get() - print("\nLog forwarding configurations:") - table = [[cfg.hostname, cfg.port, cfg.protocol] for cfg in configs] - headers = ["Loghost", "Port", "Protocol"] - print(tabulate(table, headers)) + for cfg in configs: + print('Loghost: {}, Port: {}, Protocol: {}'.format( + cfg.hostname, cfg.port, cfg.protocol)) def test_log_forwarding(self): test_response = self.log_forwarding_client.test(True) print("\nLog forwarding test response:") - table = [[resp.hostname, - resp.state, - resp.message.default_message if resp.message else None] - for resp in test_response] - headers = ["Loghost", "State", "Message"] - print(tabulate(table, headers)) + for resp in test_response: + print('Loghost: {}, State: {}, Message: {}'.format( + resp.hostname, resp.state, + resp.message.default_message if resp.message else None)) def update_log_forwarding(self): # Read log forwarding configuration log_forwarding_config = self.log_forwarding_client.get() # Delete the newly added configuration - log_forwarding_config = list(filter( - lambda cfg: cfg.hostname != self.loghost, - log_forwarding_config)) + log_forwarding_config = list( + filter(lambda cfg: cfg.hostname != self.loghost, + log_forwarding_config)) # Apply the modified log forwarding configuration self.log_forwarding_client.set(log_forwarding_config) diff --git a/samples/vsphere/services/services_list.py b/samples/vsphere/services/services_list.py index 74489bb8..3752c8b4 100644 --- a/samples/vsphere/services/services_list.py +++ b/samples/vsphere/services/services_list.py @@ -1,8 +1,7 @@ #!/usr/bin/env python - """ * ******************************************************* -* Copyright (c) VMware, Inc. 2016. All Rights Reserved. +* Copyright (c) VMware, Inc. 2016, 2018. All Rights Reserved. * SPDX-License-Identifier: MIT * ******************************************************* * @@ -17,8 +16,6 @@ __author__ = 'VMware, Inc.' __copyright__ = 'Copyright 2018 VMware, Inc. All rights reserved.' __vcenter_version__ = '6.7+' -from tabulate import tabulate - from vmware.vapi.vsphere.client import create_vsphere_client from samples.vsphere.common.ssl_helper import get_unverified_session @@ -47,23 +44,19 @@ class ListServices(object): 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) + self.client = create_vsphere_client( + server=args.server, + username=args.username, + password=args.password, + session=session) def run(self): services_list = self.client.vcenter.services.Service.list_details() - table = [] for key, value in services_list.items(): - row = [key, - value.name_key, - value.health, - value.state, - value.startup_type] - table.append(row) - headers = ["Service Name", "Service Name Key", "Service Health", "Service Status", "Service Startup Type"] - print(tabulate(table, headers)) + print( + 'Service Name: {}, Service Name Key: {}, Service Health: {}, Service Status: {}, Service Startup Type: {}' + ).format(key, value.name_key, value.health, value.state, + value.startup_type) def main():