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)
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())
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)
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)
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)
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
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
def Run(self, args): """Run the list command.""" # TODO(user): b/27946801 handle --limit,--page-size,--filter return projects_api.List()
def Run(self, args): """Run the list command.""" return projects_api.List()