def GetResources(self, args): """Retrieves response with instance in the instance group.""" group_ref = self.CreateZonalReference(args.name, args.zone) if args.regexp: filter_expr = 'instance eq {0}'.format(args.regexp) else: filter_expr = None request = self.service.GetRequestType(self.method)( instanceGroup=group_ref.Name(), instanceGroupsListInstancesRequest=( self.messages.InstanceGroupsListInstancesRequest()), zone=group_ref.zone, filter=filter_expr, project=self.context['project']) errors = [] results = list(request_helper.MakeRequests( requests=[(self.service, self.method, request)], http=self.http, batch_url=self.batch_url, errors=errors, custom_get_requests=None)) return results, errors
def _GetResources(service, project, scopes, scope_name, filter_expr, http, batch_url, errors): """Helper for the Get{Zonal,Regional,Global}Resources functions.""" requests = [] if scopes: for scope in scopes: request = service.GetRequestType('List')( filter=filter_expr, project=project, maxResults=constants.MAX_RESULTS_PER_PAGE) setattr(request, scope_name, scope) requests.append((service, 'List', request)) elif not scope_name: requests.append((service, 'List', service.GetRequestType('List')( filter=filter_expr, project=project, maxResults=constants.MAX_RESULTS_PER_PAGE))) else: requests.append((service, 'AggregatedList', service.GetRequestType('AggregatedList')( filter=filter_expr, project=project, maxResults=constants.MAX_RESULTS_PER_PAGE))) return request_helper.MakeRequests(requests=requests, http=http, batch_url=batch_url, errors=errors, custom_get_requests=None)
def _GetResources(service, project, scopes, scope_name, filter_expr, http, batch_url, errors): """Helper for the Get{Zonal,Regional,Global}Resources functions.""" requests = FormatListRequests(service, project, scopes, scope_name, filter_expr) return request_helper.MakeRequests(requests=requests, http=http, batch_url=batch_url, errors=errors, custom_get_requests=None)
def GetResources(self, args, errors): """Yields regional and/or global resources.""" # This is true if the user provided no flags indicating scope no_scope_flags = args.regions is None and not getattr(args, 'global') requests = [] filter_expr = self.GetFilterExpr(args) max_results = constants.MAX_RESULTS_PER_PAGE project = self.project # If --global is present OR no scope flags are present then we have to fetch # the global resources. if getattr(args, 'global'): requests.append( (self.global_service, 'List', self.global_service.GetRequestType('List')( filter=filter_expr, maxResults=max_results, project=project))) # If --regions is present with no arguments OR no scope flags are present # then we have to do an aggregated list # pylint:disable=g-explicit-bool-comparison if args.regions == [] or no_scope_flags: requests.append( (self.regional_service, 'AggregatedList', self.regional_service.GetRequestType('AggregatedList')( filter=filter_expr, maxResults=max_results, project=project))) # Else if some regions were provided then only list within them elif args.regions: region_names = set( self.CreateGlobalReference(region, resource_type='regions').Name() for region in args.regions) for region_name in sorted(region_names): requests.append( (self.regional_service, 'List', self.regional_service.GetRequestType('List')( filter=filter_expr, maxResults=max_results, region=region_name, project=project))) return request_helper.MakeRequests( requests=requests, http=self.http, batch_url=self.batch_url, errors=errors, custom_get_requests=None)
def GetImage(self, image_ref): """Returns the image resource corresponding to the given reference.""" errors = [] res = list( request_helper.MakeRequests(requests=[ (self.compute.images, 'Get', self.messages.ComputeImagesGetRequest( image=image_ref.Name(), project=image_ref.project)) ], http=self.http, batch_url=self.batch_url, errors=errors, custom_get_requests=None)) if errors: utils.RaiseToolException( errors, error_message='Could not fetch image resource:') return res[0]
def GetProject(self): """Returns the project object.""" errors = [] objects = list( request_helper.MakeRequests(requests=[ (self.compute.projects, 'Get', self.messages.ComputeProjectsGetRequest( project=properties.VALUES.core.project.Get( required=True), )) ], http=self.http, batch_url=self.batch_url, errors=errors, custom_get_requests=None)) if errors: utils.RaiseToolException( errors, error_message='Could not fetch project resource:') return objects[0]
def GetBackendService(self, _): """Fetches the backend service resource.""" errors = [] objects = list( request_helper.MakeRequests(requests=[ (self.service, 'Get', self.messages.ComputeBackendServicesGetRequest( project=self.project, backendService=self.backend_service_ref.Name())) ], http=self.http, batch_url=self.batch_url, errors=errors, custom_get_requests=None)) if errors: utils.RaiseToolException( errors, error_message='Could not fetch backend service:') return objects[0]
def _GetGroupFingerprint(self, name, zone): """Gets fingerprint of given instance group.""" get_request = self.messages.ComputeInstanceGroupsGetRequest( instanceGroup=name, zone=zone, project=self.project) errors = [] res = next(request_helper.MakeRequests( requests=[( self.compute.instanceGroups, 'Get', get_request)], http=self.http, batch_url=self.batch_url, errors=errors, custom_get_requests=None)) return res.fingerprint
def _GetGroupFingerprint(self, name, zone): """Gets fingerprint of given instance group.""" get_request = self.messages.ComputeInstanceGroupsGetRequest( instanceGroup=name, zone=zone, project=self.project) errors = [] resources = list( request_helper.MakeRequests(requests=[(self.compute.instanceGroups, 'Get', get_request)], http=self.http, batch_url=self.batch_url, errors=errors, custom_get_requests=None)) if errors: utils.RaiseException( errors, FingerprintFetchException, error_message='Could not set named ports for resource:') return resources[0].fingerprint
def GetMatchingImages(self, image, alias, errors): """Yields images from a public image project and the user's project.""" service = self.compute.images requests = [ (service, 'List', self.messages.ComputeImagesListRequest( filter='name eq ^{0}(-.+)*-v.+'.format(alias.name_prefix), maxResults=constants.MAX_RESULTS_PER_PAGE, project=alias.project)), (service, 'List', self.messages.ComputeImagesListRequest( filter='name eq ^{0}$'.format(image), maxResults=constants.MAX_RESULTS_PER_PAGE, project=self.project)), ] return request_helper.MakeRequests(requests=requests, http=self.http, batch_url=self.batch_url, errors=errors, custom_get_requests=None)