feat: Add new gcloud commands, API clients, and third-party libraries across various services.

This commit is contained in:
2026-01-01 20:26:35 +01:00
parent 5e23cbece0
commit a19e592eb7
25221 changed files with 8324611 additions and 0 deletions

View File

@@ -0,0 +1,39 @@
# -*- coding: utf-8 -*- #
# Copyright 2024 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 command group for the Resource Settings CLI."""
from __future__ import absolute_import
from __future__ import division
from __future__ import unicode_literals
from googlecloudsdk.calliope import base
@base.Hidden
@base.DefaultUniverseOnly
@base.ReleaseTracks(base.ReleaseTrack.ALPHA)
class ResourceSettings(base.Group):
"""Create and manage Resource Settings.
The gcloud Resource Settings command group lets you create and manipulate
Resource Settings.
The Resource Settings Service is a hierarchy-aware service with a
public-facing API for end-users to store settings that modify the behavior of
their Google Cloud Platform resources (e.g., VM, firewall, Project, etc.).
The settings are attached at the project level and above and can influence CRM
resources as well as sub-project resources that are descendants of the setting
attachment point.
"""

View File

@@ -0,0 +1,73 @@
# -*- coding: utf-8 -*- #
# Copyright 2024 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.
"""Unset-value command for the Resource Settings CLI."""
from __future__ import absolute_import
from __future__ import division
from __future__ import unicode_literals
from googlecloudsdk.api_lib.resource_manager.settings import utils as api_utils
from googlecloudsdk.calliope import base
from googlecloudsdk.command_lib.resource_manager.settings import arguments
from googlecloudsdk.command_lib.resource_manager.settings import utils
from googlecloudsdk.core.console import console_io
@base.Hidden
@base.DefaultUniverseOnly
@base.ReleaseTracks(base.ReleaseTrack.ALPHA)
class Clear(base.DescribeCommand):
r"""Remove the value of a resource setting.
Remove the value of a resource setting. This reverts the resource to
inheriting the resource settings from above it in the resource hierarchy,
if any is set on a resource above it.
## EXAMPLES
To unset the resource settings ``net-preferredDnsServers'' with the
project ``foo-project'', run:
$ {command} net-preferredDnsServers --project=foo-project
"""
@staticmethod
def Args(parser):
arguments.AddSettingsNameArgToParser(parser)
arguments.AddResourceFlagsToParser(parser)
def Run(self, args):
"""Unset the resource settings.
Args:
args: argparse.Namespace, An object that contains the values for the
arguments specified in the Args method.
Returns:
The deleted settings.
"""
settings_service = api_utils.GetServiceFromArgs(args)
setting_name = utils.GetSettingsPathFromArgs(args)
if not console_io.PromptContinue(
message=('Your setting will be cleared.'),
):
return None
get_request = api_utils.GetDeleteValueRequestFromArgs(args, setting_name)
setting_value = settings_service.Clear(get_request)
return setting_value

View File

@@ -0,0 +1,87 @@
# -*- coding: utf-8 -*- #
# Copyright 2024 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.
"""Describe command for the Resource Settings CLI."""
from __future__ import absolute_import
from __future__ import division
from __future__ import unicode_literals
from googlecloudsdk.api_lib.resource_manager.settings import utils as api_utils
from googlecloudsdk.calliope import base
from googlecloudsdk.command_lib.resource_manager.settings import arguments
from googlecloudsdk.command_lib.resource_manager.settings import utils
@base.Hidden
@base.DefaultUniverseOnly
@base.ReleaseTracks(base.ReleaseTrack.ALPHA)
class Describe(base.DescribeCommand):
r"""Get a resource setting.
Get a resource setting
## EXAMPLES
To describe the resource settings ``iam-projectCreatorRoles'' with the
Project ``foo-project'', run:
$ {command} iam-projectCreatorRoles --project=foo-project
"""
@staticmethod
def Args(parser):
arguments.AddSettingsNameArgToParser(parser)
arguments.AddResourceFlagsToParser(parser)
parser.add_argument(
'--effective',
action='store_true',
help='Describe the effective setting.',
)
def Run(self, args):
"""Get the (effective) resource settings.
If --effective is not specified, it is a regular resource setting.
If --effective is specified, it is an effective setting.
Args:
args: argparse.Namespace, An object that contains the values for the
arguments specified in the Args method.
Returns:
The retrieved settings.
"""
if args.effective:
settings_service = api_utils.GetEffectiveServiceFromArgs(args)
setting_name = utils.GetEffectiveSettingsPathFromArgs(args)
get_request = api_utils.GetDescribeRequestFromArgs(
args, setting_name, True
)
setting_value = settings_service.Get(get_request)
return setting_value
else:
settings_service = api_utils.GetServiceFromArgs(args)
setting_name = utils.GetSettingsPathFromArgs(args)
get_request = api_utils.GetDescribeRequestFromArgs(
args, setting_name, False
)
setting_value = settings_service.Get(get_request)
return setting_value

