Ejemplo n.º 1
0
  def _YieldPrintableTypesOrErrors(self, type_providers):
    """Yield dicts of types list, provider, and (optionally) an error message.

    Args:
      type_providers: A list of Type Provider names to grab Type Info
        messages for.

    Yields:
      A dict object with a list of types, a type provider, and (optionally)
      an error message for display.

    """
    for type_provider in type_providers:
      request = (dm_beta_base.GetMessages().
                 DeploymentmanagerTypeProvidersListTypesRequest(
                     project=self.project,
                     typeProvider=type_provider))
      try:
        paginated_types = dm_v2_util.YieldWithHttpExceptions(
            list_pager.YieldFromList(TypeProviderClient(),
                                     request,
                                     method='ListTypes',
                                     field='types',
                                     batch_size=self.page_size,
                                     limit=self.limit))
        yield {'types': list(paginated_types),
               'provider': type_provider}
      except api_exceptions.HttpException as error:
        yield {'types': [],
               'provider': type_provider,
               'error': error.message}
Ejemplo n.º 2
0
    def Run(self, args):
        """Run 'resources list'.

    Args:
      args: argparse.Namespace, The arguments that this command was invoked
          with.

    Returns:
      The list of resources for the specified deployment.

    Raises:
      HttpException: An http error response was received while executing api
          request.
    """
        client = self.context['deploymentmanager-client']
        messages = self.context['deploymentmanager-messages']
        project = properties.VALUES.core.project.Get(required=True)

        request = messages.DeploymentmanagerResourcesListRequest(
            project=project,
            deployment=args.deployment,
        )
        return dm_v2_util.YieldWithHttpExceptions(
            list_pager.YieldFromList(client.resources,
                                     request,
                                     field='resources',
                                     limit=args.limit,
                                     batch_size=args.page_size))
Ejemplo n.º 3
0
  def Run(self, args):
    """Run 'types list'.

    Args:
      args: argparse.Namespace, The arguments that this command was invoked
          with.

    Returns:
      The list of types for this project.

    Raises:
      HttpException: An http error response was received while executing api
          request.
    """
    type_provider_ref = dm_beta_base.GetResources().Parse(
        args.provider if args.provider else 'NOT_A_PROVIDER',
        params={'project': properties.VALUES.core.project.GetOrFail},
        collection='deploymentmanager.typeProviders')
    self.page_size = args.page_size
    self.limit = args.limit
    self.project = type_provider_ref.project

    if not args.provider:
      type_providers = self._GetTypeProviders()
    else:
      type_providers = [type_provider_ref.typeProvider]

    return dm_v2_util.YieldWithHttpExceptions(
        self._YieldPrintableTypesOrErrors(type_providers))
Ejemplo n.º 4
0
    def _GetTypeProviders(self):
        request = (dm_beta_base.GetMessages(
        ).DeploymentmanagerTypeProvidersListRequest(project=self.project))
        providers = dm_v2_util.YieldWithHttpExceptions(
            list_pager.YieldFromList(TypeProviderClient(),
                                     request,
                                     field='typeProviders',
                                     batch_size=self.page_size,
                                     limit=self.limit))

        return [provider.name for provider in providers]
Ejemplo n.º 5
0
  def Run(self, args):
    """Run 'types list'.

    Args:
      args: argparse.Namespace, The arguments that this command was invoked
          with.

    Returns:
      The list of types for this project.

    Raises:
      HttpException: An http error response was received while executing api
          request.
    """
    request = dm_base.GetMessages().DeploymentmanagerTypesListRequest(
        project=dm_base.GetProject())
    return dm_v2_util.YieldWithHttpExceptions(
        list_pager.YieldFromList(dm_base.GetClient().types, request,
                                 field='types', batch_size=args.page_size,
                                 limit=args.limit))
Ejemplo n.º 6
0
  def Run(self, args):
    """Run 'operations list'.

    Args:
      args: argparse.Namespace, The arguments that this command was invoked
          with.

    Returns:
      The list of operations for this project.

    Raises:
      HttpException: An http error response was received while executing api
          request.
    """
    request = self.messages.DeploymentmanagerOperationsListRequest(
        project=self.project,
    )
    return dm_v2_util.YieldWithHttpExceptions(list_pager.YieldFromList(
        self.client.operations, request, field='operations', limit=args.limit,
        batch_size=args.page_size))
Ejemplo n.º 7
0
    def Run(self, args):
        """Run 'types list'.

    Args:
      args: argparse.Namespace, The arguments that this command was invoked
          with.

    Returns:
      The list of types for this project.

    Raises:
      HttpException: An http error response was received while executing api
          request.
    """
        type_provider_ref = dm_beta_base.GetResources().Parse(
            args.provider if args.provider else 'NOT_A_PROVIDER',
            params={'project': properties.VALUES.core.project.GetOrFail},
            collection='deploymentmanager.typeProviders')
        self.page_size = args.page_size
        self.limit = args.limit

        if args.provider_project:
            projects = [args.provider_project]
        else:
            # Most users will be interested in the default gcp-types project types,
            # so by default we want to display those
            projects = [type_provider_ref.project, GCP_TYPES_PROJECT]

        type_providers = collections.OrderedDict()
        if not args.provider:
            self._GetTypeProviders(projects, type_providers)
        else:
            for project in projects:
                type_providers[project] = [type_provider_ref.typeProvider]

        return dm_v2_util.YieldWithHttpExceptions(
            self._YieldPrintableTypesOrErrors(type_providers))