From 8799c5d6b520deff2c8a43c6cfbe626bc5cad73d Mon Sep 17 00:00:00 2001 From: Tianhao He Date: Mon, 22 Jul 2019 11:29:10 +0800 Subject: [PATCH 1/2] Don't pass account link sddc config when no connected account available --- samples/vmc/sddc/sddc_crud.py | 34 ++++++++++++++++++++-------------- 1 file changed, 20 insertions(+), 14 deletions(-) diff --git a/samples/vmc/sddc/sddc_crud.py b/samples/vmc/sddc/sddc_crud.py index d9005ded..89dff119 100644 --- a/samples/vmc/sddc/sddc_crud.py +++ b/samples/vmc/sddc/sddc_crud.py @@ -112,27 +112,33 @@ class CreateDeleteSDDC(object): 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 + account_linking_config = None - vpc_map = self.vmc_client.orgs.account_link.CompatibleSubnets.get( - org=self.org_id, linked_account_id=account_id).vpc_map + # Get connected accounts if any + account_ids = self.vmc_client.orgs.account_link.ConnectedAccounts.get( + self.org_id) - customer_subnet_id = self.get_subnet_id(vpc_map) - if not customer_subnet_id: - raise ValueError('No available subnet for region {}'.format( - self.region)) + if len(account_ids) > 0 : + account_id = account_ids[0].id + + vpc_map = self.vmc_client.orgs.account_link.CompatibleSubnets.get( + 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)) + + account_linking_config = AccountLinkSddcConfig( + customer_subnet_ids=[customer_subnet_id], + connected_account_id=account_id) 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=[account_linking_config] if account_linking_config else None, provider=os.environ.get('VMC_PROVIDER', SddcConfig.PROVIDER_AWS), - num_hosts=1, + num_hosts=4, deployment_type=SddcConfig.DEPLOYMENT_TYPE_SINGLEAZ) try: From 1884e64a37291ce3359aed23457d9c51e4742b3b Mon Sep 17 00:00:00 2001 From: Tianhao He Date: Mon, 22 Jul 2019 12:16:07 +0800 Subject: [PATCH 2/2] Add get sddc id by name when deleting sddc Don't print region as some testing sddcs don't have region info. --- samples/vmc/sddc/sddc_crud.py | 16 +++++-- samples/vmc/tasks/list_tasks_stg.py | 67 +++++++++++++++++++++++++++++ 2 files changed, 79 insertions(+), 4 deletions(-) create mode 100644 samples/vmc/tasks/list_tasks_stg.py diff --git a/samples/vmc/sddc/sddc_crud.py b/samples/vmc/sddc/sddc_crud.py index 89dff119..1ef118c0 100644 --- a/samples/vmc/sddc/sddc_crud.py +++ b/samples/vmc/sddc/sddc_crud.py @@ -1,7 +1,7 @@ #!/usr/bin/env python """ * ******************************************************* -* Copyright (c) VMware, Inc. 2017. All Rights Reserved. +* Copyright (c) VMware, Inc. 2017-2019. All Rights Reserved. * SPDX-License-Identifier: MIT * ******************************************************* * @@ -118,7 +118,7 @@ class CreateDeleteSDDC(object): account_ids = self.vmc_client.orgs.account_link.ConnectedAccounts.get( self.org_id) - if len(account_ids) > 0 : + if len(account_ids) > 0: account_id = account_ids[0].id vpc_map = self.vmc_client.orgs.account_link.CompatibleSubnets.get( @@ -161,6 +161,15 @@ class CreateDeleteSDDC(object): self.print_output([sddc]) def delete_sddc(self): + # Get SDDC ID by name + sddcs = self.vmc_client.orgs.Sddcs.list(self.org_id) + for sddc in sddcs: + if sddc.name == self.sddc_name: + self.sddc_id = sddc.id + break + else: + raise ValueError('Cannot find sddc "{}"'.format(sddc_name)) + print('\n# Example: Delete SDDC {} from org {}'.format( self.sddc_id, self.org_id)) @@ -192,8 +201,7 @@ class CreateDeleteSDDC(object): def print_output(self, sddcs): for sddc in sddcs: - print('ID: {}, Name: {}, AWS Region: {}'.format( - sddc.id, sddc.name, sddc.resource_config.region)) + print('ID: {}, Name: {}'.format(sddc.id, sddc.name)) def get_subnet_id(self, vpc_map): for v in vpc_map.values(): diff --git a/samples/vmc/tasks/list_tasks_stg.py b/samples/vmc/tasks/list_tasks_stg.py new file mode 100644 index 00000000..9c9f6bc5 --- /dev/null +++ b/samples/vmc/tasks/list_tasks_stg.py @@ -0,0 +1,67 @@ +""" +* ******************************************************* +* Copyright (c) VMware, Inc. 2019. All Rights Reserved. +* SPDX-License-Identifier: MIT +* ******************************************************* +* +* DISCLAIMER. THIS PROGRAM IS PROVIDED TO YOU "AS IS" WITHOUT +* WARRANTIES OR CONDITIONS OF ANY KIND, WHETHER ORAL OR WRITTEN, +* EXPRESS OR IMPLIED. THE AUTHOR SPECIFICALLY DISCLAIMS ANY IMPLIED +* WARRANTIES OR CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, +* NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR PURPOSE. +""" + +__author__ = 'VMware, Inc.' + +import argparse + +from com.vmware.vmc.model_client import Task +from vmware.vapi.vmc.client import create_vmc_client + +""" +Demonstrates how to list tasks with given status + +Sample Prerequisites: + - VMware Cloud on AWS console API access +""" + +accepted = [Task.STATUS_STARTED, Task.STATUS_CANCELING, Task.STATUS_FINISHED, + Task.STATUS_FAILED, Task.STATUS_CANCELED] + +parser = argparse.ArgumentParser(formatter_class=argparse.ArgumentDefaultsHelpFormatter) + +parser.add_argument('--refresh-token', + required=True, + help='VMware Cloud API refresh token') + +parser.add_argument('--org-id', + required=True, + help='Organization identifier.') + +parser.add_argument('--task-status', + help='Task status to filter. Possible values are: {} \ + Show all tasks if no value is passed'.format(accepted)) + +args = parser.parse_args() + +vmc_client = create_vmc_client(args.refresh_token) + +tasks = [] + +if args.task_status: + status = args.task_status.upper() + + if status not in accepted: + raise ValueError('Status "{}" is invalid, accept values are {}'. + format(args.task_status, accepted)) + + tasks = vmc_client.orgs.Tasks.list( + org=args.org_id, filter="(status eq '{}')".format(status)) + + print('# List all "{}" tasks:\n'.format(status)) +else: + tasks = vmc_client.orgs.Tasks.list(org=args.org_id) + print('# List all tasks:\n') + +for task in tasks: + print('{}\n'.format(task))