def Run(self, args): """Run 'runtime-configs waiters list'. Args: args: argparse.Namespace, The arguments that this command was invoked with. Yields: The list of waiters. Raises: HttpException: An http error response was received while executing api request. """ waiter_client = util.WaiterClient() messages = util.Messages() config_resource = util.ParseConfigName(util.ConfigName(args)) request = messages.RuntimeconfigProjectsConfigsWaitersListRequest( parent=config_resource.RelativeName(), ) page_size = args.page_size or self.DEFAULT_PAGE_SIZE results = list_pager.YieldFromList(waiter_client, request, field='waiters', batch_size_attribute='pageSize', limit=args.limit, batch_size=page_size) for result in results: yield util.FormatWaiter(result)
def testWait(self): waiter_name = 'projects/{0}/configs/foo/waiters/bar'.format(self.Project()) request = self.messages.RuntimeconfigProjectsConfigsWaitersGetRequest( name=waiter_name, ) not_done_result = self.messages.Waiter( name=waiter_name, timeout='30s', success=self.messages.EndCondition( cardinality=self.messages.Cardinality( path='/success', number=1, ) ) ) done_result = self.messages.Waiter( name=waiter_name, timeout='30s', success=self.messages.EndCondition( cardinality=self.messages.Cardinality( path='/success', number=1, ) ), done=True ) self.waiter_client.Get.Expect(request, not_done_result) self.waiter_client.Get.Expect(request, not_done_result) self.waiter_client.Get.Expect(request, done_result) got_result = self.RunRuntimeConfig( 'waiters wait bar --config-name foo') self.assertEqual(util.FormatWaiter(done_result), got_result)
def testCreateAsync(self): expected_result = self._setupCreateAsyncTest() got_result = self.RunRuntimeConfig( 'waiters create bar --config-name foo --timeout 1m ' '--success-cardinality-path /success --async') self.assertEqual(util.FormatWaiter(expected_result), got_result)
def testList(self): # Tests a list request with two pages. config_name = 'projects/{0}/configs/foo'.format(self.Project()) success = self.messages.EndCondition( cardinality=self.messages.Cardinality( path='/success', number=1, )) waiters = [ self.messages.Waiter( name='projects/{0}/configs/foo/waiters/bar1'.format( self.Project()), timeout='30s', success=success, ), self.messages.Waiter( name='projects/{0}/configs/foo/waiters/bar2'.format( self.Project()), timeout='30s', success=success, done=True, ), ] request_1 = self.messages.RuntimeconfigProjectsConfigsWaitersListRequest( parent=config_name, pageSize=self.DEFAULT_PAGE_SIZE, ) request_2 = self.messages.RuntimeconfigProjectsConfigsWaitersListRequest( parent=config_name, pageSize=self.DEFAULT_PAGE_SIZE, pageToken='foobar', ) wrapped_result_1 = self.messages.ListWaitersResponse( waiters=waiters[:1], nextPageToken='foobar', ) wrapped_result_2 = self.messages.ListWaitersResponse( waiters=waiters[1:], nextPageToken=None, ) self.waiter_client.List.Expect(request_1, wrapped_result_1) self.waiter_client.List.Expect(request_2, wrapped_result_2) got_result = self.RunRuntimeConfig('waiters list --config-name foo') self.assertEqual([util.FormatWaiter(w) for w in waiters], list(got_result))
def testCreateWithSuccessOnly(self): config_name = 'projects/{0}/configs/foo'.format(self.Project()) waiter_name = 'projects/{0}/configs/foo/waiters/bar'.format( self.Project()) op_name = 'projects/{0}/configs/foo/operations/waiters/bar'.format( self.Project()) cr_request = self.messages.RuntimeconfigProjectsConfigsWaitersCreateRequest( parent=config_name, waiter=self.messages.Waiter( name=waiter_name, timeout='60s', success=self.messages.EndCondition( cardinality=self.messages.Cardinality( path='/success', number=1, ))), ) cr_result = self.messages.Operation(name=op_name, done=False) get_request = self.messages.RuntimeconfigProjectsConfigsWaitersGetRequest( name=waiter_name, ) not_done_result = self.messages.Waiter( name=waiter_name, timeout='60s', success=self.messages.EndCondition( cardinality=self.messages.Cardinality( path='/success', number=1, ))) done_result = self.messages.Waiter( name=waiter_name, timeout='60s', success=self.messages.EndCondition( cardinality=self.messages.Cardinality( path='/success', number=1, )), done=True) self.waiter_client.Create.Expect(cr_request, cr_result) self.waiter_client.Get.Expect(get_request, not_done_result) self.waiter_client.Get.Expect(get_request, done_result) got_result = self.RunRuntimeConfig( 'waiters create bar --config-name foo --timeout 1m ' '--success-cardinality-path /success') self.assertEqual(util.FormatWaiter(done_result), got_result)
def testFormatWaiter(self): waiter = MESSAGE_MODULE.Waiter( name='projects/my-project/configs/my-config/waiters/my-waiter', timeout='120', success=MESSAGE_MODULE.EndCondition( cardinality=MESSAGE_MODULE.Cardinality( path='/success', number=2, )), failure=MESSAGE_MODULE.EndCondition( cardinality=MESSAGE_MODULE.Cardinality( path='/failure', number=1, )), done=True, error=MESSAGE_MODULE.Status(code=9, message='failure'), createTime='2016-04-29T00:00:00Z', ) munged_waiter = { 'atomicName': 'projects/my-project/configs/my-config/waiters/my-waiter', 'name': 'my-waiter', 'timeout': '120', 'success': { 'cardinality': { 'path': '/success', 'number': 2 } }, 'failure': { 'cardinality': { 'path': '/failure', 'number': 1 } }, 'done': True, 'error': { 'code': 9, 'message': 'failure' }, 'createTime': '2016-04-29T00:00:00Z' } self.assertEqual(util.FormatWaiter(waiter), munged_waiter)
def Run(self, args): """Run 'runtime-configs waiters wait'. Args: args: argparse.Namespace, The arguments that this command was invoked with. Returns: The requested waiter, after waiting for it to succeed or fail. Raises: HttpException: An http error response was received while executing api request. OperationTimeoutError: If the waiter doesn't complete in time. """ waiter_resource = util.ParseWaiterName(args.name, args) result = util.WaitForWaiter(waiter_resource, max_wait=args.max_wait) if util.IsFailedWaiter(result): self.exit_code = 2 # exit with code 2 if the result waiter failed. return util.FormatWaiter(result)
def testListCustomPageSize(self): config_name = 'projects/{0}/configs/foo'.format(self.Project()) success = self.messages.EndCondition( cardinality=self.messages.Cardinality( path='/success', number=1, )) waiters = [ self.messages.Waiter( name='projects/{0}/configs/foo/waiters/bar1'.format( self.Project()), timeout='30s', success=success, ), self.messages.Waiter( name='projects/{0}/configs/foo/waiters/bar2'.format( self.Project()), timeout='30s', success=success, done=True, ), ] request = self.messages.RuntimeconfigProjectsConfigsWaitersListRequest( parent=config_name, pageSize=55, ) wrapped_result = self.messages.ListWaitersResponse( waiters=waiters, nextPageToken=None, ) self.waiter_client.List.Expect(request, wrapped_result) got_result = self.RunRuntimeConfig( 'waiters list --config-name foo --page-size 55') self.assertEqual([util.FormatWaiter(w) for w in waiters], list(got_result))
def Run(self, args): """Run 'runtime-configs waiters describe'. Args: args: argparse.Namespace, The arguments that this command was invoked with. Returns: The requested waiter. Raises: HttpException: An http error response was received while executing api request. """ waiter_client = util.WaiterClient() messages = util.Messages() waiter_resource = util.ParseWaiterName(args.name, args) result = waiter_client.Get( messages.RuntimeconfigProjectsConfigsWaitersGetRequest( name=waiter_resource.RelativeName(), )) return util.FormatWaiter(result)
def Run(self, args): """Run 'runtime-configs waiters create'. Args: args: argparse.Namespace, The arguments that this command was invoked with. Returns: The associated waiter operation. Raises: HttpException: An http error response was received while executing api request. """ waiter_client = util.WaiterClient() messages = util.Messages() waiter_resource = util.ParseWaiterName(args.name, args) project = waiter_resource.projectsId config = waiter_resource.configsId success = messages.EndCondition(cardinality=messages.Cardinality( path=args.success_cardinality_path, number=args.success_cardinality_number, )) if args.failure_cardinality_path: failure = messages.EndCondition(cardinality=messages.Cardinality( path=args.failure_cardinality_path, number=args.failure_cardinality_number, )) else: failure = None result = waiter_client.Create( messages.RuntimeconfigProjectsConfigsWaitersCreateRequest( parent=util.ConfigPath(project, config), waiter=messages.Waiter( name=waiter_resource.RelativeName(), timeout='{0}s'.format(args.timeout), success=success, failure=failure, ))) log.CreatedResource(waiter_resource) if args. async: # In async mode, we return the current waiter representation. # The waiter resource exists immediately after creation; the # operation resource returned from CreateWaiter only tracks the # waiting process. self._async_resource = waiter_resource request = (waiter_client.client.MESSAGES_MODULE. RuntimeconfigProjectsConfigsWaitersGetRequest( name=waiter_resource.RelativeName())) result = waiter_client.Get(request) else: self._async_resource = None result = util.WaitForWaiter(waiter_resource) if util.IsFailedWaiter(result): self.exit_code = 2 # exit with code 2 if the result waiter failed. return util.FormatWaiter(result)