示例#1
0
    def Run(self, args):
        """Retrieves response with instance in the instance group."""
        holder = base_classes.ComputeApiHolder(self.ReleaseTrack())
        client = holder.client
        resources = holder.resources

        group_ref = (
            instance_groups_flags.MULTISCOPE_INSTANCE_GROUP_MANAGER_ARG.
            ResolveAsResource(
                args,
                holder.resources,
                default_scope=compute_scope.ScopeEnum.ZONE,
                scope_lister=compute_flags.GetDefaultScopeLister(client)))

        if hasattr(group_ref, 'zone'):
            service = client.apitools_client.instanceGroupManagers
            request = (client.messages.
                       ComputeInstanceGroupManagersListManagedInstancesRequest(
                           instanceGroupManager=group_ref.Name(),
                           zone=group_ref.zone,
                           project=group_ref.project))
        elif hasattr(group_ref, 'region'):
            service = client.apitools_client.regionInstanceGroupManagers
            request = (
                client.messages.
                ComputeRegionInstanceGroupManagersListManagedInstancesRequest(
                    instanceGroupManager=group_ref.Name(),
                    region=group_ref.region,
                    project=group_ref.project))

        errors = []
        results = list(
            request_helper.MakeRequests(requests=[
                (service, 'ListManagedInstances', request)
            ],
                                        http=client.apitools_client.http,
                                        batch_url=client.batch_url,
                                        errors=errors))

        if errors:
            utils.RaiseToolException(errors)
        instances = instance_groups_utils.UnwrapResponse(
            results, 'managedInstances')
        instance_with_name = next(
            (instance for instance in instances
             if resources.ParseURL(instance.instance).Name() == args.instance),
            None)
        if not instance_with_name:
            raise ValueError('Unknown instance with name `{0}\''.format(
                args.name))
        # Add name to instance and return it
        instance_with_name = encoding.MessageToDict(instance_with_name)
        instance_with_name['name'] = (resources.ParseURL(
            instance_with_name['instance']).Name())
        return instance_with_name
示例#2
0
    def Run(self, args):
        holder = base_classes.ComputeApiHolder(self.ReleaseTrack())
        client = holder.client
        resources = holder.resources

        igm_ref = (
            instance_groups_flags.MULTISCOPE_INSTANCE_GROUP_MANAGER_ARG.
            ResolveAsResource)(
                args,
                resources,
                scope_lister=compute_flags.GetDefaultScopeLister(client),
            )

        if igm_ref.Collection() == 'compute.instanceGroupManagers':
            service = client.apitools_client.instanceGroupManagers
            request = (
                client.messages.
                ComputeInstanceGroupManagersListPerInstanceConfigsRequest)(
                    instanceGroupManager=igm_ref.Name(),
                    project=igm_ref.project,
                    zone=igm_ref.zone,
                )
        elif igm_ref.Collection() == 'compute.regionInstanceGroupManagers':
            service = client.apitools_client.regionInstanceGroupManagers
            request = (
                client.messages.
                ComputeRegionInstanceGroupManagersListPerInstanceConfigsRequest
            )(
                instanceGroupManager=igm_ref.Name(),
                project=igm_ref.project,
                region=igm_ref.region,
            )
        else:
            raise ValueError('Unknown reference type {0}'.format(
                igm_ref.Collection()))

        errors = []
        results = list(
            request_helper.MakeRequests(requests=[
                (service, 'ListPerInstanceConfigs', request)
            ],
                                        http=client.apitools_client.http,
                                        batch_url=client.batch_url,
                                        errors=errors))

        if errors:
            utils.RaiseToolException(errors)

        return instance_groups_utils.UnwrapResponse(results, 'items')
    def Run(self, args):
        """Retrieves response with instance in the instance group."""
        holder = base_classes.ComputeApiHolder(self.ReleaseTrack())
        client = holder.client

        group_ref = (instance_groups_flags.MULTISCOPE_INSTANCE_GROUP_ARG.
                     ResolveAsResource(
                         args,
                         holder.resources,
                         default_scope=compute_scope.ScopeEnum.ZONE,
                         scope_lister=flags.GetDefaultScopeLister(client)))

        if args.regexp:
            # Regexp interprested as RE2 by Instance Group API
            filter_expr = 'instance eq {0}'.format(args.regexp)
        else:
            filter_expr = None

        if group_ref.Collection() == 'compute.instanceGroups':
            service = client.apitools_client.instanceGroups
            request = client.messages.ComputeInstanceGroupsListInstancesRequest(
                instanceGroup=group_ref.Name(),
                instanceGroupsListInstancesRequest=(
                    client.messages.InstanceGroupsListInstancesRequest()),
                zone=group_ref.zone,
                filter=filter_expr,
                project=group_ref.project)
        else:
            service = client.apitools_client.regionInstanceGroups
            request = client.messages.ComputeRegionInstanceGroupsListInstancesRequest(
                instanceGroup=group_ref.Name(),
                regionInstanceGroupsListInstancesRequest=(
                    client.messages.RegionInstanceGroupsListInstancesRequest()
                ),
                region=group_ref.region,
                filter=filter_expr,
                project=group_ref.project)

        errors = []
        results = client.MakeRequests(requests=[(service, 'ListInstances',
                                                 request)],
                                      errors_to_collect=errors)

        if errors:
            utils.RaiseToolException(errors)
        return instance_groups_utils.UnwrapResponse(results, 'items')
