File: //snap/google-cloud-cli/394/lib/surface/firebase/test/android/list_device_capacities.py
# -*- coding: utf-8 -*- #
# Copyright 2023 Google LLC. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
"""The 'gcloud firebase test android list-device-capacities' command."""
from __future__ import absolute_import
from __future__ import division
from __future__ import unicode_literals
from googlecloudsdk.api_lib.firebase.test import util
from googlecloudsdk.api_lib.firebase.test.device_capacities import DEVICE_CAPACITY_TABLE_FORMAT
from googlecloudsdk.api_lib.firebase.test.device_capacities import DeviceCapacities
from googlecloudsdk.calliope import base
DETAILED_HELP = {
'EXAMPLES':
"""
To list all published capacity information for Android devices, run:
$ {command}
To list capacity only for the model named 'redfin', run:
$ {command} --filter=redfin
To list capacities only for models that support API version 30, run:
$ {command} --filter=30
""",
}
class ListDeviceCapacities(base.ListCommand, DeviceCapacities):
"""List capacity information for Android models & versions.
List device capacity information (high/medium/low/none) for all Android
models & versions which are available for testing and have capacity
information published.
Device capacity is the number of online devices in Firebase Test Lab. For
physical devices, the number is the average of online devices in the last 30
days. It's important to note that device capacity does not directly reflect
any real-time data, like the length of the test queue, or the
available/busy state of the devices based on current test traffic.
"""
@staticmethod
def Args(parser):
"""Method called by Calliope to register flags for this command.
Args:
parser: An argparse parser used to add arguments that follow this
command in the CLI. Positional arguments are allowed.
"""
parser.display_info.AddFormat(DEVICE_CAPACITY_TABLE_FORMAT)
base.URI_FLAG.RemoveFromParser(parser)
def Run(self, args):
"""Run the 'gcloud firebase test android list-device-capacities' command.
Args:
args: an argparse namespace. All the arguments that were provided to this
command invocation (i.e. group and command arguments combined).
Returns:
The list of device models, versions, and capacity info we want to have
printed later. Obsolete (unsupported) devices, versions, and entries
missing capacity info are filtered out.
"""
return self.get_capacity_data(util.GetAndroidCatalog(self.context))
ListDeviceCapacities.detailed_help = DETAILED_HELP