1# -*- coding: utf-8 -*- #
2# Copyright 2021 Google LLC. All Rights Reserved.
3#
4# Licensed under the Apache License, Version 2.0 (the "License");
5# you may not use this file except in compliance with the License.
6# You may obtain a copy of the License at
7#
8#    http://www.apache.org/licenses/LICENSE-2.0
9#
10# Unless required by applicable law or agreed to in writing, software
11# distributed under the License is distributed on an "AS IS" BASIS,
12# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13# See the License for the specific language governing permissions and
14# limitations under the License.
15"""Command to list Tensorboards in AI platform."""
16
17from __future__ import absolute_import
18from __future__ import division
19from __future__ import unicode_literals
20
21from googlecloudsdk.api_lib.ai.tensorboards import client
22from googlecloudsdk.calliope import base
23from googlecloudsdk.command_lib.ai import constants
24from googlecloudsdk.command_lib.ai import endpoint_util
25from googlecloudsdk.command_lib.ai import flags
26from googlecloudsdk.core import resources
27
28
29def _GetUri(tensorboard):
30  ref = resources.REGISTRY.ParseRelativeName(
31      tensorboard.name,
32      constants.TENSORBOARDS_COLLECTION,
33      api_version=constants.AI_PLATFORM_API_VERSION[constants.ALPHA_VERSION])
34  return ref.SelfLink()
35
36
37@base.ReleaseTracks(base.ReleaseTrack.ALPHA)
38class List(base.ListCommand):
39  """Lists the Tensorboards of the given project and region."""
40
41  @staticmethod
42  def Args(parser):
43    flags.AddRegionResourceArg(parser, 'to list Tensorboards')
44    parser.display_info.AddUriFunc(_GetUri)
45
46  def _Run(self, args):
47    region_ref = args.CONCEPTS.region.Parse()
48    region = region_ref.AsDict()['locationsId']
49    with endpoint_util.AiplatformEndpointOverrides(
50        version=constants.ALPHA_VERSION, region=region):
51      return client.TensorboardsClient().List(
52          limit=args.limit,
53          page_size=args.page_size,
54          region_ref=region_ref,
55          sort_by=args.sort_by)
56
57  def Run(self, args):
58    return self._Run(args)
59