diff --git a/librarian.yaml b/librarian.yaml index d9bbe6f20b04..723a7662c330 100644 --- a/librarian.yaml +++ b/librarian.yaml @@ -16,8 +16,8 @@ version: v0.16.0 repo: googleapis/google-cloud-python sources: googleapis: - commit: dae2a496666e372c1ebf56ceb54fe7f467a2c10e - sha256: 867490e3ce7818a2011475a888ce5d77c68cb7a13764f47d9aec8cf3038320e0 + commit: c73334a47800ba03cc65e46ade96c07f01db3446 + sha256: 07be59c8bc1dfc420e352db0528641baa23943e7dd1659acac41ca55969fb259 default: output: packages tag_format: '{name}-v{version}' diff --git a/packages/google-cloud-bigtable/google/cloud/bigtable_v2/types/bigtable.py b/packages/google-cloud-bigtable/google/cloud/bigtable_v2/types/bigtable.py index 31f8770ab061..bf63f4d1e12e 100644 --- a/packages/google-cloud-bigtable/google/cloud/bigtable_v2/types/bigtable.py +++ b/packages/google-cloud-bigtable/google/cloud/bigtable_v2/types/bigtable.py @@ -1372,6 +1372,14 @@ class ExecuteQueryRequest(proto.Message): ``PrepareQueryRequest``. Any non-empty ``Value.type`` must match the corresponding ``param_types`` entry, or be rejected with ``INVALID_ARGUMENT``. + view_parameters (MutableMapping[str, google.cloud.bigtable_v2.types.Value]): + Optional. This map provides the runtime values returned by + the VIEW_PARAMETERS() function calls, typically used for + user-level scoping of data based on identity. + + The key is the name of the view parameter e.g. ``user_id``, + and the value is the parameter value e.g. + ``alice@example.com``. """ instance_name: str = proto.Field( @@ -1406,6 +1414,12 @@ class ExecuteQueryRequest(proto.Message): number=7, message=data.Value, ) + view_parameters: MutableMapping[str, data.Value] = proto.MapField( + proto.STRING, + proto.MESSAGE, + number=12, + message=data.Value, + ) class ExecuteQueryResponse(proto.Message): diff --git a/packages/google-cloud-container/google/cloud/container/__init__.py b/packages/google-cloud-container/google/cloud/container/__init__.py index f224ab6a676a..3c217158837a 100644 --- a/packages/google-cloud-container/google/cloud/container/__init__.py +++ b/packages/google-cloud-container/google/cloud/container/__init__.py @@ -33,6 +33,7 @@ AddonsConfig, AdvancedDatapathObservabilityConfig, AdvancedMachineFeatures, + AgentSandboxConfig, AnonymousAuthenticationConfig, AuthenticatorGroupsConfig, AutoIpamConfig, @@ -66,9 +67,11 @@ CostManagementConfig, CreateClusterRequest, CreateNodePoolRequest, + CustomImageConfig, DailyMaintenanceWindow, DatabaseEncryption, DatapathProvider, + DataplaneV2Config, DefaultComputeClassConfig, DefaultSnatStatus, DeleteClusterRequest, @@ -257,6 +260,7 @@ "AddonsConfig", "AdvancedDatapathObservabilityConfig", "AdvancedMachineFeatures", + "AgentSandboxConfig", "AnonymousAuthenticationConfig", "AuthenticatorGroupsConfig", "AutoIpamConfig", @@ -290,8 +294,10 @@ "CostManagementConfig", "CreateClusterRequest", "CreateNodePoolRequest", + "CustomImageConfig", "DailyMaintenanceWindow", "DatabaseEncryption", + "DataplaneV2Config", "DefaultComputeClassConfig", "DefaultSnatStatus", "DeleteClusterRequest", diff --git a/packages/google-cloud-container/google/cloud/container_v1/__init__.py b/packages/google-cloud-container/google/cloud/container_v1/__init__.py index 4543b524b21b..b5f5f5dc023c 100644 --- a/packages/google-cloud-container/google/cloud/container_v1/__init__.py +++ b/packages/google-cloud-container/google/cloud/container_v1/__init__.py @@ -33,6 +33,7 @@ AddonsConfig, AdvancedDatapathObservabilityConfig, AdvancedMachineFeatures, + AgentSandboxConfig, AnonymousAuthenticationConfig, AuthenticatorGroupsConfig, AutoIpamConfig, @@ -66,9 +67,11 @@ CostManagementConfig, CreateClusterRequest, CreateNodePoolRequest, + CustomImageConfig, DailyMaintenanceWindow, DatabaseEncryption, DatapathProvider, + DataplaneV2Config, DefaultComputeClassConfig, DefaultSnatStatus, DeleteClusterRequest, @@ -339,6 +342,7 @@ def _get_version(dependency_name): "AddonsConfig", "AdvancedDatapathObservabilityConfig", "AdvancedMachineFeatures", + "AgentSandboxConfig", "AnonymousAuthenticationConfig", "AuthenticatorGroupsConfig", "AutoIpamConfig", @@ -373,10 +377,12 @@ def _get_version(dependency_name): "CostManagementConfig", "CreateClusterRequest", "CreateNodePoolRequest", + "CustomImageConfig", "DNSConfig", "DailyMaintenanceWindow", "DatabaseEncryption", "DatapathProvider", + "DataplaneV2Config", "DefaultComputeClassConfig", "DefaultSnatStatus", "DeleteClusterRequest", diff --git a/packages/google-cloud-container/google/cloud/container_v1/types/__init__.py b/packages/google-cloud-container/google/cloud/container_v1/types/__init__.py index 8e49125b348e..9a7244bc408c 100644 --- a/packages/google-cloud-container/google/cloud/container_v1/types/__init__.py +++ b/packages/google-cloud-container/google/cloud/container_v1/types/__init__.py @@ -22,6 +22,7 @@ AddonsConfig, AdvancedDatapathObservabilityConfig, AdvancedMachineFeatures, + AgentSandboxConfig, AnonymousAuthenticationConfig, AuthenticatorGroupsConfig, AutoIpamConfig, @@ -55,9 +56,11 @@ CostManagementConfig, CreateClusterRequest, CreateNodePoolRequest, + CustomImageConfig, DailyMaintenanceWindow, DatabaseEncryption, DatapathProvider, + DataplaneV2Config, DefaultComputeClassConfig, DefaultSnatStatus, DeleteClusterRequest, @@ -244,6 +247,7 @@ "AddonsConfig", "AdvancedDatapathObservabilityConfig", "AdvancedMachineFeatures", + "AgentSandboxConfig", "AnonymousAuthenticationConfig", "AuthenticatorGroupsConfig", "AutoIpamConfig", @@ -277,8 +281,10 @@ "CostManagementConfig", "CreateClusterRequest", "CreateNodePoolRequest", + "CustomImageConfig", "DailyMaintenanceWindow", "DatabaseEncryption", + "DataplaneV2Config", "DefaultComputeClassConfig", "DefaultSnatStatus", "DeleteClusterRequest", diff --git a/packages/google-cloud-container/google/cloud/container_v1/types/cluster_service.py b/packages/google-cloud-container/google/cloud/container_v1/types/cluster_service.py index 0ffa8e58aa62..f2c13fa6f296 100644 --- a/packages/google-cloud-container/google/cloud/container_v1/types/cluster_service.py +++ b/packages/google-cloud-container/google/cloud/container_v1/types/cluster_service.py @@ -51,6 +51,7 @@ "AdditionalNodeNetworkConfig", "AdditionalPodNetworkConfig", "ShieldedInstanceConfig", + "CustomImageConfig", "SandboxConfig", "GcfsConfig", "ReservationAffinity", @@ -81,6 +82,7 @@ "HighScaleCheckpointingConfig", "LustreCsiDriverConfig", "SlurmOperatorConfig", + "AgentSandboxConfig", "NodeReadinessConfig", "SliceControllerConfig", "RayOperatorConfig", @@ -223,6 +225,7 @@ "NodePoolLoggingConfig", "LoggingVariantConfig", "MonitoringComponentConfig", + "DataplaneV2Config", "ManagedPrometheusConfig", "AutoMonitoringConfig", "PodAutoscaling", @@ -414,7 +417,10 @@ class LinuxNodeConfig(proto.Message): net.core.netdev_max_backlog net.core.rmem_max net.core.rmem_default net.core.wmem_default net.core.wmem_max net.core.optmem_max net.core.somaxconn - net.ipv4.tcp_rmem net.ipv4.tcp_wmem net.ipv4.tcp_tw_reuse + net.ipv4.neigh.default.gc_thresh1 + net.ipv4.neigh.default.gc_thresh2 + net.ipv4.neigh.default.gc_thresh3 net.ipv4.tcp_rmem + net.ipv4.tcp_wmem net.ipv4.tcp_tw_reuse net.ipv4.tcp_mtu_probing net.ipv4.tcp_max_orphans net.ipv4.tcp_max_tw_buckets net.ipv4.tcp_syn_retries net.ipv4.tcp_ecn net.ipv4.tcp_congestion_control @@ -423,7 +429,8 @@ class LinuxNodeConfig(proto.Message): net.netfilter.nf_conntrack_tcp_timeout_close_wait net.netfilter.nf_conntrack_tcp_timeout_time_wait net.netfilter.nf_conntrack_tcp_timeout_established - net.netfilter.nf_conntrack_acct kernel.shmmni kernel.shmmax + net.netfilter.nf_conntrack_acct kernel.keys.maxkeys + kernel.keys.maxbytes kernel.shmmni kernel.shmmax kernel.shmall kernel.perf_event_paranoid kernel.sched_rt_runtime_us kernel.softlockup_panic kernel.yama.ptrace_scope kernel.kptr_restrict @@ -1726,6 +1733,10 @@ class NodeConfig(proto.Message): of it will be used. Please see https://cloud.google.com/kubernetes-engine/docs/concepts/node-images for available image types. + node_image_config (google.cloud.container_v1.types.CustomImageConfig): + The node image configuration to use for this node pool. Note + that this is only applicable for node pools using + image_type=CUSTOM. labels (MutableMapping[str, str]): The Kubernetes labels (key/value pairs) to apply to each node. The values in this field are added to the set of @@ -1986,6 +1997,11 @@ class EffectiveCgroupMode(proto.Enum): proto.STRING, number=5, ) + node_image_config: "CustomImageConfig" = proto.Field( + proto.MESSAGE, + number=90, + message="CustomImageConfig", + ) labels: MutableMapping[str, str] = proto.MapField( proto.STRING, proto.STRING, @@ -2610,6 +2626,27 @@ class ShieldedInstanceConfig(proto.Message): ) +class CustomImageConfig(proto.Message): + r"""CustomImageConfig contains the information r + + Attributes: + image (str): + The name of the image to use for this node. + image_project (str): + The project containing the image to use for + this node. + """ + + image: str = proto.Field( + proto.STRING, + number=1, + ) + image_project: str = proto.Field( + proto.STRING, + number=3, + ) + + class SandboxConfig(proto.Message): r"""SandboxConfig contains configurations of the sandbox to use for the node. @@ -3397,6 +3434,9 @@ class AddonsConfig(proto.Message): slice_controller_config (google.cloud.container_v1.types.SliceControllerConfig): Optional. Configuration for the slice controller add-on. + agent_sandbox_config (google.cloud.container_v1.types.AgentSandboxConfig): + Optional. Configuration for the AgentSandbox + addon. node_readiness_config (google.cloud.container_v1.types.NodeReadinessConfig): Optional. Configuration for NodeReadinessController add-on. @@ -3499,6 +3539,11 @@ class AddonsConfig(proto.Message): number=26, message="SliceControllerConfig", ) + agent_sandbox_config: "AgentSandboxConfig" = proto.Field( + proto.MESSAGE, + number=28, + message="AgentSandboxConfig", + ) node_readiness_config: "NodeReadinessConfig" = proto.Field( proto.MESSAGE, number=29, @@ -3916,6 +3961,21 @@ class SlurmOperatorConfig(proto.Message): ) +class AgentSandboxConfig(proto.Message): + r"""Configuration for the AgentSandbox addon. + + Attributes: + enabled (bool): + Optional. Whether AgentSandbox is enabled for + this cluster. + """ + + enabled: bool = proto.Field( + proto.BOOL, + number=1, + ) + + class NodeReadinessConfig(proto.Message): r"""Configuration for the GKE Node Readiness Controller. @@ -5857,6 +5917,14 @@ class ClusterUpdate(proto.Message): desired_image_type (str): The desired image type for the node pool. NOTE: Set the "desired_node_pool" field as well. + desired_image (str): + The desired name of the image to use for this node. This is + used to create clusters using a custom image. NOTE: Set the + "desired_node_pool" field as well. + desired_image_project (str): + The project containing the desired image to use for this + node. This is used to create clusters using a custom image. + NOTE: Set the "desired_node_pool" field as well. desired_database_encryption (google.cloud.container_v1.types.DatabaseEncryption): Configuration of etcd encryption. desired_workload_identity_config (google.cloud.container_v1.types.WorkloadIdentityConfig): @@ -6185,6 +6253,14 @@ class ClusterUpdate(proto.Message): proto.STRING, number=8, ) + desired_image: str = proto.Field( + proto.STRING, + number=44, + ) + desired_image_project: str = proto.Field( + proto.STRING, + number=45, + ) desired_database_encryption: "DatabaseEncryption" = proto.Field( proto.MESSAGE, number=46, @@ -7314,6 +7390,14 @@ class UpdateNodePoolRequest(proto.Message): The name (project, location, cluster, node pool) of the node pool to update. Specified in the format ``projects/*/locations/*/clusters/*/nodePools/*``. + image (str): + The desired name of the image name to use for + this node. This is used to create clusters using + a custom image. + image_project (str): + The project containing the desired image to + use for this node pool. This is used to create + clusters using a custom image. locations (MutableSequence[str]): The desired list of Google Compute Engine `zones `__ @@ -7478,6 +7562,14 @@ class UpdateNodePoolRequest(proto.Message): proto.STRING, number=8, ) + image: str = proto.Field( + proto.STRING, + number=10, + ) + image_project: str = proto.Field( + proto.STRING, + number=11, + ) locations: MutableSequence[str] = proto.RepeatedField( proto.STRING, number=13, @@ -11015,6 +11107,11 @@ class NetworkConfig(proto.Message): [ClusterUpdate.desired_default_enable_private_nodes][google.container.v1.ClusterUpdate.desired_default_enable_private_nodes] This field is a member of `oneof`_ ``_default_enable_private_nodes``. + dataplane_v2_config (google.cloud.container_v1.types.DataplaneV2Config): + Optional. DataplaneV2Config specifies the + DPv2 configuration. + + This field is a member of `oneof`_ ``_dataplane_v2_config``. disable_l4_lb_firewall_reconciliation (bool): Disable L4 load balancer VPC firewalls to enable firewall policies. @@ -11132,6 +11229,12 @@ class Tier(proto.Enum): number=22, optional=True, ) + dataplane_v2_config: "DataplaneV2Config" = proto.Field( + proto.MESSAGE, + number=23, + optional=True, + message="DataplaneV2Config", + ) disable_l4_lb_firewall_reconciliation: bool = proto.Field( proto.BOOL, number=24, @@ -13266,6 +13369,42 @@ class Component(proto.Enum): ) +class DataplaneV2Config(proto.Message): + r"""DataplaneV2Config is the configuration for DPv2. + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + + Attributes: + scalability_mode (google.cloud.container_v1.types.DataplaneV2Config.ScalabilityMode): + Optional. Scalability mode for the cluster. + + This field is a member of `oneof`_ ``_scalability_mode``. + """ + + class ScalabilityMode(proto.Enum): + r"""Options on how to scale the cluster. + + Values: + SCALABILITY_MODE_UNSPECIFIED (0): + Default value. + DISABLED (3): + Disables the scale optimized mode for DPv2. + SCALE_OPTIMIZED (4): + Enables the scale optimized mode for DPv2. + """ + + SCALABILITY_MODE_UNSPECIFIED = 0 + DISABLED = 3 + SCALE_OPTIMIZED = 4 + + scalability_mode: ScalabilityMode = proto.Field( + proto.ENUM, + number=1, + optional=True, + enum=ScalabilityMode, + ) + + class ManagedPrometheusConfig(proto.Message): r"""ManagedPrometheusConfig defines the configuration for Google Cloud Managed Service for Prometheus. diff --git a/packages/google-cloud-container/tests/unit/gapic/container_v1/test_cluster_manager.py b/packages/google-cloud-container/tests/unit/gapic/container_v1/test_cluster_manager.py index d0952b16b3e1..1e915cb4b626 100644 --- a/packages/google-cloud-container/tests/unit/gapic/container_v1/test_cluster_manager.py +++ b/packages/google-cloud-container/tests/unit/gapic/container_v1/test_cluster_manager.py @@ -3065,6 +3065,8 @@ def test_update_node_pool_non_empty_request_with_auto_populated_field(): node_version="node_version_value", image_type="image_type_value", name="name_value", + image="image_value", + image_project="image_project_value", etag="etag_value", machine_type="machine_type_value", disk_type="disk_type_value", @@ -3086,6 +3088,8 @@ def test_update_node_pool_non_empty_request_with_auto_populated_field(): node_version="node_version_value", image_type="image_type_value", name="name_value", + image="image_value", + image_project="image_project_value", etag="etag_value", machine_type="machine_type_value", disk_type="disk_type_value", diff --git a/packages/google-cloud-dataproc/google/cloud/dataproc_v1/services/job_controller/async_client.py b/packages/google-cloud-dataproc/google/cloud/dataproc_v1/services/job_controller/async_client.py index 1e369d4f7c5d..9e0cee0c39cf 100644 --- a/packages/google-cloud-dataproc/google/cloud/dataproc_v1/services/job_controller/async_client.py +++ b/packages/google-cloud-dataproc/google/cloud/dataproc_v1/services/job_controller/async_client.py @@ -793,17 +793,21 @@ async def sample_list_jobs(): [field = value] AND [field [= value]] ... - where **field** is ``status.state`` or ``labels.[KEY]``, - and ``[KEY]`` is a label key. **value** can be ``*`` to - match all values. ``status.state`` can be either - ``ACTIVE`` or ``NON_ACTIVE``. Only the logical ``AND`` + where **field** is ``status.state`` or ``insertTime``, + or ``labels.[KEY]``, and ``[KEY]`` is a label key. + **value** can be ``*`` to match all values. + ``status.state`` can be either ``ACTIVE`` or + ``NON_ACTIVE``. Allows ``insertTime`` to be a timestamp + in RFC 3339 format in double quotes, such as + ``2025-01-01T00:00:00Z``. Only the logical ``AND`` operator is supported; space-separated items are treated as having an implicit ``AND`` operator. Example filter: status.state = ACTIVE AND labels.env = staging AND - labels.starred = \* + labels.starred = \* AND insertTime <= + "2025-01-01T00:00:00Z" This corresponds to the ``filter`` field on the ``request`` instance; if ``request`` is provided, this diff --git a/packages/google-cloud-dataproc/google/cloud/dataproc_v1/services/job_controller/client.py b/packages/google-cloud-dataproc/google/cloud/dataproc_v1/services/job_controller/client.py index 12bb303f21af..aa730dfeb8c4 100644 --- a/packages/google-cloud-dataproc/google/cloud/dataproc_v1/services/job_controller/client.py +++ b/packages/google-cloud-dataproc/google/cloud/dataproc_v1/services/job_controller/client.py @@ -1200,17 +1200,21 @@ def sample_list_jobs(): [field = value] AND [field [= value]] ... - where **field** is ``status.state`` or ``labels.[KEY]``, - and ``[KEY]`` is a label key. **value** can be ``*`` to - match all values. ``status.state`` can be either - ``ACTIVE`` or ``NON_ACTIVE``. Only the logical ``AND`` + where **field** is ``status.state`` or ``insertTime``, + or ``labels.[KEY]``, and ``[KEY]`` is a label key. + **value** can be ``*`` to match all values. + ``status.state`` can be either ``ACTIVE`` or + ``NON_ACTIVE``. Allows ``insertTime`` to be a timestamp + in RFC 3339 format in double quotes, such as + ``2025-01-01T00:00:00Z``. Only the logical ``AND`` operator is supported; space-separated items are treated as having an implicit ``AND`` operator. Example filter: status.state = ACTIVE AND labels.env = staging AND - labels.starred = \* + labels.starred = \* AND insertTime <= + "2025-01-01T00:00:00Z" This corresponds to the ``filter`` field on the ``request`` instance; if ``request`` is provided, this diff --git a/packages/google-cloud-dataproc/google/cloud/dataproc_v1/types/jobs.py b/packages/google-cloud-dataproc/google/cloud/dataproc_v1/types/jobs.py index 0f59e378ae3e..f30327b0aa60 100644 --- a/packages/google-cloud-dataproc/google/cloud/dataproc_v1/types/jobs.py +++ b/packages/google-cloud-dataproc/google/cloud/dataproc_v1/types/jobs.py @@ -1140,6 +1140,13 @@ class YarnApplication(proto.Message): application-specific information. The URL uses the internal hostname, and requires a proxy server for resolution and, possibly, access. + vcore_seconds (int): + Optional. The cumulative CPU time consumed by + the application for a job, measured in + vcore-seconds. + memory_mb_seconds (int): + Optional. The cumulative memory usage of the + application for a job, measured in mb-seconds. """ class State(proto.Enum): @@ -1194,6 +1201,14 @@ class State(proto.Enum): proto.STRING, number=4, ) + vcore_seconds: int = proto.Field( + proto.INT64, + number=5, + ) + memory_mb_seconds: int = proto.Field( + proto.INT64, + number=6, + ) class Job(proto.Message): @@ -1622,17 +1637,19 @@ class ListJobsRequest(proto.Message): [field = value] AND [field [= value]] ... - where **field** is ``status.state`` or ``labels.[KEY]``, and - ``[KEY]`` is a label key. **value** can be ``*`` to match - all values. ``status.state`` can be either ``ACTIVE`` or - ``NON_ACTIVE``. Only the logical ``AND`` operator is - supported; space-separated items are treated as having an - implicit ``AND`` operator. + where **field** is ``status.state`` or ``insertTime``, or + ``labels.[KEY]``, and ``[KEY]`` is a label key. **value** + can be ``*`` to match all values. ``status.state`` can be + either ``ACTIVE`` or ``NON_ACTIVE``. Allows ``insertTime`` + to be a timestamp in RFC 3339 format in double quotes, such + as ``2025-01-01T00:00:00Z``. Only the logical ``AND`` + operator is supported; space-separated items are treated as + having an implicit ``AND`` operator. Example filter: status.state = ACTIVE AND labels.env = staging AND - labels.starred = \* + labels.starred = \* AND insertTime <= "2025-01-01T00:00:00Z". """ class JobStateMatcher(proto.Enum): diff --git a/packages/google-cloud-dataproc/tests/unit/gapic/dataproc_v1/test_job_controller.py b/packages/google-cloud-dataproc/tests/unit/gapic/dataproc_v1/test_job_controller.py index b799a1db0efe..967afafabb48 100644 --- a/packages/google-cloud-dataproc/tests/unit/gapic/dataproc_v1/test_job_controller.py +++ b/packages/google-cloud-dataproc/tests/unit/gapic/dataproc_v1/test_job_controller.py @@ -6451,6 +6451,8 @@ def test_update_job_rest_call_success(request_type): "state": 1, "progress": 0.885, "tracking_url": "tracking_url_value", + "vcore_seconds": 1389, + "memory_mb_seconds": 1813, } ], "driver_output_resource_uri": "driver_output_resource_uri_value", diff --git a/packages/google-cloud-saasplatform-saasservicemgmt/google/cloud/saasplatform_saasservicemgmt_v1beta1/types/common.py b/packages/google-cloud-saasplatform-saasservicemgmt/google/cloud/saasplatform_saasservicemgmt_v1beta1/types/common.py index 95ae157c6029..b9f230f9c1fb 100644 --- a/packages/google-cloud-saasplatform-saasservicemgmt/google/cloud/saasplatform_saasservicemgmt_v1beta1/types/common.py +++ b/packages/google-cloud-saasplatform-saasservicemgmt/google/cloud/saasplatform_saasservicemgmt_v1beta1/types/common.py @@ -210,6 +210,12 @@ class Type(proto.Enum): Condition type is operationError. True when the last unit operation fails with a non-ignorable error. + TYPE_APP_CREATED_OR_ALREADY_EXISTS (5): + Indicates if AppHub app has been created or + if Apphub app has already existed. + TYPE_APP_COMPONENTS_REGISTERED (6): + Indicates if services and workloads have been + registered with AppHub. """ TYPE_UNSPECIFIED = 0 @@ -217,6 +223,8 @@ class Type(proto.Enum): TYPE_UPDATING = 2 TYPE_PROVISIONED = 3 TYPE_OPERATION_ERROR = 4 + TYPE_APP_CREATED_OR_ALREADY_EXISTS = 5 + TYPE_APP_COMPONENTS_REGISTERED = 6 status: Status = proto.Field( proto.ENUM,