View File

@@ -0,0 +1,56 @@
# -*- coding: utf-8 -*- #
# Copyright 2024 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.
"""List command for the Resource Settings CLI."""
from __future__ import absolute_import
from __future__ import division
from __future__ import unicode_literals
from googlecloudsdk.api_lib.resource_manager.settings import utils as api_utils
from googlecloudsdk.calliope import base
from googlecloudsdk.command_lib.resource_manager.settings import arguments
from googlecloudsdk.command_lib.resource_manager.settings import utils
@base.Hidden
@base.DefaultUniverseOnly
@base.ReleaseTracks(base.ReleaseTrack.ALPHA)
class List(base.ListCommand):
r"""List all available resource settings.
List all available resource settings. ## EXAMPLES To list all available
resource settings with the project ``foo-project'', run:
$ {command} --project=foo-project
"""
@staticmethod
def Args(parser):
arguments.AddResourceFlagsToParser(parser)
def Run(self, args):
"""Get the resource settings.
Args:
args: argparse.Namespace, An object that contains the values for the
arguments specified in the Args method.
Returns:
The retrieved settings.
"""
settings_service = api_utils.GetServiceFromArgs(args)
parent_resource = utils.GetParentResourceFromArgs(args)
get_request = api_utils.GetListRequestFromArgs(args, parent_resource)
setting_value = settings_service.List(get_request)
return setting_value

View File

@@ -0,0 +1,88 @@
# -*- coding: utf-8 -*- #
# Copyright 2024 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.
"""Set-policy command for the Resource Settings CLI."""
from __future__ import absolute_import
from __future__ import division
from __future__ import unicode_literals
from argcomplete import completers
from googlecloudsdk.api_lib.resource_manager.settings import service
from googlecloudsdk.api_lib.resource_manager.settings import utils as api_utils
from googlecloudsdk.calliope import base
from googlecloudsdk.command_lib.resource_manager.settings import exceptions
from googlecloudsdk.command_lib.resource_manager.settings import utils
@base.Hidden
@base.DefaultUniverseOnly
@base.ReleaseTracks(base.ReleaseTrack.ALPHA)
class Update(base.Command):
r"""Update the value of a resource setting.
Update the value of a resource setting.
## EXAMPLES
To set the resource setting from the file with the path ``./sample_path'',
run:
$ {command} --setting-from-file="./test_input.json"
"""
@staticmethod
def Args(parser):
parser.add_argument(
'--setting-from-file',
metavar='setting-from-file',
completer=completers.FilesCompleter,
required=True,
help='Path to JSON or YAML file that contains the resource setting.')
def Run(self, args):
"""Creates or updates a setting from a JSON or YAML file.
Args:
args: argparse.Namespace, An object that contains the values for the
arguments specified in the Args method.
Returns:
The created or updated setting.
"""
settings_message = service.ResourceSettingsMessages()
# TODO(b/379282601): Instead of taking all input from file , if we can use flags
input_setting = utils.GetMessageFromFile(
args.setting_from_file, settings_message.Setting)
if not input_setting.name:
raise exceptions.InvalidInputError(
'Name field not present in the resource setting.')
if not utils.ValidateSettingPath(input_setting.name):
raise exceptions.InvalidInputError('Name field has invalid syntax')
resource_type = utils.GetResourceTypeFromString(input_setting.name)
settings_service = api_utils.GetServiceFromResourceType(resource_type)
# Syntax: [organizations|folders|projects]/{resource_id}/
# settings/{setting_name}
setting_path = input_setting.name
etag = input_setting.etag if hasattr(input_setting, 'etag') else None
update_request = api_utils.GetPatchRequestFromResourceType(
resource_type, setting_path, input_setting.value, etag)
update_response = settings_service.Patch(update_request)
return update_response