示例#4
0
    def Run(self, args):
        """Retrieves response with instance in the instance group."""
        holder = base_classes.ComputeApiHolder(self.ReleaseTrack())
        client = holder.client

        group_ref = (instance_groups_flags.
                     MULTISCOPE_INSTANCE_GROUP_MANAGER_ARG.ResolveAsResource(
                         args,
                         holder.resources,
                         default_scope=compute_scope.ScopeEnum.ZONE,
                         scope_lister=flags.GetDefaultScopeLister(client)))

        if hasattr(group_ref, 'zone'):
            service = client.apitools_client.instanceGroupManagers
            request = (client.messages.
                       ComputeInstanceGroupManagersListManagedInstancesRequest(
                           instanceGroupManager=group_ref.Name(),
                           zone=group_ref.zone,
                           project=group_ref.project))
        elif hasattr(group_ref, 'region'):
            service = client.apitools_client.regionInstanceGroupManagers
            request = (
                client.messages.
                ComputeRegionInstanceGroupManagersListManagedInstancesRequest(
                    instanceGroupManager=group_ref.Name(),
                    region=group_ref.region,
                    project=group_ref.project))

        errors = []
        results = list(
            request_helper.MakeRequests(requests=[
                (service, 'ListManagedInstances', request)
            ],
                                        http=client.apitools_client.http,
                                        batch_url=client.batch_url,
                                        errors=errors))

        if errors:
            utils.RaiseToolException(errors)
        return instance_groups_utils.UnwrapResponse(results,
                                                    'managedInstances')
    def Run(self, args):
        """Retrieves response with instance in the instance group."""
        holder = base_classes.ComputeApiHolder(self.ReleaseTrack())
        client = holder.client

        # Note: only zonal resources parsed here.
        group_ref = holder.resources.Parse(
            args.name,
            params={
                'project': properties.VALUES.core.project.GetOrFail,
                'zone': args.zone
            },
            collection='compute.instanceGroups')
        if args.regexp:
            filter_expr = 'instance eq {0}'.format(args.regexp)
        else:
            filter_expr = None

        request = client.messages.ComputeInstanceGroupsListInstancesRequest(
            instanceGroup=group_ref.Name(),
            instanceGroupsListInstancesRequest=(
                client.messages.InstanceGroupsListInstancesRequest()),
            zone=group_ref.zone,
            filter=filter_expr,
            project=group_ref.project)

        errors = []
        results = list(
            request_helper.MakeRequests(requests=[
                (client.apitools_client.instanceGroups, 'ListInstances',
                 request)
            ],
                                        http=client.apitools_client.http,
                                        batch_url=client.batch_url,
                                        errors=errors))

        if errors:
            utils.RaiseToolException(errors)

        return instance_groups_utils.UnwrapResponse(results, 'items')