Esempio n. 1
0
 def Run(self, args):
     """Run the list command."""
     args.filter, server_filter = filter_rewrite.ListRewriter().Rewrite(
         args.filter)
     log.info('client_filter="%s" server_filter="%s"', args.filter,
              server_filter)
     return projects_api.List(limit=args.limit, filter=server_filter)
Esempio n. 2
0
def UserAccessibleProjectIDSet():
    """Retrieve the project IDs of projects the user can access.

  Returns:
    set of project IDs.
  """
    return set(p.projectId for p in projects_api.List())
Esempio n. 3
0
    def _PickProject(self, preselected=None):
        """Allows user to select a project.

    Args:
      preselected: str, use this value if not None

    Returns:
      str, project_id or None if was not selected.
    """
        try:
            projects = list(projects_api.List())
        except Exception:  # pylint: disable=broad-except
            log.debug('Failed to execute projects list: %s, %s, %s',
                      *sys.exc_info())
            projects = None

        if projects is None:  # Failed to get the list.
            project_id = preselected or console_io.PromptResponse(
                'Enter project id you would like to use:  ')
            if not project_id:
                return None
        else:
            projects = sorted(projects, key=lambda prj: prj.projectId)
            choices = [project.projectId for project in projects]
            if not choices:
                log.status.write(
                    '\nThis account has no projects. Please create one in '
                    'developers console '
                    '(https://console.developers.google.com/project) '
                    'before running this command.\n')
                return None
            if preselected:
                project_id = preselected
                project_names = [project.projectId for project in projects]
                if project_id not in project_names:
                    log.status.write(
                        '\n[{0}] is not one of your projects [{1}].\n'.format(
                            project_id, ','.join(project_names)))
                    return None
            elif len(choices) == 1:
                project_id = projects[0].projectId
            else:
                idx = console_io.PromptChoice(
                    choices,
                    message='Pick cloud project to use: ',
                    allow_freeform=True,
                    freeform_suggester=usage_text.TextChoiceSuggester())
                if idx is None:
                    return None
                project_id = projects[idx].projectId

        self._RunCmd(['config', 'set'], ['project', project_id])
        log.status.write(
            'Your current project has been set to: [{0}].\n\n'.format(
                project_id))
        return project_id
 def testListFilter(self):
   test_project = util.GetTestActiveProject()
   self.mock_client.projects.List.Expect(
       self.messages.CloudresourcemanagerProjectsListRequest(
           pageSize=500,
           filter='lifecycleState:ACTIVE AND (id:foo)'),
       self.messages.ListProjectsResponse(projects=[test_project]))
   results_generator = projects_api.List(filter='id:foo')
   results = [x for x in results_generator]
   self.assertEqual([test_project], results)
Esempio n. 5
0
 def Run(self, args):
     """Run the list command."""
     args.filter, server_filter = filter_rewrite.ListRewriter().Rewrite(
         args.filter)
     log.info('client_filter="%s" server_filter="%s"', args.filter,
              server_filter)
     server_limit = args.limit
     if args.filter:
         # We must use client-side limiting if we are using client-side filtering.
         server_limit = None
     return projects_api.List(limit=server_limit, filter=server_filter)
Esempio n. 6
0
def _GetProjectIds():
    """Returns a list of project IDs the current user can list.

  Returns:
    list of str, project IDs, or None (if the command fails).
  """
    try:
        return sorted([project.projectId for project in projects_api.List()])
    except Exception as err:  # pylint: disable=broad-except
        log.warn('Listing available projects failed: %s', str(err))
        return None
 def Run(self, args):
     """Run the list command."""
     display_info = args.GetDisplayInfo()
     defaults = resource_projection_spec.ProjectionSpec(
         symbols=display_info.transforms, aliases=display_info.aliases)
     args.filter, server_filter = filter_rewrite.ListRewriter().Rewrite(
         args.filter, defaults=defaults)
     log.info('client_filter="%s" server_filter="%s"', args.filter,
              server_filter)
     server_limit = args.limit
     if args.filter:
         # We must use client-side limiting if we are using client-side filtering.
         server_limit = None
     return projects_api.List(limit=server_limit, filter=server_filter)
Esempio n. 8
0
def _GetProjectIds(limit=None):
    """Returns a list of project IDs the current user can list.

  Args:
    limit: int, the maximum number of project ids to return.

  Returns:
    list of str, project IDs, or None (if the command fails).
  """
    try:
        projects = projects_api.List(limit=limit)
        return sorted([project.projectId for project in projects])
    except Exception as err:  # pylint: disable=broad-except
        log.warning('Listing available projects failed: %s', str(err))
        return None
Esempio n. 9
0
def _GetProjectIds(limit=None):
    """Returns a list of project IDs the current user can list.

  Args:
    limit: int, the maximum number of project ids to return.

  Returns:
    list of str, project IDs, or None (if the command fails).
  """
    try:
        # We do limiting here because apitools.base.py.list_pager.YieldFromList
        # will keep decreasing the batch size as it gets more items if we pass it
        # a limit argument (It uses limit as a counter and sets the request batch
        # size to min(batch_size, limit)). So using limit from YieldFromList would
        # nullify the effect of setting a large batch size and could even make this
        # step even slower.
        projects = projects_api.List(batch_size=_PROJECT_LIST_BATCH_SIZE)
        if limit is not None:
            projects = itertools.islice(projects, limit)
        return sorted([project.projectId for project in projects])
    except Exception as err:  # pylint: disable=broad-except
        log.warn('Listing available projects failed: %s', str(err))
        return None
Esempio n. 10
0
    def Run(self, args):
        """Run the list command."""

        # TODO(user): b/27946801 handle --limit,--page-size,--filter
        return projects_api.List()
Esempio n. 11
0
 def Run(self, args):
     """Run the list command."""
     return projects_api.List()