Exemplo n.º 1
0
  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
Exemplo n.º 2
0
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)
Exemplo n.º 3
0
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)
Exemplo n.º 4
0
  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)
Exemplo n.º 5
0
 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]
Exemplo n.º 6
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]
Exemplo n.º 7
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]
Exemplo n.º 8
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
Exemplo n.º 9
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 = []
        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
Exemplo n.º 10
0
    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)