From 76a6ff7b203227ad1ee7e5fc3d2aa957bb7e3c3e Mon Sep 17 00:00:00 2001 From: WhiteSource Renovate Date: Mon, 10 Oct 2022 20:14:51 +0200 Subject: [PATCH 01/16] chore(deps): update dependency google-cloud-securitycenter to v1.16.2 (#401) --- samples/snippets/requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/samples/snippets/requirements.txt b/samples/snippets/requirements.txt index 4724ca00..b6941917 100644 --- a/samples/snippets/requirements.txt +++ b/samples/snippets/requirements.txt @@ -1,2 +1,2 @@ google-cloud-pubsub==2.13.7 -google-cloud-securitycenter==1.16.1 \ No newline at end of file +google-cloud-securitycenter==1.16.2 \ No newline at end of file From 667729a0ef3b59269302d68f53cd52d1068cf4fa Mon Sep 17 00:00:00 2001 From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com> Date: Sun, 16 Oct 2022 05:37:52 -0400 Subject: [PATCH 02/16] feat: Adding project/folder level parents to notification configs in SCC (#403) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat: Adding project/folder level parents to notification configs in SCC PiperOrigin-RevId: 481230115 Source-Link: https://github.com/googleapis/googleapis/commit/94efa50017258958b7ce637bab25d459c67de8e9 Source-Link: https://github.com/googleapis/googleapis-gen/commit/cf106b5c0d4f727a8bfc8e23749330421f40b817 Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiY2YxMDZiNWMwZDRmNzI3YThiZmM4ZTIzNzQ5MzMwNDIxZjQwYjgxNyJ9 * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md Co-authored-by: Owl Bot --- .../services/security_center/async_client.py | 6 ++++-- .../securitycenter_v1/services/security_center/client.py | 6 ++++-- .../cloud/securitycenter_v1/types/securitycenter_service.py | 6 ++++-- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/google/cloud/securitycenter_v1/services/security_center/async_client.py b/google/cloud/securitycenter_v1/services/security_center/async_client.py index 1092ec28..17448595 100644 --- a/google/cloud/securitycenter_v1/services/security_center/async_client.py +++ b/google/cloud/securitycenter_v1/services/security_center/async_client.py @@ -840,7 +840,8 @@ async def sample_create_notification_config(): notification config. parent (:class:`str`): Required. Resource name of the new notification config's - parent. Its format is "organizations/[organization_id]". + parent. Its format is "organizations/[organization_id]", + "folders/[folder_id]", or "projects/[project_id]". This corresponds to the ``parent`` field on the ``request`` instance; if ``request`` is provided, this @@ -2492,7 +2493,8 @@ async def sample_list_notification_configs(): parent (:class:`str`): Required. Name of the organization to list notification configs. Its format is - "organizations/[organization_id]". + "organizations/[organization_id]", + "folders/[folder_id]", or "projects/[project_id]". This corresponds to the ``parent`` field on the ``request`` instance; if ``request`` is provided, this diff --git a/google/cloud/securitycenter_v1/services/security_center/client.py b/google/cloud/securitycenter_v1/services/security_center/client.py index 1e403d9f..e07854ca 100644 --- a/google/cloud/securitycenter_v1/services/security_center/client.py +++ b/google/cloud/securitycenter_v1/services/security_center/client.py @@ -1211,7 +1211,8 @@ def sample_create_notification_config(): notification config. parent (str): Required. Resource name of the new notification config's - parent. Its format is "organizations/[organization_id]". + parent. Its format is "organizations/[organization_id]", + "folders/[folder_id]", or "projects/[project_id]". This corresponds to the ``parent`` field on the ``request`` instance; if ``request`` is provided, this @@ -2795,7 +2796,8 @@ def sample_list_notification_configs(): parent (str): Required. Name of the organization to list notification configs. Its format is - "organizations/[organization_id]". + "organizations/[organization_id]", + "folders/[folder_id]", or "projects/[project_id]". This corresponds to the ``parent`` field on the ``request`` instance; if ``request`` is provided, this diff --git a/google/cloud/securitycenter_v1/types/securitycenter_service.py b/google/cloud/securitycenter_v1/types/securitycenter_service.py index 8dad87eb..db94af83 100644 --- a/google/cloud/securitycenter_v1/types/securitycenter_service.py +++ b/google/cloud/securitycenter_v1/types/securitycenter_service.py @@ -220,7 +220,8 @@ class CreateNotificationConfigRequest(proto.Message): Attributes: parent (str): Required. Resource name of the new notification config's - parent. Its format is "organizations/[organization_id]". + parent. Its format is "organizations/[organization_id]", + "folders/[folder_id]", or "projects/[project_id]". config_id (str): Required. Unique identifier provided by the client within @@ -957,7 +958,8 @@ class ListNotificationConfigsRequest(proto.Message): Attributes: parent (str): Required. Name of the organization to list notification - configs. Its format is "organizations/[organization_id]". + configs. Its format is "organizations/[organization_id]", + "folders/[folder_id]", or "projects/[project_id]". page_token (str): The value returned by the last ``ListNotificationConfigsResponse``; indicates that this is From 8a9242252764fe43e91bac581d9aa880f5eb3144 Mon Sep 17 00:00:00 2001 From: WhiteSource Renovate Date: Tue, 18 Oct 2022 17:31:49 +0200 Subject: [PATCH 03/16] chore(deps): update all dependencies (#402) Co-authored-by: Anthonios Partheniou --- samples/snippets/requirements-test.txt | 2 +- samples/snippets/requirements.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/samples/snippets/requirements-test.txt b/samples/snippets/requirements-test.txt index fc11ba8d..a5b9f43c 100644 --- a/samples/snippets/requirements-test.txt +++ b/samples/snippets/requirements-test.txt @@ -1,2 +1,2 @@ pytest==7.1.3 -google-cloud-bigquery==3.3.3 +google-cloud-bigquery==3.3.5 diff --git a/samples/snippets/requirements.txt b/samples/snippets/requirements.txt index b6941917..9a8e73c3 100644 --- a/samples/snippets/requirements.txt +++ b/samples/snippets/requirements.txt @@ -1,2 +1,2 @@ -google-cloud-pubsub==2.13.7 +google-cloud-pubsub==2.13.10 google-cloud-securitycenter==1.16.2 \ No newline at end of file From 92509590fa1f4a3b2d72ed9185c129d15d2dbbf4 Mon Sep 17 00:00:00 2001 From: WhiteSource Renovate Date: Wed, 26 Oct 2022 12:50:25 +0200 Subject: [PATCH 04/16] chore(deps): update dependency pytest to v7.2.0 (#406) --- samples/snippets/requirements-test.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/samples/snippets/requirements-test.txt b/samples/snippets/requirements-test.txt index a5b9f43c..e47a4859 100644 --- a/samples/snippets/requirements-test.txt +++ b/samples/snippets/requirements-test.txt @@ -1,2 +1,2 @@ -pytest==7.1.3 +pytest==7.2.0 google-cloud-bigquery==3.3.5 From 596017339116c243c5f42d9942fd4a37afd9207c Mon Sep 17 00:00:00 2001 From: Sita Lakshmi Sangameswaran Date: Fri, 28 Oct 2022 04:24:32 +0530 Subject: [PATCH 05/16] docs(samples): update samples to include new parent levels (folder and project) (#405) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * docs(samples): update samples to include new parent levels (folder and project) * change parent_name to parent_id * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md * updated acc to review comments * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md Co-authored-by: Owl Bot Co-authored-by: Anthonios Partheniou --- .../snippets/snippets_notification_configs.py | 114 ++++++++++-------- .../snippets/snippets_notification_test.py | 12 +- 2 files changed, 71 insertions(+), 55 deletions(-) diff --git a/samples/snippets/snippets_notification_configs.py b/samples/snippets/snippets_notification_configs.py index 4d615276..6cc82dd8 100644 --- a/samples/snippets/snippets_notification_configs.py +++ b/samples/snippets/snippets_notification_configs.py @@ -16,23 +16,26 @@ """Demos for working with notification configs.""" -def create_notification_config(organization_id, notification_config_id, pubsub_topic): - - # [START securitycenter_create_notification_config] +# [START securitycenter_create_notification_config] +def create_notification_config(parent_id, notification_config_id, pubsub_topic): + """ + Args: + parent_id: must be in one of the following formats: + "organizations/{organization_id}" + "projects/{project_id}" + "folders/{folder_id}" + notification_config_id: "your-config-id" + pubsub_topic: "projects/{your-project-id}/topics/{your-topic-ic}" + + Ensure this ServiceAccount has the "pubsub.topics.setIamPolicy" permission on the new topic. + """ from google.cloud import securitycenter as securitycenter client = securitycenter.SecurityCenterClient() - # TODO: organization_id = "your-org-id" - # TODO: notification_config_id = "your-config-id" - # TODO: pubsub_topic = "projects/{your-project-id}/topics/{your-topic-ic}" - # Ensure this ServiceAccount has the "pubsub.topics.setIamPolicy" permission on the new topic. - - org_name = "organizations/{org_id}".format(org_id=organization_id) - created_notification_config = client.create_notification_config( request={ - "parent": org_name, + "parent": parent_id, "config_id": notification_config_id, "notification_config": { "description": "Notification for active findings", @@ -47,88 +50,99 @@ def create_notification_config(organization_id, notification_config_id, pubsub_t return created_notification_config -def delete_notification_config(organization_id, notification_config_id): - - # [START securitycenter_delete_notification_config] +# [START securitycenter_delete_notification_config] +def delete_notification_config(parent_id, notification_config_id): + """ + Args: + parent_id: must be in one of the following formats: + "organizations/{organization_id}" + "projects/{project_id}" + "folders/{folder_id}" + notification_config_id: "your-config-id" + """ from google.cloud import securitycenter as securitycenter client = securitycenter.SecurityCenterClient() - # TODO: organization_id = "your-org-id" - # TODO: notification_config_id = "your-config-id" - notification_config_name = ( - "organizations/{org_id}/notificationConfigs/{config_id}".format( - org_id=organization_id, config_id=notification_config_id - ) + f"{parent_id}/notificationConfigs/{notification_config_id}" ) client.delete_notification_config(request={"name": notification_config_name}) - print("Deleted notification config: {}".format(notification_config_name)) + print(f"Deleted notification config: {notification_config_name}") # [END securitycenter_delete_notification_config] return True -def get_notification_config(organization_id, notification_config_id): - - # [START securitycenter_get_notification_config] +# [START securitycenter_get_notification_config] +def get_notification_config(parent_id, notification_config_id): + """ + Args: + parent_id: must be in one of the following formats: + "organizations/{organization_id}" + "projects/{project_id}" + "folders/{folder_id}" + notification_config_id: "your-config-id" + """ from google.cloud import securitycenter as securitycenter client = securitycenter.SecurityCenterClient() - # TODO: organization_id = "your-org-id" - # TODO: notification_config_id = "your-config-id" - notification_config_name = ( - "organizations/{org_id}/notificationConfigs/{config_id}".format( - org_id=organization_id, config_id=notification_config_id - ) + f"{parent_id}/notificationConfigs/{notification_config_id}" ) notification_config = client.get_notification_config( request={"name": notification_config_name} ) - print("Got notification config: {}".format(notification_config)) + print(f"Got notification config: {notification_config}") # [END securitycenter_get_notification_config] return notification_config -def list_notification_configs(organization_id): - - # [START securitycenter_list_notification_configs] +# [START securitycenter_list_notification_configs] +def list_notification_configs(parent_id): + """ + Args: + parent_id: must be in one of the following formats: + "organizations/{organization_id}" + "projects/{project_id}" + "folders/{folder_id}" + """ from google.cloud import securitycenter as securitycenter client = securitycenter.SecurityCenterClient() - # TODO: organization_id = "your-org-id" - org_name = "organizations/{org_id}".format(org_id=organization_id) - notification_configs_iterator = client.list_notification_configs( - request={"parent": org_name} + request={"parent": parent_id} ) for i, config in enumerate(notification_configs_iterator): - print("{}: notification_config: {}".format(i, config)) + print(f"{i}: notification_config: {config}") # [END securitycenter_list_notification_configs]] return notification_configs_iterator -def update_notification_config(organization_id, notification_config_id, pubsub_topic): - # [START securitycenter_update_notification_config] +# [START securitycenter_update_notification_config] +def update_notification_config(parent_id, notification_config_id, pubsub_topic): + """ + Args: + parent_id: must be in one of the following formats: + "organizations/{organization_id}" + "projects/{project_id}" + "folders/{folder_id}" + notification_config_id: "config-id-to-update" + pubsub_topic: "projects/{new-project}/topics/{new-topic}" + + If updating a pubsub_topic, ensure this ServiceAccount has the + "pubsub.topics.setIamPolicy" permission on the new topic. + """ from google.cloud import securitycenter as securitycenter from google.protobuf import field_mask_pb2 client = securitycenter.SecurityCenterClient() - # TODO organization_id = "your-org-id" - # TODO notification_config_id = "config-id-to-update" - # TODO pubsub_topic = "projects/{new-project}/topics/{new-topic}" - # If updating a pubsub_topic, ensure this ServiceAccount has the - # "pubsub.topics.setIamPolicy" permission on the new topic. - notification_config_name = ( - "organizations/{org_id}/notificationConfigs/{config_id}".format( - org_id=organization_id, config_id=notification_config_id - ) + f"{parent_id}/notificationConfigs/{notification_config_id}" ) updated_description = "New updated description" diff --git a/samples/snippets/snippets_notification_test.py b/samples/snippets/snippets_notification_test.py index 93324e29..2cc6d262 100644 --- a/samples/snippets/snippets_notification_test.py +++ b/samples/snippets/snippets_notification_test.py @@ -111,7 +111,7 @@ def deleted_notification_config(): def test_create_notification_config(): created_notification_config = ( snippets_notification_configs.create_notification_config( - ORG_ID, CREATE_CONFIG_ID, PUBSUB_TOPIC + f"organizations/{ORG_ID}", CREATE_CONFIG_ID, PUBSUB_TOPIC ) ) assert created_notification_config is not None @@ -121,25 +121,27 @@ def test_create_notification_config(): def test_delete_notification_config(deleted_notification_config): assert snippets_notification_configs.delete_notification_config( - ORG_ID, DELETE_CONFIG_ID + f"organizations/{ORG_ID}", DELETE_CONFIG_ID ) def test_get_notification_config(new_notification_config_for_get): retrieved_config = snippets_notification_configs.get_notification_config( - ORG_ID, GET_CONFIG_ID + f"organizations/{ORG_ID}", GET_CONFIG_ID ) assert retrieved_config is not None def test_list_notification_configs(): - iterator = snippets_notification_configs.list_notification_configs(ORG_ID) + iterator = snippets_notification_configs.list_notification_configs( + f"organizations/{ORG_ID}" + ) assert iterator is not None def test_update_notification_config(new_notification_config_for_update): updated_config = snippets_notification_configs.update_notification_config( - ORG_ID, UPDATE_CONFIG_ID, PUBSUB_TOPIC + f"organizations/{ORG_ID}", UPDATE_CONFIG_ID, PUBSUB_TOPIC ) assert updated_config is not None From 22c822e253a76657d39a3a87cab7b715e272fe5c Mon Sep 17 00:00:00 2001 From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com> Date: Tue, 8 Nov 2022 02:10:28 +0000 Subject: [PATCH 06/16] chore(python): update dependencies in .kokoro/requirements.txt [autoapprove] (#409) Source-Link: https://togithub.com/googleapis/synthtool/commit/e3a1277ac35fc88c09db1930533e24292b132ced Post-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:452901c74a22f9b9a3bd02bce780b8e8805c97270d424684bff809ce5be8c2a2 --- .github/.OwlBot.lock.yaml | 2 +- .kokoro/requirements.txt | 325 +++++++++++++++++++++----------------- noxfile.py | 11 +- 3 files changed, 187 insertions(+), 151 deletions(-) diff --git a/.github/.OwlBot.lock.yaml b/.github/.OwlBot.lock.yaml index 3815c983..12edee77 100644 --- a/.github/.OwlBot.lock.yaml +++ b/.github/.OwlBot.lock.yaml @@ -13,4 +13,4 @@ # limitations under the License. docker: image: gcr.io/cloud-devrel-public-resources/owlbot-python:latest - digest: sha256:7a40313731a7cb1454eef6b33d3446ebb121836738dc3ab3d2d3ded5268c35b6 + digest: sha256:452901c74a22f9b9a3bd02bce780b8e8805c97270d424684bff809ce5be8c2a2 diff --git a/.kokoro/requirements.txt b/.kokoro/requirements.txt index d15994ba..31425f16 100644 --- a/.kokoro/requirements.txt +++ b/.kokoro/requirements.txt @@ -20,9 +20,9 @@ cachetools==5.2.0 \ --hash=sha256:6a94c6402995a99c3970cc7e4884bb60b4a8639938157eeed436098bf9831757 \ --hash=sha256:f9f17d2aec496a9aa6b76f53e3b614c965223c061982d434d160f930c698a9db # via google-auth -certifi==2022.6.15 \ - --hash=sha256:84c85a9078b11105f04f3036a9482ae10e4621616db313fe045dd24743a0820d \ - --hash=sha256:fe86415d55e84719d75f8b69414f6438ac3547d2078ab91b67e779ef69378412 +certifi==2022.9.24 \ + --hash=sha256:0d9c601124e5a6ba9712dbc60d9c53c21e34f5f641fe83002317394311bdce14 \ + --hash=sha256:90c1a32f1d68f940488354e36370f6cca89f0f106db09518524c88d6ed83f382 # via requests cffi==1.15.1 \ --hash=sha256:00a9ed42e88df81ffae7a8ab6d9356b371399b91dbdf0c3cb1e84c03a13aceb5 \ @@ -110,29 +110,33 @@ commonmark==0.9.1 \ --hash=sha256:452f9dc859be7f06631ddcb328b6919c67984aca654e5fefb3914d54691aed60 \ --hash=sha256:da2f38c92590f83de410ba1a3cbceafbc74fee9def35f9251ba9a971d6d66fd9 # via rich -cryptography==37.0.4 \ - --hash=sha256:190f82f3e87033821828f60787cfa42bff98404483577b591429ed99bed39d59 \ - --hash=sha256:2be53f9f5505673eeda5f2736bea736c40f051a739bfae2f92d18aed1eb54596 \ - --hash=sha256:30788e070800fec9bbcf9faa71ea6d8068f5136f60029759fd8c3efec3c9dcb3 \ - --hash=sha256:3d41b965b3380f10e4611dbae366f6dc3cefc7c9ac4e8842a806b9672ae9add5 \ - --hash=sha256:4c590ec31550a724ef893c50f9a97a0c14e9c851c85621c5650d699a7b88f7ab \ - --hash=sha256:549153378611c0cca1042f20fd9c5030d37a72f634c9326e225c9f666d472884 \ - --hash=sha256:63f9c17c0e2474ccbebc9302ce2f07b55b3b3fcb211ded18a42d5764f5c10a82 \ - --hash=sha256:6bc95ed67b6741b2607298f9ea4932ff157e570ef456ef7ff0ef4884a134cc4b \ - --hash=sha256:7099a8d55cd49b737ffc99c17de504f2257e3787e02abe6d1a6d136574873441 \ - --hash=sha256:75976c217f10d48a8b5a8de3d70c454c249e4b91851f6838a4e48b8f41eb71aa \ - --hash=sha256:7bc997818309f56c0038a33b8da5c0bfbb3f1f067f315f9abd6fc07ad359398d \ - --hash=sha256:80f49023dd13ba35f7c34072fa17f604d2f19bf0989f292cedf7ab5770b87a0b \ - --hash=sha256:91ce48d35f4e3d3f1d83e29ef4a9267246e6a3be51864a5b7d2247d5086fa99a \ - --hash=sha256:a958c52505c8adf0d3822703078580d2c0456dd1d27fabfb6f76fe63d2971cd6 \ - --hash=sha256:b62439d7cd1222f3da897e9a9fe53bbf5c104fff4d60893ad1355d4c14a24157 \ - --hash=sha256:b7f8dd0d4c1f21759695c05a5ec8536c12f31611541f8904083f3dc582604280 \ - --hash=sha256:d204833f3c8a33bbe11eda63a54b1aad7aa7456ed769a982f21ec599ba5fa282 \ - --hash=sha256:e007f052ed10cc316df59bc90fbb7ff7950d7e2919c9757fd42a2b8ecf8a5f67 \ - --hash=sha256:f2dcb0b3b63afb6df7fd94ec6fbddac81b5492513f7b0436210d390c14d46ee8 \ - --hash=sha256:f721d1885ecae9078c3f6bbe8a88bc0786b6e749bf32ccec1ef2b18929a05046 \ - --hash=sha256:f7a6de3e98771e183645181b3627e2563dcde3ce94a9e42a3f427d2255190327 \ - --hash=sha256:f8c0a6e9e1dd3eb0414ba320f85da6b0dcbd543126e30fcc546e7372a7fbf3b9 +cryptography==38.0.3 \ + --hash=sha256:068147f32fa662c81aebab95c74679b401b12b57494872886eb5c1139250ec5d \ + --hash=sha256:06fc3cc7b6f6cca87bd56ec80a580c88f1da5306f505876a71c8cfa7050257dd \ + --hash=sha256:25c1d1f19729fb09d42e06b4bf9895212292cb27bb50229f5aa64d039ab29146 \ + --hash=sha256:402852a0aea73833d982cabb6d0c3bb582c15483d29fb7085ef2c42bfa7e38d7 \ + --hash=sha256:4e269dcd9b102c5a3d72be3c45d8ce20377b8076a43cbed6f660a1afe365e436 \ + --hash=sha256:5419a127426084933076132d317911e3c6eb77568a1ce23c3ac1e12d111e61e0 \ + --hash=sha256:554bec92ee7d1e9d10ded2f7e92a5d70c1f74ba9524947c0ba0c850c7b011828 \ + --hash=sha256:5e89468fbd2fcd733b5899333bc54d0d06c80e04cd23d8c6f3e0542358c6060b \ + --hash=sha256:65535bc550b70bd6271984d9863a37741352b4aad6fb1b3344a54e6950249b55 \ + --hash=sha256:6ab9516b85bebe7aa83f309bacc5f44a61eeb90d0b4ec125d2d003ce41932d36 \ + --hash=sha256:6addc3b6d593cd980989261dc1cce38263c76954d758c3c94de51f1e010c9a50 \ + --hash=sha256:728f2694fa743a996d7784a6194da430f197d5c58e2f4e278612b359f455e4a2 \ + --hash=sha256:785e4056b5a8b28f05a533fab69febf5004458e20dad7e2e13a3120d8ecec75a \ + --hash=sha256:78cf5eefac2b52c10398a42765bfa981ce2372cbc0457e6bf9658f41ec3c41d8 \ + --hash=sha256:7f836217000342d448e1c9a342e9163149e45d5b5eca76a30e84503a5a96cab0 \ + --hash=sha256:8d41a46251bf0634e21fac50ffd643216ccecfaf3701a063257fe0b2be1b6548 \ + --hash=sha256:984fe150f350a3c91e84de405fe49e688aa6092b3525f407a18b9646f6612320 \ + --hash=sha256:9b24bcff7853ed18a63cfb0c2b008936a9554af24af2fb146e16d8e1aed75748 \ + --hash=sha256:b1b35d9d3a65542ed2e9d90115dfd16bbc027b3f07ee3304fc83580f26e43249 \ + --hash=sha256:b1b52c9e5f8aa2b802d48bd693190341fae201ea51c7a167d69fc48b60e8a959 \ + --hash=sha256:bbf203f1a814007ce24bd4d51362991d5cb90ba0c177a9c08825f2cc304d871f \ + --hash=sha256:be243c7e2bfcf6cc4cb350c0d5cdf15ca6383bbcb2a8ef51d3c9411a9d4386f0 \ + --hash=sha256:bfbe6ee19615b07a98b1d2287d6a6073f734735b49ee45b11324d85efc4d5cbd \ + --hash=sha256:c46837ea467ed1efea562bbeb543994c2d1f6e800785bd5a2c98bc096f5cb220 \ + --hash=sha256:dfb4f4dd568de1b6af9f4cda334adf7d72cf5bc052516e1b2608b683375dd95c \ + --hash=sha256:ed7b00096790213e09eb11c97cc6e2b757f15f3d2f85833cd2d3ec3fe37c1722 # via # gcp-releasetool # secretstorage @@ -148,23 +152,23 @@ filelock==3.8.0 \ --hash=sha256:55447caa666f2198c5b6b13a26d2084d26fa5b115c00d065664b2124680c4edc \ --hash=sha256:617eb4e5eedc82fc5f47b6d61e4d11cb837c56cb4544e39081099fa17ad109d4 # via virtualenv -gcp-docuploader==0.6.3 \ - --hash=sha256:ba8c9d76b3bbac54b0311c503a373b00edc2dc02d6d54ea9507045adb8e870f7 \ - --hash=sha256:c0f5aaa82ce1854a386197e4e359b120ad6d4e57ae2c812fce42219a3288026b +gcp-docuploader==0.6.4 \ + --hash=sha256:01486419e24633af78fd0167db74a2763974765ee8078ca6eb6964d0ebd388af \ + --hash=sha256:70861190c123d907b3b067da896265ead2eeb9263969d6955c9e0bb091b5ccbf # via -r requirements.in -gcp-releasetool==1.8.7 \ - --hash=sha256:3d2a67c9db39322194afb3b427e9cb0476ce8f2a04033695f0aeb63979fc2b37 \ - --hash=sha256:5e4d28f66e90780d77f3ecf1e9155852b0c3b13cbccb08ab07e66b2357c8da8d +gcp-releasetool==1.9.1 \ + --hash=sha256:952f4055d5d986b070ae2a71c4410b250000f9cc5a1e26398fcd55a5bbc5a15f \ + --hash=sha256:d0d3c814a97c1a237517e837d8cfa668ced8df4b882452578ecef4a4e79c583b # via -r requirements.in -google-api-core==2.8.2 \ - --hash=sha256:06f7244c640322b508b125903bb5701bebabce8832f85aba9335ec00b3d02edc \ - --hash=sha256:93c6a91ccac79079ac6bbf8b74ee75db970cc899278b97d53bc012f35908cf50 +google-api-core==2.10.2 \ + --hash=sha256:10c06f7739fe57781f87523375e8e1a3a4674bf6392cd6131a3222182b971320 \ + --hash=sha256:34f24bd1d5f72a8c4519773d99ca6bf080a6c4e041b4e9f024fe230191dda62e # via # google-cloud-core # google-cloud-storage -google-auth==2.11.0 \ - --hash=sha256:be62acaae38d0049c21ca90f27a23847245c9f161ff54ede13af2cb6afecbac9 \ - --hash=sha256:ed65ecf9f681832298e29328e1ef0a3676e3732b2e56f41532d45f70a22de0fb +google-auth==2.14.0 \ + --hash=sha256:1ad5b0e6eba5f69645971abb3d2c197537d5914070a8c6d30299dfdb07c5c700 \ + --hash=sha256:cf24817855d874ede2efd071aa22125445f555de1685b739a9782fcf408c2a3d # via # gcp-releasetool # google-api-core @@ -178,72 +182,97 @@ google-cloud-storage==2.5.0 \ --hash=sha256:19a26c66c317ce542cea0830b7e787e8dac2588b6bfa4d3fd3b871ba16305ab0 \ --hash=sha256:382f34b91de2212e3c2e7b40ec079d27ee2e3dbbae99b75b1bcd8c63063ce235 # via gcp-docuploader -google-crc32c==1.3.0 \ - --hash=sha256:04e7c220798a72fd0f08242bc8d7a05986b2a08a0573396187fd32c1dcdd58b3 \ - --hash=sha256:05340b60bf05b574159e9bd940152a47d38af3fb43803ffe71f11d704b7696a6 \ - --hash=sha256:12674a4c3b56b706153a358eaa1018c4137a5a04635b92b4652440d3d7386206 \ - --hash=sha256:127f9cc3ac41b6a859bd9dc4321097b1a4f6aa7fdf71b4f9227b9e3ebffb4422 \ - --hash=sha256:13af315c3a0eec8bb8b8d80b8b128cb3fcd17d7e4edafc39647846345a3f003a \ - --hash=sha256:1926fd8de0acb9d15ee757175ce7242e235482a783cd4ec711cc999fc103c24e \ - --hash=sha256:226f2f9b8e128a6ca6a9af9b9e8384f7b53a801907425c9a292553a3a7218ce0 \ - --hash=sha256:276de6273eb074a35bc598f8efbc00c7869c5cf2e29c90748fccc8c898c244df \ - --hash=sha256:318f73f5484b5671f0c7f5f63741ab020a599504ed81d209b5c7129ee4667407 \ - --hash=sha256:3bbce1be3687bbfebe29abdb7631b83e6b25da3f4e1856a1611eb21854b689ea \ - --hash=sha256:42ae4781333e331a1743445931b08ebdad73e188fd554259e772556fc4937c48 \ - --hash=sha256:58be56ae0529c664cc04a9c76e68bb92b091e0194d6e3c50bea7e0f266f73713 \ - --hash=sha256:5da2c81575cc3ccf05d9830f9e8d3c70954819ca9a63828210498c0774fda1a3 \ - --hash=sha256:6311853aa2bba4064d0c28ca54e7b50c4d48e3de04f6770f6c60ebda1e975267 \ - --hash=sha256:650e2917660e696041ab3dcd7abac160b4121cd9a484c08406f24c5964099829 \ - --hash=sha256:6a4db36f9721fdf391646685ecffa404eb986cbe007a3289499020daf72e88a2 \ - --hash=sha256:779cbf1ce375b96111db98fca913c1f5ec11b1d870e529b1dc7354b2681a8c3a \ - --hash=sha256:7f6fe42536d9dcd3e2ffb9d3053f5d05221ae3bbcefbe472bdf2c71c793e3183 \ - --hash=sha256:891f712ce54e0d631370e1f4997b3f182f3368179198efc30d477c75d1f44942 \ - --hash=sha256:95c68a4b9b7828ba0428f8f7e3109c5d476ca44996ed9a5f8aac6269296e2d59 \ - --hash=sha256:96a8918a78d5d64e07c8ea4ed2bc44354e3f93f46a4866a40e8db934e4c0d74b \ - --hash=sha256:9c3cf890c3c0ecfe1510a452a165431b5831e24160c5fcf2071f0f85ca5a47cd \ - --hash=sha256:9f58099ad7affc0754ae42e6d87443299f15d739b0ce03c76f515153a5cda06c \ - --hash=sha256:a0b9e622c3b2b8d0ce32f77eba617ab0d6768b82836391e4f8f9e2074582bf02 \ - --hash=sha256:a7f9cbea4245ee36190f85fe1814e2d7b1e5f2186381b082f5d59f99b7f11328 \ - --hash=sha256:bab4aebd525218bab4ee615786c4581952eadc16b1ff031813a2fd51f0cc7b08 \ - --hash=sha256:c124b8c8779bf2d35d9b721e52d4adb41c9bfbde45e6a3f25f0820caa9aba73f \ - --hash=sha256:c9da0a39b53d2fab3e5467329ed50e951eb91386e9d0d5b12daf593973c3b168 \ - --hash=sha256:ca60076c388728d3b6ac3846842474f4250c91efbfe5afa872d3ffd69dd4b318 \ - --hash=sha256:cb6994fff247987c66a8a4e550ef374671c2b82e3c0d2115e689d21e511a652d \ - --hash=sha256:d1c1d6236feab51200272d79b3d3e0f12cf2cbb12b208c835b175a21efdb0a73 \ - --hash=sha256:dd7760a88a8d3d705ff562aa93f8445ead54f58fd482e4f9e2bafb7e177375d4 \ - --hash=sha256:dda4d8a3bb0b50f540f6ff4b6033f3a74e8bf0bd5320b70fab2c03e512a62812 \ - --hash=sha256:e0f1ff55dde0ebcfbef027edc21f71c205845585fffe30d4ec4979416613e9b3 \ - --hash=sha256:e7a539b9be7b9c00f11ef16b55486141bc2cdb0c54762f84e3c6fc091917436d \ - --hash=sha256:eb0b14523758e37802f27b7f8cd973f5f3d33be7613952c0df904b68c4842f0e \ - --hash=sha256:ed447680ff21c14aaceb6a9f99a5f639f583ccfe4ce1a5e1d48eb41c3d6b3217 \ - --hash=sha256:f52a4ad2568314ee713715b1e2d79ab55fab11e8b304fd1462ff5cccf4264b3e \ - --hash=sha256:fbd60c6aaa07c31d7754edbc2334aef50601b7f1ada67a96eb1eb57c7c72378f \ - --hash=sha256:fc28e0db232c62ca0c3600884933178f0825c99be4474cdd645e378a10588125 \ - --hash=sha256:fe31de3002e7b08eb20823b3735b97c86c5926dd0581c7710a680b418a8709d4 \ - --hash=sha256:fec221a051150eeddfdfcff162e6db92c65ecf46cb0f7bb1bf812a1520ec026b \ - --hash=sha256:ff71073ebf0e42258a42a0b34f2c09ec384977e7f6808999102eedd5b49920e3 +google-crc32c==1.5.0 \ + --hash=sha256:024894d9d3cfbc5943f8f230e23950cd4906b2fe004c72e29b209420a1e6b05a \ + --hash=sha256:02c65b9817512edc6a4ae7c7e987fea799d2e0ee40c53ec573a692bee24de876 \ + --hash=sha256:02ebb8bf46c13e36998aeaad1de9b48f4caf545e91d14041270d9dca767b780c \ + --hash=sha256:07eb3c611ce363c51a933bf6bd7f8e3878a51d124acfc89452a75120bc436289 \ + --hash=sha256:1034d91442ead5a95b5aaef90dbfaca8633b0247d1e41621d1e9f9db88c36298 \ + --hash=sha256:116a7c3c616dd14a3de8c64a965828b197e5f2d121fedd2f8c5585c547e87b02 \ + --hash=sha256:19e0a019d2c4dcc5e598cd4a4bc7b008546b0358bd322537c74ad47a5386884f \ + --hash=sha256:1c7abdac90433b09bad6c43a43af253e688c9cfc1c86d332aed13f9a7c7f65e2 \ + --hash=sha256:1e986b206dae4476f41bcec1faa057851f3889503a70e1bdb2378d406223994a \ + --hash=sha256:272d3892a1e1a2dbc39cc5cde96834c236d5327e2122d3aaa19f6614531bb6eb \ + --hash=sha256:278d2ed7c16cfc075c91378c4f47924c0625f5fc84b2d50d921b18b7975bd210 \ + --hash=sha256:2ad40e31093a4af319dadf503b2467ccdc8f67c72e4bcba97f8c10cb078207b5 \ + --hash=sha256:2e920d506ec85eb4ba50cd4228c2bec05642894d4c73c59b3a2fe20346bd00ee \ + --hash=sha256:3359fc442a743e870f4588fcf5dcbc1bf929df1fad8fb9905cd94e5edb02e84c \ + --hash=sha256:37933ec6e693e51a5b07505bd05de57eee12f3e8c32b07da7e73669398e6630a \ + --hash=sha256:398af5e3ba9cf768787eef45c803ff9614cc3e22a5b2f7d7ae116df8b11e3314 \ + --hash=sha256:3b747a674c20a67343cb61d43fdd9207ce5da6a99f629c6e2541aa0e89215bcd \ + --hash=sha256:461665ff58895f508e2866824a47bdee72497b091c730071f2b7575d5762ab65 \ + --hash=sha256:4c6fdd4fccbec90cc8a01fc00773fcd5fa28db683c116ee3cb35cd5da9ef6c37 \ + --hash=sha256:5829b792bf5822fd0a6f6eb34c5f81dd074f01d570ed7f36aa101d6fc7a0a6e4 \ + --hash=sha256:596d1f98fc70232fcb6590c439f43b350cb762fb5d61ce7b0e9db4539654cc13 \ + --hash=sha256:5ae44e10a8e3407dbe138984f21e536583f2bba1be9491239f942c2464ac0894 \ + --hash=sha256:635f5d4dd18758a1fbd1049a8e8d2fee4ffed124462d837d1a02a0e009c3ab31 \ + --hash=sha256:64e52e2b3970bd891309c113b54cf0e4384762c934d5ae56e283f9a0afcd953e \ + --hash=sha256:66741ef4ee08ea0b2cc3c86916ab66b6aef03768525627fd6a1b34968b4e3709 \ + --hash=sha256:67b741654b851abafb7bc625b6d1cdd520a379074e64b6a128e3b688c3c04740 \ + --hash=sha256:6ac08d24c1f16bd2bf5eca8eaf8304812f44af5cfe5062006ec676e7e1d50afc \ + --hash=sha256:6f998db4e71b645350b9ac28a2167e6632c239963ca9da411523bb439c5c514d \ + --hash=sha256:72218785ce41b9cfd2fc1d6a017dc1ff7acfc4c17d01053265c41a2c0cc39b8c \ + --hash=sha256:74dea7751d98034887dbd821b7aae3e1d36eda111d6ca36c206c44478035709c \ + --hash=sha256:759ce4851a4bb15ecabae28f4d2e18983c244eddd767f560165563bf9aefbc8d \ + --hash=sha256:77e2fd3057c9d78e225fa0a2160f96b64a824de17840351b26825b0848022906 \ + --hash=sha256:7c074fece789b5034b9b1404a1f8208fc2d4c6ce9decdd16e8220c5a793e6f61 \ + --hash=sha256:7c42c70cd1d362284289c6273adda4c6af8039a8ae12dc451dcd61cdabb8ab57 \ + --hash=sha256:7f57f14606cd1dd0f0de396e1e53824c371e9544a822648cd76c034d209b559c \ + --hash=sha256:83c681c526a3439b5cf94f7420471705bbf96262f49a6fe546a6db5f687a3d4a \ + --hash=sha256:8485b340a6a9e76c62a7dce3c98e5f102c9219f4cfbf896a00cf48caf078d438 \ + --hash=sha256:84e6e8cd997930fc66d5bb4fde61e2b62ba19d62b7abd7a69920406f9ecca946 \ + --hash=sha256:89284716bc6a5a415d4eaa11b1726d2d60a0cd12aadf5439828353662ede9dd7 \ + --hash=sha256:8b87e1a59c38f275c0e3676fc2ab6d59eccecfd460be267ac360cc31f7bcde96 \ + --hash=sha256:8f24ed114432de109aa9fd317278518a5af2d31ac2ea6b952b2f7782b43da091 \ + --hash=sha256:98cb4d057f285bd80d8778ebc4fde6b4d509ac3f331758fb1528b733215443ae \ + --hash=sha256:998679bf62b7fb599d2878aa3ed06b9ce688b8974893e7223c60db155f26bd8d \ + --hash=sha256:9ba053c5f50430a3fcfd36f75aff9caeba0440b2d076afdb79a318d6ca245f88 \ + --hash=sha256:9c99616c853bb585301df6de07ca2cadad344fd1ada6d62bb30aec05219c45d2 \ + --hash=sha256:a1fd716e7a01f8e717490fbe2e431d2905ab8aa598b9b12f8d10abebb36b04dd \ + --hash=sha256:a2355cba1f4ad8b6988a4ca3feed5bff33f6af2d7f134852cf279c2aebfde541 \ + --hash=sha256:b1f8133c9a275df5613a451e73f36c2aea4fe13c5c8997e22cf355ebd7bd0728 \ + --hash=sha256:b8667b48e7a7ef66afba2c81e1094ef526388d35b873966d8a9a447974ed9178 \ + --hash=sha256:ba1eb1843304b1e5537e1fca632fa894d6f6deca8d6389636ee5b4797affb968 \ + --hash=sha256:be82c3c8cfb15b30f36768797a640e800513793d6ae1724aaaafe5bf86f8f346 \ + --hash=sha256:c02ec1c5856179f171e032a31d6f8bf84e5a75c45c33b2e20a3de353b266ebd8 \ + --hash=sha256:c672d99a345849301784604bfeaeba4db0c7aae50b95be04dd651fd2a7310b93 \ + --hash=sha256:c6c777a480337ac14f38564ac88ae82d4cd238bf293f0a22295b66eb89ffced7 \ + --hash=sha256:cae0274952c079886567f3f4f685bcaf5708f0a23a5f5216fdab71f81a6c0273 \ + --hash=sha256:cd67cf24a553339d5062eff51013780a00d6f97a39ca062781d06b3a73b15462 \ + --hash=sha256:d3515f198eaa2f0ed49f8819d5732d70698c3fa37384146079b3799b97667a94 \ + --hash=sha256:d5280312b9af0976231f9e317c20e4a61cd2f9629b7bfea6a693d1878a264ebd \ + --hash=sha256:de06adc872bcd8c2a4e0dc51250e9e65ef2ca91be023b9d13ebd67c2ba552e1e \ + --hash=sha256:e1674e4307fa3024fc897ca774e9c7562c957af85df55efe2988ed9056dc4e57 \ + --hash=sha256:e2096eddb4e7c7bdae4bd69ad364e55e07b8316653234a56552d9c988bd2d61b \ + --hash=sha256:e560628513ed34759456a416bf86b54b2476c59144a9138165c9a1575801d0d9 \ + --hash=sha256:edfedb64740750e1a3b16152620220f51d58ff1b4abceb339ca92e934775c27a \ + --hash=sha256:f13cae8cc389a440def0c8c52057f37359014ccbc9dc1f0827936bcd367c6100 \ + --hash=sha256:f314013e7dcd5cf45ab1945d92e713eec788166262ae8deb2cfacd53def27325 \ + --hash=sha256:f583edb943cf2e09c60441b910d6a20b4d9d626c75a36c8fcac01a6c96c01183 \ + --hash=sha256:fd8536e902db7e365f49e7d9029283403974ccf29b13fc7028b97e2295b33556 \ + --hash=sha256:fe70e325aa68fa4b5edf7d1a4b6f691eb04bbccac0ace68e34820d283b5f80d4 # via google-resumable-media -google-resumable-media==2.3.3 \ - --hash=sha256:27c52620bd364d1c8116eaac4ea2afcbfb81ae9139fb3199652fcac1724bfb6c \ - --hash=sha256:5b52774ea7a829a8cdaa8bd2d4c3d4bc660c91b30857ab2668d0eb830f4ea8c5 +google-resumable-media==2.4.0 \ + --hash=sha256:2aa004c16d295c8f6c33b2b4788ba59d366677c0a25ae7382436cb30f776deaa \ + --hash=sha256:8d5518502f92b9ecc84ac46779bd4f09694ecb3ba38a3e7ca737a86d15cbca1f # via google-cloud-storage googleapis-common-protos==1.56.4 \ --hash=sha256:8eb2cbc91b69feaf23e32452a7ae60e791e09967d81d4fcc7fc388182d1bd394 \ --hash=sha256:c25873c47279387cfdcbdafa36149887901d36202cb645a0e4f29686bf6e4417 # via google-api-core -idna==3.3 \ - --hash=sha256:84d9dd047ffa80596e0f246e2eab0b391788b0503584e8945f2368256d2735ff \ - --hash=sha256:9d643ff0a55b762d5cdb124b8eaa99c66322e2157b69160bc32796e824360e6d +idna==3.4 \ + --hash=sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4 \ + --hash=sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2 # via requests -importlib-metadata==4.12.0 \ - --hash=sha256:637245b8bab2b6502fcbc752cc4b7a6f6243bb02b31c5c26156ad103d3d45670 \ - --hash=sha256:7401a975809ea1fdc658c3aa4f78cc2195a0e019c5cbc4c06122884e9ae80c23 +importlib-metadata==5.0.0 \ + --hash=sha256:da31db32b304314d044d3c12c79bd59e307889b287ad12ff387b3500835fc2ab \ + --hash=sha256:ddb0e35065e8938f867ed4928d0ae5bf2a53b7773871bfe6bcc7e4fcdc7dea43 # via # -r requirements.in # twine -jaraco-classes==3.2.2 \ - --hash=sha256:6745f113b0b588239ceb49532aa09c3ebb947433ce311ef2f8e3ad64ebb74594 \ - --hash=sha256:e6ef6fd3fcf4579a7a019d87d1e56a883f4e4c35cfe925f86731abc58804e647 +jaraco-classes==3.2.3 \ + --hash=sha256:2353de3288bc6b82120752201c6b1c1a14b058267fa424ed5ce5984e3b922158 \ + --hash=sha256:89559fa5c1d3c34eff6f631ad80bb21f378dbcbb35dd161fd2c6b93f5be2f98a # via keyring jeepney==0.8.0 \ --hash=sha256:5efe48d255973902f6badc3ce55e2aa6c5c3b3bc642059ef3a91247bcfcc5806 \ @@ -255,9 +284,9 @@ jinja2==3.1.2 \ --hash=sha256:31351a702a408a9e7595a8fc6150fc3f43bb6bf7e319770cbc0db9df9437e852 \ --hash=sha256:6088930bfe239f0e6710546ab9c19c9ef35e29792895fed6e6e31a023a182a61 # via gcp-releasetool -keyring==23.9.0 \ - --hash=sha256:4c32a31174faaee48f43a7e2c7e9c3216ec5e95acf22a2bebfb4a1d05056ee44 \ - --hash=sha256:98f060ec95ada2ab910c195a2d4317be6ef87936a766b239c46aa3c7aac4f0db +keyring==23.9.3 \ + --hash=sha256:69732a15cb1433bdfbc3b980a8a36a04878a6cfd7cb99f497b573f31618001c0 \ + --hash=sha256:69b01dd83c42f590250fe7a1f503fc229b14de83857314b1933a3ddbf595c4a5 # via # gcp-releasetool # twine @@ -303,9 +332,9 @@ markupsafe==2.1.1 \ --hash=sha256:f121a1420d4e173a5d96e47e9a0c0dcff965afdf1626d28de1460815f7c4ee7a \ --hash=sha256:fc7b548b17d238737688817ab67deebb30e8073c95749d55538ed473130ec0c7 # via jinja2 -more-itertools==8.14.0 \ - --hash=sha256:1bc4f91ee5b1b31ac7ceacc17c09befe6a40a503907baf9c839c229b5095cfd2 \ - --hash=sha256:c09443cd3d5438b8dafccd867a6bc1cb0894389e90cb53d227456b0b0bccb750 +more-itertools==9.0.0 \ + --hash=sha256:250e83d7e81d0c87ca6bd942e6aeab8cc9daa6096d12c5308f3f92fa5e5c1f41 \ + --hash=sha256:5a6257e40878ef0520b1803990e3e22303a41b5714006c32a3fd8304b26ea1ab # via jaraco-classes nox==2022.8.7 \ --hash=sha256:1b894940551dc5c389f9271d197ca5d655d40bdc6ccf93ed6880e4042760a34b \ @@ -325,34 +354,34 @@ platformdirs==2.5.2 \ --hash=sha256:027d8e83a2d7de06bbac4e5ef7e023c02b863d7ea5d079477e722bb41ab25788 \ --hash=sha256:58c8abb07dcb441e6ee4b11d8df0ac856038f944ab98b7be6b27b2a3c7feef19 # via virtualenv -protobuf==3.20.2 \ - --hash=sha256:03d76b7bd42ac4a6e109742a4edf81ffe26ffd87c5993126d894fe48a120396a \ - --hash=sha256:09e25909c4297d71d97612f04f41cea8fa8510096864f2835ad2f3b3df5a5559 \ - --hash=sha256:18e34a10ae10d458b027d7638a599c964b030c1739ebd035a1dfc0e22baa3bfe \ - --hash=sha256:291fb4307094bf5ccc29f424b42268640e00d5240bf0d9b86bf3079f7576474d \ - --hash=sha256:2c0b040d0b5d5d207936ca2d02f00f765906622c07d3fa19c23a16a8ca71873f \ - --hash=sha256:384164994727f274cc34b8abd41a9e7e0562801361ee77437099ff6dfedd024b \ - --hash=sha256:3cb608e5a0eb61b8e00fe641d9f0282cd0eedb603be372f91f163cbfbca0ded0 \ - --hash=sha256:5d9402bf27d11e37801d1743eada54372f986a372ec9679673bfcc5c60441151 \ - --hash=sha256:712dca319eee507a1e7df3591e639a2b112a2f4a62d40fe7832a16fd19151750 \ - --hash=sha256:7a5037af4e76c975b88c3becdf53922b5ffa3f2cddf657574a4920a3b33b80f3 \ - --hash=sha256:8228e56a865c27163d5d1d1771d94b98194aa6917bcfb6ce139cbfa8e3c27334 \ - --hash=sha256:84a1544252a933ef07bb0b5ef13afe7c36232a774affa673fc3636f7cee1db6c \ - --hash=sha256:84fe5953b18a383fd4495d375fe16e1e55e0a3afe7b4f7b4d01a3a0649fcda9d \ - --hash=sha256:9c673c8bfdf52f903081816b9e0e612186684f4eb4c17eeb729133022d6032e3 \ - --hash=sha256:9f876a69ca55aed879b43c295a328970306e8e80a263ec91cf6e9189243c613b \ - --hash=sha256:a9e5ae5a8e8985c67e8944c23035a0dff2c26b0f5070b2f55b217a1c33bbe8b1 \ - --hash=sha256:b4fdb29c5a7406e3f7ef176b2a7079baa68b5b854f364c21abe327bbeec01cdb \ - --hash=sha256:c184485e0dfba4dfd451c3bd348c2e685d6523543a0f91b9fd4ae90eb09e8422 \ - --hash=sha256:c9cdf251c582c16fd6a9f5e95836c90828d51b0069ad22f463761d27c6c19019 \ - --hash=sha256:e39cf61bb8582bda88cdfebc0db163b774e7e03364bbf9ce1ead13863e81e359 \ - --hash=sha256:e8fbc522303e09036c752a0afcc5c0603e917222d8bedc02813fd73b4b4ed804 \ - --hash=sha256:f34464ab1207114e73bba0794d1257c150a2b89b7a9faf504e00af7c9fd58978 \ - --hash=sha256:f52dabc96ca99ebd2169dadbe018824ebda08a795c7684a0b7d203a290f3adb0 +protobuf==3.20.3 \ + --hash=sha256:03038ac1cfbc41aa21f6afcbcd357281d7521b4157926f30ebecc8d4ea59dcb7 \ + --hash=sha256:28545383d61f55b57cf4df63eebd9827754fd2dc25f80c5253f9184235db242c \ + --hash=sha256:2e3427429c9cffebf259491be0af70189607f365c2f41c7c3764af6f337105f2 \ + --hash=sha256:398a9e0c3eaceb34ec1aee71894ca3299605fa8e761544934378bbc6c97de23b \ + --hash=sha256:44246bab5dd4b7fbd3c0c80b6f16686808fab0e4aca819ade6e8d294a29c7050 \ + --hash=sha256:447d43819997825d4e71bf5769d869b968ce96848b6479397e29fc24c4a5dfe9 \ + --hash=sha256:67a3598f0a2dcbc58d02dd1928544e7d88f764b47d4a286202913f0b2801c2e7 \ + --hash=sha256:74480f79a023f90dc6e18febbf7b8bac7508420f2006fabd512013c0c238f454 \ + --hash=sha256:819559cafa1a373b7096a482b504ae8a857c89593cf3a25af743ac9ecbd23480 \ + --hash=sha256:899dc660cd599d7352d6f10d83c95df430a38b410c1b66b407a6b29265d66469 \ + --hash=sha256:8c0c984a1b8fef4086329ff8dd19ac77576b384079247c770f29cc8ce3afa06c \ + --hash=sha256:9aae4406ea63d825636cc11ffb34ad3379335803216ee3a856787bcf5ccc751e \ + --hash=sha256:a7ca6d488aa8ff7f329d4c545b2dbad8ac31464f1d8b1c87ad1346717731e4db \ + --hash=sha256:b6cc7ba72a8850621bfec987cb72623e703b7fe2b9127a161ce61e61558ad905 \ + --hash=sha256:bf01b5720be110540be4286e791db73f84a2b721072a3711efff6c324cdf074b \ + --hash=sha256:c02ce36ec760252242a33967d51c289fd0e1c0e6e5cc9397e2279177716add86 \ + --hash=sha256:d9e4432ff660d67d775c66ac42a67cf2453c27cb4d738fc22cb53b5d84c135d4 \ + --hash=sha256:daa564862dd0d39c00f8086f88700fdbe8bc717e993a21e90711acfed02f2402 \ + --hash=sha256:de78575669dddf6099a8a0f46a27e82a1783c557ccc38ee620ed8cc96d3be7d7 \ + --hash=sha256:e64857f395505ebf3d2569935506ae0dfc4a15cb80dc25261176c784662cdcc4 \ + --hash=sha256:f4bd856d702e5b0d96a00ec6b307b0f51c1982c2bf9c0052cf9019e9a544ba99 \ + --hash=sha256:f4c42102bc82a51108e449cbb32b19b180022941c727bac0cfd50170341f16ee # via # gcp-docuploader # gcp-releasetool # google-api-core + # googleapis-common-protos py==1.11.0 \ --hash=sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719 \ --hash=sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378 @@ -377,9 +406,9 @@ pygments==2.13.0 \ # via # readme-renderer # rich -pyjwt==2.4.0 \ - --hash=sha256:72d1d253f32dbd4f5c88eaf1fdc62f3a19f676ccbadb9dbc5d07e951b2b26daf \ - --hash=sha256:d42908208c699b3b973cbeb01a969ba6a96c821eefb1c5bfe4c390c01d67abba +pyjwt==2.6.0 \ + --hash=sha256:69285c7e31fc44f68a1feb309e948e0df53259d579295e6cfe2b1792329f05fd \ + --hash=sha256:d83c3d892a77bbb74d3e1a2cfa90afaadb60945205d1095d9221f04466f64c14 # via gcp-releasetool pyparsing==3.0.9 \ --hash=sha256:2b020ecf7d21b687f219b71ecad3631f644a47f01403fa1d1036b0c6416d70fb \ @@ -392,9 +421,9 @@ python-dateutil==2.8.2 \ --hash=sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86 \ --hash=sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9 # via gcp-releasetool -readme-renderer==37.0 \ - --hash=sha256:07b7ea234e03e58f77cc222e206e6abb8f4c0435becce5104794ee591f9301c5 \ - --hash=sha256:9fa416704703e509eeb900696751c908ddeb2011319d93700d8f18baff887a69 +readme-renderer==37.3 \ + --hash=sha256:cd653186dfc73055656f090f227f5cb22a046d7f71a841dfa305f55c9a513273 \ + --hash=sha256:f67a16caedfa71eef48a31b39708637a6f4664c4394801a7b0d6432d13907343 # via twine requests==2.28.1 \ --hash=sha256:7c5599b102feddaa661c826c56ab4fee28bfd17f5abca1ebbe3e7f19d7c97983 \ @@ -405,17 +434,17 @@ requests==2.28.1 \ # google-cloud-storage # requests-toolbelt # twine -requests-toolbelt==0.9.1 \ - --hash=sha256:380606e1d10dc85c3bd47bf5a6095f815ec007be7a8b69c878507068df059e6f \ - --hash=sha256:968089d4584ad4ad7c171454f0a5c6dac23971e9472521ea3b6d49d610aa6fc0 +requests-toolbelt==0.10.1 \ + --hash=sha256:18565aa58116d9951ac39baa288d3adb5b3ff975c4f25eee78555d89e8f247f7 \ + --hash=sha256:62e09f7ff5ccbda92772a29f394a49c3ad6cb181d568b1337626b2abb628a63d # via twine rfc3986==2.0.0 \ --hash=sha256:50b1502b60e289cb37883f3dfd34532b8873c7de9f49bb546641ce9cbd256ebd \ --hash=sha256:97aacf9dbd4bfd829baad6e6309fa6573aaf1be3f6fa735c8ab05e46cecb261c # via twine -rich==12.5.1 \ - --hash=sha256:2eb4e6894cde1e017976d2975ac210ef515d7548bc595ba20e195fb9628acdeb \ - --hash=sha256:63a5c5ce3673d3d5fbbf23cd87e11ab84b6b451436f1b7f19ec54b6bc36ed7ca +rich==12.6.0 \ + --hash=sha256:a4eb26484f2c82589bd9a17c73d32a010b1e29d89f1604cd9bf3a2097b81bb5e \ + --hash=sha256:ba3a3775974105c221d31141f2c116f4fd65c5ceb0698657a11e9f295ec93fd0 # via twine rsa==4.9 \ --hash=sha256:90260d9058e514786967344d0ef75fa8727eed8a7d2e43ce9f4bcf1b536174f7 \ @@ -437,9 +466,9 @@ twine==4.0.1 \ --hash=sha256:42026c18e394eac3e06693ee52010baa5313e4811d5a11050e7d48436cf41b9e \ --hash=sha256:96b1cf12f7ae611a4a40b6ae8e9570215daff0611828f5fe1f37a16255ab24a0 # via -r requirements.in -typing-extensions==4.3.0 \ - --hash=sha256:25642c956049920a5aa49edcdd6ab1e06d7e5d467fc00e0506c44ac86fbfca02 \ - --hash=sha256:e6d2677a32f47fc7eb2795db1dd15c1f34eff616bcaf2cfb5e997f854fa1c4a6 +typing-extensions==4.4.0 \ + --hash=sha256:1511434bb92bf8dd198c12b1cc812e800d4181cfcb867674e0f8279cc93087aa \ + --hash=sha256:16fa4864408f655d35ec496218b85f79b3437c829e93320c7c9215ccfd92489e # via -r requirements.in urllib3==1.26.12 \ --hash=sha256:3fa96cf423e6987997fc326ae8df396db2a8b7c667747d47ddd8ecba91f4a74e \ @@ -447,9 +476,9 @@ urllib3==1.26.12 \ # via # requests # twine -virtualenv==20.16.4 \ - --hash=sha256:014f766e4134d0008dcaa1f95bafa0fb0f575795d07cae50b1bee514185d6782 \ - --hash=sha256:035ed57acce4ac35c82c9d8802202b0e71adac011a511ff650cbcf9635006a22 +virtualenv==20.16.6 \ + --hash=sha256:186ca84254abcbde98180fd17092f9628c5fe742273c02724972a1d8a2035108 \ + --hash=sha256:530b850b523c6449406dfba859d6345e48ef19b8439606c5d74d7d3c9e14d76e # via nox webencodings==0.5.1 \ --hash=sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78 \ @@ -459,13 +488,13 @@ wheel==0.37.1 \ --hash=sha256:4bdcd7d840138086126cd09254dc6195fb4fc6f01c050a1d7236f2630db1d22a \ --hash=sha256:e9a504e793efbca1b8e0e9cb979a249cf4a0a7b5b8c9e8b65a5e39d49529c1c4 # via -r requirements.in -zipp==3.8.1 \ - --hash=sha256:05b45f1ee8f807d0cc928485ca40a07cb491cf092ff587c0df9cb1fd154848d2 \ - --hash=sha256:47c40d7fe183a6f21403a199b3e4192cca5774656965b0a4988ad2f8feb5f009 +zipp==3.10.0 \ + --hash=sha256:4fcb6f278987a6605757302a6e40e896257570d11c51628968ccb2a47e80c6c1 \ + --hash=sha256:7a7262fd930bd3e36c50b9a64897aec3fafff3dfdeec9623ae22b40e93f99bb8 # via importlib-metadata # The following packages are considered to be unsafe in a requirements file: -setuptools==65.2.0 \ - --hash=sha256:7f4bc85450898a09f76ebf28b72fa25bc7111f6c7d665d514a60bba9c75ef2a9 \ - --hash=sha256:a3ca5857c89f82f5c9410e8508cb32f4872a3bafd4aa7ae122a24ca33bccc750 +setuptools==65.5.0 \ + --hash=sha256:512e5536220e38146176efb833d4a62aa726b7bbff82cfbc8ba9eaa3996e0b17 \ + --hash=sha256:f62ea9da9ed6289bfe868cd6845968a2c854d1427f8548d52cae02a42b4f0356 # via -r requirements.in diff --git a/noxfile.py b/noxfile.py index ffe9f354..29d02000 100644 --- a/noxfile.py +++ b/noxfile.py @@ -278,7 +278,11 @@ def docs(session): """Build the docs for this library.""" session.install("-e", ".") - session.install("sphinx==4.0.1", "alabaster", "recommonmark") + session.install( + "sphinx==4.0.1", + "alabaster", + "recommonmark", + ) shutil.rmtree(os.path.join("docs", "_build"), ignore_errors=True) session.run( @@ -301,7 +305,10 @@ def docfx(session): session.install("-e", ".") session.install( - "sphinx==4.0.1", "alabaster", "recommonmark", "gcp-sphinx-docfx-yaml" + "sphinx==4.0.1", + "alabaster", + "recommonmark", + "gcp-sphinx-docfx-yaml", ) shutil.rmtree(os.path.join("docs", "_build"), ignore_errors=True) From b02d64052a207eccc1db6755940b5f6763415f2f Mon Sep 17 00:00:00 2001 From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com> Date: Wed, 16 Nov 2022 17:54:15 +0000 Subject: [PATCH 07/16] chore(python): update release script dependencies [autoapprove] (#411) Source-Link: https://togithub.com/googleapis/synthtool/commit/25083af347468dd5f90f69627420f7d452b6c50e Post-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:e6cbd61f1838d9ff6a31436dfc13717f372a7482a82fc1863ca954ec47bff8c8 --- .github/.OwlBot.lock.yaml | 2 +- .github/workflows/docs.yml | 4 +-- .github/workflows/lint.yml | 2 +- .github/workflows/unittest.yml | 2 +- .kokoro/docker/docs/Dockerfile | 12 +++---- .kokoro/requirements.in | 4 ++- .kokoro/requirements.txt | 61 ++++++++++++++++++---------------- noxfile.py | 4 +-- 8 files changed, 48 insertions(+), 43 deletions(-) diff --git a/.github/.OwlBot.lock.yaml b/.github/.OwlBot.lock.yaml index 12edee77..3f1ccc08 100644 --- a/.github/.OwlBot.lock.yaml +++ b/.github/.OwlBot.lock.yaml @@ -13,4 +13,4 @@ # limitations under the License. docker: image: gcr.io/cloud-devrel-public-resources/owlbot-python:latest - digest: sha256:452901c74a22f9b9a3bd02bce780b8e8805c97270d424684bff809ce5be8c2a2 + digest: sha256:e6cbd61f1838d9ff6a31436dfc13717f372a7482a82fc1863ca954ec47bff8c8 diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 7092a139..e97d89e4 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -12,7 +12,7 @@ jobs: - name: Setup Python uses: actions/setup-python@v4 with: - python-version: "3.10" + python-version: "3.9" - name: Install nox run: | python -m pip install --upgrade setuptools pip wheel @@ -28,7 +28,7 @@ jobs: - name: Setup Python uses: actions/setup-python@v4 with: - python-version: "3.10" + python-version: "3.9" - name: Install nox run: | python -m pip install --upgrade setuptools pip wheel diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index d2aee5b7..16d5a9e9 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -12,7 +12,7 @@ jobs: - name: Setup Python uses: actions/setup-python@v4 with: - python-version: "3.10" + python-version: "3.8" - name: Install nox run: | python -m pip install --upgrade setuptools pip wheel diff --git a/.github/workflows/unittest.yml b/.github/workflows/unittest.yml index 87ade4d5..23000c05 100644 --- a/.github/workflows/unittest.yml +++ b/.github/workflows/unittest.yml @@ -41,7 +41,7 @@ jobs: - name: Setup Python uses: actions/setup-python@v4 with: - python-version: "3.10" + python-version: "3.8" - name: Install coverage run: | python -m pip install --upgrade setuptools pip wheel diff --git a/.kokoro/docker/docs/Dockerfile b/.kokoro/docker/docs/Dockerfile index 238b87b9..f8137d0a 100644 --- a/.kokoro/docker/docs/Dockerfile +++ b/.kokoro/docker/docs/Dockerfile @@ -60,16 +60,16 @@ RUN apt-get update \ && rm -rf /var/lib/apt/lists/* \ && rm -f /var/cache/apt/archives/*.deb -###################### Install python 3.8.11 +###################### Install python 3.9.13 -# Download python 3.8.11 -RUN wget https://www.python.org/ftp/python/3.8.11/Python-3.8.11.tgz +# Download python 3.9.13 +RUN wget https://www.python.org/ftp/python/3.9.13/Python-3.9.13.tgz # Extract files -RUN tar -xvf Python-3.8.11.tgz +RUN tar -xvf Python-3.9.13.tgz -# Install python 3.8.11 -RUN ./Python-3.8.11/configure --enable-optimizations +# Install python 3.9.13 +RUN ./Python-3.9.13/configure --enable-optimizations RUN make altinstall ###################### Install pip diff --git a/.kokoro/requirements.in b/.kokoro/requirements.in index 7718391a..cbd7e77f 100644 --- a/.kokoro/requirements.in +++ b/.kokoro/requirements.in @@ -5,4 +5,6 @@ typing-extensions twine wheel setuptools -nox \ No newline at end of file +nox +charset-normalizer<3 +click<8.1.0 diff --git a/.kokoro/requirements.txt b/.kokoro/requirements.txt index 31425f16..9c1b9be3 100644 --- a/.kokoro/requirements.txt +++ b/.kokoro/requirements.txt @@ -93,11 +93,14 @@ cffi==1.15.1 \ charset-normalizer==2.1.1 \ --hash=sha256:5a3d016c7c547f69d6f81fb0db9449ce888b418b5b9952cc5e6e66843e9dd845 \ --hash=sha256:83e9a75d1911279afd89352c68b45348559d1fc0506b054b346651b5e7fee29f - # via requests + # via + # -r requirements.in + # requests click==8.0.4 \ --hash=sha256:6a7a62563bbfabfda3a38f3023a1db4a35978c0abd76f6c9605ecd6554d6d9b1 \ --hash=sha256:8458d7b1287c5fb128c90e23381cf99dcde74beaf6c7ff6384ce84d6fe090adb # via + # -r requirements.in # gcp-docuploader # gcp-releasetool colorlog==6.7.0 \ @@ -156,9 +159,9 @@ gcp-docuploader==0.6.4 \ --hash=sha256:01486419e24633af78fd0167db74a2763974765ee8078ca6eb6964d0ebd388af \ --hash=sha256:70861190c123d907b3b067da896265ead2eeb9263969d6955c9e0bb091b5ccbf # via -r requirements.in -gcp-releasetool==1.9.1 \ - --hash=sha256:952f4055d5d986b070ae2a71c4410b250000f9cc5a1e26398fcd55a5bbc5a15f \ - --hash=sha256:d0d3c814a97c1a237517e837d8cfa668ced8df4b882452578ecef4a4e79c583b +gcp-releasetool==1.10.0 \ + --hash=sha256:72a38ca91b59c24f7e699e9227c90cbe4dd71b789383cb0164b088abae294c83 \ + --hash=sha256:8c7c99320208383d4bb2b808c6880eb7a81424afe7cdba3c8d84b25f4f0e097d # via -r requirements.in google-api-core==2.10.2 \ --hash=sha256:10c06f7739fe57781f87523375e8e1a3a4674bf6392cd6131a3222182b971320 \ @@ -166,9 +169,9 @@ google-api-core==2.10.2 \ # via # google-cloud-core # google-cloud-storage -google-auth==2.14.0 \ - --hash=sha256:1ad5b0e6eba5f69645971abb3d2c197537d5914070a8c6d30299dfdb07c5c700 \ - --hash=sha256:cf24817855d874ede2efd071aa22125445f555de1685b739a9782fcf408c2a3d +google-auth==2.14.1 \ + --hash=sha256:ccaa901f31ad5cbb562615eb8b664b3dd0bf5404a67618e642307f00613eda4d \ + --hash=sha256:f5d8701633bebc12e0deea4df8abd8aff31c28b355360597f7f2ee60f2e4d016 # via # gcp-releasetool # google-api-core @@ -178,9 +181,9 @@ google-cloud-core==2.3.2 \ --hash=sha256:8417acf6466be2fa85123441696c4badda48db314c607cf1e5d543fa8bdc22fe \ --hash=sha256:b9529ee7047fd8d4bf4a2182de619154240df17fbe60ead399078c1ae152af9a # via google-cloud-storage -google-cloud-storage==2.5.0 \ - --hash=sha256:19a26c66c317ce542cea0830b7e787e8dac2588b6bfa4d3fd3b871ba16305ab0 \ - --hash=sha256:382f34b91de2212e3c2e7b40ec079d27ee2e3dbbae99b75b1bcd8c63063ce235 +google-cloud-storage==2.6.0 \ + --hash=sha256:104ca28ae61243b637f2f01455cc8a05e8f15a2a18ced96cb587241cdd3820f5 \ + --hash=sha256:4ad0415ff61abdd8bb2ae81c1f8f7ec7d91a1011613f2db87c614c550f97bfe9 # via gcp-docuploader google-crc32c==1.5.0 \ --hash=sha256:024894d9d3cfbc5943f8f230e23950cd4906b2fe004c72e29b209420a1e6b05a \ @@ -256,9 +259,9 @@ google-resumable-media==2.4.0 \ --hash=sha256:2aa004c16d295c8f6c33b2b4788ba59d366677c0a25ae7382436cb30f776deaa \ --hash=sha256:8d5518502f92b9ecc84ac46779bd4f09694ecb3ba38a3e7ca737a86d15cbca1f # via google-cloud-storage -googleapis-common-protos==1.56.4 \ - --hash=sha256:8eb2cbc91b69feaf23e32452a7ae60e791e09967d81d4fcc7fc388182d1bd394 \ - --hash=sha256:c25873c47279387cfdcbdafa36149887901d36202cb645a0e4f29686bf6e4417 +googleapis-common-protos==1.57.0 \ + --hash=sha256:27a849d6205838fb6cc3c1c21cb9800707a661bb21c6ce7fb13e99eb1f8a0c46 \ + --hash=sha256:a9f4a1d7f6d9809657b7f1316a1aa527f6664891531bcfcc13b6696e685f443c # via google-api-core idna==3.4 \ --hash=sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4 \ @@ -269,6 +272,7 @@ importlib-metadata==5.0.0 \ --hash=sha256:ddb0e35065e8938f867ed4928d0ae5bf2a53b7773871bfe6bcc7e4fcdc7dea43 # via # -r requirements.in + # keyring # twine jaraco-classes==3.2.3 \ --hash=sha256:2353de3288bc6b82120752201c6b1c1a14b058267fa424ed5ce5984e3b922158 \ @@ -284,9 +288,9 @@ jinja2==3.1.2 \ --hash=sha256:31351a702a408a9e7595a8fc6150fc3f43bb6bf7e319770cbc0db9df9437e852 \ --hash=sha256:6088930bfe239f0e6710546ab9c19c9ef35e29792895fed6e6e31a023a182a61 # via gcp-releasetool -keyring==23.9.3 \ - --hash=sha256:69732a15cb1433bdfbc3b980a8a36a04878a6cfd7cb99f497b573f31618001c0 \ - --hash=sha256:69b01dd83c42f590250fe7a1f503fc229b14de83857314b1933a3ddbf595c4a5 +keyring==23.11.0 \ + --hash=sha256:3dd30011d555f1345dec2c262f0153f2f0ca6bca041fb1dc4588349bb4c0ac1e \ + --hash=sha256:ad192263e2cdd5f12875dedc2da13534359a7e760e77f8d04b50968a821c2361 # via # gcp-releasetool # twine @@ -350,9 +354,9 @@ pkginfo==1.8.3 \ --hash=sha256:848865108ec99d4901b2f7e84058b6e7660aae8ae10164e015a6dcf5b242a594 \ --hash=sha256:a84da4318dd86f870a9447a8c98340aa06216bfc6f2b7bdc4b8766984ae1867c # via twine -platformdirs==2.5.2 \ - --hash=sha256:027d8e83a2d7de06bbac4e5ef7e023c02b863d7ea5d079477e722bb41ab25788 \ - --hash=sha256:58c8abb07dcb441e6ee4b11d8df0ac856038f944ab98b7be6b27b2a3c7feef19 +platformdirs==2.5.4 \ + --hash=sha256:1006647646d80f16130f052404c6b901e80ee4ed6bef6792e1f238a8969106f7 \ + --hash=sha256:af0276409f9a02373d540bf8480021a048711d572745aef4b7842dad245eba10 # via virtualenv protobuf==3.20.3 \ --hash=sha256:03038ac1cfbc41aa21f6afcbcd357281d7521b4157926f30ebecc8d4ea59dcb7 \ @@ -381,7 +385,6 @@ protobuf==3.20.3 \ # gcp-docuploader # gcp-releasetool # google-api-core - # googleapis-common-protos py==1.11.0 \ --hash=sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719 \ --hash=sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378 @@ -476,17 +479,17 @@ urllib3==1.26.12 \ # via # requests # twine -virtualenv==20.16.6 \ - --hash=sha256:186ca84254abcbde98180fd17092f9628c5fe742273c02724972a1d8a2035108 \ - --hash=sha256:530b850b523c6449406dfba859d6345e48ef19b8439606c5d74d7d3c9e14d76e +virtualenv==20.16.7 \ + --hash=sha256:8691e3ff9387f743e00f6bb20f70121f5e4f596cae754531f2b3b3a1b1ac696e \ + --hash=sha256:efd66b00386fdb7dbe4822d172303f40cd05e50e01740b19ea42425cbe653e29 # via nox webencodings==0.5.1 \ --hash=sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78 \ --hash=sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923 # via bleach -wheel==0.37.1 \ - --hash=sha256:4bdcd7d840138086126cd09254dc6195fb4fc6f01c050a1d7236f2630db1d22a \ - --hash=sha256:e9a504e793efbca1b8e0e9cb979a249cf4a0a7b5b8c9e8b65a5e39d49529c1c4 +wheel==0.38.4 \ + --hash=sha256:965f5259b566725405b05e7cf774052044b1ed30119b5d586b2703aafe8719ac \ + --hash=sha256:b60533f3f5d530e971d6737ca6d58681ee434818fab630c83a734bb10c083ce8 # via -r requirements.in zipp==3.10.0 \ --hash=sha256:4fcb6f278987a6605757302a6e40e896257570d11c51628968ccb2a47e80c6c1 \ @@ -494,7 +497,7 @@ zipp==3.10.0 \ # via importlib-metadata # The following packages are considered to be unsafe in a requirements file: -setuptools==65.5.0 \ - --hash=sha256:512e5536220e38146176efb833d4a62aa726b7bbff82cfbc8ba9eaa3996e0b17 \ - --hash=sha256:f62ea9da9ed6289bfe868cd6845968a2c854d1427f8548d52cae02a42b4f0356 +setuptools==65.5.1 \ + --hash=sha256:d0b9a8433464d5800cbe05094acf5c6d52a91bfac9b52bcfc4d41382be5d5d31 \ + --hash=sha256:e197a19aa8ec9722928f2206f8de752def0e4c9fc6953527360d1c36d94ddb2f # via -r requirements.in diff --git a/noxfile.py b/noxfile.py index 29d02000..d8440c02 100644 --- a/noxfile.py +++ b/noxfile.py @@ -273,7 +273,7 @@ def cover(session): session.run("coverage", "erase") -@nox.session(python=DEFAULT_PYTHON_VERSION) +@nox.session(python="3.9") def docs(session): """Build the docs for this library.""" @@ -299,7 +299,7 @@ def docs(session): ) -@nox.session(python=DEFAULT_PYTHON_VERSION) +@nox.session(python="3.9") def docfx(session): """Build the docfx yaml files for this library.""" From cd61e743efbef36ec8fcfd9cbef64781af09908a Mon Sep 17 00:00:00 2001 From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com> Date: Sat, 26 Nov 2022 10:55:03 -0500 Subject: [PATCH 08/16] chore(python): drop flake8-import-order in samples noxfile (#412) Source-Link: https://github.com/googleapis/synthtool/commit/6ed3a831cb9ff69ef8a504c353e098ec0192ad93 Post-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:3abfa0f1886adaf0b83f07cb117b24a639ea1cb9cffe56d43280b977033563eb Co-authored-by: Owl Bot --- .github/.OwlBot.lock.yaml | 2 +- samples/snippets/noxfile.py | 26 +++----------------------- 2 files changed, 4 insertions(+), 24 deletions(-) diff --git a/.github/.OwlBot.lock.yaml b/.github/.OwlBot.lock.yaml index 3f1ccc08..bb21147e 100644 --- a/.github/.OwlBot.lock.yaml +++ b/.github/.OwlBot.lock.yaml @@ -13,4 +13,4 @@ # limitations under the License. docker: image: gcr.io/cloud-devrel-public-resources/owlbot-python:latest - digest: sha256:e6cbd61f1838d9ff6a31436dfc13717f372a7482a82fc1863ca954ec47bff8c8 + digest: sha256:3abfa0f1886adaf0b83f07cb117b24a639ea1cb9cffe56d43280b977033563eb diff --git a/samples/snippets/noxfile.py b/samples/snippets/noxfile.py index c1715136..05770846 100644 --- a/samples/snippets/noxfile.py +++ b/samples/snippets/noxfile.py @@ -18,7 +18,7 @@ import os from pathlib import Path import sys -from typing import Callable, Dict, List, Optional +from typing import Callable, Dict, Optional import nox @@ -108,22 +108,6 @@ def get_pytest_env_vars() -> Dict[str, str]: # -def _determine_local_import_names(start_dir: str) -> List[str]: - """Determines all import names that should be considered "local". - - This is used when running the linter to insure that import order is - properly checked. - """ - file_ext_pairs = [os.path.splitext(path) for path in os.listdir(start_dir)] - return [ - basename - for basename, extension in file_ext_pairs - if extension == ".py" - or os.path.isdir(os.path.join(start_dir, basename)) - and basename not in ("__pycache__") - ] - - # Linting with flake8. # # We ignore the following rules: @@ -138,7 +122,6 @@ def _determine_local_import_names(start_dir: str) -> List[str]: "--show-source", "--builtin=gettext", "--max-complexity=20", - "--import-order-style=google", "--exclude=.nox,.cache,env,lib,generated_pb2,*_pb2.py,*_pb2_grpc.py", "--ignore=E121,E123,E126,E203,E226,E24,E266,E501,E704,W503,W504,I202", "--max-line-length=88", @@ -148,14 +131,11 @@ def _determine_local_import_names(start_dir: str) -> List[str]: @nox.session def lint(session: nox.sessions.Session) -> None: if not TEST_CONFIG["enforce_type_hints"]: - session.install("flake8", "flake8-import-order") + session.install("flake8") else: - session.install("flake8", "flake8-import-order", "flake8-annotations") + session.install("flake8", "flake8-annotations") - local_names = _determine_local_import_names(".") args = FLAKE8_COMMON_ARGS + [ - "--application-import-names", - ",".join(local_names), ".", ] session.run("flake8", *args) From cffd61cce1cd2a2cf18d6098efa1346e5126afc8 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Sun, 27 Nov 2022 13:48:21 +0100 Subject: [PATCH 09/16] chore(deps): update all dependencies (#408) Co-authored-by: Anthonios Partheniou --- samples/snippets/requirements-test.txt | 2 +- samples/snippets/requirements.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/samples/snippets/requirements-test.txt b/samples/snippets/requirements-test.txt index e47a4859..e4a48ec7 100644 --- a/samples/snippets/requirements-test.txt +++ b/samples/snippets/requirements-test.txt @@ -1,2 +1,2 @@ pytest==7.2.0 -google-cloud-bigquery==3.3.5 +google-cloud-bigquery==3.4.0 diff --git a/samples/snippets/requirements.txt b/samples/snippets/requirements.txt index 9a8e73c3..851db1a3 100644 --- a/samples/snippets/requirements.txt +++ b/samples/snippets/requirements.txt @@ -1,2 +1,2 @@ -google-cloud-pubsub==2.13.10 +google-cloud-pubsub==2.13.11 google-cloud-securitycenter==1.16.2 \ No newline at end of file From 63c76adae5a4f45e7b9f330bac21c934bd46bac2 Mon Sep 17 00:00:00 2001 From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com> Date: Sun, 27 Nov 2022 08:33:32 -0500 Subject: [PATCH 10/16] feat: Add files field to finding's list of attributes (#407) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * chore: update to gapic-generator-python 1.5.0 feat: add support for `google.cloud..__version__` PiperOrigin-RevId: 484665853 Source-Link: https://github.com/googleapis/googleapis/commit/8eb249a19db926c2fbc4ecf1dc09c0e521a88b22 Source-Link: https://github.com/googleapis/googleapis-gen/commit/c8aa327b5f478865fc3fd91e3c2768e54e26ad44 Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiYzhhYTMyN2I1ZjQ3ODg2NWZjM2ZkOTFlM2MyNzY4ZTU0ZTI2YWQ0NCJ9 * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md * update version in gapic_version.py * add .release-please-manifest.json with correct version * add owlbot.py to exclude generated gapic_version.py * set manifest to true in .github/release-please.yml * add release-please-config.json * chore: Update to gapic-generator-python 1.6.0 feat(python): Add typing to proto.Message based class attributes feat(python): Snippetgen handling of repeated enum field PiperOrigin-RevId: 487326846 Source-Link: https://github.com/googleapis/googleapis/commit/da380c77bb87ba0f752baf07605dd1db30e1f7e1 Source-Link: https://github.com/googleapis/googleapis-gen/commit/61ef5762ee6731a0cbbfea22fd0eecee51ab1c8e Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiNjFlZjU3NjJlZTY3MzFhMGNiYmZlYTIyZmQwZWVjZWU1MWFiMWM4ZSJ9 * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md * feat: new APIs added to reflect updates to the filestore service - Add ENTERPRISE Tier - Add snapshot APIs: RevertInstance, ListSnapshots, CreateSnapshot, DeleteSnapshot, UpdateSnapshot - Add multi-share APIs: ListShares, GetShare, CreateShare, DeleteShare, UpdateShare - Add ConnectMode to NetworkConfig (for Private Service Access support) - New status codes (SUSPENDED/SUSPENDING, REVERTING/RESUMING) - Add SuspensionReason (for KMS related suspension) - Add new fields to Instance information: max_capacity_gb, capacity_step_size_gb, max_share_count, capacity_gb, multi_share_enabled PiperOrigin-RevId: 487492758 Source-Link: https://github.com/googleapis/googleapis/commit/5be5981f50322cf0c7388595e0f31ac5d0693469 Source-Link: https://github.com/googleapis/googleapis-gen/commit/ab0e217f560cc2c1afc11441c2eab6b6950efd2b Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiYWIwZTIxN2Y1NjBjYzJjMWFmYzExNDQxYzJlYWI2YjY5NTBlZmQyYiJ9 * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md * update path to snippet metadata json * chore: Update gapic-generator-python to v1.6.1 PiperOrigin-RevId: 488036204 Source-Link: https://github.com/googleapis/googleapis/commit/08f275f5c1c0d99056e1cb68376323414459ee19 Source-Link: https://github.com/googleapis/googleapis-gen/commit/555c0945e60649e38739ae64bc45719cdf72178f Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiNTU1YzA5NDVlNjA2NDllMzg3MzlhZTY0YmM0NTcxOWNkZjcyMTc4ZiJ9 * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md * feat: Add files field to finding's list of attributes PiperOrigin-RevId: 488290111 Source-Link: https://github.com/googleapis/googleapis/commit/7349e1cd02f5b40058f457387f604357dc871a57 Source-Link: https://github.com/googleapis/googleapis-gen/commit/721049d512deebaa96d438aa23e970299d97712b Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiNzIxMDQ5ZDUxMmRlZWJhYTk2ZDQzOGFhMjNlOTcwMjk5ZDk3NzEyYiJ9 * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md Co-authored-by: Owl Bot Co-authored-by: Anthonios Partheniou --- .github/release-please.yml | 1 + .release-please-manifest.json | 3 + docs/securitycenter_v1/types.rst | 1 - docs/securitycenter_v1beta1/types.rst | 1 - docs/securitycenter_v1p1beta1/types.rst | 1 - google/cloud/securitycenter/__init__.py | 4 + google/cloud/securitycenter/gapic_version.py | 16 + google/cloud/securitycenter_v1/__init__.py | 4 + .../services/security_center/async_client.py | 417 ++++++++++-------- .../services/security_center/client.py | 351 +++++++++------ .../security_center/transports/base.py | 2 +- .../security_center/transports/grpc.py | 20 +- .../transports/grpc_asyncio.py | 16 +- .../cloud/securitycenter_v1/types/access.py | 30 +- google/cloud/securitycenter_v1/types/asset.py | 44 +- .../types/bigquery_export.py | 18 +- .../securitycenter_v1/types/compliance.py | 10 +- .../securitycenter_v1/types/connection.py | 12 +- .../types/contact_details.py | 8 +- .../securitycenter_v1/types/container.py | 12 +- .../cloud/securitycenter_v1/types/database.py | 14 +- .../securitycenter_v1/types/exfiltration.py | 16 +- .../types/external_system.py | 14 +- google/cloud/securitycenter_v1/types/file.py | 14 +- .../cloud/securitycenter_v1/types/finding.py | 95 ++-- .../cloud/securitycenter_v1/types/folder.py | 6 +- .../securitycenter_v1/types/iam_binding.py | 8 +- .../securitycenter_v1/types/indicator.py | 56 ++- .../securitycenter_v1/types/kubernetes.py | 82 ++-- google/cloud/securitycenter_v1/types/label.py | 6 +- .../securitycenter_v1/types/mitre_attack.py | 19 +- .../securitycenter_v1/types/mute_config.py | 16 +- .../types/notification_config.py | 14 +- .../types/notification_message.py | 8 +- .../types/organization_settings.py | 26 +- .../cloud/securitycenter_v1/types/process.py | 32 +- .../cloud/securitycenter_v1/types/resource.py | 20 +- .../types/run_asset_discovery_response.py | 6 +- .../securitycenter_v1/types/security_marks.py | 10 +- .../types/securitycenter_service.py | 304 ++++++------- .../cloud/securitycenter_v1/types/source.py | 10 +- .../securitycenter_v1/types/vulnerability.py | 36 +- .../cloud/securitycenter_v1beta1/__init__.py | 4 + .../services/security_center/async_client.py | 198 +++++---- .../services/security_center/client.py | 168 ++++--- .../security_center/transports/base.py | 2 +- .../security_center/transports/grpc.py | 20 +- .../transports/grpc_asyncio.py | 16 +- .../securitycenter_v1beta1/types/asset.py | 28 +- .../securitycenter_v1beta1/types/finding.py | 24 +- .../types/organization_settings.py | 22 +- .../types/run_asset_discovery_response.py | 6 +- .../types/security_marks.py | 8 +- .../types/securitycenter_service.py | 156 +++---- .../securitycenter_v1beta1/types/source.py | 8 +- .../securitycenter_v1p1beta1/__init__.py | 4 + .../services/security_center/async_client.py | 268 ++++++----- .../services/security_center/client.py | 228 ++++++---- .../security_center/transports/base.py | 2 +- .../security_center/transports/grpc.py | 20 +- .../transports/grpc_asyncio.py | 16 +- .../securitycenter_v1p1beta1/types/asset.py | 44 +- .../securitycenter_v1p1beta1/types/finding.py | 28 +- .../securitycenter_v1p1beta1/types/folder.py | 6 +- .../types/notification_config.py | 16 +- .../types/notification_message.py | 8 +- .../types/organization_settings.py | 26 +- .../types/resource.py | 16 +- .../types/run_asset_discovery_response.py | 6 +- .../types/security_marks.py | 10 +- .../types/securitycenter_service.py | 220 ++++----- .../securitycenter_v1p1beta1/types/source.py | 10 +- owlbot.py | 56 +++ release-please-config.json | 33 ++ ...adata_google.cloud.securitycenter.v1.json} | 7 +- ..._google.cloud.securitycenter.v1beta1.json} | 7 +- ...oogle.cloud.securitycenter.v1p1beta1.json} | 7 +- setup.py | 46 +- testing/constraints-3.10.txt | 7 + testing/constraints-3.11.txt | 7 + testing/constraints-3.7.txt | 12 +- testing/constraints-3.8.txt | 7 + testing/constraints-3.9.txt | 7 + .../securitycenter_v1/test_security_center.py | 1 + .../test_security_center.py | 1 + .../test_security_center.py | 1 + 86 files changed, 2068 insertions(+), 1502 deletions(-) create mode 100644 .release-please-manifest.json create mode 100644 google/cloud/securitycenter/gapic_version.py create mode 100644 owlbot.py create mode 100644 release-please-config.json rename samples/generated_samples/{snippet_metadata_securitycenter_v1.json => snippet_metadata_google.cloud.securitycenter.v1.json} (99%) rename samples/generated_samples/{snippet_metadata_securitycenter_v1beta1.json => snippet_metadata_google.cloud.securitycenter.v1beta1.json} (99%) rename samples/generated_samples/{snippet_metadata_securitycenter_v1p1beta1.json => snippet_metadata_google.cloud.securitycenter.v1p1beta1.json} (99%) diff --git a/.github/release-please.yml b/.github/release-please.yml index 6def37a8..e9a4f008 100644 --- a/.github/release-please.yml +++ b/.github/release-please.yml @@ -1,5 +1,6 @@ releaseType: python handleGHRelease: true +manifest: true # NOTE: this section is generated by synthtool.languages.python # See https://github.com/googleapis/synthtool/blob/master/synthtool/languages/python.py branches: diff --git a/.release-please-manifest.json b/.release-please-manifest.json new file mode 100644 index 00000000..6d833911 --- /dev/null +++ b/.release-please-manifest.json @@ -0,0 +1,3 @@ +{ + ".": "1.16.2" +} diff --git a/docs/securitycenter_v1/types.rst b/docs/securitycenter_v1/types.rst index 460aec08..f7497757 100644 --- a/docs/securitycenter_v1/types.rst +++ b/docs/securitycenter_v1/types.rst @@ -3,5 +3,4 @@ Types for Google Cloud Securitycenter v1 API .. automodule:: google.cloud.securitycenter_v1.types :members: - :undoc-members: :show-inheritance: diff --git a/docs/securitycenter_v1beta1/types.rst b/docs/securitycenter_v1beta1/types.rst index 44bb4fec..0bbeba06 100644 --- a/docs/securitycenter_v1beta1/types.rst +++ b/docs/securitycenter_v1beta1/types.rst @@ -3,5 +3,4 @@ Types for Google Cloud Securitycenter v1beta1 API .. automodule:: google.cloud.securitycenter_v1beta1.types :members: - :undoc-members: :show-inheritance: diff --git a/docs/securitycenter_v1p1beta1/types.rst b/docs/securitycenter_v1p1beta1/types.rst index 1facc905..a68ac5c6 100644 --- a/docs/securitycenter_v1p1beta1/types.rst +++ b/docs/securitycenter_v1p1beta1/types.rst @@ -3,5 +3,4 @@ Types for Google Cloud Securitycenter v1p1beta1 API .. automodule:: google.cloud.securitycenter_v1p1beta1.types :members: - :undoc-members: :show-inheritance: diff --git a/google/cloud/securitycenter/__init__.py b/google/cloud/securitycenter/__init__.py index e039095f..39833c6b 100644 --- a/google/cloud/securitycenter/__init__.py +++ b/google/cloud/securitycenter/__init__.py @@ -13,6 +13,10 @@ # See the License for the specific language governing permissions and # limitations under the License. # +from google.cloud.securitycenter import gapic_version as package_version + +__version__ = package_version.__version__ + from google.cloud.securitycenter_v1.services.security_center.async_client import ( SecurityCenterAsyncClient, diff --git a/google/cloud/securitycenter/gapic_version.py b/google/cloud/securitycenter/gapic_version.py new file mode 100644 index 00000000..872b3e95 --- /dev/null +++ b/google/cloud/securitycenter/gapic_version.py @@ -0,0 +1,16 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 Google LLC +# +# 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. +# +__version__ = "1.16.2" # {x-release-please-version} diff --git a/google/cloud/securitycenter_v1/__init__.py b/google/cloud/securitycenter_v1/__init__.py index 84a3c5a6..df18a2e7 100644 --- a/google/cloud/securitycenter_v1/__init__.py +++ b/google/cloud/securitycenter_v1/__init__.py @@ -13,6 +13,10 @@ # See the License for the specific language governing permissions and # limitations under the License. # +from google.cloud.securitycenter import gapic_version as package_version + +__version__ = package_version.__version__ + from .services.security_center import SecurityCenterAsyncClient, SecurityCenterClient from .types.access import Access, Geolocation, ServiceAccountDelegationInfo diff --git a/google/cloud/securitycenter_v1/services/security_center/async_client.py b/google/cloud/securitycenter_v1/services/security_center/async_client.py index 17448595..d9e77b6c 100644 --- a/google/cloud/securitycenter_v1/services/security_center/async_client.py +++ b/google/cloud/securitycenter_v1/services/security_center/async_client.py @@ -16,7 +16,17 @@ from collections import OrderedDict import functools import re -from typing import Dict, Mapping, Optional, Sequence, Tuple, Type, Union +from typing import ( + Dict, + Mapping, + MutableMapping, + MutableSequence, + Optional, + Sequence, + Tuple, + Type, + Union, +) from google.api_core import exceptions as core_exceptions from google.api_core import gapic_v1 @@ -64,6 +74,7 @@ organization_settings as gcs_organization_settings, ) from google.cloud.securitycenter_v1.types import security_marks as gcs_security_marks +from google.cloud.securitycenter_v1.types import file from google.cloud.securitycenter_v1.types import finding from google.cloud.securitycenter_v1.types import finding as gcs_finding from google.cloud.securitycenter_v1.types import mute_config @@ -233,9 +244,9 @@ def transport(self) -> SecurityCenterTransport: def __init__( self, *, - credentials: ga_credentials.Credentials = None, + credentials: Optional[ga_credentials.Credentials] = None, transport: Union[str, SecurityCenterTransport] = "grpc_asyncio", - client_options: ClientOptions = None, + client_options: Optional[ClientOptions] = None, client_info: gapic_v1.client_info.ClientInfo = DEFAULT_CLIENT_INFO, ) -> None: """Instantiates the security center client. @@ -279,11 +290,13 @@ def __init__( async def bulk_mute_findings( self, - request: Union[securitycenter_service.BulkMuteFindingsRequest, dict] = None, + request: Optional[ + Union[securitycenter_service.BulkMuteFindingsRequest, dict] + ] = None, *, - parent: str = None, + parent: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> operation_async.AsyncOperation: r"""Kicks off an LRO to bulk mute findings for a parent @@ -322,7 +335,7 @@ async def sample_bulk_mute_findings(): print(response) Args: - request (Union[google.cloud.securitycenter_v1.types.BulkMuteFindingsRequest, dict]): + request (Optional[Union[google.cloud.securitycenter_v1.types.BulkMuteFindingsRequest, dict]]): The request object. Request message for bulk findings update. Note: @@ -408,12 +421,14 @@ async def sample_bulk_mute_findings(): async def create_source( self, - request: Union[securitycenter_service.CreateSourceRequest, dict] = None, + request: Optional[ + Union[securitycenter_service.CreateSourceRequest, dict] + ] = None, *, - parent: str = None, - source: gcs_source.Source = None, + parent: Optional[str] = None, + source: Optional[gcs_source.Source] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> gcs_source.Source: r"""Creates a source. @@ -445,7 +460,7 @@ async def sample_create_source(): print(response) Args: - request (Union[google.cloud.securitycenter_v1.types.CreateSourceRequest, dict]): + request (Optional[Union[google.cloud.securitycenter_v1.types.CreateSourceRequest, dict]]): The request object. Request message for creating a source. parent (:class:`str`): @@ -525,13 +540,15 @@ async def sample_create_source(): async def create_finding( self, - request: Union[securitycenter_service.CreateFindingRequest, dict] = None, + request: Optional[ + Union[securitycenter_service.CreateFindingRequest, dict] + ] = None, *, - parent: str = None, - finding_id: str = None, - finding: gcs_finding.Finding = None, + parent: Optional[str] = None, + finding_id: Optional[str] = None, + finding: Optional[gcs_finding.Finding] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> gcs_finding.Finding: r"""Creates a finding. The corresponding source must @@ -565,7 +582,7 @@ async def sample_create_finding(): print(response) Args: - request (Union[google.cloud.securitycenter_v1.types.CreateFindingRequest, dict]): + request (Optional[Union[google.cloud.securitycenter_v1.types.CreateFindingRequest, dict]]): The request object. Request message for creating a finding. parent (:class:`str`): @@ -661,13 +678,15 @@ async def sample_create_finding(): async def create_mute_config( self, - request: Union[securitycenter_service.CreateMuteConfigRequest, dict] = None, + request: Optional[ + Union[securitycenter_service.CreateMuteConfigRequest, dict] + ] = None, *, - parent: str = None, - mute_config: gcs_mute_config.MuteConfig = None, - mute_config_id: str = None, + parent: Optional[str] = None, + mute_config: Optional[gcs_mute_config.MuteConfig] = None, + mute_config_id: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> gcs_mute_config.MuteConfig: r"""Creates a mute config. @@ -704,7 +723,7 @@ async def sample_create_mute_config(): print(response) Args: - request (Union[google.cloud.securitycenter_v1.types.CreateMuteConfigRequest, dict]): + request (Optional[Union[google.cloud.securitycenter_v1.types.CreateMuteConfigRequest, dict]]): The request object. Request message for creating a mute config. parent (:class:`str`): @@ -794,15 +813,17 @@ async def sample_create_mute_config(): async def create_notification_config( self, - request: Union[ - securitycenter_service.CreateNotificationConfigRequest, dict + request: Optional[ + Union[securitycenter_service.CreateNotificationConfigRequest, dict] ] = None, *, - parent: str = None, - config_id: str = None, - notification_config: gcs_notification_config.NotificationConfig = None, + parent: Optional[str] = None, + config_id: Optional[str] = None, + notification_config: Optional[ + gcs_notification_config.NotificationConfig + ] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> gcs_notification_config.NotificationConfig: r"""Creates a notification config. @@ -835,7 +856,7 @@ async def sample_create_notification_config(): print(response) Args: - request (Union[google.cloud.securitycenter_v1.types.CreateNotificationConfigRequest, dict]): + request (Optional[Union[google.cloud.securitycenter_v1.types.CreateNotificationConfigRequest, dict]]): The request object. Request message for creating a notification config. parent (:class:`str`): @@ -930,11 +951,13 @@ async def sample_create_notification_config(): async def delete_mute_config( self, - request: Union[securitycenter_service.DeleteMuteConfigRequest, dict] = None, + request: Optional[ + Union[securitycenter_service.DeleteMuteConfigRequest, dict] + ] = None, *, - name: str = None, + name: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> None: r"""Deletes an existing mute config. @@ -963,7 +986,7 @@ async def sample_delete_mute_config(): await client.delete_mute_config(request=request) Args: - request (Union[google.cloud.securitycenter_v1.types.DeleteMuteConfigRequest, dict]): + request (Optional[Union[google.cloud.securitycenter_v1.types.DeleteMuteConfigRequest, dict]]): The request object. Request message for deleting a mute config. name (:class:`str`): @@ -1022,13 +1045,13 @@ async def sample_delete_mute_config(): async def delete_notification_config( self, - request: Union[ - securitycenter_service.DeleteNotificationConfigRequest, dict + request: Optional[ + Union[securitycenter_service.DeleteNotificationConfigRequest, dict] ] = None, *, - name: str = None, + name: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> None: r"""Deletes a notification config. @@ -1057,7 +1080,7 @@ async def sample_delete_notification_config(): await client.delete_notification_config(request=request) Args: - request (Union[google.cloud.securitycenter_v1.types.DeleteNotificationConfigRequest, dict]): + request (Optional[Union[google.cloud.securitycenter_v1.types.DeleteNotificationConfigRequest, dict]]): The request object. Request message for deleting a notification config. name (:class:`str`): @@ -1115,11 +1138,13 @@ async def sample_delete_notification_config(): async def get_big_query_export( self, - request: Union[securitycenter_service.GetBigQueryExportRequest, dict] = None, + request: Optional[ + Union[securitycenter_service.GetBigQueryExportRequest, dict] + ] = None, *, - name: str = None, + name: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> bigquery_export.BigQueryExport: r"""Gets a big query export. @@ -1151,7 +1176,7 @@ async def sample_get_big_query_export(): print(response) Args: - request (Union[google.cloud.securitycenter_v1.types.GetBigQueryExportRequest, dict]): + request (Optional[Union[google.cloud.securitycenter_v1.types.GetBigQueryExportRequest, dict]]): The request object. Request message for retrieving a big query export. name (:class:`str`): @@ -1220,11 +1245,11 @@ async def sample_get_big_query_export(): async def get_iam_policy( self, - request: Union[iam_policy_pb2.GetIamPolicyRequest, dict] = None, + request: Optional[Union[iam_policy_pb2.GetIamPolicyRequest, dict]] = None, *, - resource: str = None, + resource: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> policy_pb2.Policy: r"""Gets the access control policy on the specified @@ -1258,7 +1283,7 @@ async def sample_get_iam_policy(): print(response) Args: - request (Union[google.iam.v1.iam_policy_pb2.GetIamPolicyRequest, dict]): + request (Optional[Union[google.iam.v1.iam_policy_pb2.GetIamPolicyRequest, dict]]): The request object. Request message for `GetIamPolicy` method. resource (:class:`str`): @@ -1397,11 +1422,13 @@ async def sample_get_iam_policy(): async def get_mute_config( self, - request: Union[securitycenter_service.GetMuteConfigRequest, dict] = None, + request: Optional[ + Union[securitycenter_service.GetMuteConfigRequest, dict] + ] = None, *, - name: str = None, + name: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> mute_config.MuteConfig: r"""Gets a mute config. @@ -1433,7 +1460,7 @@ async def sample_get_mute_config(): print(response) Args: - request (Union[google.cloud.securitycenter_v1.types.GetMuteConfigRequest, dict]): + request (Optional[Union[google.cloud.securitycenter_v1.types.GetMuteConfigRequest, dict]]): The request object. Request message for retrieving a mute config. name (:class:`str`): @@ -1503,13 +1530,13 @@ async def sample_get_mute_config(): async def get_notification_config( self, - request: Union[ - securitycenter_service.GetNotificationConfigRequest, dict + request: Optional[ + Union[securitycenter_service.GetNotificationConfigRequest, dict] ] = None, *, - name: str = None, + name: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> notification_config.NotificationConfig: r"""Gets a notification config. @@ -1541,7 +1568,7 @@ async def sample_get_notification_config(): print(response) Args: - request (Union[google.cloud.securitycenter_v1.types.GetNotificationConfigRequest, dict]): + request (Optional[Union[google.cloud.securitycenter_v1.types.GetNotificationConfigRequest, dict]]): The request object. Request message for getting a notification config. name (:class:`str`): @@ -1622,13 +1649,13 @@ async def sample_get_notification_config(): async def get_organization_settings( self, - request: Union[ - securitycenter_service.GetOrganizationSettingsRequest, dict + request: Optional[ + Union[securitycenter_service.GetOrganizationSettingsRequest, dict] ] = None, *, - name: str = None, + name: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> organization_settings.OrganizationSettings: r"""Gets the settings for an organization. @@ -1660,7 +1687,7 @@ async def sample_get_organization_settings(): print(response) Args: - request (Union[google.cloud.securitycenter_v1.types.GetOrganizationSettingsRequest, dict]): + request (Optional[Union[google.cloud.securitycenter_v1.types.GetOrganizationSettingsRequest, dict]]): The request object. Request message for getting organization settings. name (:class:`str`): @@ -1738,11 +1765,11 @@ async def sample_get_organization_settings(): async def get_source( self, - request: Union[securitycenter_service.GetSourceRequest, dict] = None, + request: Optional[Union[securitycenter_service.GetSourceRequest, dict]] = None, *, - name: str = None, + name: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> source.Source: r"""Gets a source. @@ -1774,7 +1801,7 @@ async def sample_get_source(): print(response) Args: - request (Union[google.cloud.securitycenter_v1.types.GetSourceRequest, dict]): + request (Optional[Union[google.cloud.securitycenter_v1.types.GetSourceRequest, dict]]): The request object. Request message for getting a source. name (:class:`str`): @@ -1855,10 +1882,12 @@ async def sample_get_source(): async def group_assets( self, - request: Union[securitycenter_service.GroupAssetsRequest, dict] = None, + request: Optional[ + Union[securitycenter_service.GroupAssetsRequest, dict] + ] = None, *, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> pagers.GroupAssetsAsyncPager: r"""Filters an organization's assets and groups them by @@ -1893,7 +1922,7 @@ async def sample_group_assets(): print(response) Args: - request (Union[google.cloud.securitycenter_v1.types.GroupAssetsRequest, dict]): + request (Optional[Union[google.cloud.securitycenter_v1.types.GroupAssetsRequest, dict]]): The request object. Request message for grouping by assets. retry (google.api_core.retry.Retry): Designation of what errors, if any, @@ -1960,12 +1989,14 @@ async def sample_group_assets(): async def group_findings( self, - request: Union[securitycenter_service.GroupFindingsRequest, dict] = None, + request: Optional[ + Union[securitycenter_service.GroupFindingsRequest, dict] + ] = None, *, - parent: str = None, - group_by: str = None, + parent: Optional[str] = None, + group_by: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> pagers.GroupFindingsAsyncPager: r"""Filters an organization or source's findings and groups them by @@ -2005,7 +2036,7 @@ async def sample_group_findings(): print(response) Args: - request (Union[google.cloud.securitycenter_v1.types.GroupFindingsRequest, dict]): + request (Optional[Union[google.cloud.securitycenter_v1.types.GroupFindingsRequest, dict]]): The request object. Request message for grouping by findings. parent (:class:`str`): @@ -2123,10 +2154,10 @@ async def sample_group_findings(): async def list_assets( self, - request: Union[securitycenter_service.ListAssetsRequest, dict] = None, + request: Optional[Union[securitycenter_service.ListAssetsRequest, dict]] = None, *, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> pagers.ListAssetsAsyncPager: r"""Lists an organization's assets. @@ -2159,7 +2190,7 @@ async def sample_list_assets(): print(response) Args: - request (Union[google.cloud.securitycenter_v1.types.ListAssetsRequest, dict]): + request (Optional[Union[google.cloud.securitycenter_v1.types.ListAssetsRequest, dict]]): The request object. Request message for listing assets. retry (google.api_core.retry.Retry): Designation of what errors, if any, should be retried. @@ -2224,10 +2255,12 @@ async def sample_list_assets(): async def list_findings( self, - request: Union[securitycenter_service.ListFindingsRequest, dict] = None, + request: Optional[ + Union[securitycenter_service.ListFindingsRequest, dict] + ] = None, *, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> pagers.ListFindingsAsyncPager: r"""Lists an organization or source's findings. @@ -2263,7 +2296,7 @@ async def sample_list_findings(): print(response) Args: - request (Union[google.cloud.securitycenter_v1.types.ListFindingsRequest, dict]): + request (Optional[Union[google.cloud.securitycenter_v1.types.ListFindingsRequest, dict]]): The request object. Request message for listing findings. retry (google.api_core.retry.Retry): Designation of what errors, if any, @@ -2330,11 +2363,13 @@ async def sample_list_findings(): async def list_mute_configs( self, - request: Union[securitycenter_service.ListMuteConfigsRequest, dict] = None, + request: Optional[ + Union[securitycenter_service.ListMuteConfigsRequest, dict] + ] = None, *, - parent: str = None, + parent: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> pagers.ListMuteConfigsAsyncPager: r"""Lists mute configs. @@ -2367,7 +2402,7 @@ async def sample_list_mute_configs(): print(response) Args: - request (Union[google.cloud.securitycenter_v1.types.ListMuteConfigsRequest, dict]): + request (Optional[Union[google.cloud.securitycenter_v1.types.ListMuteConfigsRequest, dict]]): The request object. Request message for listing mute configs at a given scope e.g. organization, folder or project. @@ -2448,13 +2483,13 @@ async def sample_list_mute_configs(): async def list_notification_configs( self, - request: Union[ - securitycenter_service.ListNotificationConfigsRequest, dict + request: Optional[ + Union[securitycenter_service.ListNotificationConfigsRequest, dict] ] = None, *, - parent: str = None, + parent: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> pagers.ListNotificationConfigsAsyncPager: r"""Lists notification configs. @@ -2487,7 +2522,7 @@ async def sample_list_notification_configs(): print(response) Args: - request (Union[google.cloud.securitycenter_v1.types.ListNotificationConfigsRequest, dict]): + request (Optional[Union[google.cloud.securitycenter_v1.types.ListNotificationConfigsRequest, dict]]): The request object. Request message for listing notification configs. parent (:class:`str`): @@ -2577,11 +2612,13 @@ async def sample_list_notification_configs(): async def list_sources( self, - request: Union[securitycenter_service.ListSourcesRequest, dict] = None, + request: Optional[ + Union[securitycenter_service.ListSourcesRequest, dict] + ] = None, *, - parent: str = None, + parent: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> pagers.ListSourcesAsyncPager: r"""Lists all sources belonging to an organization. @@ -2614,7 +2651,7 @@ async def sample_list_sources(): print(response) Args: - request (Union[google.cloud.securitycenter_v1.types.ListSourcesRequest, dict]): + request (Optional[Union[google.cloud.securitycenter_v1.types.ListSourcesRequest, dict]]): The request object. Request message for listing sources. parent (:class:`str`): Required. Resource name of the parent of sources to @@ -2702,11 +2739,13 @@ async def sample_list_sources(): async def run_asset_discovery( self, - request: Union[securitycenter_service.RunAssetDiscoveryRequest, dict] = None, + request: Optional[ + Union[securitycenter_service.RunAssetDiscoveryRequest, dict] + ] = None, *, - parent: str = None, + parent: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> operation_async.AsyncOperation: r"""Runs asset discovery. The discovery is tracked with a @@ -2747,7 +2786,7 @@ async def sample_run_asset_discovery(): print(response) Args: - request (Union[google.cloud.securitycenter_v1.types.RunAssetDiscoveryRequest, dict]): + request (Optional[Union[google.cloud.securitycenter_v1.types.RunAssetDiscoveryRequest, dict]]): The request object. Request message for running asset discovery for an organization. parent (:class:`str`): @@ -2825,13 +2864,15 @@ async def sample_run_asset_discovery(): async def set_finding_state( self, - request: Union[securitycenter_service.SetFindingStateRequest, dict] = None, + request: Optional[ + Union[securitycenter_service.SetFindingStateRequest, dict] + ] = None, *, - name: str = None, - state: finding.Finding.State = None, - start_time: timestamp_pb2.Timestamp = None, + name: Optional[str] = None, + state: Optional[finding.Finding.State] = None, + start_time: Optional[timestamp_pb2.Timestamp] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> finding.Finding: r"""Updates the state of a finding. @@ -2864,7 +2905,7 @@ async def sample_set_finding_state(): print(response) Args: - request (Union[google.cloud.securitycenter_v1.types.SetFindingStateRequest, dict]): + request (Optional[Union[google.cloud.securitycenter_v1.types.SetFindingStateRequest, dict]]): The request object. Request message for updating a finding's state. name (:class:`str`): @@ -2872,7 +2913,7 @@ async def sample_set_finding_state(): See: https://cloud.google.com/apis/design/resource_names#relative_resource_name Example: - "organizations/{organization_id}/sources/{source_id}/finding/{finding_id}". + "organizations/{organization_id}/sources/{source_id}/findings/{finding_id}". This corresponds to the ``name`` field on the ``request`` instance; if ``request`` is provided, this @@ -2958,12 +2999,12 @@ async def sample_set_finding_state(): async def set_mute( self, - request: Union[securitycenter_service.SetMuteRequest, dict] = None, + request: Optional[Union[securitycenter_service.SetMuteRequest, dict]] = None, *, - name: str = None, - mute: finding.Finding.Mute = None, + name: Optional[str] = None, + mute: Optional[finding.Finding.Mute] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> finding.Finding: r"""Updates the mute state of a finding. @@ -2996,7 +3037,7 @@ async def sample_set_mute(): print(response) Args: - request (Union[google.cloud.securitycenter_v1.types.SetMuteRequest, dict]): + request (Optional[Union[google.cloud.securitycenter_v1.types.SetMuteRequest, dict]]): The request object. Request message for updating a finding's mute status. name (:class:`str`): @@ -3004,9 +3045,9 @@ async def sample_set_mute(): See: https://cloud.google.com/apis/design/resource_names#relative_resource_name Example: - "organizations/{organization_id}/sources/{source_id}/finding/{finding_id}", - "folders/{folder_id}/sources/{source_id}/finding/{finding_id}", - "projects/{project_id}/sources/{source_id}/finding/{finding_id}". + "organizations/{organization_id}/sources/{source_id}/findings/{finding_id}", + "folders/{folder_id}/sources/{source_id}/findings/{finding_id}", + "projects/{project_id}/sources/{source_id}/findings/{finding_id}". This corresponds to the ``name`` field on the ``request`` instance; if ``request`` is provided, this @@ -3083,11 +3124,11 @@ async def sample_set_mute(): async def set_iam_policy( self, - request: Union[iam_policy_pb2.SetIamPolicyRequest, dict] = None, + request: Optional[Union[iam_policy_pb2.SetIamPolicyRequest, dict]] = None, *, - resource: str = None, + resource: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> policy_pb2.Policy: r"""Sets the access control policy on the specified @@ -3121,7 +3162,7 @@ async def sample_set_iam_policy(): print(response) Args: - request (Union[google.iam.v1.iam_policy_pb2.SetIamPolicyRequest, dict]): + request (Optional[Union[google.iam.v1.iam_policy_pb2.SetIamPolicyRequest, dict]]): The request object. Request message for `SetIamPolicy` method. resource (:class:`str`): @@ -3250,12 +3291,12 @@ async def sample_set_iam_policy(): async def test_iam_permissions( self, - request: Union[iam_policy_pb2.TestIamPermissionsRequest, dict] = None, + request: Optional[Union[iam_policy_pb2.TestIamPermissionsRequest, dict]] = None, *, - resource: str = None, - permissions: Sequence[str] = None, + resource: Optional[str] = None, + permissions: Optional[MutableSequence[str]] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> iam_policy_pb2.TestIamPermissionsResponse: r"""Returns the permissions that a caller has on the @@ -3290,7 +3331,7 @@ async def sample_test_iam_permissions(): print(response) Args: - request (Union[google.iam.v1.iam_policy_pb2.TestIamPermissionsRequest, dict]): + request (Optional[Union[google.iam.v1.iam_policy_pb2.TestIamPermissionsRequest, dict]]): The request object. Request message for `TestIamPermissions` method. resource (:class:`str`): @@ -3302,7 +3343,7 @@ async def sample_test_iam_permissions(): This corresponds to the ``resource`` field on the ``request`` instance; if ``request`` is provided, this should not be set. - permissions (:class:`Sequence[str]`): + permissions (:class:`MutableSequence[str]`): The set of permissions to check for the ``resource``. Permissions with wildcards (such as '*' or 'storage.*') are not allowed. For more information see `IAM @@ -3378,12 +3419,14 @@ async def sample_test_iam_permissions(): async def update_external_system( self, - request: Union[securitycenter_service.UpdateExternalSystemRequest, dict] = None, + request: Optional[ + Union[securitycenter_service.UpdateExternalSystemRequest, dict] + ] = None, *, - external_system: gcs_external_system.ExternalSystem = None, - update_mask: field_mask_pb2.FieldMask = None, + external_system: Optional[gcs_external_system.ExternalSystem] = None, + update_mask: Optional[field_mask_pb2.FieldMask] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> gcs_external_system.ExternalSystem: r"""Updates external system. This is for a given finding. @@ -3414,7 +3457,7 @@ async def sample_update_external_system(): print(response) Args: - request (Union[google.cloud.securitycenter_v1.types.UpdateExternalSystemRequest, dict]): + request (Optional[Union[google.cloud.securitycenter_v1.types.UpdateExternalSystemRequest, dict]]): The request object. Request message for updating a ExternalSystem resource. external_system (:class:`google.cloud.securitycenter_v1.types.ExternalSystem`): @@ -3493,11 +3536,13 @@ async def sample_update_external_system(): async def update_finding( self, - request: Union[securitycenter_service.UpdateFindingRequest, dict] = None, + request: Optional[ + Union[securitycenter_service.UpdateFindingRequest, dict] + ] = None, *, - finding: gcs_finding.Finding = None, + finding: Optional[gcs_finding.Finding] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> gcs_finding.Finding: r"""Creates or updates a finding. The corresponding @@ -3529,7 +3574,7 @@ async def sample_update_finding(): print(response) Args: - request (Union[google.cloud.securitycenter_v1.types.UpdateFindingRequest, dict]): + request (Optional[Union[google.cloud.securitycenter_v1.types.UpdateFindingRequest, dict]]): The request object. Request message for updating or creating a finding. finding (:class:`google.cloud.securitycenter_v1.types.Finding`): @@ -3609,12 +3654,14 @@ async def sample_update_finding(): async def update_mute_config( self, - request: Union[securitycenter_service.UpdateMuteConfigRequest, dict] = None, + request: Optional[ + Union[securitycenter_service.UpdateMuteConfigRequest, dict] + ] = None, *, - mute_config: gcs_mute_config.MuteConfig = None, - update_mask: field_mask_pb2.FieldMask = None, + mute_config: Optional[gcs_mute_config.MuteConfig] = None, + update_mask: Optional[field_mask_pb2.FieldMask] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> gcs_mute_config.MuteConfig: r"""Updates a mute config. @@ -3649,7 +3696,7 @@ async def sample_update_mute_config(): print(response) Args: - request (Union[google.cloud.securitycenter_v1.types.UpdateMuteConfigRequest, dict]): + request (Optional[Union[google.cloud.securitycenter_v1.types.UpdateMuteConfigRequest, dict]]): The request object. Request message for updating a mute config. mute_config (:class:`google.cloud.securitycenter_v1.types.MuteConfig`): @@ -3728,14 +3775,16 @@ async def sample_update_mute_config(): async def update_notification_config( self, - request: Union[ - securitycenter_service.UpdateNotificationConfigRequest, dict + request: Optional[ + Union[securitycenter_service.UpdateNotificationConfigRequest, dict] ] = None, *, - notification_config: gcs_notification_config.NotificationConfig = None, - update_mask: field_mask_pb2.FieldMask = None, + notification_config: Optional[ + gcs_notification_config.NotificationConfig + ] = None, + update_mask: Optional[field_mask_pb2.FieldMask] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> gcs_notification_config.NotificationConfig: r"""Updates a notification config. The following update fields are @@ -3767,7 +3816,7 @@ async def sample_update_notification_config(): print(response) Args: - request (Union[google.cloud.securitycenter_v1.types.UpdateNotificationConfigRequest, dict]): + request (Optional[Union[google.cloud.securitycenter_v1.types.UpdateNotificationConfigRequest, dict]]): The request object. Request message for updating a notification config. notification_config (:class:`google.cloud.securitycenter_v1.types.NotificationConfig`): @@ -3850,13 +3899,15 @@ async def sample_update_notification_config(): async def update_organization_settings( self, - request: Union[ - securitycenter_service.UpdateOrganizationSettingsRequest, dict + request: Optional[ + Union[securitycenter_service.UpdateOrganizationSettingsRequest, dict] ] = None, *, - organization_settings: gcs_organization_settings.OrganizationSettings = None, + organization_settings: Optional[ + gcs_organization_settings.OrganizationSettings + ] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> gcs_organization_settings.OrganizationSettings: r"""Updates an organization's settings. @@ -3887,7 +3938,7 @@ async def sample_update_organization_settings(): print(response) Args: - request (Union[google.cloud.securitycenter_v1.types.UpdateOrganizationSettingsRequest, dict]): + request (Optional[Union[google.cloud.securitycenter_v1.types.UpdateOrganizationSettingsRequest, dict]]): The request object. Request message for updating an organization's settings. organization_settings (:class:`google.cloud.securitycenter_v1.types.OrganizationSettings`): @@ -3956,11 +4007,13 @@ async def sample_update_organization_settings(): async def update_source( self, - request: Union[securitycenter_service.UpdateSourceRequest, dict] = None, + request: Optional[ + Union[securitycenter_service.UpdateSourceRequest, dict] + ] = None, *, - source: gcs_source.Source = None, + source: Optional[gcs_source.Source] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> gcs_source.Source: r"""Updates a source. @@ -3991,7 +4044,7 @@ async def sample_update_source(): print(response) Args: - request (Union[google.cloud.securitycenter_v1.types.UpdateSourceRequest, dict]): + request (Optional[Union[google.cloud.securitycenter_v1.types.UpdateSourceRequest, dict]]): The request object. Request message for updating a source. source (:class:`google.cloud.securitycenter_v1.types.Source`): @@ -4063,11 +4116,13 @@ async def sample_update_source(): async def update_security_marks( self, - request: Union[securitycenter_service.UpdateSecurityMarksRequest, dict] = None, + request: Optional[ + Union[securitycenter_service.UpdateSecurityMarksRequest, dict] + ] = None, *, - security_marks: gcs_security_marks.SecurityMarks = None, + security_marks: Optional[gcs_security_marks.SecurityMarks] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> gcs_security_marks.SecurityMarks: r"""Updates security marks. @@ -4098,7 +4153,7 @@ async def sample_update_security_marks(): print(response) Args: - request (Union[google.cloud.securitycenter_v1.types.UpdateSecurityMarksRequest, dict]): + request (Optional[Union[google.cloud.securitycenter_v1.types.UpdateSecurityMarksRequest, dict]]): The request object. Request message for updating a SecurityMarks resource. security_marks (:class:`google.cloud.securitycenter_v1.types.SecurityMarks`): @@ -4172,13 +4227,15 @@ async def sample_update_security_marks(): async def create_big_query_export( self, - request: Union[securitycenter_service.CreateBigQueryExportRequest, dict] = None, + request: Optional[ + Union[securitycenter_service.CreateBigQueryExportRequest, dict] + ] = None, *, - parent: str = None, - big_query_export: bigquery_export.BigQueryExport = None, - big_query_export_id: str = None, + parent: Optional[str] = None, + big_query_export: Optional[bigquery_export.BigQueryExport] = None, + big_query_export_id: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> bigquery_export.BigQueryExport: r"""Creates a big query export. @@ -4211,7 +4268,7 @@ async def sample_create_big_query_export(): print(response) Args: - request (Union[google.cloud.securitycenter_v1.types.CreateBigQueryExportRequest, dict]): + request (Optional[Union[google.cloud.securitycenter_v1.types.CreateBigQueryExportRequest, dict]]): The request object. Request message for creating a big query export. parent (:class:`str`): @@ -4300,11 +4357,13 @@ async def sample_create_big_query_export(): async def delete_big_query_export( self, - request: Union[securitycenter_service.DeleteBigQueryExportRequest, dict] = None, + request: Optional[ + Union[securitycenter_service.DeleteBigQueryExportRequest, dict] + ] = None, *, - name: str = None, + name: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> None: r"""Deletes an existing big query export. @@ -4333,7 +4392,7 @@ async def sample_delete_big_query_export(): await client.delete_big_query_export(request=request) Args: - request (Union[google.cloud.securitycenter_v1.types.DeleteBigQueryExportRequest, dict]): + request (Optional[Union[google.cloud.securitycenter_v1.types.DeleteBigQueryExportRequest, dict]]): The request object. Request message for deleting a big query export. name (:class:`str`): @@ -4393,12 +4452,14 @@ async def sample_delete_big_query_export(): async def update_big_query_export( self, - request: Union[securitycenter_service.UpdateBigQueryExportRequest, dict] = None, + request: Optional[ + Union[securitycenter_service.UpdateBigQueryExportRequest, dict] + ] = None, *, - big_query_export: bigquery_export.BigQueryExport = None, - update_mask: field_mask_pb2.FieldMask = None, + big_query_export: Optional[bigquery_export.BigQueryExport] = None, + update_mask: Optional[field_mask_pb2.FieldMask] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> bigquery_export.BigQueryExport: r"""Updates a BigQuery export. @@ -4429,7 +4490,7 @@ async def sample_update_big_query_export(): print(response) Args: - request (Union[google.cloud.securitycenter_v1.types.UpdateBigQueryExportRequest, dict]): + request (Optional[Union[google.cloud.securitycenter_v1.types.UpdateBigQueryExportRequest, dict]]): The request object. Request message for updating a BigQuery export. big_query_export (:class:`google.cloud.securitycenter_v1.types.BigQueryExport`): @@ -4507,11 +4568,13 @@ async def sample_update_big_query_export(): async def list_big_query_exports( self, - request: Union[securitycenter_service.ListBigQueryExportsRequest, dict] = None, + request: Optional[ + Union[securitycenter_service.ListBigQueryExportsRequest, dict] + ] = None, *, - parent: str = None, + parent: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> pagers.ListBigQueryExportsAsyncPager: r"""Lists BigQuery exports. Note that when requesting @@ -4549,10 +4612,10 @@ async def sample_list_big_query_exports(): print(response) Args: - request (Union[google.cloud.securitycenter_v1.types.ListBigQueryExportsRequest, dict]): - The request object. Request message for listing - BigQuery exports at a given scope e.g. organization, - folder or project. + request (Optional[Union[google.cloud.securitycenter_v1.types.ListBigQueryExportsRequest, dict]]): + The request object. Request message for listing BigQuery + exports at a given scope e.g. organization, folder or + project. parent (:class:`str`): Required. The parent, which owns the collection of BigQuery exports. Its format is diff --git a/google/cloud/securitycenter_v1/services/security_center/client.py b/google/cloud/securitycenter_v1/services/security_center/client.py index e07854ca..51be2298 100644 --- a/google/cloud/securitycenter_v1/services/security_center/client.py +++ b/google/cloud/securitycenter_v1/services/security_center/client.py @@ -16,7 +16,18 @@ from collections import OrderedDict import os import re -from typing import Dict, Mapping, Optional, Sequence, Tuple, Type, Union +from typing import ( + Dict, + Mapping, + MutableMapping, + MutableSequence, + Optional, + Sequence, + Tuple, + Type, + Union, + cast, +) from google.api_core import client_options as client_options_lib from google.api_core import exceptions as core_exceptions @@ -67,6 +78,7 @@ organization_settings as gcs_organization_settings, ) from google.cloud.securitycenter_v1.types import security_marks as gcs_security_marks +from google.cloud.securitycenter_v1.types import file from google.cloud.securitycenter_v1.types import finding from google.cloud.securitycenter_v1.types import finding as gcs_finding from google.cloud.securitycenter_v1.types import mute_config @@ -100,7 +112,7 @@ class SecurityCenterClientMeta(type): def get_transport_class( cls, - label: str = None, + label: Optional[str] = None, ) -> Type[SecurityCenterTransport]: """Returns an appropriate transport class. @@ -553,8 +565,8 @@ def __init__( self, *, credentials: Optional[ga_credentials.Credentials] = None, - transport: Union[str, SecurityCenterTransport, None] = None, - client_options: Optional[client_options_lib.ClientOptions] = None, + transport: Optional[Union[str, SecurityCenterTransport]] = None, + client_options: Optional[Union[client_options_lib.ClientOptions, dict]] = None, client_info: gapic_v1.client_info.ClientInfo = DEFAULT_CLIENT_INFO, ) -> None: """Instantiates the security center client. @@ -568,7 +580,7 @@ def __init__( transport (Union[str, SecurityCenterTransport]): The transport to use. If set to None, a transport is chosen automatically. - client_options (google.api_core.client_options.ClientOptions): Custom options for the + client_options (Optional[Union[google.api_core.client_options.ClientOptions, dict]]): Custom options for the client. It won't take effect if a ``transport`` instance is provided. (1) The ``api_endpoint`` property can be used to override the default endpoint provided by the client. GOOGLE_API_USE_MTLS_ENDPOINT @@ -598,6 +610,7 @@ def __init__( client_options = client_options_lib.from_dict(client_options) if client_options is None: client_options = client_options_lib.ClientOptions() + client_options = cast(client_options_lib.ClientOptions, client_options) api_endpoint, client_cert_source_func = self.get_mtls_endpoint_and_cert_source( client_options @@ -650,11 +663,13 @@ def __init__( def bulk_mute_findings( self, - request: Union[securitycenter_service.BulkMuteFindingsRequest, dict] = None, + request: Optional[ + Union[securitycenter_service.BulkMuteFindingsRequest, dict] + ] = None, *, - parent: str = None, + parent: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> operation.Operation: r"""Kicks off an LRO to bulk mute findings for a parent @@ -779,12 +794,14 @@ def sample_bulk_mute_findings(): def create_source( self, - request: Union[securitycenter_service.CreateSourceRequest, dict] = None, + request: Optional[ + Union[securitycenter_service.CreateSourceRequest, dict] + ] = None, *, - parent: str = None, - source: gcs_source.Source = None, + parent: Optional[str] = None, + source: Optional[gcs_source.Source] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> gcs_source.Source: r"""Creates a source. @@ -896,13 +913,15 @@ def sample_create_source(): def create_finding( self, - request: Union[securitycenter_service.CreateFindingRequest, dict] = None, + request: Optional[ + Union[securitycenter_service.CreateFindingRequest, dict] + ] = None, *, - parent: str = None, - finding_id: str = None, - finding: gcs_finding.Finding = None, + parent: Optional[str] = None, + finding_id: Optional[str] = None, + finding: Optional[gcs_finding.Finding] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> gcs_finding.Finding: r"""Creates a finding. The corresponding source must @@ -1032,13 +1051,15 @@ def sample_create_finding(): def create_mute_config( self, - request: Union[securitycenter_service.CreateMuteConfigRequest, dict] = None, + request: Optional[ + Union[securitycenter_service.CreateMuteConfigRequest, dict] + ] = None, *, - parent: str = None, - mute_config: gcs_mute_config.MuteConfig = None, - mute_config_id: str = None, + parent: Optional[str] = None, + mute_config: Optional[gcs_mute_config.MuteConfig] = None, + mute_config_id: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> gcs_mute_config.MuteConfig: r"""Creates a mute config. @@ -1165,15 +1186,17 @@ def sample_create_mute_config(): def create_notification_config( self, - request: Union[ - securitycenter_service.CreateNotificationConfigRequest, dict + request: Optional[ + Union[securitycenter_service.CreateNotificationConfigRequest, dict] ] = None, *, - parent: str = None, - config_id: str = None, - notification_config: gcs_notification_config.NotificationConfig = None, + parent: Optional[str] = None, + config_id: Optional[str] = None, + notification_config: Optional[ + gcs_notification_config.NotificationConfig + ] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> gcs_notification_config.NotificationConfig: r"""Creates a notification config. @@ -1305,11 +1328,13 @@ def sample_create_notification_config(): def delete_mute_config( self, - request: Union[securitycenter_service.DeleteMuteConfigRequest, dict] = None, + request: Optional[ + Union[securitycenter_service.DeleteMuteConfigRequest, dict] + ] = None, *, - name: str = None, + name: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> None: r"""Deletes an existing mute config. @@ -1397,13 +1422,13 @@ def sample_delete_mute_config(): def delete_notification_config( self, - request: Union[ - securitycenter_service.DeleteNotificationConfigRequest, dict + request: Optional[ + Union[securitycenter_service.DeleteNotificationConfigRequest, dict] ] = None, *, - name: str = None, + name: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> None: r"""Deletes a notification config. @@ -1494,11 +1519,13 @@ def sample_delete_notification_config(): def get_big_query_export( self, - request: Union[securitycenter_service.GetBigQueryExportRequest, dict] = None, + request: Optional[ + Union[securitycenter_service.GetBigQueryExportRequest, dict] + ] = None, *, - name: str = None, + name: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> bigquery_export.BigQueryExport: r"""Gets a big query export. @@ -1599,11 +1626,11 @@ def sample_get_big_query_export(): def get_iam_policy( self, - request: Union[iam_policy_pb2.GetIamPolicyRequest, dict] = None, + request: Optional[Union[iam_policy_pb2.GetIamPolicyRequest, dict]] = None, *, - resource: str = None, + resource: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> policy_pb2.Policy: r"""Gets the access control policy on the specified @@ -1763,11 +1790,13 @@ def sample_get_iam_policy(): def get_mute_config( self, - request: Union[securitycenter_service.GetMuteConfigRequest, dict] = None, + request: Optional[ + Union[securitycenter_service.GetMuteConfigRequest, dict] + ] = None, *, - name: str = None, + name: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> mute_config.MuteConfig: r"""Gets a mute config. @@ -1869,13 +1898,13 @@ def sample_get_mute_config(): def get_notification_config( self, - request: Union[ - securitycenter_service.GetNotificationConfigRequest, dict + request: Optional[ + Union[securitycenter_service.GetNotificationConfigRequest, dict] ] = None, *, - name: str = None, + name: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> notification_config.NotificationConfig: r"""Gets a notification config. @@ -1978,13 +2007,13 @@ def sample_get_notification_config(): def get_organization_settings( self, - request: Union[ - securitycenter_service.GetOrganizationSettingsRequest, dict + request: Optional[ + Union[securitycenter_service.GetOrganizationSettingsRequest, dict] ] = None, *, - name: str = None, + name: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> organization_settings.OrganizationSettings: r"""Gets the settings for an organization. @@ -2088,11 +2117,11 @@ def sample_get_organization_settings(): def get_source( self, - request: Union[securitycenter_service.GetSourceRequest, dict] = None, + request: Optional[Union[securitycenter_service.GetSourceRequest, dict]] = None, *, - name: str = None, + name: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> source.Source: r"""Gets a source. @@ -2195,10 +2224,12 @@ def sample_get_source(): def group_assets( self, - request: Union[securitycenter_service.GroupAssetsRequest, dict] = None, + request: Optional[ + Union[securitycenter_service.GroupAssetsRequest, dict] + ] = None, *, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> pagers.GroupAssetsPager: r"""Filters an organization's assets and groups them by @@ -2291,12 +2322,14 @@ def sample_group_assets(): def group_findings( self, - request: Union[securitycenter_service.GroupFindingsRequest, dict] = None, + request: Optional[ + Union[securitycenter_service.GroupFindingsRequest, dict] + ] = None, *, - parent: str = None, - group_by: str = None, + parent: Optional[str] = None, + group_by: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> pagers.GroupFindingsPager: r"""Filters an organization or source's findings and groups them by @@ -2444,10 +2477,10 @@ def sample_group_findings(): def list_assets( self, - request: Union[securitycenter_service.ListAssetsRequest, dict] = None, + request: Optional[Union[securitycenter_service.ListAssetsRequest, dict]] = None, *, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> pagers.ListAssetsPager: r"""Lists an organization's assets. @@ -2536,10 +2569,12 @@ def sample_list_assets(): def list_findings( self, - request: Union[securitycenter_service.ListFindingsRequest, dict] = None, + request: Optional[ + Union[securitycenter_service.ListFindingsRequest, dict] + ] = None, *, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> pagers.ListFindingsPager: r"""Lists an organization or source's findings. @@ -2633,11 +2668,13 @@ def sample_list_findings(): def list_mute_configs( self, - request: Union[securitycenter_service.ListMuteConfigsRequest, dict] = None, + request: Optional[ + Union[securitycenter_service.ListMuteConfigsRequest, dict] + ] = None, *, - parent: str = None, + parent: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> pagers.ListMuteConfigsPager: r"""Lists mute configs. @@ -2751,13 +2788,13 @@ def sample_list_mute_configs(): def list_notification_configs( self, - request: Union[ - securitycenter_service.ListNotificationConfigsRequest, dict + request: Optional[ + Union[securitycenter_service.ListNotificationConfigsRequest, dict] ] = None, *, - parent: str = None, + parent: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> pagers.ListNotificationConfigsPager: r"""Lists notification configs. @@ -2874,11 +2911,13 @@ def sample_list_notification_configs(): def list_sources( self, - request: Union[securitycenter_service.ListSourcesRequest, dict] = None, + request: Optional[ + Union[securitycenter_service.ListSourcesRequest, dict] + ] = None, *, - parent: str = None, + parent: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> pagers.ListSourcesPager: r"""Lists all sources belonging to an organization. @@ -2989,11 +3028,13 @@ def sample_list_sources(): def run_asset_discovery( self, - request: Union[securitycenter_service.RunAssetDiscoveryRequest, dict] = None, + request: Optional[ + Union[securitycenter_service.RunAssetDiscoveryRequest, dict] + ] = None, *, - parent: str = None, + parent: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> operation.Operation: r"""Runs asset discovery. The discovery is tracked with a @@ -3112,13 +3153,15 @@ def sample_run_asset_discovery(): def set_finding_state( self, - request: Union[securitycenter_service.SetFindingStateRequest, dict] = None, + request: Optional[ + Union[securitycenter_service.SetFindingStateRequest, dict] + ] = None, *, - name: str = None, - state: finding.Finding.State = None, - start_time: timestamp_pb2.Timestamp = None, + name: Optional[str] = None, + state: Optional[finding.Finding.State] = None, + start_time: Optional[timestamp_pb2.Timestamp] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> finding.Finding: r"""Updates the state of a finding. @@ -3159,7 +3202,7 @@ def sample_set_finding_state(): See: https://cloud.google.com/apis/design/resource_names#relative_resource_name Example: - "organizations/{organization_id}/sources/{source_id}/finding/{finding_id}". + "organizations/{organization_id}/sources/{source_id}/findings/{finding_id}". This corresponds to the ``name`` field on the ``request`` instance; if ``request`` is provided, this @@ -3245,12 +3288,12 @@ def sample_set_finding_state(): def set_mute( self, - request: Union[securitycenter_service.SetMuteRequest, dict] = None, + request: Optional[Union[securitycenter_service.SetMuteRequest, dict]] = None, *, - name: str = None, - mute: finding.Finding.Mute = None, + name: Optional[str] = None, + mute: Optional[finding.Finding.Mute] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> finding.Finding: r"""Updates the mute state of a finding. @@ -3291,9 +3334,9 @@ def sample_set_mute(): See: https://cloud.google.com/apis/design/resource_names#relative_resource_name Example: - "organizations/{organization_id}/sources/{source_id}/finding/{finding_id}", - "folders/{folder_id}/sources/{source_id}/finding/{finding_id}", - "projects/{project_id}/sources/{source_id}/finding/{finding_id}". + "organizations/{organization_id}/sources/{source_id}/findings/{finding_id}", + "folders/{folder_id}/sources/{source_id}/findings/{finding_id}", + "projects/{project_id}/sources/{source_id}/findings/{finding_id}". This corresponds to the ``name`` field on the ``request`` instance; if ``request`` is provided, this @@ -3370,11 +3413,11 @@ def sample_set_mute(): def set_iam_policy( self, - request: Union[iam_policy_pb2.SetIamPolicyRequest, dict] = None, + request: Optional[Union[iam_policy_pb2.SetIamPolicyRequest, dict]] = None, *, - resource: str = None, + resource: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> policy_pb2.Policy: r"""Sets the access control policy on the specified @@ -3534,12 +3577,12 @@ def sample_set_iam_policy(): def test_iam_permissions( self, - request: Union[iam_policy_pb2.TestIamPermissionsRequest, dict] = None, + request: Optional[Union[iam_policy_pb2.TestIamPermissionsRequest, dict]] = None, *, - resource: str = None, - permissions: Sequence[str] = None, + resource: Optional[str] = None, + permissions: Optional[MutableSequence[str]] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> iam_policy_pb2.TestIamPermissionsResponse: r"""Returns the permissions that a caller has on the @@ -3586,7 +3629,7 @@ def sample_test_iam_permissions(): This corresponds to the ``resource`` field on the ``request`` instance; if ``request`` is provided, this should not be set. - permissions (Sequence[str]): + permissions (MutableSequence[str]): The set of permissions to check for the ``resource``. Permissions with wildcards (such as '*' or 'storage.*') are not allowed. For more information see `IAM @@ -3650,12 +3693,14 @@ def sample_test_iam_permissions(): def update_external_system( self, - request: Union[securitycenter_service.UpdateExternalSystemRequest, dict] = None, + request: Optional[ + Union[securitycenter_service.UpdateExternalSystemRequest, dict] + ] = None, *, - external_system: gcs_external_system.ExternalSystem = None, - update_mask: field_mask_pb2.FieldMask = None, + external_system: Optional[gcs_external_system.ExternalSystem] = None, + update_mask: Optional[field_mask_pb2.FieldMask] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> gcs_external_system.ExternalSystem: r"""Updates external system. This is for a given finding. @@ -3765,11 +3810,13 @@ def sample_update_external_system(): def update_finding( self, - request: Union[securitycenter_service.UpdateFindingRequest, dict] = None, + request: Optional[ + Union[securitycenter_service.UpdateFindingRequest, dict] + ] = None, *, - finding: gcs_finding.Finding = None, + finding: Optional[gcs_finding.Finding] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> gcs_finding.Finding: r"""Creates or updates a finding. The corresponding @@ -3881,12 +3928,14 @@ def sample_update_finding(): def update_mute_config( self, - request: Union[securitycenter_service.UpdateMuteConfigRequest, dict] = None, + request: Optional[ + Union[securitycenter_service.UpdateMuteConfigRequest, dict] + ] = None, *, - mute_config: gcs_mute_config.MuteConfig = None, - update_mask: field_mask_pb2.FieldMask = None, + mute_config: Optional[gcs_mute_config.MuteConfig] = None, + update_mask: Optional[field_mask_pb2.FieldMask] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> gcs_mute_config.MuteConfig: r"""Updates a mute config. @@ -4000,14 +4049,16 @@ def sample_update_mute_config(): def update_notification_config( self, - request: Union[ - securitycenter_service.UpdateNotificationConfigRequest, dict + request: Optional[ + Union[securitycenter_service.UpdateNotificationConfigRequest, dict] ] = None, *, - notification_config: gcs_notification_config.NotificationConfig = None, - update_mask: field_mask_pb2.FieldMask = None, + notification_config: Optional[ + gcs_notification_config.NotificationConfig + ] = None, + update_mask: Optional[field_mask_pb2.FieldMask] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> gcs_notification_config.NotificationConfig: r"""Updates a notification config. The following update fields are @@ -4126,13 +4177,15 @@ def sample_update_notification_config(): def update_organization_settings( self, - request: Union[ - securitycenter_service.UpdateOrganizationSettingsRequest, dict + request: Optional[ + Union[securitycenter_service.UpdateOrganizationSettingsRequest, dict] ] = None, *, - organization_settings: gcs_organization_settings.OrganizationSettings = None, + organization_settings: Optional[ + gcs_organization_settings.OrganizationSettings + ] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> gcs_organization_settings.OrganizationSettings: r"""Updates an organization's settings. @@ -4236,11 +4289,13 @@ def sample_update_organization_settings(): def update_source( self, - request: Union[securitycenter_service.UpdateSourceRequest, dict] = None, + request: Optional[ + Union[securitycenter_service.UpdateSourceRequest, dict] + ] = None, *, - source: gcs_source.Source = None, + source: Optional[gcs_source.Source] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> gcs_source.Source: r"""Updates a source. @@ -4343,11 +4398,13 @@ def sample_update_source(): def update_security_marks( self, - request: Union[securitycenter_service.UpdateSecurityMarksRequest, dict] = None, + request: Optional[ + Union[securitycenter_service.UpdateSecurityMarksRequest, dict] + ] = None, *, - security_marks: gcs_security_marks.SecurityMarks = None, + security_marks: Optional[gcs_security_marks.SecurityMarks] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> gcs_security_marks.SecurityMarks: r"""Updates security marks. @@ -4452,13 +4509,15 @@ def sample_update_security_marks(): def create_big_query_export( self, - request: Union[securitycenter_service.CreateBigQueryExportRequest, dict] = None, + request: Optional[ + Union[securitycenter_service.CreateBigQueryExportRequest, dict] + ] = None, *, - parent: str = None, - big_query_export: bigquery_export.BigQueryExport = None, - big_query_export_id: str = None, + parent: Optional[str] = None, + big_query_export: Optional[bigquery_export.BigQueryExport] = None, + big_query_export_id: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> bigquery_export.BigQueryExport: r"""Creates a big query export. @@ -4580,11 +4639,13 @@ def sample_create_big_query_export(): def delete_big_query_export( self, - request: Union[securitycenter_service.DeleteBigQueryExportRequest, dict] = None, + request: Optional[ + Union[securitycenter_service.DeleteBigQueryExportRequest, dict] + ] = None, *, - name: str = None, + name: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> None: r"""Deletes an existing big query export. @@ -4673,12 +4734,14 @@ def sample_delete_big_query_export(): def update_big_query_export( self, - request: Union[securitycenter_service.UpdateBigQueryExportRequest, dict] = None, + request: Optional[ + Union[securitycenter_service.UpdateBigQueryExportRequest, dict] + ] = None, *, - big_query_export: bigquery_export.BigQueryExport = None, - update_mask: field_mask_pb2.FieldMask = None, + big_query_export: Optional[bigquery_export.BigQueryExport] = None, + update_mask: Optional[field_mask_pb2.FieldMask] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> bigquery_export.BigQueryExport: r"""Updates a BigQuery export. @@ -4787,11 +4850,13 @@ def sample_update_big_query_export(): def list_big_query_exports( self, - request: Union[securitycenter_service.ListBigQueryExportsRequest, dict] = None, + request: Optional[ + Union[securitycenter_service.ListBigQueryExportsRequest, dict] + ] = None, *, - parent: str = None, + parent: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> pagers.ListBigQueryExportsPager: r"""Lists BigQuery exports. Note that when requesting @@ -4830,9 +4895,9 @@ def sample_list_big_query_exports(): Args: request (Union[google.cloud.securitycenter_v1.types.ListBigQueryExportsRequest, dict]): - The request object. Request message for listing - BigQuery exports at a given scope e.g. organization, - folder or project. + The request object. Request message for listing BigQuery + exports at a given scope e.g. organization, folder or + project. parent (str): Required. The parent, which owns the collection of BigQuery exports. Its format is diff --git a/google/cloud/securitycenter_v1/services/security_center/transports/base.py b/google/cloud/securitycenter_v1/services/security_center/transports/base.py index abd748d0..4c14a504 100644 --- a/google/cloud/securitycenter_v1/services/security_center/transports/base.py +++ b/google/cloud/securitycenter_v1/services/security_center/transports/base.py @@ -69,7 +69,7 @@ def __init__( self, *, host: str = DEFAULT_HOST, - credentials: ga_credentials.Credentials = None, + credentials: Optional[ga_credentials.Credentials] = None, credentials_file: Optional[str] = None, scopes: Optional[Sequence[str]] = None, quota_project_id: Optional[str] = None, diff --git a/google/cloud/securitycenter_v1/services/security_center/transports/grpc.py b/google/cloud/securitycenter_v1/services/security_center/transports/grpc.py index 7926759d..5b8ef58a 100644 --- a/google/cloud/securitycenter_v1/services/security_center/transports/grpc.py +++ b/google/cloud/securitycenter_v1/services/security_center/transports/grpc.py @@ -67,14 +67,14 @@ def __init__( self, *, host: str = "securitycenter.googleapis.com", - credentials: ga_credentials.Credentials = None, - credentials_file: str = None, - scopes: Sequence[str] = None, - channel: grpc.Channel = None, - api_mtls_endpoint: str = None, - client_cert_source: Callable[[], Tuple[bytes, bytes]] = None, - ssl_channel_credentials: grpc.ChannelCredentials = None, - client_cert_source_for_mtls: Callable[[], Tuple[bytes, bytes]] = None, + credentials: Optional[ga_credentials.Credentials] = None, + credentials_file: Optional[str] = None, + scopes: Optional[Sequence[str]] = None, + channel: Optional[grpc.Channel] = None, + api_mtls_endpoint: Optional[str] = None, + client_cert_source: Optional[Callable[[], Tuple[bytes, bytes]]] = None, + ssl_channel_credentials: Optional[grpc.ChannelCredentials] = None, + client_cert_source_for_mtls: Optional[Callable[[], Tuple[bytes, bytes]]] = None, quota_project_id: Optional[str] = None, client_info: gapic_v1.client_info.ClientInfo = DEFAULT_CLIENT_INFO, always_use_jwt_access: Optional[bool] = False, @@ -202,8 +202,8 @@ def __init__( def create_channel( cls, host: str = "securitycenter.googleapis.com", - credentials: ga_credentials.Credentials = None, - credentials_file: str = None, + credentials: Optional[ga_credentials.Credentials] = None, + credentials_file: Optional[str] = None, scopes: Optional[Sequence[str]] = None, quota_project_id: Optional[str] = None, **kwargs, diff --git a/google/cloud/securitycenter_v1/services/security_center/transports/grpc_asyncio.py b/google/cloud/securitycenter_v1/services/security_center/transports/grpc_asyncio.py index 6cb585c4..b5b8f2d4 100644 --- a/google/cloud/securitycenter_v1/services/security_center/transports/grpc_asyncio.py +++ b/google/cloud/securitycenter_v1/services/security_center/transports/grpc_asyncio.py @@ -69,7 +69,7 @@ class SecurityCenterGrpcAsyncIOTransport(SecurityCenterTransport): def create_channel( cls, host: str = "securitycenter.googleapis.com", - credentials: ga_credentials.Credentials = None, + credentials: Optional[ga_credentials.Credentials] = None, credentials_file: Optional[str] = None, scopes: Optional[Sequence[str]] = None, quota_project_id: Optional[str] = None, @@ -112,15 +112,15 @@ def __init__( self, *, host: str = "securitycenter.googleapis.com", - credentials: ga_credentials.Credentials = None, + credentials: Optional[ga_credentials.Credentials] = None, credentials_file: Optional[str] = None, scopes: Optional[Sequence[str]] = None, - channel: aio.Channel = None, - api_mtls_endpoint: str = None, - client_cert_source: Callable[[], Tuple[bytes, bytes]] = None, - ssl_channel_credentials: grpc.ChannelCredentials = None, - client_cert_source_for_mtls: Callable[[], Tuple[bytes, bytes]] = None, - quota_project_id=None, + channel: Optional[aio.Channel] = None, + api_mtls_endpoint: Optional[str] = None, + client_cert_source: Optional[Callable[[], Tuple[bytes, bytes]]] = None, + ssl_channel_credentials: Optional[grpc.ChannelCredentials] = None, + client_cert_source_for_mtls: Optional[Callable[[], Tuple[bytes, bytes]]] = None, + quota_project_id: Optional[str] = None, client_info: gapic_v1.client_info.ClientInfo = DEFAULT_CLIENT_INFO, always_use_jwt_access: Optional[bool] = False, api_audience: Optional[str] = None, diff --git a/google/cloud/securitycenter_v1/types/access.py b/google/cloud/securitycenter_v1/types/access.py index b97f08a2..a7764160 100644 --- a/google/cloud/securitycenter_v1/types/access.py +++ b/google/cloud/securitycenter_v1/types/access.py @@ -13,6 +13,8 @@ # See the License for the specific language governing permissions and # limitations under the License. # +from typing import MutableMapping, MutableSequence + import proto # type: ignore __protobuf__ = proto.module( @@ -73,7 +75,7 @@ class Access(proto.Message): name. For example: "//iam.googleapis.com/projects/{PROJECT_ID}/serviceAccounts/{ACCOUNT}/keys/{key}". - service_account_delegation_info (Sequence[google.cloud.securitycenter_v1.types.ServiceAccountDelegationInfo]): + service_account_delegation_info (MutableSequence[google.cloud.securitycenter_v1.types.ServiceAccountDelegationInfo]): Identity delegation history of an authenticated service account that makes the request. It contains information on the real @@ -84,40 +86,42 @@ class Access(proto.Message): identity delegation events. """ - principal_email = proto.Field( + principal_email: str = proto.Field( proto.STRING, number=1, ) - caller_ip = proto.Field( + caller_ip: str = proto.Field( proto.STRING, number=2, ) - caller_ip_geo = proto.Field( + caller_ip_geo: "Geolocation" = proto.Field( proto.MESSAGE, number=3, message="Geolocation", ) - user_agent_family = proto.Field( + user_agent_family: str = proto.Field( proto.STRING, number=4, ) - service_name = proto.Field( + service_name: str = proto.Field( proto.STRING, number=5, ) - method_name = proto.Field( + method_name: str = proto.Field( proto.STRING, number=6, ) - principal_subject = proto.Field( + principal_subject: str = proto.Field( proto.STRING, number=7, ) - service_account_key_name = proto.Field( + service_account_key_name: str = proto.Field( proto.STRING, number=8, ) - service_account_delegation_info = proto.RepeatedField( + service_account_delegation_info: MutableSequence[ + "ServiceAccountDelegationInfo" + ] = proto.RepeatedField( proto.MESSAGE, number=9, message="ServiceAccountDelegationInfo", @@ -143,11 +147,11 @@ class ServiceAccountDelegationInfo(proto.Message): ``serviceAccount:{identity pool name}[{subject}]`` """ - principal_email = proto.Field( + principal_email: str = proto.Field( proto.STRING, number=1, ) - principal_subject = proto.Field( + principal_subject: str = proto.Field( proto.STRING, number=2, ) @@ -161,7 +165,7 @@ class Geolocation(proto.Message): A CLDR. """ - region_code = proto.Field( + region_code: str = proto.Field( proto.STRING, number=1, ) diff --git a/google/cloud/securitycenter_v1/types/asset.py b/google/cloud/securitycenter_v1/types/asset.py index 488e2fde..32b73399 100644 --- a/google/cloud/securitycenter_v1/types/asset.py +++ b/google/cloud/securitycenter_v1/types/asset.py @@ -13,6 +13,8 @@ # See the License for the specific language governing permissions and # limitations under the License. # +from typing import MutableMapping, MutableSequence + from google.protobuf import struct_pb2 # type: ignore from google.protobuf import timestamp_pb2 # type: ignore import proto # type: ignore @@ -48,7 +50,7 @@ class Asset(proto.Message): Security Command Center managed properties. These properties are managed by Security Command Center and cannot be modified by the user. - resource_properties (Mapping[str, google.protobuf.struct_pb2.Value]): + resource_properties (MutableMapping[str, google.protobuf.struct_pb2.Value]): Resource managed properties. These properties are managed and defined by the Google Cloud resource and cannot be modified by the user. @@ -103,7 +105,7 @@ class SecurityCenterProperties(proto.Message): The full resource name of the project the resource belongs to. See: https://cloud.google.com/apis/design/resource_names#full_resource_name - resource_owners (Sequence[str]): + resource_owners (MutableSequence[str]): Owners of the Google Cloud resource. resource_display_name (str): The user defined display name for this @@ -114,46 +116,46 @@ class SecurityCenterProperties(proto.Message): resource_project_display_name (str): The user defined display name for the project of this resource. - folders (Sequence[google.cloud.securitycenter_v1.types.Folder]): + folders (MutableSequence[google.cloud.securitycenter_v1.types.Folder]): Contains a Folder message for each folder in the assets ancestry. The first folder is the deepest nested folder, and the last folder is the folder directly under the Organization. """ - resource_name = proto.Field( + resource_name: str = proto.Field( proto.STRING, number=1, ) - resource_type = proto.Field( + resource_type: str = proto.Field( proto.STRING, number=2, ) - resource_parent = proto.Field( + resource_parent: str = proto.Field( proto.STRING, number=3, ) - resource_project = proto.Field( + resource_project: str = proto.Field( proto.STRING, number=4, ) - resource_owners = proto.RepeatedField( + resource_owners: MutableSequence[str] = proto.RepeatedField( proto.STRING, number=5, ) - resource_display_name = proto.Field( + resource_display_name: str = proto.Field( proto.STRING, number=6, ) - resource_parent_display_name = proto.Field( + resource_parent_display_name: str = proto.Field( proto.STRING, number=7, ) - resource_project_display_name = proto.Field( + resource_project_display_name: str = proto.Field( proto.STRING, number=8, ) - folders = proto.RepeatedField( + folders: MutableSequence[folder.Folder] = proto.RepeatedField( proto.MESSAGE, number=10, message=folder.Folder, @@ -173,47 +175,47 @@ class IamPolicy(proto.Message): for format details. """ - policy_blob = proto.Field( + policy_blob: str = proto.Field( proto.STRING, number=1, ) - name = proto.Field( + name: str = proto.Field( proto.STRING, number=1, ) - security_center_properties = proto.Field( + security_center_properties: SecurityCenterProperties = proto.Field( proto.MESSAGE, number=2, message=SecurityCenterProperties, ) - resource_properties = proto.MapField( + resource_properties: MutableMapping[str, struct_pb2.Value] = proto.MapField( proto.STRING, proto.MESSAGE, number=7, message=struct_pb2.Value, ) - security_marks = proto.Field( + security_marks: gcs_security_marks.SecurityMarks = proto.Field( proto.MESSAGE, number=8, message=gcs_security_marks.SecurityMarks, ) - create_time = proto.Field( + create_time: timestamp_pb2.Timestamp = proto.Field( proto.MESSAGE, number=9, message=timestamp_pb2.Timestamp, ) - update_time = proto.Field( + update_time: timestamp_pb2.Timestamp = proto.Field( proto.MESSAGE, number=10, message=timestamp_pb2.Timestamp, ) - iam_policy = proto.Field( + iam_policy: IamPolicy = proto.Field( proto.MESSAGE, number=11, message=IamPolicy, ) - canonical_name = proto.Field( + canonical_name: str = proto.Field( proto.STRING, number=13, ) diff --git a/google/cloud/securitycenter_v1/types/bigquery_export.py b/google/cloud/securitycenter_v1/types/bigquery_export.py index 61054f89..50408626 100644 --- a/google/cloud/securitycenter_v1/types/bigquery_export.py +++ b/google/cloud/securitycenter_v1/types/bigquery_export.py @@ -13,6 +13,8 @@ # See the License for the specific language governing permissions and # limitations under the License. # +from typing import MutableMapping, MutableSequence + from google.protobuf import timestamp_pb2 # type: ignore import proto # type: ignore @@ -90,37 +92,37 @@ class BigQueryExport(proto.Message): big query dataset. """ - name = proto.Field( + name: str = proto.Field( proto.STRING, number=1, ) - description = proto.Field( + description: str = proto.Field( proto.STRING, number=2, ) - filter = proto.Field( + filter: str = proto.Field( proto.STRING, number=3, ) - dataset = proto.Field( + dataset: str = proto.Field( proto.STRING, number=4, ) - create_time = proto.Field( + create_time: timestamp_pb2.Timestamp = proto.Field( proto.MESSAGE, number=5, message=timestamp_pb2.Timestamp, ) - update_time = proto.Field( + update_time: timestamp_pb2.Timestamp = proto.Field( proto.MESSAGE, number=6, message=timestamp_pb2.Timestamp, ) - most_recent_editor = proto.Field( + most_recent_editor: str = proto.Field( proto.STRING, number=7, ) - principal = proto.Field( + principal: str = proto.Field( proto.STRING, number=8, ) diff --git a/google/cloud/securitycenter_v1/types/compliance.py b/google/cloud/securitycenter_v1/types/compliance.py index b096b6fa..57f30a71 100644 --- a/google/cloud/securitycenter_v1/types/compliance.py +++ b/google/cloud/securitycenter_v1/types/compliance.py @@ -13,6 +13,8 @@ # See the License for the specific language governing permissions and # limitations under the License. # +from typing import MutableMapping, MutableSequence + import proto # type: ignore __protobuf__ = proto.module( @@ -33,20 +35,20 @@ class Compliance(proto.Message): benchmarks e.g. "cis", "pci", "owasp", etc. version (str): Version of the standard/benchmark e.g. 1.1 - ids (Sequence[str]): + ids (MutableSequence[str]): Policies within the standard/benchmark e.g. A.12.4.1 """ - standard = proto.Field( + standard: str = proto.Field( proto.STRING, number=1, ) - version = proto.Field( + version: str = proto.Field( proto.STRING, number=2, ) - ids = proto.RepeatedField( + ids: MutableSequence[str] = proto.RepeatedField( proto.STRING, number=3, ) diff --git a/google/cloud/securitycenter_v1/types/connection.py b/google/cloud/securitycenter_v1/types/connection.py index 0e7288c8..bbcd0fbd 100644 --- a/google/cloud/securitycenter_v1/types/connection.py +++ b/google/cloud/securitycenter_v1/types/connection.py @@ -13,6 +13,8 @@ # See the License for the specific language governing permissions and # limitations under the License. # +from typing import MutableMapping, MutableSequence + import proto # type: ignore __protobuf__ = proto.module( @@ -52,23 +54,23 @@ class Protocol(proto.Enum): GRE = 47 ESP = 50 - destination_ip = proto.Field( + destination_ip: str = proto.Field( proto.STRING, number=1, ) - destination_port = proto.Field( + destination_port: int = proto.Field( proto.INT32, number=2, ) - source_ip = proto.Field( + source_ip: str = proto.Field( proto.STRING, number=3, ) - source_port = proto.Field( + source_port: int = proto.Field( proto.INT32, number=4, ) - protocol = proto.Field( + protocol: Protocol = proto.Field( proto.ENUM, number=5, enum=Protocol, diff --git a/google/cloud/securitycenter_v1/types/contact_details.py b/google/cloud/securitycenter_v1/types/contact_details.py index d74a54e6..5d00cffd 100644 --- a/google/cloud/securitycenter_v1/types/contact_details.py +++ b/google/cloud/securitycenter_v1/types/contact_details.py @@ -13,6 +13,8 @@ # See the License for the specific language governing permissions and # limitations under the License. # +from typing import MutableMapping, MutableSequence + import proto # type: ignore __protobuf__ = proto.module( @@ -28,11 +30,11 @@ class ContactDetails(proto.Message): r"""The details pertaining to specific contacts Attributes: - contacts (Sequence[google.cloud.securitycenter_v1.types.Contact]): + contacts (MutableSequence[google.cloud.securitycenter_v1.types.Contact]): A list of contacts """ - contacts = proto.RepeatedField( + contacts: MutableSequence["Contact"] = proto.RepeatedField( proto.MESSAGE, number=1, message="Contact", @@ -47,7 +49,7 @@ class Contact(proto.Message): An email address e.g. "person123@company.com". """ - email = proto.Field( + email: str = proto.Field( proto.STRING, number=1, ) diff --git a/google/cloud/securitycenter_v1/types/container.py b/google/cloud/securitycenter_v1/types/container.py index d0fee0ce..bc5d1ad2 100644 --- a/google/cloud/securitycenter_v1/types/container.py +++ b/google/cloud/securitycenter_v1/types/container.py @@ -13,6 +13,8 @@ # See the License for the specific language governing permissions and # limitations under the License. # +from typing import MutableMapping, MutableSequence + import proto # type: ignore from google.cloud.securitycenter_v1.types import label @@ -40,24 +42,24 @@ class Container(proto.Message): the container runtime. Uniquely identifies the container image launched using a container image digest. - labels (Sequence[google.cloud.securitycenter_v1.types.Label]): + labels (MutableSequence[google.cloud.securitycenter_v1.types.Label]): Container labels, as provided by the container runtime. """ - name = proto.Field( + name: str = proto.Field( proto.STRING, number=1, ) - uri = proto.Field( + uri: str = proto.Field( proto.STRING, number=2, ) - image_id = proto.Field( + image_id: str = proto.Field( proto.STRING, number=3, ) - labels = proto.RepeatedField( + labels: MutableSequence[label.Label] = proto.RepeatedField( proto.MESSAGE, number=4, message=label.Label, diff --git a/google/cloud/securitycenter_v1/types/database.py b/google/cloud/securitycenter_v1/types/database.py index dd1b825a..687f69a9 100644 --- a/google/cloud/securitycenter_v1/types/database.py +++ b/google/cloud/securitycenter_v1/types/database.py @@ -13,6 +13,8 @@ # See the License for the specific language governing permissions and # limitations under the License. # +from typing import MutableMapping, MutableSequence + import proto # type: ignore __protobuf__ = proto.module( @@ -48,28 +50,28 @@ class Database(proto.Message): query (str): The SQL statement associated with the relevant access. - grantees (Sequence[str]): + grantees (MutableSequence[str]): The target usernames/roles/groups of a SQL privilege grant (not an IAM policy change). """ - name = proto.Field( + name: str = proto.Field( proto.STRING, number=1, ) - display_name = proto.Field( + display_name: str = proto.Field( proto.STRING, number=2, ) - user_name = proto.Field( + user_name: str = proto.Field( proto.STRING, number=3, ) - query = proto.Field( + query: str = proto.Field( proto.STRING, number=4, ) - grantees = proto.RepeatedField( + grantees: MutableSequence[str] = proto.RepeatedField( proto.STRING, number=5, ) diff --git a/google/cloud/securitycenter_v1/types/exfiltration.py b/google/cloud/securitycenter_v1/types/exfiltration.py index f7c4e71d..d98d5ef8 100644 --- a/google/cloud/securitycenter_v1/types/exfiltration.py +++ b/google/cloud/securitycenter_v1/types/exfiltration.py @@ -13,6 +13,8 @@ # See the License for the specific language governing permissions and # limitations under the License. # +from typing import MutableMapping, MutableSequence + import proto # type: ignore __protobuf__ = proto.module( @@ -31,23 +33,23 @@ class Exfiltration(proto.Message): destination the data was copied to. Attributes: - sources (Sequence[google.cloud.securitycenter_v1.types.ExfilResource]): + sources (MutableSequence[google.cloud.securitycenter_v1.types.ExfilResource]): If there are multiple sources, then the data is considered "joined" between them. For instance, BigQuery can join multiple tables, and each table would be considered a source. - targets (Sequence[google.cloud.securitycenter_v1.types.ExfilResource]): + targets (MutableSequence[google.cloud.securitycenter_v1.types.ExfilResource]): If there are multiple targets, each target would get a complete copy of the "joined" source data. """ - sources = proto.RepeatedField( + sources: MutableSequence["ExfilResource"] = proto.RepeatedField( proto.MESSAGE, number=1, message="ExfilResource", ) - targets = proto.RepeatedField( + targets: MutableSequence["ExfilResource"] = proto.RepeatedField( proto.MESSAGE, number=2, message="ExfilResource", @@ -61,7 +63,7 @@ class ExfilResource(proto.Message): name (str): Resource's URI (https://google.aip.dev/122#full-resource-names) - components (Sequence[str]): + components (MutableSequence[str]): Subcomponents of the asset that is exfiltrated - these could be URIs used during exfiltration, table names, databases, filenames, @@ -71,11 +73,11 @@ class ExfilResource(proto.Message): bucket. """ - name = proto.Field( + name: str = proto.Field( proto.STRING, number=1, ) - components = proto.RepeatedField( + components: MutableSequence[str] = proto.RepeatedField( proto.STRING, number=2, ) diff --git a/google/cloud/securitycenter_v1/types/external_system.py b/google/cloud/securitycenter_v1/types/external_system.py index e1df21b2..bc4ab5b4 100644 --- a/google/cloud/securitycenter_v1/types/external_system.py +++ b/google/cloud/securitycenter_v1/types/external_system.py @@ -13,6 +13,8 @@ # See the License for the specific language governing permissions and # limitations under the License. # +from typing import MutableMapping, MutableSequence + from google.protobuf import timestamp_pb2 # type: ignore import proto # type: ignore @@ -33,7 +35,7 @@ class ExternalSystem(proto.Message): ``organizations/1234/sources/5678/findings/123456/externalSystems/jira`` ``folders/1234/sources/5678/findings/123456/externalSystems/jira`` ``projects/1234/sources/5678/findings/123456/externalSystems/jira`` - assignees (Sequence[str]): + assignees (MutableSequence[str]): References primary/secondary etc assignees in the external system. external_uid (str): @@ -48,23 +50,23 @@ class ExternalSystem(proto.Message): external system. """ - name = proto.Field( + name: str = proto.Field( proto.STRING, number=1, ) - assignees = proto.RepeatedField( + assignees: MutableSequence[str] = proto.RepeatedField( proto.STRING, number=2, ) - external_uid = proto.Field( + external_uid: str = proto.Field( proto.STRING, number=3, ) - status = proto.Field( + status: str = proto.Field( proto.STRING, number=4, ) - external_system_update_time = proto.Field( + external_system_update_time: timestamp_pb2.Timestamp = proto.Field( proto.MESSAGE, number=5, message=timestamp_pb2.Timestamp, diff --git a/google/cloud/securitycenter_v1/types/file.py b/google/cloud/securitycenter_v1/types/file.py index 64d65725..41baadf2 100644 --- a/google/cloud/securitycenter_v1/types/file.py +++ b/google/cloud/securitycenter_v1/types/file.py @@ -13,6 +13,8 @@ # See the License for the specific language governing permissions and # limitations under the License. # +from typing import MutableMapping, MutableSequence + import proto # type: ignore __protobuf__ = proto.module( @@ -50,27 +52,27 @@ class File(proto.Message): Script Executed findings.) """ - path = proto.Field( + path: str = proto.Field( proto.STRING, number=1, ) - size = proto.Field( + size: int = proto.Field( proto.INT64, number=2, ) - sha256 = proto.Field( + sha256: str = proto.Field( proto.STRING, number=3, ) - hashed_size = proto.Field( + hashed_size: int = proto.Field( proto.INT64, number=4, ) - partially_hashed = proto.Field( + partially_hashed: bool = proto.Field( proto.BOOL, number=5, ) - contents = proto.Field( + contents: str = proto.Field( proto.STRING, number=6, ) diff --git a/google/cloud/securitycenter_v1/types/finding.py b/google/cloud/securitycenter_v1/types/finding.py index d28e7425..36de4fb3 100644 --- a/google/cloud/securitycenter_v1/types/finding.py +++ b/google/cloud/securitycenter_v1/types/finding.py @@ -13,6 +13,8 @@ # See the License for the specific language governing permissions and # limitations under the License. # +from typing import MutableMapping, MutableSequence + from google.protobuf import struct_pb2 # type: ignore from google.protobuf import timestamp_pb2 # type: ignore import proto # type: ignore @@ -23,13 +25,13 @@ contact_details, container, ) +from google.cloud.securitycenter_v1.types import external_system, file, iam_binding from google.cloud.securitycenter_v1.types import exfiltration as gcs_exfiltration from google.cloud.securitycenter_v1.types import mitre_attack as gcs_mitre_attack from google.cloud.securitycenter_v1.types import security_marks as gcs_security_marks from google.cloud.securitycenter_v1.types import vulnerability as gcs_vulnerability from google.cloud.securitycenter_v1.types import access as gcs_access from google.cloud.securitycenter_v1.types import database as gcs_database -from google.cloud.securitycenter_v1.types import external_system, iam_binding from google.cloud.securitycenter_v1.types import indicator as gcs_indicator from google.cloud.securitycenter_v1.types import kubernetes as gcs_kubernetes from google.cloud.securitycenter_v1.types import process @@ -81,7 +83,7 @@ class Finding(proto.Message): additional information about the finding can be found. This field is guaranteed to be either empty or a well formed URL. - source_properties (Mapping[str, google.protobuf.struct_pb2.Value]): + source_properties (MutableMapping[str, google.protobuf.struct_pb2.Value]): Source specific properties. These properties are managed by the source that writes the finding. The key names in the source_properties map must be between 1 and 255 characters, @@ -138,7 +140,7 @@ class Finding(proto.Message): mute_update_time (google.protobuf.timestamp_pb2.Timestamp): Output only. The most recent time this finding was muted or unmuted. - external_systems (Mapping[str, google.cloud.securitycenter_v1.types.ExternalSystem]): + external_systems (MutableMapping[str, google.cloud.securitycenter_v1.types.ExternalSystem]): Output only. Third party SIEM/SOAR fields within SCC, contains external system information and external system finding fields. @@ -149,7 +151,7 @@ class Finding(proto.Message): Access details associated to the Finding, such as more information on the caller, which method was accessed, from where, etc. - connections (Sequence[google.cloud.securitycenter_v1.types.Connection]): + connections (MutableSequence[google.cloud.securitycenter_v1.types.Connection]): Contains information about the IP connection associated with the finding. mute_initiator (str): @@ -158,10 +160,10 @@ class Finding(proto.Message): muted the finding, user who muted the finding, etc. Unlike other attributes of a finding, a finding provider shouldn't set the value of mute. - processes (Sequence[google.cloud.securitycenter_v1.types.Process]): + processes (MutableSequence[google.cloud.securitycenter_v1.types.Process]): Represents operating system processes associated with the Finding. - contacts (Mapping[str, google.cloud.securitycenter_v1.types.ContactDetails]): + contacts (MutableMapping[str, google.cloud.securitycenter_v1.types.ContactDetails]): Output only. Map containing the points of contact for the given finding. The key represents the type of contact, while the value contains a list of all the contacts that pertain. @@ -182,7 +184,7 @@ class Finding(proto.Message): ] } } - compliances (Sequence[google.cloud.securitycenter_v1.types.Compliance]): + compliances (MutableSequence[google.cloud.securitycenter_v1.types.Compliance]): Contains compliance information for security standards associated to the finding. parent_display_name (str): @@ -194,12 +196,12 @@ class Finding(proto.Message): exfiltration (google.cloud.securitycenter_v1.types.Exfiltration): Represents exfiltration associated with the Finding. - iam_bindings (Sequence[google.cloud.securitycenter_v1.types.IamBinding]): + iam_bindings (MutableSequence[google.cloud.securitycenter_v1.types.IamBinding]): Represents IAM bindings associated with the Finding. next_steps (str): Next steps associate to the finding. - containers (Sequence[google.cloud.securitycenter_v1.types.Container]): + containers (MutableSequence[google.cloud.securitycenter_v1.types.Container]): Containers associated with the finding. containers provides information for both Kubernetes and non-Kubernetes containers. @@ -208,6 +210,8 @@ class Finding(proto.Message): finding. database (google.cloud.securitycenter_v1.types.Database): Database associated with the finding. + files (MutableSequence[google.cloud.securitycenter_v1.types.File]): + File associated with the finding. """ class State(proto.Enum): @@ -240,164 +244,171 @@ class FindingClass(proto.Enum): OBSERVATION = 4 SCC_ERROR = 5 - name = proto.Field( + name: str = proto.Field( proto.STRING, number=1, ) - parent = proto.Field( + parent: str = proto.Field( proto.STRING, number=2, ) - resource_name = proto.Field( + resource_name: str = proto.Field( proto.STRING, number=3, ) - state = proto.Field( + state: State = proto.Field( proto.ENUM, number=4, enum=State, ) - category = proto.Field( + category: str = proto.Field( proto.STRING, number=5, ) - external_uri = proto.Field( + external_uri: str = proto.Field( proto.STRING, number=6, ) - source_properties = proto.MapField( + source_properties: MutableMapping[str, struct_pb2.Value] = proto.MapField( proto.STRING, proto.MESSAGE, number=7, message=struct_pb2.Value, ) - security_marks = proto.Field( + security_marks: gcs_security_marks.SecurityMarks = proto.Field( proto.MESSAGE, number=8, message=gcs_security_marks.SecurityMarks, ) - event_time = proto.Field( + event_time: timestamp_pb2.Timestamp = proto.Field( proto.MESSAGE, number=9, message=timestamp_pb2.Timestamp, ) - create_time = proto.Field( + create_time: timestamp_pb2.Timestamp = proto.Field( proto.MESSAGE, number=10, message=timestamp_pb2.Timestamp, ) - severity = proto.Field( + severity: Severity = proto.Field( proto.ENUM, number=12, enum=Severity, ) - canonical_name = proto.Field( + canonical_name: str = proto.Field( proto.STRING, number=14, ) - mute = proto.Field( + mute: Mute = proto.Field( proto.ENUM, number=15, enum=Mute, ) - finding_class = proto.Field( + finding_class: FindingClass = proto.Field( proto.ENUM, number=17, enum=FindingClass, ) - indicator = proto.Field( + indicator: gcs_indicator.Indicator = proto.Field( proto.MESSAGE, number=18, message=gcs_indicator.Indicator, ) - vulnerability = proto.Field( + vulnerability: gcs_vulnerability.Vulnerability = proto.Field( proto.MESSAGE, number=20, message=gcs_vulnerability.Vulnerability, ) - mute_update_time = proto.Field( + mute_update_time: timestamp_pb2.Timestamp = proto.Field( proto.MESSAGE, number=21, message=timestamp_pb2.Timestamp, ) - external_systems = proto.MapField( + external_systems: MutableMapping[ + str, external_system.ExternalSystem + ] = proto.MapField( proto.STRING, proto.MESSAGE, number=22, message=external_system.ExternalSystem, ) - mitre_attack = proto.Field( + mitre_attack: gcs_mitre_attack.MitreAttack = proto.Field( proto.MESSAGE, number=25, message=gcs_mitre_attack.MitreAttack, ) - access = proto.Field( + access: gcs_access.Access = proto.Field( proto.MESSAGE, number=26, message=gcs_access.Access, ) - connections = proto.RepeatedField( + connections: MutableSequence[connection.Connection] = proto.RepeatedField( proto.MESSAGE, number=31, message=connection.Connection, ) - mute_initiator = proto.Field( + mute_initiator: str = proto.Field( proto.STRING, number=28, ) - processes = proto.RepeatedField( + processes: MutableSequence[process.Process] = proto.RepeatedField( proto.MESSAGE, number=30, message=process.Process, ) - contacts = proto.MapField( + contacts: MutableMapping[str, contact_details.ContactDetails] = proto.MapField( proto.STRING, proto.MESSAGE, number=33, message=contact_details.ContactDetails, ) - compliances = proto.RepeatedField( + compliances: MutableSequence[compliance.Compliance] = proto.RepeatedField( proto.MESSAGE, number=34, message=compliance.Compliance, ) - parent_display_name = proto.Field( + parent_display_name: str = proto.Field( proto.STRING, number=36, ) - description = proto.Field( + description: str = proto.Field( proto.STRING, number=37, ) - exfiltration = proto.Field( + exfiltration: gcs_exfiltration.Exfiltration = proto.Field( proto.MESSAGE, number=38, message=gcs_exfiltration.Exfiltration, ) - iam_bindings = proto.RepeatedField( + iam_bindings: MutableSequence[iam_binding.IamBinding] = proto.RepeatedField( proto.MESSAGE, number=39, message=iam_binding.IamBinding, ) - next_steps = proto.Field( + next_steps: str = proto.Field( proto.STRING, number=40, ) - containers = proto.RepeatedField( + containers: MutableSequence[container.Container] = proto.RepeatedField( proto.MESSAGE, number=42, message=container.Container, ) - kubernetes = proto.Field( + kubernetes: gcs_kubernetes.Kubernetes = proto.Field( proto.MESSAGE, number=43, message=gcs_kubernetes.Kubernetes, ) - database = proto.Field( + database: gcs_database.Database = proto.Field( proto.MESSAGE, number=44, message=gcs_database.Database, ) + files: MutableSequence[file.File] = proto.RepeatedField( + proto.MESSAGE, + number=46, + message=file.File, + ) __all__ = tuple(sorted(__protobuf__.manifest)) diff --git a/google/cloud/securitycenter_v1/types/folder.py b/google/cloud/securitycenter_v1/types/folder.py index 0ee352fa..65023861 100644 --- a/google/cloud/securitycenter_v1/types/folder.py +++ b/google/cloud/securitycenter_v1/types/folder.py @@ -13,6 +13,8 @@ # See the License for the specific language governing permissions and # limitations under the License. # +from typing import MutableMapping, MutableSequence + import proto # type: ignore __protobuf__ = proto.module( @@ -36,11 +38,11 @@ class Folder(proto.Message): folder. """ - resource_folder = proto.Field( + resource_folder: str = proto.Field( proto.STRING, number=1, ) - resource_folder_display_name = proto.Field( + resource_folder_display_name: str = proto.Field( proto.STRING, number=2, ) diff --git a/google/cloud/securitycenter_v1/types/iam_binding.py b/google/cloud/securitycenter_v1/types/iam_binding.py index c0b9c158..1b51d083 100644 --- a/google/cloud/securitycenter_v1/types/iam_binding.py +++ b/google/cloud/securitycenter_v1/types/iam_binding.py @@ -13,6 +13,8 @@ # See the License for the specific language governing permissions and # limitations under the License. # +from typing import MutableMapping, MutableSequence + import proto # type: ignore __protobuf__ = proto.module( @@ -45,16 +47,16 @@ class Action(proto.Enum): ADD = 1 REMOVE = 2 - action = proto.Field( + action: Action = proto.Field( proto.ENUM, number=1, enum=Action, ) - role = proto.Field( + role: str = proto.Field( proto.STRING, number=2, ) - member = proto.Field( + member: str = proto.Field( proto.STRING, number=3, ) diff --git a/google/cloud/securitycenter_v1/types/indicator.py b/google/cloud/securitycenter_v1/types/indicator.py index 22420624..c6acc286 100644 --- a/google/cloud/securitycenter_v1/types/indicator.py +++ b/google/cloud/securitycenter_v1/types/indicator.py @@ -13,6 +13,8 @@ # See the License for the specific language governing permissions and # limitations under the License. # +from typing import MutableMapping, MutableSequence + import proto # type: ignore __protobuf__ = proto.module( @@ -31,16 +33,16 @@ class Indicator(proto.Message): https://en.wikipedia.org/wiki/Indicator_of_compromise Attributes: - ip_addresses (Sequence[str]): + ip_addresses (MutableSequence[str]): List of ip addresses associated to the Finding. - domains (Sequence[str]): + domains (MutableSequence[str]): List of domains associated to the Finding. - signatures (Sequence[google.cloud.securitycenter_v1.types.Indicator.ProcessSignature]): + signatures (MutableSequence[google.cloud.securitycenter_v1.types.Indicator.ProcessSignature]): The list of matched signatures indicating that the given process is present in the environment. - uris (Sequence[str]): + uris (MutableSequence[str]): The list of URIs associated to the Findings. """ @@ -73,7 +75,7 @@ class MemoryHashSignature(proto.Message): Attributes: binary_family (str): The binary family. - detections (Sequence[google.cloud.securitycenter_v1.types.Indicator.ProcessSignature.MemoryHashSignature.Detection]): + detections (MutableSequence[google.cloud.securitycenter_v1.types.Indicator.ProcessSignature.MemoryHashSignature.Detection]): The list of memory hash detections contributing to the binary family match. """ @@ -91,20 +93,22 @@ class Detection(proto.Message): signature that were matched. """ - binary = proto.Field( + binary: str = proto.Field( proto.STRING, number=2, ) - percent_pages_matched = proto.Field( + percent_pages_matched: float = proto.Field( proto.DOUBLE, number=3, ) - binary_family = proto.Field( + binary_family: str = proto.Field( proto.STRING, number=1, ) - detections = proto.RepeatedField( + detections: MutableSequence[ + "Indicator.ProcessSignature.MemoryHashSignature.Detection" + ] = proto.RepeatedField( proto.MESSAGE, number=4, message="Indicator.ProcessSignature.MemoryHashSignature.Detection", @@ -118,38 +122,42 @@ class YaraRuleSignature(proto.Message): The name of the YARA rule. """ - yara_rule = proto.Field( + yara_rule: str = proto.Field( proto.STRING, number=5, ) - memory_hash_signature = proto.Field( - proto.MESSAGE, - number=6, - oneof="signature", - message="Indicator.ProcessSignature.MemoryHashSignature", + memory_hash_signature: "Indicator.ProcessSignature.MemoryHashSignature" = ( + proto.Field( + proto.MESSAGE, + number=6, + oneof="signature", + message="Indicator.ProcessSignature.MemoryHashSignature", + ) ) - yara_rule_signature = proto.Field( - proto.MESSAGE, - number=7, - oneof="signature", - message="Indicator.ProcessSignature.YaraRuleSignature", + yara_rule_signature: "Indicator.ProcessSignature.YaraRuleSignature" = ( + proto.Field( + proto.MESSAGE, + number=7, + oneof="signature", + message="Indicator.ProcessSignature.YaraRuleSignature", + ) ) - ip_addresses = proto.RepeatedField( + ip_addresses: MutableSequence[str] = proto.RepeatedField( proto.STRING, number=1, ) - domains = proto.RepeatedField( + domains: MutableSequence[str] = proto.RepeatedField( proto.STRING, number=2, ) - signatures = proto.RepeatedField( + signatures: MutableSequence[ProcessSignature] = proto.RepeatedField( proto.MESSAGE, number=3, message=ProcessSignature, ) - uris = proto.RepeatedField( + uris: MutableSequence[str] = proto.RepeatedField( proto.STRING, number=4, ) diff --git a/google/cloud/securitycenter_v1/types/kubernetes.py b/google/cloud/securitycenter_v1/types/kubernetes.py index bda87b63..fb6df80f 100644 --- a/google/cloud/securitycenter_v1/types/kubernetes.py +++ b/google/cloud/securitycenter_v1/types/kubernetes.py @@ -13,6 +13,8 @@ # See the License for the specific language governing permissions and # limitations under the License. # +from typing import MutableMapping, MutableSequence + import proto # type: ignore from google.cloud.securitycenter_v1.types import container, label @@ -29,24 +31,24 @@ class Kubernetes(proto.Message): r"""Kubernetes related attributes. Attributes: - pods (Sequence[google.cloud.securitycenter_v1.types.Kubernetes.Pod]): + pods (MutableSequence[google.cloud.securitycenter_v1.types.Kubernetes.Pod]): Kubernetes Pods associated with the finding. This field will contain Pod records for each container that is owned by a Pod. - nodes (Sequence[google.cloud.securitycenter_v1.types.Kubernetes.Node]): + nodes (MutableSequence[google.cloud.securitycenter_v1.types.Kubernetes.Node]): Provides Kubernetes Node information. - node_pools (Sequence[google.cloud.securitycenter_v1.types.Kubernetes.NodePool]): + node_pools (MutableSequence[google.cloud.securitycenter_v1.types.Kubernetes.NodePool]): GKE Node Pools associated with the finding. This field will contain NodePool information for each Node, when it is available. - roles (Sequence[google.cloud.securitycenter_v1.types.Kubernetes.Role]): + roles (MutableSequence[google.cloud.securitycenter_v1.types.Kubernetes.Role]): Provides Kubernetes role information for findings that involve Roles or ClusterRoles. - bindings (Sequence[google.cloud.securitycenter_v1.types.Kubernetes.Binding]): + bindings (MutableSequence[google.cloud.securitycenter_v1.types.Kubernetes.Binding]): Provides Kubernetes role binding information for findings that involve RoleBindings or ClusterRoleBindings. - access_reviews (Sequence[google.cloud.securitycenter_v1.types.Kubernetes.AccessReview]): + access_reviews (MutableSequence[google.cloud.securitycenter_v1.types.Kubernetes.AccessReview]): Provides information on any Kubernetes access reviews (i.e. privilege checks) relevant to the finding. @@ -60,28 +62,28 @@ class Pod(proto.Message): Kubernetes Pod namespace. name (str): Kubernetes Pod name. - labels (Sequence[google.cloud.securitycenter_v1.types.Label]): + labels (MutableSequence[google.cloud.securitycenter_v1.types.Label]): Pod labels. For Kubernetes containers, these are applied to the container. - containers (Sequence[google.cloud.securitycenter_v1.types.Container]): + containers (MutableSequence[google.cloud.securitycenter_v1.types.Container]): Pod containers associated with this finding, if any. """ - ns = proto.Field( + ns: str = proto.Field( proto.STRING, number=1, ) - name = proto.Field( + name: str = proto.Field( proto.STRING, number=2, ) - labels = proto.RepeatedField( + labels: MutableSequence[label.Label] = proto.RepeatedField( proto.MESSAGE, number=3, message=label.Label, ) - containers = proto.RepeatedField( + containers: MutableSequence[container.Container] = proto.RepeatedField( proto.MESSAGE, number=4, message=container.Container, @@ -96,7 +98,7 @@ class Node(proto.Message): running the cluster node. """ - name = proto.Field( + name: str = proto.Field( proto.STRING, number=1, ) @@ -107,15 +109,15 @@ class NodePool(proto.Message): Attributes: name (str): Kubernetes Node pool name. - nodes (Sequence[google.cloud.securitycenter_v1.types.Kubernetes.Node]): + nodes (MutableSequence[google.cloud.securitycenter_v1.types.Kubernetes.Node]): Nodes associated with the finding. """ - name = proto.Field( + name: str = proto.Field( proto.STRING, number=1, ) - nodes = proto.RepeatedField( + nodes: MutableSequence["Kubernetes.Node"] = proto.RepeatedField( proto.MESSAGE, number=2, message="Kubernetes.Node", @@ -139,16 +141,16 @@ class Kind(proto.Enum): ROLE = 1 CLUSTER_ROLE = 2 - kind = proto.Field( + kind: "Kubernetes.Role.Kind" = proto.Field( proto.ENUM, number=1, enum="Kubernetes.Role.Kind", ) - ns = proto.Field( + ns: str = proto.Field( proto.STRING, number=2, ) - name = proto.Field( + name: str = proto.Field( proto.STRING, number=3, ) @@ -164,25 +166,25 @@ class Binding(proto.Message): role (google.cloud.securitycenter_v1.types.Kubernetes.Role): The Role or ClusterRole referenced by the binding. - subjects (Sequence[google.cloud.securitycenter_v1.types.Kubernetes.Subject]): + subjects (MutableSequence[google.cloud.securitycenter_v1.types.Kubernetes.Subject]): Represents the subjects(s) bound to the role. Not always available for PATCH requests. """ - ns = proto.Field( + ns: str = proto.Field( proto.STRING, number=1, ) - name = proto.Field( + name: str = proto.Field( proto.STRING, number=2, ) - role = proto.Field( + role: "Kubernetes.Role" = proto.Field( proto.MESSAGE, number=3, message="Kubernetes.Role", ) - subjects = proto.RepeatedField( + subjects: MutableSequence["Kubernetes.Subject"] = proto.RepeatedField( proto.MESSAGE, number=4, message="Kubernetes.Subject", @@ -207,16 +209,16 @@ class AuthType(proto.Enum): SERVICEACCOUNT = 2 GROUP = 3 - kind = proto.Field( + kind: "Kubernetes.Subject.AuthType" = proto.Field( proto.ENUM, number=1, enum="Kubernetes.Subject.AuthType", ) - ns = proto.Field( + ns: str = proto.Field( proto.STRING, number=2, ) - name = proto.Field( + name: str = proto.Field( proto.STRING, number=3, ) @@ -248,61 +250,61 @@ class AccessReview(proto.Message): Version is the API Version of the Resource. "*" means all. """ - group = proto.Field( + group: str = proto.Field( proto.STRING, number=1, ) - ns = proto.Field( + ns: str = proto.Field( proto.STRING, number=2, ) - name = proto.Field( + name: str = proto.Field( proto.STRING, number=3, ) - resource = proto.Field( + resource: str = proto.Field( proto.STRING, number=4, ) - subresource = proto.Field( + subresource: str = proto.Field( proto.STRING, number=5, ) - verb = proto.Field( + verb: str = proto.Field( proto.STRING, number=6, ) - version = proto.Field( + version: str = proto.Field( proto.STRING, number=7, ) - pods = proto.RepeatedField( + pods: MutableSequence[Pod] = proto.RepeatedField( proto.MESSAGE, number=1, message=Pod, ) - nodes = proto.RepeatedField( + nodes: MutableSequence[Node] = proto.RepeatedField( proto.MESSAGE, number=2, message=Node, ) - node_pools = proto.RepeatedField( + node_pools: MutableSequence[NodePool] = proto.RepeatedField( proto.MESSAGE, number=3, message=NodePool, ) - roles = proto.RepeatedField( + roles: MutableSequence[Role] = proto.RepeatedField( proto.MESSAGE, number=4, message=Role, ) - bindings = proto.RepeatedField( + bindings: MutableSequence[Binding] = proto.RepeatedField( proto.MESSAGE, number=5, message=Binding, ) - access_reviews = proto.RepeatedField( + access_reviews: MutableSequence[AccessReview] = proto.RepeatedField( proto.MESSAGE, number=6, message=AccessReview, diff --git a/google/cloud/securitycenter_v1/types/label.py b/google/cloud/securitycenter_v1/types/label.py index c3bfb3e5..84eb144f 100644 --- a/google/cloud/securitycenter_v1/types/label.py +++ b/google/cloud/securitycenter_v1/types/label.py @@ -13,6 +13,8 @@ # See the License for the specific language governing permissions and # limitations under the License. # +from typing import MutableMapping, MutableSequence + import proto # type: ignore __protobuf__ = proto.module( @@ -35,11 +37,11 @@ class Label(proto.Message): Label value. """ - name = proto.Field( + name: str = proto.Field( proto.STRING, number=1, ) - value = proto.Field( + value: str = proto.Field( proto.STRING, number=2, ) diff --git a/google/cloud/securitycenter_v1/types/mitre_attack.py b/google/cloud/securitycenter_v1/types/mitre_attack.py index 388560e5..26e3889e 100644 --- a/google/cloud/securitycenter_v1/types/mitre_attack.py +++ b/google/cloud/securitycenter_v1/types/mitre_attack.py @@ -13,6 +13,8 @@ # See the License for the specific language governing permissions and # limitations under the License. # +from typing import MutableMapping, MutableSequence + import proto # type: ignore __protobuf__ = proto.module( @@ -31,7 +33,7 @@ class MitreAttack(proto.Message): primary_tactic (google.cloud.securitycenter_v1.types.MitreAttack.Tactic): The MITRE ATT&CK tactic most closely represented by this finding, if any. - primary_techniques (Sequence[google.cloud.securitycenter_v1.types.MitreAttack.Technique]): + primary_techniques (MutableSequence[google.cloud.securitycenter_v1.types.MitreAttack.Technique]): The MITRE ATT&CK technique most closely represented by this finding, if any. primary_techniques is a repeated field because there are multiple levels of MITRE ATT&CK @@ -40,10 +42,10 @@ class MitreAttack(proto.Message): ``SCANNING_IP_BLOCKS``), both the sub-technique and its parent technique(s) will be listed (e.g. ``SCANNING_IP_BLOCKS``, ``ACTIVE_SCANNING``). - additional_tactics (Sequence[google.cloud.securitycenter_v1.types.MitreAttack.Tactic]): + additional_tactics (MutableSequence[google.cloud.securitycenter_v1.types.MitreAttack.Tactic]): Additional MITRE ATT&CK tactics related to this finding, if any. - additional_techniques (Sequence[google.cloud.securitycenter_v1.types.MitreAttack.Technique]): + additional_techniques (MutableSequence[google.cloud.securitycenter_v1.types.MitreAttack.Technique]): Additional MITRE ATT&CK techniques related to this finding, if any, along with any of their respective parent techniques. @@ -111,28 +113,29 @@ class Technique(proto.Enum): NETWORK_SERVICE_DISCOVERY = 32 ACCESS_TOKEN_MANIPULATION = 33 ABUSE_ELEVATION_CONTROL_MECHANISM = 34 + DEFAULT_ACCOUNTS = 35 - primary_tactic = proto.Field( + primary_tactic: Tactic = proto.Field( proto.ENUM, number=1, enum=Tactic, ) - primary_techniques = proto.RepeatedField( + primary_techniques: MutableSequence[Technique] = proto.RepeatedField( proto.ENUM, number=2, enum=Technique, ) - additional_tactics = proto.RepeatedField( + additional_tactics: MutableSequence[Tactic] = proto.RepeatedField( proto.ENUM, number=3, enum=Tactic, ) - additional_techniques = proto.RepeatedField( + additional_techniques: MutableSequence[Technique] = proto.RepeatedField( proto.ENUM, number=4, enum=Technique, ) - version = proto.Field( + version: str = proto.Field( proto.STRING, number=5, ) diff --git a/google/cloud/securitycenter_v1/types/mute_config.py b/google/cloud/securitycenter_v1/types/mute_config.py index b83948f7..2803055a 100644 --- a/google/cloud/securitycenter_v1/types/mute_config.py +++ b/google/cloud/securitycenter_v1/types/mute_config.py @@ -13,6 +13,8 @@ # See the License for the specific language governing permissions and # limitations under the License. # +from typing import MutableMapping, MutableSequence + from google.protobuf import timestamp_pb2 # type: ignore import proto # type: ignore @@ -79,33 +81,33 @@ class MuteConfig(proto.Message): config creation or update. """ - name = proto.Field( + name: str = proto.Field( proto.STRING, number=1, ) - display_name = proto.Field( + display_name: str = proto.Field( proto.STRING, number=2, ) - description = proto.Field( + description: str = proto.Field( proto.STRING, number=3, ) - filter = proto.Field( + filter: str = proto.Field( proto.STRING, number=4, ) - create_time = proto.Field( + create_time: timestamp_pb2.Timestamp = proto.Field( proto.MESSAGE, number=5, message=timestamp_pb2.Timestamp, ) - update_time = proto.Field( + update_time: timestamp_pb2.Timestamp = proto.Field( proto.MESSAGE, number=6, message=timestamp_pb2.Timestamp, ) - most_recent_editor = proto.Field( + most_recent_editor: str = proto.Field( proto.STRING, number=7, ) diff --git a/google/cloud/securitycenter_v1/types/notification_config.py b/google/cloud/securitycenter_v1/types/notification_config.py index fd6c9196..2eec73ca 100644 --- a/google/cloud/securitycenter_v1/types/notification_config.py +++ b/google/cloud/securitycenter_v1/types/notification_config.py @@ -13,6 +13,8 @@ # See the License for the specific language governing permissions and # limitations under the License. # +from typing import MutableMapping, MutableSequence + import proto # type: ignore __protobuf__ = proto.module( @@ -87,28 +89,28 @@ class StreamingConfig(proto.Message): - boolean literals ``true`` and ``false`` without quotes. """ - filter = proto.Field( + filter: str = proto.Field( proto.STRING, number=1, ) - name = proto.Field( + name: str = proto.Field( proto.STRING, number=1, ) - description = proto.Field( + description: str = proto.Field( proto.STRING, number=2, ) - pubsub_topic = proto.Field( + pubsub_topic: str = proto.Field( proto.STRING, number=3, ) - service_account = proto.Field( + service_account: str = proto.Field( proto.STRING, number=4, ) - streaming_config = proto.Field( + streaming_config: StreamingConfig = proto.Field( proto.MESSAGE, number=5, oneof="notify_config", diff --git a/google/cloud/securitycenter_v1/types/notification_message.py b/google/cloud/securitycenter_v1/types/notification_message.py index 5fb7162e..6006459b 100644 --- a/google/cloud/securitycenter_v1/types/notification_message.py +++ b/google/cloud/securitycenter_v1/types/notification_message.py @@ -13,6 +13,8 @@ # See the License for the specific language governing permissions and # limitations under the License. # +from typing import MutableMapping, MutableSequence + import proto # type: ignore from google.cloud.securitycenter_v1.types import finding as gcs_finding @@ -45,17 +47,17 @@ class NotificationMessage(proto.Message): notification's Finding. """ - notification_config_name = proto.Field( + notification_config_name: str = proto.Field( proto.STRING, number=1, ) - finding = proto.Field( + finding: gcs_finding.Finding = proto.Field( proto.MESSAGE, number=2, oneof="event", message=gcs_finding.Finding, ) - resource = proto.Field( + resource: gcs_resource.Resource = proto.Field( proto.MESSAGE, number=3, message=gcs_resource.Resource, diff --git a/google/cloud/securitycenter_v1/types/organization_settings.py b/google/cloud/securitycenter_v1/types/organization_settings.py index bb5b8595..239dbd86 100644 --- a/google/cloud/securitycenter_v1/types/organization_settings.py +++ b/google/cloud/securitycenter_v1/types/organization_settings.py @@ -13,6 +13,8 @@ # See the License for the specific language governing permissions and # limitations under the License. # +from typing import MutableMapping, MutableSequence + import proto # type: ignore __protobuf__ = proto.module( @@ -47,13 +49,13 @@ class AssetDiscoveryConfig(proto.Message): r"""The configuration used for Asset Discovery runs. Attributes: - project_ids (Sequence[str]): + project_ids (MutableSequence[str]): The project ids to use for filtering asset discovery. inclusion_mode (google.cloud.securitycenter_v1.types.OrganizationSettings.AssetDiscoveryConfig.InclusionMode): The mode to use for filtering asset discovery. - folder_ids (Sequence[str]): + folder_ids (MutableSequence[str]): The folder ids to use for filtering asset discovery. It consists of only digits, e.g., 756619654966. @@ -73,29 +75,31 @@ class InclusionMode(proto.Enum): INCLUDE_ONLY = 1 EXCLUDE = 2 - project_ids = proto.RepeatedField( + project_ids: MutableSequence[str] = proto.RepeatedField( proto.STRING, number=1, ) - inclusion_mode = proto.Field( - proto.ENUM, - number=2, - enum="OrganizationSettings.AssetDiscoveryConfig.InclusionMode", + inclusion_mode: "OrganizationSettings.AssetDiscoveryConfig.InclusionMode" = ( + proto.Field( + proto.ENUM, + number=2, + enum="OrganizationSettings.AssetDiscoveryConfig.InclusionMode", + ) ) - folder_ids = proto.RepeatedField( + folder_ids: MutableSequence[str] = proto.RepeatedField( proto.STRING, number=3, ) - name = proto.Field( + name: str = proto.Field( proto.STRING, number=1, ) - enable_asset_discovery = proto.Field( + enable_asset_discovery: bool = proto.Field( proto.BOOL, number=2, ) - asset_discovery_config = proto.Field( + asset_discovery_config: AssetDiscoveryConfig = proto.Field( proto.MESSAGE, number=3, message=AssetDiscoveryConfig, diff --git a/google/cloud/securitycenter_v1/types/process.py b/google/cloud/securitycenter_v1/types/process.py index 9d032747..8e2b2825 100644 --- a/google/cloud/securitycenter_v1/types/process.py +++ b/google/cloud/securitycenter_v1/types/process.py @@ -13,6 +13,8 @@ # See the License for the specific language governing permissions and # limitations under the License. # +from typing import MutableMapping, MutableSequence + import proto # type: ignore from google.cloud.securitycenter_v1.types import file @@ -36,7 +38,7 @@ class Process(proto.Message): changed with ``prctl(PR_SET_NAME)``. binary (google.cloud.securitycenter_v1.types.File): File information for the process executable. - libraries (Sequence[google.cloud.securitycenter_v1.types.File]): + libraries (MutableSequence[google.cloud.securitycenter_v1.types.File]): File information for libraries loaded by the process. script (google.cloud.securitycenter_v1.types.File): @@ -44,11 +46,11 @@ class Process(proto.Message): ``binary`` provides information about the interpreter while ``script`` provides information about the script file provided to the interpreter. - args (Sequence[str]): + args (MutableSequence[str]): Process arguments as JSON encoded strings. arguments_truncated (bool): True if ``args`` is incomplete. - env_variables (Sequence[google.cloud.securitycenter_v1.types.EnvironmentVariable]): + env_variables (MutableSequence[google.cloud.securitycenter_v1.types.EnvironmentVariable]): Process environment variables. env_variables_truncated (bool): True if ``env_variables`` is incomplete. @@ -58,47 +60,47 @@ class Process(proto.Message): The parent process id. """ - name = proto.Field( + name: str = proto.Field( proto.STRING, number=12, ) - binary = proto.Field( + binary: file.File = proto.Field( proto.MESSAGE, number=3, message=file.File, ) - libraries = proto.RepeatedField( + libraries: MutableSequence[file.File] = proto.RepeatedField( proto.MESSAGE, number=4, message=file.File, ) - script = proto.Field( + script: file.File = proto.Field( proto.MESSAGE, number=5, message=file.File, ) - args = proto.RepeatedField( + args: MutableSequence[str] = proto.RepeatedField( proto.STRING, number=6, ) - arguments_truncated = proto.Field( + arguments_truncated: bool = proto.Field( proto.BOOL, number=7, ) - env_variables = proto.RepeatedField( + env_variables: MutableSequence["EnvironmentVariable"] = proto.RepeatedField( proto.MESSAGE, number=8, message="EnvironmentVariable", ) - env_variables_truncated = proto.Field( + env_variables_truncated: bool = proto.Field( proto.BOOL, number=9, ) - pid = proto.Field( + pid: int = proto.Field( proto.INT64, number=10, ) - parent_pid = proto.Field( + parent_pid: int = proto.Field( proto.INT64, number=11, ) @@ -117,11 +119,11 @@ class EnvironmentVariable(proto.Message): string. """ - name = proto.Field( + name: str = proto.Field( proto.STRING, number=1, ) - val = proto.Field( + val: str = proto.Field( proto.STRING, number=2, ) diff --git a/google/cloud/securitycenter_v1/types/resource.py b/google/cloud/securitycenter_v1/types/resource.py index b06af743..418cafb2 100644 --- a/google/cloud/securitycenter_v1/types/resource.py +++ b/google/cloud/securitycenter_v1/types/resource.py @@ -13,6 +13,8 @@ # See the License for the specific language governing permissions and # limitations under the License. # +from typing import MutableMapping, MutableSequence + import proto # type: ignore from google.cloud.securitycenter_v1.types import folder @@ -45,7 +47,7 @@ class Resource(proto.Message): The full resource name of resource's parent. parent_display_name (str): The human readable name of resource's parent. - folders (Sequence[google.cloud.securitycenter_v1.types.Folder]): + folders (MutableSequence[google.cloud.securitycenter_v1.types.Folder]): Output only. Contains a Folder message for each folder in the assets ancestry. The first folder is the deepest nested folder, and the @@ -53,35 +55,35 @@ class Resource(proto.Message): Organization. """ - name = proto.Field( + name: str = proto.Field( proto.STRING, number=1, ) - display_name = proto.Field( + display_name: str = proto.Field( proto.STRING, number=8, ) - type_ = proto.Field( + type_: str = proto.Field( proto.STRING, number=6, ) - project = proto.Field( + project: str = proto.Field( proto.STRING, number=2, ) - project_display_name = proto.Field( + project_display_name: str = proto.Field( proto.STRING, number=3, ) - parent = proto.Field( + parent: str = proto.Field( proto.STRING, number=4, ) - parent_display_name = proto.Field( + parent_display_name: str = proto.Field( proto.STRING, number=5, ) - folders = proto.RepeatedField( + folders: MutableSequence[folder.Folder] = proto.RepeatedField( proto.MESSAGE, number=7, message=folder.Folder, diff --git a/google/cloud/securitycenter_v1/types/run_asset_discovery_response.py b/google/cloud/securitycenter_v1/types/run_asset_discovery_response.py index dc445b1b..a5ecb37d 100644 --- a/google/cloud/securitycenter_v1/types/run_asset_discovery_response.py +++ b/google/cloud/securitycenter_v1/types/run_asset_discovery_response.py @@ -13,6 +13,8 @@ # See the License for the specific language governing permissions and # limitations under the License. # +from typing import MutableMapping, MutableSequence + from google.protobuf import duration_pb2 # type: ignore import proto # type: ignore @@ -42,12 +44,12 @@ class State(proto.Enum): SUPERSEDED = 2 TERMINATED = 3 - state = proto.Field( + state: State = proto.Field( proto.ENUM, number=1, enum=State, ) - duration = proto.Field( + duration: duration_pb2.Duration = proto.Field( proto.MESSAGE, number=2, message=duration_pb2.Duration, diff --git a/google/cloud/securitycenter_v1/types/security_marks.py b/google/cloud/securitycenter_v1/types/security_marks.py index 16064811..9dcb4879 100644 --- a/google/cloud/securitycenter_v1/types/security_marks.py +++ b/google/cloud/securitycenter_v1/types/security_marks.py @@ -13,6 +13,8 @@ # See the License for the specific language governing permissions and # limitations under the License. # +from typing import MutableMapping, MutableSequence + import proto # type: ignore __protobuf__ = proto.module( @@ -37,7 +39,7 @@ class SecurityMarks(proto.Message): Examples: "organizations/{organization_id}/assets/{asset_id}/securityMarks" "organizations/{organization_id}/sources/{source_id}/findings/{finding_id}/securityMarks". - marks (Mapping[str, str]): + marks (MutableMapping[str, str]): Mutable user specified security marks belonging to the parent resource. Constraints are as follows: @@ -57,16 +59,16 @@ class SecurityMarks(proto.Message): "projects/{project_number}/sources/{source_id}/findings/{finding_id}/securityMarks". """ - name = proto.Field( + name: str = proto.Field( proto.STRING, number=1, ) - marks = proto.MapField( + marks: MutableMapping[str, str] = proto.MapField( proto.STRING, proto.STRING, number=2, ) - canonical_name = proto.Field( + canonical_name: str = proto.Field( proto.STRING, number=3, ) diff --git a/google/cloud/securitycenter_v1/types/securitycenter_service.py b/google/cloud/securitycenter_v1/types/securitycenter_service.py index db94af83..4ad91ea7 100644 --- a/google/cloud/securitycenter_v1/types/securitycenter_service.py +++ b/google/cloud/securitycenter_v1/types/securitycenter_service.py @@ -13,6 +13,8 @@ # See the License for the specific language governing permissions and # limitations under the License. # +from typing import MutableMapping, MutableSequence + from google.protobuf import duration_pb2 # type: ignore from google.protobuf import field_mask_pb2 # type: ignore from google.protobuf import struct_pb2 # type: ignore @@ -125,15 +127,15 @@ class BulkMuteFindingsRequest(proto.Message): the filter. """ - parent = proto.Field( + parent: str = proto.Field( proto.STRING, number=1, ) - filter = proto.Field( + filter: str = proto.Field( proto.STRING, number=2, ) - mute_annotation = proto.Field( + mute_annotation: str = proto.Field( proto.STRING, number=3, ) @@ -166,15 +168,15 @@ class CreateFindingRequest(proto.Message): fields on this resource. """ - parent = proto.Field( + parent: str = proto.Field( proto.STRING, number=1, ) - finding_id = proto.Field( + finding_id: str = proto.Field( proto.STRING, number=2, ) - finding = proto.Field( + finding: gcs_finding.Finding = proto.Field( proto.MESSAGE, number=3, message=gcs_finding.Finding, @@ -199,16 +201,16 @@ class CreateMuteConfigRequest(proto.Message): or a number, and a 63 character maximum. """ - parent = proto.Field( + parent: str = proto.Field( proto.STRING, number=1, ) - mute_config = proto.Field( + mute_config: gcs_mute_config.MuteConfig = proto.Field( proto.MESSAGE, number=2, message=gcs_mute_config.MuteConfig, ) - mute_config_id = proto.Field( + mute_config_id: str = proto.Field( proto.STRING, number=3, ) @@ -235,15 +237,15 @@ class CreateNotificationConfigRequest(proto.Message): on this resource. """ - parent = proto.Field( + parent: str = proto.Field( proto.STRING, number=1, ) - config_id = proto.Field( + config_id: str = proto.Field( proto.STRING, number=2, ) - notification_config = proto.Field( + notification_config: gcs_notification_config.NotificationConfig = proto.Field( proto.MESSAGE, number=3, message=gcs_notification_config.NotificationConfig, @@ -263,11 +265,11 @@ class CreateSourceRequest(proto.Message): ignored. """ - parent = proto.Field( + parent: str = proto.Field( proto.STRING, number=1, ) - source = proto.Field( + source: gcs_source.Source = proto.Field( proto.MESSAGE, number=2, message=gcs_source.Source, @@ -285,7 +287,7 @@ class DeleteMuteConfigRequest(proto.Message): projects/{project}/muteConfigs/{config_id} """ - name = proto.Field( + name: str = proto.Field( proto.STRING, number=1, ) @@ -301,7 +303,7 @@ class DeleteNotificationConfigRequest(proto.Message): "organizations/[organization_id]/notificationConfigs/[config_id]". """ - name = proto.Field( + name: str = proto.Field( proto.STRING, number=1, ) @@ -319,7 +321,7 @@ class GetBigQueryExportRequest(proto.Message): projects/{project}/bigQueryExports/{export_id} """ - name = proto.Field( + name: str = proto.Field( proto.STRING, number=1, ) @@ -336,7 +338,7 @@ class GetMuteConfigRequest(proto.Message): projects/{project}/muteConfigs/{config_id} """ - name = proto.Field( + name: str = proto.Field( proto.STRING, number=1, ) @@ -352,7 +354,7 @@ class GetNotificationConfigRequest(proto.Message): "organizations/[organization_id]/notificationConfigs/[config_id]". """ - name = proto.Field( + name: str = proto.Field( proto.STRING, number=1, ) @@ -368,7 +370,7 @@ class GetOrganizationSettingsRequest(proto.Message): "organizations/[organization_id]/organizationSettings". """ - name = proto.Field( + name: str = proto.Field( proto.STRING, number=1, ) @@ -383,7 +385,7 @@ class GetSourceRequest(proto.Message): is "organizations/[organization_id]/source/[source_id]". """ - name = proto.Field( + name: str = proto.Field( proto.STRING, number=1, ) @@ -549,33 +551,33 @@ class GroupAssetsRequest(proto.Message): maximum is 1000. """ - parent = proto.Field( + parent: str = proto.Field( proto.STRING, number=1, ) - filter = proto.Field( + filter: str = proto.Field( proto.STRING, number=2, ) - group_by = proto.Field( + group_by: str = proto.Field( proto.STRING, number=3, ) - compare_duration = proto.Field( + compare_duration: duration_pb2.Duration = proto.Field( proto.MESSAGE, number=4, message=duration_pb2.Duration, ) - read_time = proto.Field( + read_time: timestamp_pb2.Timestamp = proto.Field( proto.MESSAGE, number=5, message=timestamp_pb2.Timestamp, ) - page_token = proto.Field( + page_token: str = proto.Field( proto.STRING, number=7, ) - page_size = proto.Field( + page_size: int = proto.Field( proto.INT32, number=8, ) @@ -585,7 +587,7 @@ class GroupAssetsResponse(proto.Message): r"""Response message for grouping by assets. Attributes: - group_by_results (Sequence[google.cloud.securitycenter_v1.types.GroupResult]): + group_by_results (MutableSequence[google.cloud.securitycenter_v1.types.GroupResult]): Group results. There exists an element for each existing unique combination of property/values. The element contains a count @@ -605,21 +607,21 @@ class GroupAssetsResponse(proto.Message): def raw_page(self): return self - group_by_results = proto.RepeatedField( + group_by_results: MutableSequence["GroupResult"] = proto.RepeatedField( proto.MESSAGE, number=1, message="GroupResult", ) - read_time = proto.Field( + read_time: timestamp_pb2.Timestamp = proto.Field( proto.MESSAGE, number=2, message=timestamp_pb2.Timestamp, ) - next_page_token = proto.Field( + next_page_token: str = proto.Field( proto.STRING, number=3, ) - total_size = proto.Field( + total_size: int = proto.Field( proto.INT32, number=4, ) @@ -786,33 +788,33 @@ class GroupFindingsRequest(proto.Message): maximum is 1000. """ - parent = proto.Field( + parent: str = proto.Field( proto.STRING, number=1, ) - filter = proto.Field( + filter: str = proto.Field( proto.STRING, number=2, ) - group_by = proto.Field( + group_by: str = proto.Field( proto.STRING, number=3, ) - read_time = proto.Field( + read_time: timestamp_pb2.Timestamp = proto.Field( proto.MESSAGE, number=4, message=timestamp_pb2.Timestamp, ) - compare_duration = proto.Field( + compare_duration: duration_pb2.Duration = proto.Field( proto.MESSAGE, number=5, message=duration_pb2.Duration, ) - page_token = proto.Field( + page_token: str = proto.Field( proto.STRING, number=7, ) - page_size = proto.Field( + page_size: int = proto.Field( proto.INT32, number=8, ) @@ -822,7 +824,7 @@ class GroupFindingsResponse(proto.Message): r"""Response message for group by findings. Attributes: - group_by_results (Sequence[google.cloud.securitycenter_v1.types.GroupResult]): + group_by_results (MutableSequence[google.cloud.securitycenter_v1.types.GroupResult]): Group results. There exists an element for each existing unique combination of property/values. The element contains a count @@ -842,21 +844,21 @@ class GroupFindingsResponse(proto.Message): def raw_page(self): return self - group_by_results = proto.RepeatedField( + group_by_results: MutableSequence["GroupResult"] = proto.RepeatedField( proto.MESSAGE, number=1, message="GroupResult", ) - read_time = proto.Field( + read_time: timestamp_pb2.Timestamp = proto.Field( proto.MESSAGE, number=2, message=timestamp_pb2.Timestamp, ) - next_page_token = proto.Field( + next_page_token: str = proto.Field( proto.STRING, number=3, ) - total_size = proto.Field( + total_size: int = proto.Field( proto.INT32, number=4, ) @@ -867,7 +869,7 @@ class GroupResult(proto.Message): request. Attributes: - properties (Mapping[str, google.protobuf.struct_pb2.Value]): + properties (MutableMapping[str, google.protobuf.struct_pb2.Value]): Properties matching the groupBy fields in the request. count (int): @@ -875,13 +877,13 @@ class GroupResult(proto.Message): properties. """ - properties = proto.MapField( + properties: MutableMapping[str, struct_pb2.Value] = proto.MapField( proto.STRING, proto.MESSAGE, number=1, message=struct_pb2.Value, ) - count = proto.Field( + count: int = proto.Field( proto.INT64, number=2, ) @@ -911,15 +913,15 @@ class ListMuteConfigsRequest(proto.Message): page token. """ - parent = proto.Field( + parent: str = proto.Field( proto.STRING, number=1, ) - page_size = proto.Field( + page_size: int = proto.Field( proto.INT32, number=2, ) - page_token = proto.Field( + page_token: str = proto.Field( proto.STRING, number=3, ) @@ -929,7 +931,7 @@ class ListMuteConfigsResponse(proto.Message): r"""Response message for listing mute configs. Attributes: - mute_configs (Sequence[google.cloud.securitycenter_v1.types.MuteConfig]): + mute_configs (MutableSequence[google.cloud.securitycenter_v1.types.MuteConfig]): The mute configs from the specified parent. next_page_token (str): A token, which can be sent as ``page_token`` to retrieve the @@ -941,12 +943,12 @@ class ListMuteConfigsResponse(proto.Message): def raw_page(self): return self - mute_configs = proto.RepeatedField( + mute_configs: MutableSequence[gcs_mute_config.MuteConfig] = proto.RepeatedField( proto.MESSAGE, number=1, message=gcs_mute_config.MuteConfig, ) - next_page_token = proto.Field( + next_page_token: str = proto.Field( proto.STRING, number=2, ) @@ -971,15 +973,15 @@ class ListNotificationConfigsRequest(proto.Message): maximum is 1000. """ - parent = proto.Field( + parent: str = proto.Field( proto.STRING, number=1, ) - page_token = proto.Field( + page_token: str = proto.Field( proto.STRING, number=2, ) - page_size = proto.Field( + page_size: int = proto.Field( proto.INT32, number=3, ) @@ -989,7 +991,7 @@ class ListNotificationConfigsResponse(proto.Message): r"""Response message for listing notification configs. Attributes: - notification_configs (Sequence[google.cloud.securitycenter_v1.types.NotificationConfig]): + notification_configs (MutableSequence[google.cloud.securitycenter_v1.types.NotificationConfig]): Notification configs belonging to the requested parent. next_page_token (str): @@ -1001,12 +1003,14 @@ class ListNotificationConfigsResponse(proto.Message): def raw_page(self): return self - notification_configs = proto.RepeatedField( + notification_configs: MutableSequence[ + gcs_notification_config.NotificationConfig + ] = proto.RepeatedField( proto.MESSAGE, number=1, message=gcs_notification_config.NotificationConfig, ) - next_page_token = proto.Field( + next_page_token: str = proto.Field( proto.STRING, number=2, ) @@ -1031,15 +1035,15 @@ class ListSourcesRequest(proto.Message): maximum is 1000. """ - parent = proto.Field( + parent: str = proto.Field( proto.STRING, number=1, ) - page_token = proto.Field( + page_token: str = proto.Field( proto.STRING, number=2, ) - page_size = proto.Field( + page_size: int = proto.Field( proto.INT32, number=7, ) @@ -1049,7 +1053,7 @@ class ListSourcesResponse(proto.Message): r"""Response message for listing sources. Attributes: - sources (Sequence[google.cloud.securitycenter_v1.types.Source]): + sources (MutableSequence[google.cloud.securitycenter_v1.types.Source]): Sources belonging to the requested parent. next_page_token (str): Token to retrieve the next page of results, @@ -1060,12 +1064,12 @@ class ListSourcesResponse(proto.Message): def raw_page(self): return self - sources = proto.RepeatedField( + sources: MutableSequence[gcs_source.Source] = proto.RepeatedField( proto.MESSAGE, number=1, message=gcs_source.Source, ) - next_page_token = proto.Field( + next_page_token: str = proto.Field( proto.STRING, number=2, ) @@ -1232,38 +1236,38 @@ class ListAssetsRequest(proto.Message): maximum is 1000. """ - parent = proto.Field( + parent: str = proto.Field( proto.STRING, number=1, ) - filter = proto.Field( + filter: str = proto.Field( proto.STRING, number=2, ) - order_by = proto.Field( + order_by: str = proto.Field( proto.STRING, number=3, ) - read_time = proto.Field( + read_time: timestamp_pb2.Timestamp = proto.Field( proto.MESSAGE, number=4, message=timestamp_pb2.Timestamp, ) - compare_duration = proto.Field( + compare_duration: duration_pb2.Duration = proto.Field( proto.MESSAGE, number=5, message=duration_pb2.Duration, ) - field_mask = proto.Field( + field_mask: field_mask_pb2.FieldMask = proto.Field( proto.MESSAGE, number=7, message=field_mask_pb2.FieldMask, ) - page_token = proto.Field( + page_token: str = proto.Field( proto.STRING, number=8, ) - page_size = proto.Field( + page_size: int = proto.Field( proto.INT32, number=9, ) @@ -1273,7 +1277,7 @@ class ListAssetsResponse(proto.Message): r"""Response message for listing assets. Attributes: - list_assets_results (Sequence[google.cloud.securitycenter_v1.types.ListAssetsResponse.ListAssetsResult]): + list_assets_results (MutableSequence[google.cloud.securitycenter_v1.types.ListAssetsResponse.ListAssetsResult]): Assets matching the list request. read_time (google.protobuf.timestamp_pb2.Timestamp): Time used for executing the list request. @@ -1309,12 +1313,12 @@ class StateChange(proto.Enum): REMOVED = 2 ACTIVE = 3 - asset = proto.Field( + asset: gcs_asset.Asset = proto.Field( proto.MESSAGE, number=1, message=gcs_asset.Asset, ) - state_change = proto.Field( + state_change: "ListAssetsResponse.ListAssetsResult.StateChange" = proto.Field( proto.ENUM, number=2, enum="ListAssetsResponse.ListAssetsResult.StateChange", @@ -1324,21 +1328,21 @@ class StateChange(proto.Enum): def raw_page(self): return self - list_assets_results = proto.RepeatedField( + list_assets_results: MutableSequence[ListAssetsResult] = proto.RepeatedField( proto.MESSAGE, number=1, message=ListAssetsResult, ) - read_time = proto.Field( + read_time: timestamp_pb2.Timestamp = proto.Field( proto.MESSAGE, number=2, message=timestamp_pb2.Timestamp, ) - next_page_token = proto.Field( + next_page_token: str = proto.Field( proto.STRING, number=3, ) - total_size = proto.Field( + total_size: int = proto.Field( proto.INT32, number=4, ) @@ -1506,38 +1510,38 @@ class ListFindingsRequest(proto.Message): maximum is 1000. """ - parent = proto.Field( + parent: str = proto.Field( proto.STRING, number=1, ) - filter = proto.Field( + filter: str = proto.Field( proto.STRING, number=2, ) - order_by = proto.Field( + order_by: str = proto.Field( proto.STRING, number=3, ) - read_time = proto.Field( + read_time: timestamp_pb2.Timestamp = proto.Field( proto.MESSAGE, number=4, message=timestamp_pb2.Timestamp, ) - compare_duration = proto.Field( + compare_duration: duration_pb2.Duration = proto.Field( proto.MESSAGE, number=5, message=duration_pb2.Duration, ) - field_mask = proto.Field( + field_mask: field_mask_pb2.FieldMask = proto.Field( proto.MESSAGE, number=7, message=field_mask_pb2.FieldMask, ) - page_token = proto.Field( + page_token: str = proto.Field( proto.STRING, number=8, ) - page_size = proto.Field( + page_size: int = proto.Field( proto.INT32, number=9, ) @@ -1547,7 +1551,7 @@ class ListFindingsResponse(proto.Message): r"""Response message for listing findings. Attributes: - list_findings_results (Sequence[google.cloud.securitycenter_v1.types.ListFindingsResponse.ListFindingsResult]): + list_findings_results (MutableSequence[google.cloud.securitycenter_v1.types.ListFindingsResponse.ListFindingsResult]): Findings matching the list request. read_time (google.protobuf.timestamp_pb2.Timestamp): Time used for executing the list request. @@ -1610,58 +1614,60 @@ class Resource(proto.Message): The full resource name of resource's parent. parent_display_name (str): The human readable name of resource's parent. - folders (Sequence[google.cloud.securitycenter_v1.types.Folder]): + folders (MutableSequence[google.cloud.securitycenter_v1.types.Folder]): Contains a Folder message for each folder in the assets ancestry. The first folder is the deepest nested folder, and the last folder is the folder directly under the Organization. """ - name = proto.Field( + name: str = proto.Field( proto.STRING, number=1, ) - display_name = proto.Field( + display_name: str = proto.Field( proto.STRING, number=8, ) - type_ = proto.Field( + type_: str = proto.Field( proto.STRING, number=6, ) - project_name = proto.Field( + project_name: str = proto.Field( proto.STRING, number=2, ) - project_display_name = proto.Field( + project_display_name: str = proto.Field( proto.STRING, number=3, ) - parent_name = proto.Field( + parent_name: str = proto.Field( proto.STRING, number=4, ) - parent_display_name = proto.Field( + parent_display_name: str = proto.Field( proto.STRING, number=5, ) - folders = proto.RepeatedField( + folders: MutableSequence[folder.Folder] = proto.RepeatedField( proto.MESSAGE, number=7, message=folder.Folder, ) - finding = proto.Field( + finding: gcs_finding.Finding = proto.Field( proto.MESSAGE, number=1, message=gcs_finding.Finding, ) - state_change = proto.Field( - proto.ENUM, - number=2, - enum="ListFindingsResponse.ListFindingsResult.StateChange", + state_change: "ListFindingsResponse.ListFindingsResult.StateChange" = ( + proto.Field( + proto.ENUM, + number=2, + enum="ListFindingsResponse.ListFindingsResult.StateChange", + ) ) - resource = proto.Field( + resource: "ListFindingsResponse.ListFindingsResult.Resource" = proto.Field( proto.MESSAGE, number=3, message="ListFindingsResponse.ListFindingsResult.Resource", @@ -1671,21 +1677,21 @@ class Resource(proto.Message): def raw_page(self): return self - list_findings_results = proto.RepeatedField( + list_findings_results: MutableSequence[ListFindingsResult] = proto.RepeatedField( proto.MESSAGE, number=1, message=ListFindingsResult, ) - read_time = proto.Field( + read_time: timestamp_pb2.Timestamp = proto.Field( proto.MESSAGE, number=2, message=timestamp_pb2.Timestamp, ) - next_page_token = proto.Field( + next_page_token: str = proto.Field( proto.STRING, number=3, ) - total_size = proto.Field( + total_size: int = proto.Field( proto.INT32, number=4, ) @@ -1699,7 +1705,7 @@ class SetFindingStateRequest(proto.Message): Required. The relative resource name of the finding. See: https://cloud.google.com/apis/design/resource_names#relative_resource_name Example: - "organizations/{organization_id}/sources/{source_id}/finding/{finding_id}". + "organizations/{organization_id}/sources/{source_id}/findings/{finding_id}". state (google.cloud.securitycenter_v1.types.Finding.State): Required. The desired State of the finding. start_time (google.protobuf.timestamp_pb2.Timestamp): @@ -1707,16 +1713,16 @@ class SetFindingStateRequest(proto.Message): takes effect. """ - name = proto.Field( + name: str = proto.Field( proto.STRING, number=1, ) - state = proto.Field( + state: gcs_finding.Finding.State = proto.Field( proto.ENUM, number=2, enum=gcs_finding.Finding.State, ) - start_time = proto.Field( + start_time: timestamp_pb2.Timestamp = proto.Field( proto.MESSAGE, number=3, message=timestamp_pb2.Timestamp, @@ -1731,18 +1737,18 @@ class SetMuteRequest(proto.Message): Required. The relative resource name of the finding. See: https://cloud.google.com/apis/design/resource_names#relative_resource_name Example: - "organizations/{organization_id}/sources/{source_id}/finding/{finding_id}", - "folders/{folder_id}/sources/{source_id}/finding/{finding_id}", - "projects/{project_id}/sources/{source_id}/finding/{finding_id}". + "organizations/{organization_id}/sources/{source_id}/findings/{finding_id}", + "folders/{folder_id}/sources/{source_id}/findings/{finding_id}", + "projects/{project_id}/sources/{source_id}/findings/{finding_id}". mute (google.cloud.securitycenter_v1.types.Finding.Mute): Required. The desired state of the Mute. """ - name = proto.Field( + name: str = proto.Field( proto.STRING, number=1, ) - mute = proto.Field( + mute: gcs_finding.Finding.Mute = proto.Field( proto.ENUM, number=2, enum=gcs_finding.Finding.Mute, @@ -1759,7 +1765,7 @@ class RunAssetDiscoveryRequest(proto.Message): for. Its format is "organizations/[organization_id]". """ - parent = proto.Field( + parent: str = proto.Field( proto.STRING, number=1, ) @@ -1778,12 +1784,12 @@ class UpdateExternalSystemRequest(proto.Message): If empty all mutable fields will be updated. """ - external_system = proto.Field( + external_system: gcs_external_system.ExternalSystem = proto.Field( proto.MESSAGE, number=1, message=gcs_external_system.ExternalSystem, ) - update_mask = proto.Field( + update_mask: field_mask_pb2.FieldMask = proto.Field( proto.MESSAGE, number=2, message=field_mask_pb2.FieldMask, @@ -1812,12 +1818,12 @@ class UpdateFindingRequest(proto.Message): "source_properties." in the field mask. """ - finding = proto.Field( + finding: gcs_finding.Finding = proto.Field( proto.MESSAGE, number=1, message=gcs_finding.Finding, ) - update_mask = proto.Field( + update_mask: field_mask_pb2.FieldMask = proto.Field( proto.MESSAGE, number=2, message=field_mask_pb2.FieldMask, @@ -1835,12 +1841,12 @@ class UpdateMuteConfigRequest(proto.Message): If empty all mutable fields will be updated. """ - mute_config = proto.Field( + mute_config: gcs_mute_config.MuteConfig = proto.Field( proto.MESSAGE, number=1, message=gcs_mute_config.MuteConfig, ) - update_mask = proto.Field( + update_mask: field_mask_pb2.FieldMask = proto.Field( proto.MESSAGE, number=2, message=field_mask_pb2.FieldMask, @@ -1859,12 +1865,12 @@ class UpdateNotificationConfigRequest(proto.Message): If empty all mutable fields will be updated. """ - notification_config = proto.Field( + notification_config: gcs_notification_config.NotificationConfig = proto.Field( proto.MESSAGE, number=1, message=gcs_notification_config.NotificationConfig, ) - update_mask = proto.Field( + update_mask: field_mask_pb2.FieldMask = proto.Field( proto.MESSAGE, number=2, message=field_mask_pb2.FieldMask, @@ -1884,12 +1890,12 @@ class UpdateOrganizationSettingsRequest(proto.Message): If empty all mutable fields will be updated. """ - organization_settings = proto.Field( + organization_settings: gcs_organization_settings.OrganizationSettings = proto.Field( proto.MESSAGE, number=1, message=gcs_organization_settings.OrganizationSettings, ) - update_mask = proto.Field( + update_mask: field_mask_pb2.FieldMask = proto.Field( proto.MESSAGE, number=2, message=field_mask_pb2.FieldMask, @@ -1908,12 +1914,12 @@ class UpdateSourceRequest(proto.Message): If empty all mutable fields will be updated. """ - source = proto.Field( + source: gcs_source.Source = proto.Field( proto.MESSAGE, number=1, message=gcs_source.Source, ) - update_mask = proto.Field( + update_mask: field_mask_pb2.FieldMask = proto.Field( proto.MESSAGE, number=2, message=field_mask_pb2.FieldMask, @@ -1943,17 +1949,17 @@ class UpdateSecurityMarksRequest(proto.Message): the server time. """ - security_marks = proto.Field( + security_marks: gcs_security_marks.SecurityMarks = proto.Field( proto.MESSAGE, number=1, message=gcs_security_marks.SecurityMarks, ) - update_mask = proto.Field( + update_mask: field_mask_pb2.FieldMask = proto.Field( proto.MESSAGE, number=2, message=field_mask_pb2.FieldMask, ) - start_time = proto.Field( + start_time: timestamp_pb2.Timestamp = proto.Field( proto.MESSAGE, number=3, message=timestamp_pb2.Timestamp, @@ -1978,16 +1984,16 @@ class CreateBigQueryExportRequest(proto.Message): or a number, and a 63 character maximum. """ - parent = proto.Field( + parent: str = proto.Field( proto.STRING, number=1, ) - big_query_export = proto.Field( + big_query_export: bigquery_export.BigQueryExport = proto.Field( proto.MESSAGE, number=2, message=bigquery_export.BigQueryExport, ) - big_query_export_id = proto.Field( + big_query_export_id: str = proto.Field( proto.STRING, number=3, ) @@ -2004,12 +2010,12 @@ class UpdateBigQueryExportRequest(proto.Message): If empty all mutable fields will be updated. """ - big_query_export = proto.Field( + big_query_export: bigquery_export.BigQueryExport = proto.Field( proto.MESSAGE, number=1, message=bigquery_export.BigQueryExport, ) - update_mask = proto.Field( + update_mask: field_mask_pb2.FieldMask = proto.Field( proto.MESSAGE, number=2, message=field_mask_pb2.FieldMask, @@ -2017,8 +2023,8 @@ class UpdateBigQueryExportRequest(proto.Message): class ListBigQueryExportsRequest(proto.Message): - r"""Request message for listing BigQuery exports at a given - scope e.g. organization, folder or project. + r"""Request message for listing BigQuery exports at a given scope + e.g. organization, folder or project. Attributes: parent (str): @@ -2039,15 +2045,15 @@ class ListBigQueryExportsRequest(proto.Message): provided the page token. """ - parent = proto.Field( + parent: str = proto.Field( proto.STRING, number=1, ) - page_size = proto.Field( + page_size: int = proto.Field( proto.INT32, number=2, ) - page_token = proto.Field( + page_token: str = proto.Field( proto.STRING, number=3, ) @@ -2057,7 +2063,7 @@ class ListBigQueryExportsResponse(proto.Message): r"""Response message for listing BigQuery exports. Attributes: - big_query_exports (Sequence[google.cloud.securitycenter_v1.types.BigQueryExport]): + big_query_exports (MutableSequence[google.cloud.securitycenter_v1.types.BigQueryExport]): The BigQuery exports from the specified parent. next_page_token (str): @@ -2070,12 +2076,14 @@ class ListBigQueryExportsResponse(proto.Message): def raw_page(self): return self - big_query_exports = proto.RepeatedField( + big_query_exports: MutableSequence[ + bigquery_export.BigQueryExport + ] = proto.RepeatedField( proto.MESSAGE, number=1, message=bigquery_export.BigQueryExport, ) - next_page_token = proto.Field( + next_page_token: str = proto.Field( proto.STRING, number=2, ) @@ -2092,7 +2100,7 @@ class DeleteBigQueryExportRequest(proto.Message): projects/{project}/bigQueryExports/{export_id} """ - name = proto.Field( + name: str = proto.Field( proto.STRING, number=1, ) diff --git a/google/cloud/securitycenter_v1/types/source.py b/google/cloud/securitycenter_v1/types/source.py index 4f311714..6892b78d 100644 --- a/google/cloud/securitycenter_v1/types/source.py +++ b/google/cloud/securitycenter_v1/types/source.py @@ -13,6 +13,8 @@ # See the License for the specific language governing permissions and # limitations under the License. # +from typing import MutableMapping, MutableSequence + import proto # type: ignore __protobuf__ = proto.module( @@ -61,19 +63,19 @@ class Source(proto.Message): the finding. """ - name = proto.Field( + name: str = proto.Field( proto.STRING, number=1, ) - display_name = proto.Field( + display_name: str = proto.Field( proto.STRING, number=2, ) - description = proto.Field( + description: str = proto.Field( proto.STRING, number=3, ) - canonical_name = proto.Field( + canonical_name: str = proto.Field( proto.STRING, number=14, ) diff --git a/google/cloud/securitycenter_v1/types/vulnerability.py b/google/cloud/securitycenter_v1/types/vulnerability.py index 7e7956f3..c99ac19b 100644 --- a/google/cloud/securitycenter_v1/types/vulnerability.py +++ b/google/cloud/securitycenter_v1/types/vulnerability.py @@ -13,6 +13,8 @@ # See the License for the specific language governing permissions and # limitations under the License. # +from typing import MutableMapping, MutableSequence + import proto # type: ignore __protobuf__ = proto.module( @@ -36,7 +38,7 @@ class Vulnerability(proto.Message): Exposures (https://cve.mitre.org/about/) """ - cve = proto.Field( + cve: "Cve" = proto.Field( proto.MESSAGE, number=1, message="Cve", @@ -51,7 +53,7 @@ class Cve(proto.Message): id (str): The unique identifier for the vulnerability. e.g. CVE-2021-34527 - references (Sequence[google.cloud.securitycenter_v1.types.Reference]): + references (MutableSequence[google.cloud.securitycenter_v1.types.Reference]): Additional information about the CVE. e.g. https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-34527 @@ -64,21 +66,21 @@ class Cve(proto.Message): CVE. """ - id = proto.Field( + id: str = proto.Field( proto.STRING, number=1, ) - references = proto.RepeatedField( + references: MutableSequence["Reference"] = proto.RepeatedField( proto.MESSAGE, number=2, message="Reference", ) - cvssv3 = proto.Field( + cvssv3: "Cvssv3" = proto.Field( proto.MESSAGE, number=3, message="Cvssv3", ) - upstream_fix_available = proto.Field( + upstream_fix_available: bool = proto.Field( proto.BOOL, number=4, ) @@ -95,11 +97,11 @@ class Reference(proto.Message): https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-34527. """ - source = proto.Field( + source: str = proto.Field( proto.STRING, number=1, ) - uri = proto.Field( + uri: str = proto.Field( proto.STRING, number=2, ) @@ -207,46 +209,46 @@ class Impact(proto.Enum): IMPACT_LOW = 2 IMPACT_NONE = 3 - base_score = proto.Field( + base_score: float = proto.Field( proto.DOUBLE, number=1, ) - attack_vector = proto.Field( + attack_vector: AttackVector = proto.Field( proto.ENUM, number=5, enum=AttackVector, ) - attack_complexity = proto.Field( + attack_complexity: AttackComplexity = proto.Field( proto.ENUM, number=6, enum=AttackComplexity, ) - privileges_required = proto.Field( + privileges_required: PrivilegesRequired = proto.Field( proto.ENUM, number=7, enum=PrivilegesRequired, ) - user_interaction = proto.Field( + user_interaction: UserInteraction = proto.Field( proto.ENUM, number=8, enum=UserInteraction, ) - scope = proto.Field( + scope: Scope = proto.Field( proto.ENUM, number=9, enum=Scope, ) - confidentiality_impact = proto.Field( + confidentiality_impact: Impact = proto.Field( proto.ENUM, number=10, enum=Impact, ) - integrity_impact = proto.Field( + integrity_impact: Impact = proto.Field( proto.ENUM, number=11, enum=Impact, ) - availability_impact = proto.Field( + availability_impact: Impact = proto.Field( proto.ENUM, number=12, enum=Impact, diff --git a/google/cloud/securitycenter_v1beta1/__init__.py b/google/cloud/securitycenter_v1beta1/__init__.py index 289b1e24..418a532d 100644 --- a/google/cloud/securitycenter_v1beta1/__init__.py +++ b/google/cloud/securitycenter_v1beta1/__init__.py @@ -13,6 +13,10 @@ # See the License for the specific language governing permissions and # limitations under the License. # +from google.cloud.securitycenter import gapic_version as package_version + +__version__ = package_version.__version__ + from .services.security_center import SecurityCenterAsyncClient, SecurityCenterClient from .types.asset import Asset diff --git a/google/cloud/securitycenter_v1beta1/services/security_center/async_client.py b/google/cloud/securitycenter_v1beta1/services/security_center/async_client.py index 4e05efe7..6a2a2ccc 100644 --- a/google/cloud/securitycenter_v1beta1/services/security_center/async_client.py +++ b/google/cloud/securitycenter_v1beta1/services/security_center/async_client.py @@ -16,7 +16,17 @@ from collections import OrderedDict import functools import re -from typing import Dict, Mapping, Optional, Sequence, Tuple, Type, Union +from typing import ( + Dict, + Mapping, + MutableMapping, + MutableSequence, + Optional, + Sequence, + Tuple, + Type, + Union, +) from google.api_core import exceptions as core_exceptions from google.api_core import gapic_v1 @@ -192,9 +202,9 @@ def transport(self) -> SecurityCenterTransport: def __init__( self, *, - credentials: ga_credentials.Credentials = None, + credentials: Optional[ga_credentials.Credentials] = None, transport: Union[str, SecurityCenterTransport] = "grpc_asyncio", - client_options: ClientOptions = None, + client_options: Optional[ClientOptions] = None, client_info: gapic_v1.client_info.ClientInfo = DEFAULT_CLIENT_INFO, ) -> None: """Instantiates the security center client. @@ -238,12 +248,14 @@ def __init__( async def create_source( self, - request: Union[securitycenter_service.CreateSourceRequest, dict] = None, + request: Optional[ + Union[securitycenter_service.CreateSourceRequest, dict] + ] = None, *, - parent: str = None, - source: gcs_source.Source = None, + parent: Optional[str] = None, + source: Optional[gcs_source.Source] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> gcs_source.Source: r"""Creates a source. @@ -275,7 +287,7 @@ async def sample_create_source(): print(response) Args: - request (Union[google.cloud.securitycenter_v1beta1.types.CreateSourceRequest, dict]): + request (Optional[Union[google.cloud.securitycenter_v1beta1.types.CreateSourceRequest, dict]]): The request object. Request message for creating a source. parent (:class:`str`): @@ -355,13 +367,15 @@ async def sample_create_source(): async def create_finding( self, - request: Union[securitycenter_service.CreateFindingRequest, dict] = None, + request: Optional[ + Union[securitycenter_service.CreateFindingRequest, dict] + ] = None, *, - parent: str = None, - finding_id: str = None, - finding: gcs_finding.Finding = None, + parent: Optional[str] = None, + finding_id: Optional[str] = None, + finding: Optional[gcs_finding.Finding] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> gcs_finding.Finding: r"""Creates a finding. The corresponding source must @@ -395,7 +409,7 @@ async def sample_create_finding(): print(response) Args: - request (Union[google.cloud.securitycenter_v1beta1.types.CreateFindingRequest, dict]): + request (Optional[Union[google.cloud.securitycenter_v1beta1.types.CreateFindingRequest, dict]]): The request object. Request message for creating a finding. parent (:class:`str`): @@ -491,11 +505,11 @@ async def sample_create_finding(): async def get_iam_policy( self, - request: Union[iam_policy_pb2.GetIamPolicyRequest, dict] = None, + request: Optional[Union[iam_policy_pb2.GetIamPolicyRequest, dict]] = None, *, - resource: str = None, + resource: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> policy_pb2.Policy: r"""Gets the access control policy on the specified @@ -529,7 +543,7 @@ async def sample_get_iam_policy(): print(response) Args: - request (Union[google.iam.v1.iam_policy_pb2.GetIamPolicyRequest, dict]): + request (Optional[Union[google.iam.v1.iam_policy_pb2.GetIamPolicyRequest, dict]]): The request object. Request message for `GetIamPolicy` method. resource (:class:`str`): @@ -668,13 +682,13 @@ async def sample_get_iam_policy(): async def get_organization_settings( self, - request: Union[ - securitycenter_service.GetOrganizationSettingsRequest, dict + request: Optional[ + Union[securitycenter_service.GetOrganizationSettingsRequest, dict] ] = None, *, - name: str = None, + name: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> organization_settings.OrganizationSettings: r"""Gets the settings for an organization. @@ -706,7 +720,7 @@ async def sample_get_organization_settings(): print(response) Args: - request (Union[google.cloud.securitycenter_v1beta1.types.GetOrganizationSettingsRequest, dict]): + request (Optional[Union[google.cloud.securitycenter_v1beta1.types.GetOrganizationSettingsRequest, dict]]): The request object. Request message for getting organization settings. name (:class:`str`): @@ -784,11 +798,11 @@ async def sample_get_organization_settings(): async def get_source( self, - request: Union[securitycenter_service.GetSourceRequest, dict] = None, + request: Optional[Union[securitycenter_service.GetSourceRequest, dict]] = None, *, - name: str = None, + name: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> source.Source: r"""Gets a source. @@ -820,7 +834,7 @@ async def sample_get_source(): print(response) Args: - request (Union[google.cloud.securitycenter_v1beta1.types.GetSourceRequest, dict]): + request (Optional[Union[google.cloud.securitycenter_v1beta1.types.GetSourceRequest, dict]]): The request object. Request message for getting a source. name (:class:`str`): @@ -901,10 +915,12 @@ async def sample_get_source(): async def group_assets( self, - request: Union[securitycenter_service.GroupAssetsRequest, dict] = None, + request: Optional[ + Union[securitycenter_service.GroupAssetsRequest, dict] + ] = None, *, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> pagers.GroupAssetsAsyncPager: r"""Filters an organization's assets and groups them by @@ -939,7 +955,7 @@ async def sample_group_assets(): print(response) Args: - request (Union[google.cloud.securitycenter_v1beta1.types.GroupAssetsRequest, dict]): + request (Optional[Union[google.cloud.securitycenter_v1beta1.types.GroupAssetsRequest, dict]]): The request object. Request message for grouping by assets. retry (google.api_core.retry.Retry): Designation of what errors, if any, @@ -1006,12 +1022,14 @@ async def sample_group_assets(): async def group_findings( self, - request: Union[securitycenter_service.GroupFindingsRequest, dict] = None, + request: Optional[ + Union[securitycenter_service.GroupFindingsRequest, dict] + ] = None, *, - parent: str = None, - group_by: str = None, + parent: Optional[str] = None, + group_by: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> pagers.GroupFindingsAsyncPager: r"""Filters an organization or source's findings and groups them by @@ -1050,7 +1068,7 @@ async def sample_group_findings(): print(response) Args: - request (Union[google.cloud.securitycenter_v1beta1.types.GroupFindingsRequest, dict]): + request (Optional[Union[google.cloud.securitycenter_v1beta1.types.GroupFindingsRequest, dict]]): The request object. Request message for grouping by findings. parent (:class:`str`): @@ -1159,10 +1177,10 @@ async def sample_group_findings(): async def list_assets( self, - request: Union[securitycenter_service.ListAssetsRequest, dict] = None, + request: Optional[Union[securitycenter_service.ListAssetsRequest, dict]] = None, *, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> pagers.ListAssetsAsyncPager: r"""Lists an organization's assets. @@ -1195,7 +1213,7 @@ async def sample_list_assets(): print(response) Args: - request (Union[google.cloud.securitycenter_v1beta1.types.ListAssetsRequest, dict]): + request (Optional[Union[google.cloud.securitycenter_v1beta1.types.ListAssetsRequest, dict]]): The request object. Request message for listing assets. retry (google.api_core.retry.Retry): Designation of what errors, if any, should be retried. @@ -1260,10 +1278,12 @@ async def sample_list_assets(): async def list_findings( self, - request: Union[securitycenter_service.ListFindingsRequest, dict] = None, + request: Optional[ + Union[securitycenter_service.ListFindingsRequest, dict] + ] = None, *, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> pagers.ListFindingsAsyncPager: r"""Lists an organization or source's findings. @@ -1300,7 +1320,7 @@ async def sample_list_findings(): print(response) Args: - request (Union[google.cloud.securitycenter_v1beta1.types.ListFindingsRequest, dict]): + request (Optional[Union[google.cloud.securitycenter_v1beta1.types.ListFindingsRequest, dict]]): The request object. Request message for listing findings. retry (google.api_core.retry.Retry): Designation of what errors, if any, @@ -1367,11 +1387,13 @@ async def sample_list_findings(): async def list_sources( self, - request: Union[securitycenter_service.ListSourcesRequest, dict] = None, + request: Optional[ + Union[securitycenter_service.ListSourcesRequest, dict] + ] = None, *, - parent: str = None, + parent: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> pagers.ListSourcesAsyncPager: r"""Lists all sources belonging to an organization. @@ -1404,7 +1426,7 @@ async def sample_list_sources(): print(response) Args: - request (Union[google.cloud.securitycenter_v1beta1.types.ListSourcesRequest, dict]): + request (Optional[Union[google.cloud.securitycenter_v1beta1.types.ListSourcesRequest, dict]]): The request object. Request message for listing sources. parent (:class:`str`): Required. Resource name of the parent of sources to @@ -1491,11 +1513,13 @@ async def sample_list_sources(): async def run_asset_discovery( self, - request: Union[securitycenter_service.RunAssetDiscoveryRequest, dict] = None, + request: Optional[ + Union[securitycenter_service.RunAssetDiscoveryRequest, dict] + ] = None, *, - parent: str = None, + parent: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> operation_async.AsyncOperation: r"""Runs asset discovery. The discovery is tracked with a @@ -1536,7 +1560,7 @@ async def sample_run_asset_discovery(): print(response) Args: - request (Union[google.cloud.securitycenter_v1beta1.types.RunAssetDiscoveryRequest, dict]): + request (Optional[Union[google.cloud.securitycenter_v1beta1.types.RunAssetDiscoveryRequest, dict]]): The request object. Request message for running asset discovery for an organization. parent (:class:`str`): @@ -1621,13 +1645,15 @@ async def sample_run_asset_discovery(): async def set_finding_state( self, - request: Union[securitycenter_service.SetFindingStateRequest, dict] = None, + request: Optional[ + Union[securitycenter_service.SetFindingStateRequest, dict] + ] = None, *, - name: str = None, - state: finding.Finding.State = None, - start_time: timestamp_pb2.Timestamp = None, + name: Optional[str] = None, + state: Optional[finding.Finding.State] = None, + start_time: Optional[timestamp_pb2.Timestamp] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> finding.Finding: r"""Updates the state of a finding. @@ -1660,7 +1686,7 @@ async def sample_set_finding_state(): print(response) Args: - request (Union[google.cloud.securitycenter_v1beta1.types.SetFindingStateRequest, dict]): + request (Optional[Union[google.cloud.securitycenter_v1beta1.types.SetFindingStateRequest, dict]]): The request object. Request message for updating a finding's state. name (:class:`str`): @@ -1754,11 +1780,11 @@ async def sample_set_finding_state(): async def set_iam_policy( self, - request: Union[iam_policy_pb2.SetIamPolicyRequest, dict] = None, + request: Optional[Union[iam_policy_pb2.SetIamPolicyRequest, dict]] = None, *, - resource: str = None, + resource: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> policy_pb2.Policy: r"""Sets the access control policy on the specified @@ -1792,7 +1818,7 @@ async def sample_set_iam_policy(): print(response) Args: - request (Union[google.iam.v1.iam_policy_pb2.SetIamPolicyRequest, dict]): + request (Optional[Union[google.iam.v1.iam_policy_pb2.SetIamPolicyRequest, dict]]): The request object. Request message for `SetIamPolicy` method. resource (:class:`str`): @@ -1921,12 +1947,12 @@ async def sample_set_iam_policy(): async def test_iam_permissions( self, - request: Union[iam_policy_pb2.TestIamPermissionsRequest, dict] = None, + request: Optional[Union[iam_policy_pb2.TestIamPermissionsRequest, dict]] = None, *, - resource: str = None, - permissions: Sequence[str] = None, + resource: Optional[str] = None, + permissions: Optional[MutableSequence[str]] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> iam_policy_pb2.TestIamPermissionsResponse: r"""Returns the permissions that a caller has on the @@ -1961,7 +1987,7 @@ async def sample_test_iam_permissions(): print(response) Args: - request (Union[google.iam.v1.iam_policy_pb2.TestIamPermissionsRequest, dict]): + request (Optional[Union[google.iam.v1.iam_policy_pb2.TestIamPermissionsRequest, dict]]): The request object. Request message for `TestIamPermissions` method. resource (:class:`str`): @@ -1973,7 +1999,7 @@ async def sample_test_iam_permissions(): This corresponds to the ``resource`` field on the ``request`` instance; if ``request`` is provided, this should not be set. - permissions (:class:`Sequence[str]`): + permissions (:class:`MutableSequence[str]`): The set of permissions to check for the ``resource``. Permissions with wildcards (such as '*' or 'storage.*') are not allowed. For more information see `IAM @@ -2049,11 +2075,13 @@ async def sample_test_iam_permissions(): async def update_finding( self, - request: Union[securitycenter_service.UpdateFindingRequest, dict] = None, + request: Optional[ + Union[securitycenter_service.UpdateFindingRequest, dict] + ] = None, *, - finding: gcs_finding.Finding = None, + finding: Optional[gcs_finding.Finding] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> gcs_finding.Finding: r"""Creates or updates a finding. The corresponding @@ -2085,7 +2113,7 @@ async def sample_update_finding(): print(response) Args: - request (Union[google.cloud.securitycenter_v1beta1.types.UpdateFindingRequest, dict]): + request (Optional[Union[google.cloud.securitycenter_v1beta1.types.UpdateFindingRequest, dict]]): The request object. Request message for updating or creating a finding. finding (:class:`google.cloud.securitycenter_v1beta1.types.Finding`): @@ -2165,13 +2193,15 @@ async def sample_update_finding(): async def update_organization_settings( self, - request: Union[ - securitycenter_service.UpdateOrganizationSettingsRequest, dict + request: Optional[ + Union[securitycenter_service.UpdateOrganizationSettingsRequest, dict] ] = None, *, - organization_settings: gcs_organization_settings.OrganizationSettings = None, + organization_settings: Optional[ + gcs_organization_settings.OrganizationSettings + ] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> gcs_organization_settings.OrganizationSettings: r"""Updates an organization's settings. @@ -2202,7 +2232,7 @@ async def sample_update_organization_settings(): print(response) Args: - request (Union[google.cloud.securitycenter_v1beta1.types.UpdateOrganizationSettingsRequest, dict]): + request (Optional[Union[google.cloud.securitycenter_v1beta1.types.UpdateOrganizationSettingsRequest, dict]]): The request object. Request message for updating an organization's settings. organization_settings (:class:`google.cloud.securitycenter_v1beta1.types.OrganizationSettings`): @@ -2271,11 +2301,13 @@ async def sample_update_organization_settings(): async def update_source( self, - request: Union[securitycenter_service.UpdateSourceRequest, dict] = None, + request: Optional[ + Union[securitycenter_service.UpdateSourceRequest, dict] + ] = None, *, - source: gcs_source.Source = None, + source: Optional[gcs_source.Source] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> gcs_source.Source: r"""Updates a source. @@ -2306,7 +2338,7 @@ async def sample_update_source(): print(response) Args: - request (Union[google.cloud.securitycenter_v1beta1.types.UpdateSourceRequest, dict]): + request (Optional[Union[google.cloud.securitycenter_v1beta1.types.UpdateSourceRequest, dict]]): The request object. Request message for updating a source. source (:class:`google.cloud.securitycenter_v1beta1.types.Source`): @@ -2378,11 +2410,13 @@ async def sample_update_source(): async def update_security_marks( self, - request: Union[securitycenter_service.UpdateSecurityMarksRequest, dict] = None, + request: Optional[ + Union[securitycenter_service.UpdateSecurityMarksRequest, dict] + ] = None, *, - security_marks: gcs_security_marks.SecurityMarks = None, + security_marks: Optional[gcs_security_marks.SecurityMarks] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> gcs_security_marks.SecurityMarks: r"""Updates security marks. @@ -2413,7 +2447,7 @@ async def sample_update_security_marks(): print(response) Args: - request (Union[google.cloud.securitycenter_v1beta1.types.UpdateSecurityMarksRequest, dict]): + request (Optional[Union[google.cloud.securitycenter_v1beta1.types.UpdateSecurityMarksRequest, dict]]): The request object. Request message for updating a SecurityMarks resource. security_marks (:class:`google.cloud.securitycenter_v1beta1.types.SecurityMarks`): diff --git a/google/cloud/securitycenter_v1beta1/services/security_center/client.py b/google/cloud/securitycenter_v1beta1/services/security_center/client.py index 9ec30738..e077d28a 100644 --- a/google/cloud/securitycenter_v1beta1/services/security_center/client.py +++ b/google/cloud/securitycenter_v1beta1/services/security_center/client.py @@ -16,7 +16,18 @@ from collections import OrderedDict import os import re -from typing import Dict, Mapping, Optional, Sequence, Tuple, Type, Union +from typing import ( + Dict, + Mapping, + MutableMapping, + MutableSequence, + Optional, + Sequence, + Tuple, + Type, + Union, + cast, +) from google.api_core import client_options as client_options_lib from google.api_core import exceptions as core_exceptions @@ -77,7 +88,7 @@ class SecurityCenterClientMeta(type): def get_transport_class( cls, - label: str = None, + label: Optional[str] = None, ) -> Type[SecurityCenterTransport]: """Returns an appropriate transport class. @@ -429,8 +440,8 @@ def __init__( self, *, credentials: Optional[ga_credentials.Credentials] = None, - transport: Union[str, SecurityCenterTransport, None] = None, - client_options: Optional[client_options_lib.ClientOptions] = None, + transport: Optional[Union[str, SecurityCenterTransport]] = None, + client_options: Optional[Union[client_options_lib.ClientOptions, dict]] = None, client_info: gapic_v1.client_info.ClientInfo = DEFAULT_CLIENT_INFO, ) -> None: """Instantiates the security center client. @@ -444,7 +455,7 @@ def __init__( transport (Union[str, SecurityCenterTransport]): The transport to use. If set to None, a transport is chosen automatically. - client_options (google.api_core.client_options.ClientOptions): Custom options for the + client_options (Optional[Union[google.api_core.client_options.ClientOptions, dict]]): Custom options for the client. It won't take effect if a ``transport`` instance is provided. (1) The ``api_endpoint`` property can be used to override the default endpoint provided by the client. GOOGLE_API_USE_MTLS_ENDPOINT @@ -474,6 +485,7 @@ def __init__( client_options = client_options_lib.from_dict(client_options) if client_options is None: client_options = client_options_lib.ClientOptions() + client_options = cast(client_options_lib.ClientOptions, client_options) api_endpoint, client_cert_source_func = self.get_mtls_endpoint_and_cert_source( client_options @@ -526,12 +538,14 @@ def __init__( def create_source( self, - request: Union[securitycenter_service.CreateSourceRequest, dict] = None, + request: Optional[ + Union[securitycenter_service.CreateSourceRequest, dict] + ] = None, *, - parent: str = None, - source: gcs_source.Source = None, + parent: Optional[str] = None, + source: Optional[gcs_source.Source] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> gcs_source.Source: r"""Creates a source. @@ -643,13 +657,15 @@ def sample_create_source(): def create_finding( self, - request: Union[securitycenter_service.CreateFindingRequest, dict] = None, + request: Optional[ + Union[securitycenter_service.CreateFindingRequest, dict] + ] = None, *, - parent: str = None, - finding_id: str = None, - finding: gcs_finding.Finding = None, + parent: Optional[str] = None, + finding_id: Optional[str] = None, + finding: Optional[gcs_finding.Finding] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> gcs_finding.Finding: r"""Creates a finding. The corresponding source must @@ -779,11 +795,11 @@ def sample_create_finding(): def get_iam_policy( self, - request: Union[iam_policy_pb2.GetIamPolicyRequest, dict] = None, + request: Optional[Union[iam_policy_pb2.GetIamPolicyRequest, dict]] = None, *, - resource: str = None, + resource: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> policy_pb2.Policy: r"""Gets the access control policy on the specified @@ -943,13 +959,13 @@ def sample_get_iam_policy(): def get_organization_settings( self, - request: Union[ - securitycenter_service.GetOrganizationSettingsRequest, dict + request: Optional[ + Union[securitycenter_service.GetOrganizationSettingsRequest, dict] ] = None, *, - name: str = None, + name: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> organization_settings.OrganizationSettings: r"""Gets the settings for an organization. @@ -1053,11 +1069,11 @@ def sample_get_organization_settings(): def get_source( self, - request: Union[securitycenter_service.GetSourceRequest, dict] = None, + request: Optional[Union[securitycenter_service.GetSourceRequest, dict]] = None, *, - name: str = None, + name: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> source.Source: r"""Gets a source. @@ -1160,10 +1176,12 @@ def sample_get_source(): def group_assets( self, - request: Union[securitycenter_service.GroupAssetsRequest, dict] = None, + request: Optional[ + Union[securitycenter_service.GroupAssetsRequest, dict] + ] = None, *, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> pagers.GroupAssetsPager: r"""Filters an organization's assets and groups them by @@ -1256,12 +1274,14 @@ def sample_group_assets(): def group_findings( self, - request: Union[securitycenter_service.GroupFindingsRequest, dict] = None, + request: Optional[ + Union[securitycenter_service.GroupFindingsRequest, dict] + ] = None, *, - parent: str = None, - group_by: str = None, + parent: Optional[str] = None, + group_by: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> pagers.GroupFindingsPager: r"""Filters an organization or source's findings and groups them by @@ -1399,10 +1419,10 @@ def sample_group_findings(): def list_assets( self, - request: Union[securitycenter_service.ListAssetsRequest, dict] = None, + request: Optional[Union[securitycenter_service.ListAssetsRequest, dict]] = None, *, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> pagers.ListAssetsPager: r"""Lists an organization's assets. @@ -1491,10 +1511,12 @@ def sample_list_assets(): def list_findings( self, - request: Union[securitycenter_service.ListFindingsRequest, dict] = None, + request: Optional[ + Union[securitycenter_service.ListFindingsRequest, dict] + ] = None, *, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> pagers.ListFindingsPager: r"""Lists an organization or source's findings. @@ -1589,11 +1611,13 @@ def sample_list_findings(): def list_sources( self, - request: Union[securitycenter_service.ListSourcesRequest, dict] = None, + request: Optional[ + Union[securitycenter_service.ListSourcesRequest, dict] + ] = None, *, - parent: str = None, + parent: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> pagers.ListSourcesPager: r"""Lists all sources belonging to an organization. @@ -1703,11 +1727,13 @@ def sample_list_sources(): def run_asset_discovery( self, - request: Union[securitycenter_service.RunAssetDiscoveryRequest, dict] = None, + request: Optional[ + Union[securitycenter_service.RunAssetDiscoveryRequest, dict] + ] = None, *, - parent: str = None, + parent: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> operation.Operation: r"""Runs asset discovery. The discovery is tracked with a @@ -1833,13 +1859,15 @@ def sample_run_asset_discovery(): def set_finding_state( self, - request: Union[securitycenter_service.SetFindingStateRequest, dict] = None, + request: Optional[ + Union[securitycenter_service.SetFindingStateRequest, dict] + ] = None, *, - name: str = None, - state: finding.Finding.State = None, - start_time: timestamp_pb2.Timestamp = None, + name: Optional[str] = None, + state: Optional[finding.Finding.State] = None, + start_time: Optional[timestamp_pb2.Timestamp] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> finding.Finding: r"""Updates the state of a finding. @@ -1966,11 +1994,11 @@ def sample_set_finding_state(): def set_iam_policy( self, - request: Union[iam_policy_pb2.SetIamPolicyRequest, dict] = None, + request: Optional[Union[iam_policy_pb2.SetIamPolicyRequest, dict]] = None, *, - resource: str = None, + resource: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> policy_pb2.Policy: r"""Sets the access control policy on the specified @@ -2130,12 +2158,12 @@ def sample_set_iam_policy(): def test_iam_permissions( self, - request: Union[iam_policy_pb2.TestIamPermissionsRequest, dict] = None, + request: Optional[Union[iam_policy_pb2.TestIamPermissionsRequest, dict]] = None, *, - resource: str = None, - permissions: Sequence[str] = None, + resource: Optional[str] = None, + permissions: Optional[MutableSequence[str]] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> iam_policy_pb2.TestIamPermissionsResponse: r"""Returns the permissions that a caller has on the @@ -2182,7 +2210,7 @@ def sample_test_iam_permissions(): This corresponds to the ``resource`` field on the ``request`` instance; if ``request`` is provided, this should not be set. - permissions (Sequence[str]): + permissions (MutableSequence[str]): The set of permissions to check for the ``resource``. Permissions with wildcards (such as '*' or 'storage.*') are not allowed. For more information see `IAM @@ -2246,11 +2274,13 @@ def sample_test_iam_permissions(): def update_finding( self, - request: Union[securitycenter_service.UpdateFindingRequest, dict] = None, + request: Optional[ + Union[securitycenter_service.UpdateFindingRequest, dict] + ] = None, *, - finding: gcs_finding.Finding = None, + finding: Optional[gcs_finding.Finding] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> gcs_finding.Finding: r"""Creates or updates a finding. The corresponding @@ -2362,13 +2392,15 @@ def sample_update_finding(): def update_organization_settings( self, - request: Union[ - securitycenter_service.UpdateOrganizationSettingsRequest, dict + request: Optional[ + Union[securitycenter_service.UpdateOrganizationSettingsRequest, dict] ] = None, *, - organization_settings: gcs_organization_settings.OrganizationSettings = None, + organization_settings: Optional[ + gcs_organization_settings.OrganizationSettings + ] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> gcs_organization_settings.OrganizationSettings: r"""Updates an organization's settings. @@ -2472,11 +2504,13 @@ def sample_update_organization_settings(): def update_source( self, - request: Union[securitycenter_service.UpdateSourceRequest, dict] = None, + request: Optional[ + Union[securitycenter_service.UpdateSourceRequest, dict] + ] = None, *, - source: gcs_source.Source = None, + source: Optional[gcs_source.Source] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> gcs_source.Source: r"""Updates a source. @@ -2579,11 +2613,13 @@ def sample_update_source(): def update_security_marks( self, - request: Union[securitycenter_service.UpdateSecurityMarksRequest, dict] = None, + request: Optional[ + Union[securitycenter_service.UpdateSecurityMarksRequest, dict] + ] = None, *, - security_marks: gcs_security_marks.SecurityMarks = None, + security_marks: Optional[gcs_security_marks.SecurityMarks] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> gcs_security_marks.SecurityMarks: r"""Updates security marks. diff --git a/google/cloud/securitycenter_v1beta1/services/security_center/transports/base.py b/google/cloud/securitycenter_v1beta1/services/security_center/transports/base.py index e558392b..407a0a4e 100644 --- a/google/cloud/securitycenter_v1beta1/services/security_center/transports/base.py +++ b/google/cloud/securitycenter_v1beta1/services/security_center/transports/base.py @@ -62,7 +62,7 @@ def __init__( self, *, host: str = DEFAULT_HOST, - credentials: ga_credentials.Credentials = None, + credentials: Optional[ga_credentials.Credentials] = None, credentials_file: Optional[str] = None, scopes: Optional[Sequence[str]] = None, quota_project_id: Optional[str] = None, diff --git a/google/cloud/securitycenter_v1beta1/services/security_center/transports/grpc.py b/google/cloud/securitycenter_v1beta1/services/security_center/transports/grpc.py index 04151bdb..cf78e428 100644 --- a/google/cloud/securitycenter_v1beta1/services/security_center/transports/grpc.py +++ b/google/cloud/securitycenter_v1beta1/services/security_center/transports/grpc.py @@ -60,14 +60,14 @@ def __init__( self, *, host: str = "securitycenter.googleapis.com", - credentials: ga_credentials.Credentials = None, - credentials_file: str = None, - scopes: Sequence[str] = None, - channel: grpc.Channel = None, - api_mtls_endpoint: str = None, - client_cert_source: Callable[[], Tuple[bytes, bytes]] = None, - ssl_channel_credentials: grpc.ChannelCredentials = None, - client_cert_source_for_mtls: Callable[[], Tuple[bytes, bytes]] = None, + credentials: Optional[ga_credentials.Credentials] = None, + credentials_file: Optional[str] = None, + scopes: Optional[Sequence[str]] = None, + channel: Optional[grpc.Channel] = None, + api_mtls_endpoint: Optional[str] = None, + client_cert_source: Optional[Callable[[], Tuple[bytes, bytes]]] = None, + ssl_channel_credentials: Optional[grpc.ChannelCredentials] = None, + client_cert_source_for_mtls: Optional[Callable[[], Tuple[bytes, bytes]]] = None, quota_project_id: Optional[str] = None, client_info: gapic_v1.client_info.ClientInfo = DEFAULT_CLIENT_INFO, always_use_jwt_access: Optional[bool] = False, @@ -195,8 +195,8 @@ def __init__( def create_channel( cls, host: str = "securitycenter.googleapis.com", - credentials: ga_credentials.Credentials = None, - credentials_file: str = None, + credentials: Optional[ga_credentials.Credentials] = None, + credentials_file: Optional[str] = None, scopes: Optional[Sequence[str]] = None, quota_project_id: Optional[str] = None, **kwargs, diff --git a/google/cloud/securitycenter_v1beta1/services/security_center/transports/grpc_asyncio.py b/google/cloud/securitycenter_v1beta1/services/security_center/transports/grpc_asyncio.py index 2aef9562..6b032b57 100644 --- a/google/cloud/securitycenter_v1beta1/services/security_center/transports/grpc_asyncio.py +++ b/google/cloud/securitycenter_v1beta1/services/security_center/transports/grpc_asyncio.py @@ -62,7 +62,7 @@ class SecurityCenterGrpcAsyncIOTransport(SecurityCenterTransport): def create_channel( cls, host: str = "securitycenter.googleapis.com", - credentials: ga_credentials.Credentials = None, + credentials: Optional[ga_credentials.Credentials] = None, credentials_file: Optional[str] = None, scopes: Optional[Sequence[str]] = None, quota_project_id: Optional[str] = None, @@ -105,15 +105,15 @@ def __init__( self, *, host: str = "securitycenter.googleapis.com", - credentials: ga_credentials.Credentials = None, + credentials: Optional[ga_credentials.Credentials] = None, credentials_file: Optional[str] = None, scopes: Optional[Sequence[str]] = None, - channel: aio.Channel = None, - api_mtls_endpoint: str = None, - client_cert_source: Callable[[], Tuple[bytes, bytes]] = None, - ssl_channel_credentials: grpc.ChannelCredentials = None, - client_cert_source_for_mtls: Callable[[], Tuple[bytes, bytes]] = None, - quota_project_id=None, + channel: Optional[aio.Channel] = None, + api_mtls_endpoint: Optional[str] = None, + client_cert_source: Optional[Callable[[], Tuple[bytes, bytes]]] = None, + ssl_channel_credentials: Optional[grpc.ChannelCredentials] = None, + client_cert_source_for_mtls: Optional[Callable[[], Tuple[bytes, bytes]]] = None, + quota_project_id: Optional[str] = None, client_info: gapic_v1.client_info.ClientInfo = DEFAULT_CLIENT_INFO, always_use_jwt_access: Optional[bool] = False, api_audience: Optional[str] = None, diff --git a/google/cloud/securitycenter_v1beta1/types/asset.py b/google/cloud/securitycenter_v1beta1/types/asset.py index f3d741d4..f935efdb 100644 --- a/google/cloud/securitycenter_v1beta1/types/asset.py +++ b/google/cloud/securitycenter_v1beta1/types/asset.py @@ -13,6 +13,8 @@ # See the License for the specific language governing permissions and # limitations under the License. # +from typing import MutableMapping, MutableSequence + from google.protobuf import struct_pb2 # type: ignore from google.protobuf import timestamp_pb2 # type: ignore import proto # type: ignore @@ -49,7 +51,7 @@ class Asset(proto.Message): Security Command Center managed properties. These properties are managed by Security Command Center and cannot be modified by the user. - resource_properties (Mapping[str, google.protobuf.struct_pb2.Value]): + resource_properties (MutableMapping[str, google.protobuf.struct_pb2.Value]): Resource managed properties. These properties are managed and defined by the Google Cloud resource and cannot be modified by the user. @@ -92,57 +94,57 @@ class SecurityCenterProperties(proto.Message): The full resource name of the project the resource belongs to. See: https://cloud.google.com/apis/design/resource_names#full_resource_name - resource_owners (Sequence[str]): + resource_owners (MutableSequence[str]): Owners of the Google Cloud resource. """ - resource_name = proto.Field( + resource_name: str = proto.Field( proto.STRING, number=1, ) - resource_type = proto.Field( + resource_type: str = proto.Field( proto.STRING, number=2, ) - resource_parent = proto.Field( + resource_parent: str = proto.Field( proto.STRING, number=3, ) - resource_project = proto.Field( + resource_project: str = proto.Field( proto.STRING, number=4, ) - resource_owners = proto.RepeatedField( + resource_owners: MutableSequence[str] = proto.RepeatedField( proto.STRING, number=5, ) - name = proto.Field( + name: str = proto.Field( proto.STRING, number=1, ) - security_center_properties = proto.Field( + security_center_properties: SecurityCenterProperties = proto.Field( proto.MESSAGE, number=2, message=SecurityCenterProperties, ) - resource_properties = proto.MapField( + resource_properties: MutableMapping[str, struct_pb2.Value] = proto.MapField( proto.STRING, proto.MESSAGE, number=7, message=struct_pb2.Value, ) - security_marks = proto.Field( + security_marks: gcs_security_marks.SecurityMarks = proto.Field( proto.MESSAGE, number=8, message=gcs_security_marks.SecurityMarks, ) - create_time = proto.Field( + create_time: timestamp_pb2.Timestamp = proto.Field( proto.MESSAGE, number=9, message=timestamp_pb2.Timestamp, ) - update_time = proto.Field( + update_time: timestamp_pb2.Timestamp = proto.Field( proto.MESSAGE, number=10, message=timestamp_pb2.Timestamp, diff --git a/google/cloud/securitycenter_v1beta1/types/finding.py b/google/cloud/securitycenter_v1beta1/types/finding.py index d25738c6..c02aef73 100644 --- a/google/cloud/securitycenter_v1beta1/types/finding.py +++ b/google/cloud/securitycenter_v1beta1/types/finding.py @@ -13,6 +13,8 @@ # See the License for the specific language governing permissions and # limitations under the License. # +from typing import MutableMapping, MutableSequence + from google.protobuf import struct_pb2 # type: ignore from google.protobuf import timestamp_pb2 # type: ignore import proto # type: ignore @@ -68,7 +70,7 @@ class Finding(proto.Message): additional information about the finding can be found. This field is guaranteed to be either empty or a well formed URL. - source_properties (Mapping[str, google.protobuf.struct_pb2.Value]): + source_properties (MutableMapping[str, google.protobuf.struct_pb2.Value]): Source specific properties. These properties are managed by the source that writes the finding. The key names in the source_properties map must be between 1 and 255 characters, @@ -99,48 +101,48 @@ class State(proto.Enum): ACTIVE = 1 INACTIVE = 2 - name = proto.Field( + name: str = proto.Field( proto.STRING, number=1, ) - parent = proto.Field( + parent: str = proto.Field( proto.STRING, number=2, ) - resource_name = proto.Field( + resource_name: str = proto.Field( proto.STRING, number=3, ) - state = proto.Field( + state: State = proto.Field( proto.ENUM, number=4, enum=State, ) - category = proto.Field( + category: str = proto.Field( proto.STRING, number=5, ) - external_uri = proto.Field( + external_uri: str = proto.Field( proto.STRING, number=6, ) - source_properties = proto.MapField( + source_properties: MutableMapping[str, struct_pb2.Value] = proto.MapField( proto.STRING, proto.MESSAGE, number=7, message=struct_pb2.Value, ) - security_marks = proto.Field( + security_marks: gcs_security_marks.SecurityMarks = proto.Field( proto.MESSAGE, number=8, message=gcs_security_marks.SecurityMarks, ) - event_time = proto.Field( + event_time: timestamp_pb2.Timestamp = proto.Field( proto.MESSAGE, number=9, message=timestamp_pb2.Timestamp, ) - create_time = proto.Field( + create_time: timestamp_pb2.Timestamp = proto.Field( proto.MESSAGE, number=10, message=timestamp_pb2.Timestamp, diff --git a/google/cloud/securitycenter_v1beta1/types/organization_settings.py b/google/cloud/securitycenter_v1beta1/types/organization_settings.py index 7b9892ce..2d94e528 100644 --- a/google/cloud/securitycenter_v1beta1/types/organization_settings.py +++ b/google/cloud/securitycenter_v1beta1/types/organization_settings.py @@ -13,6 +13,8 @@ # See the License for the specific language governing permissions and # limitations under the License. # +from typing import MutableMapping, MutableSequence + import proto # type: ignore __protobuf__ = proto.module( @@ -47,7 +49,7 @@ class AssetDiscoveryConfig(proto.Message): r"""The configuration used for Asset Discovery runs. Attributes: - project_ids (Sequence[str]): + project_ids (MutableSequence[str]): The project ids to use for filtering asset discovery. inclusion_mode (google.cloud.securitycenter_v1beta1.types.OrganizationSettings.AssetDiscoveryConfig.InclusionMode): @@ -69,25 +71,27 @@ class InclusionMode(proto.Enum): INCLUDE_ONLY = 1 EXCLUDE = 2 - project_ids = proto.RepeatedField( + project_ids: MutableSequence[str] = proto.RepeatedField( proto.STRING, number=1, ) - inclusion_mode = proto.Field( - proto.ENUM, - number=2, - enum="OrganizationSettings.AssetDiscoveryConfig.InclusionMode", + inclusion_mode: "OrganizationSettings.AssetDiscoveryConfig.InclusionMode" = ( + proto.Field( + proto.ENUM, + number=2, + enum="OrganizationSettings.AssetDiscoveryConfig.InclusionMode", + ) ) - name = proto.Field( + name: str = proto.Field( proto.STRING, number=1, ) - enable_asset_discovery = proto.Field( + enable_asset_discovery: bool = proto.Field( proto.BOOL, number=2, ) - asset_discovery_config = proto.Field( + asset_discovery_config: AssetDiscoveryConfig = proto.Field( proto.MESSAGE, number=3, message=AssetDiscoveryConfig, diff --git a/google/cloud/securitycenter_v1beta1/types/run_asset_discovery_response.py b/google/cloud/securitycenter_v1beta1/types/run_asset_discovery_response.py index 336c36ed..6b81fa6c 100644 --- a/google/cloud/securitycenter_v1beta1/types/run_asset_discovery_response.py +++ b/google/cloud/securitycenter_v1beta1/types/run_asset_discovery_response.py @@ -13,6 +13,8 @@ # See the License for the specific language governing permissions and # limitations under the License. # +from typing import MutableMapping, MutableSequence + from google.protobuf import duration_pb2 # type: ignore import proto # type: ignore @@ -42,12 +44,12 @@ class State(proto.Enum): SUPERSEDED = 2 TERMINATED = 3 - state = proto.Field( + state: State = proto.Field( proto.ENUM, number=1, enum=State, ) - duration = proto.Field( + duration: duration_pb2.Duration = proto.Field( proto.MESSAGE, number=2, message=duration_pb2.Duration, diff --git a/google/cloud/securitycenter_v1beta1/types/security_marks.py b/google/cloud/securitycenter_v1beta1/types/security_marks.py index 31cdf5ab..de3f34a8 100644 --- a/google/cloud/securitycenter_v1beta1/types/security_marks.py +++ b/google/cloud/securitycenter_v1beta1/types/security_marks.py @@ -13,6 +13,8 @@ # See the License for the specific language governing permissions and # limitations under the License. # +from typing import MutableMapping, MutableSequence + import proto # type: ignore __protobuf__ = proto.module( @@ -37,7 +39,7 @@ class SecurityMarks(proto.Message): Examples: "organizations/{organization_id}/assets/{asset_id}/securityMarks" "organizations/{organization_id}/sources/{source_id}/findings/{finding_id}/securityMarks". - marks (Mapping[str, str]): + marks (MutableMapping[str, str]): Mutable user specified security marks belonging to the parent resource. Constraints are as follows: @@ -49,11 +51,11 @@ class SecurityMarks(proto.Message): (inclusive) """ - name = proto.Field( + name: str = proto.Field( proto.STRING, number=1, ) - marks = proto.MapField( + marks: MutableMapping[str, str] = proto.MapField( proto.STRING, proto.STRING, number=2, diff --git a/google/cloud/securitycenter_v1beta1/types/securitycenter_service.py b/google/cloud/securitycenter_v1beta1/types/securitycenter_service.py index 8ff5a7a0..6551cc47 100644 --- a/google/cloud/securitycenter_v1beta1/types/securitycenter_service.py +++ b/google/cloud/securitycenter_v1beta1/types/securitycenter_service.py @@ -13,6 +13,8 @@ # See the License for the specific language governing permissions and # limitations under the License. # +from typing import MutableMapping, MutableSequence + from google.protobuf import duration_pb2 # type: ignore from google.protobuf import field_mask_pb2 # type: ignore from google.protobuf import struct_pb2 # type: ignore @@ -77,15 +79,15 @@ class CreateFindingRequest(proto.Message): fields on this resource. """ - parent = proto.Field( + parent: str = proto.Field( proto.STRING, number=1, ) - finding_id = proto.Field( + finding_id: str = proto.Field( proto.STRING, number=2, ) - finding = proto.Field( + finding: gcs_finding.Finding = proto.Field( proto.MESSAGE, number=3, message=gcs_finding.Finding, @@ -105,11 +107,11 @@ class CreateSourceRequest(proto.Message): ignored. """ - parent = proto.Field( + parent: str = proto.Field( proto.STRING, number=1, ) - source = proto.Field( + source: gcs_source.Source = proto.Field( proto.MESSAGE, number=2, message=gcs_source.Source, @@ -126,7 +128,7 @@ class GetOrganizationSettingsRequest(proto.Message): "organizations/[organization_id]/organizationSettings". """ - name = proto.Field( + name: str = proto.Field( proto.STRING, number=1, ) @@ -141,7 +143,7 @@ class GetSourceRequest(proto.Message): is "organizations/[organization_id]/source/[source_id]". """ - name = proto.Field( + name: str = proto.Field( proto.STRING, number=1, ) @@ -245,33 +247,33 @@ class GroupAssetsRequest(proto.Message): maximum is 1000. """ - parent = proto.Field( + parent: str = proto.Field( proto.STRING, number=1, ) - filter = proto.Field( + filter: str = proto.Field( proto.STRING, number=2, ) - group_by = proto.Field( + group_by: str = proto.Field( proto.STRING, number=3, ) - compare_duration = proto.Field( + compare_duration: duration_pb2.Duration = proto.Field( proto.MESSAGE, number=4, message=duration_pb2.Duration, ) - read_time = proto.Field( + read_time: timestamp_pb2.Timestamp = proto.Field( proto.MESSAGE, number=5, message=timestamp_pb2.Timestamp, ) - page_token = proto.Field( + page_token: str = proto.Field( proto.STRING, number=7, ) - page_size = proto.Field( + page_size: int = proto.Field( proto.INT32, number=8, ) @@ -281,7 +283,7 @@ class GroupAssetsResponse(proto.Message): r"""Response message for grouping by assets. Attributes: - group_by_results (Sequence[google.cloud.securitycenter_v1beta1.types.GroupResult]): + group_by_results (MutableSequence[google.cloud.securitycenter_v1beta1.types.GroupResult]): Group results. There exists an element for each existing unique combination of property/values. The element contains a count @@ -298,17 +300,17 @@ class GroupAssetsResponse(proto.Message): def raw_page(self): return self - group_by_results = proto.RepeatedField( + group_by_results: MutableSequence["GroupResult"] = proto.RepeatedField( proto.MESSAGE, number=1, message="GroupResult", ) - read_time = proto.Field( + read_time: timestamp_pb2.Timestamp = proto.Field( proto.MESSAGE, number=2, message=timestamp_pb2.Timestamp, ) - next_page_token = proto.Field( + next_page_token: str = proto.Field( proto.STRING, number=3, ) @@ -381,28 +383,28 @@ class GroupFindingsRequest(proto.Message): maximum is 1000. """ - parent = proto.Field( + parent: str = proto.Field( proto.STRING, number=1, ) - filter = proto.Field( + filter: str = proto.Field( proto.STRING, number=2, ) - group_by = proto.Field( + group_by: str = proto.Field( proto.STRING, number=3, ) - read_time = proto.Field( + read_time: timestamp_pb2.Timestamp = proto.Field( proto.MESSAGE, number=4, message=timestamp_pb2.Timestamp, ) - page_token = proto.Field( + page_token: str = proto.Field( proto.STRING, number=5, ) - page_size = proto.Field( + page_size: int = proto.Field( proto.INT32, number=6, ) @@ -412,7 +414,7 @@ class GroupFindingsResponse(proto.Message): r"""Response message for group by findings. Attributes: - group_by_results (Sequence[google.cloud.securitycenter_v1beta1.types.GroupResult]): + group_by_results (MutableSequence[google.cloud.securitycenter_v1beta1.types.GroupResult]): Group results. There exists an element for each existing unique combination of property/values. The element contains a count @@ -429,17 +431,17 @@ class GroupFindingsResponse(proto.Message): def raw_page(self): return self - group_by_results = proto.RepeatedField( + group_by_results: MutableSequence["GroupResult"] = proto.RepeatedField( proto.MESSAGE, number=1, message="GroupResult", ) - read_time = proto.Field( + read_time: timestamp_pb2.Timestamp = proto.Field( proto.MESSAGE, number=2, message=timestamp_pb2.Timestamp, ) - next_page_token = proto.Field( + next_page_token: str = proto.Field( proto.STRING, number=3, ) @@ -450,7 +452,7 @@ class GroupResult(proto.Message): request. Attributes: - properties (Mapping[str, google.protobuf.struct_pb2.Value]): + properties (MutableMapping[str, google.protobuf.struct_pb2.Value]): Properties matching the groupBy fields in the request. count (int): @@ -458,13 +460,13 @@ class GroupResult(proto.Message): properties. """ - properties = proto.MapField( + properties: MutableMapping[str, struct_pb2.Value] = proto.MapField( proto.STRING, proto.MESSAGE, number=1, message=struct_pb2.Value, ) - count = proto.Field( + count: int = proto.Field( proto.INT64, number=2, ) @@ -488,15 +490,15 @@ class ListSourcesRequest(proto.Message): maximum is 1000. """ - parent = proto.Field( + parent: str = proto.Field( proto.STRING, number=1, ) - page_token = proto.Field( + page_token: str = proto.Field( proto.STRING, number=2, ) - page_size = proto.Field( + page_size: int = proto.Field( proto.INT32, number=7, ) @@ -506,7 +508,7 @@ class ListSourcesResponse(proto.Message): r"""Response message for listing sources. Attributes: - sources (Sequence[google.cloud.securitycenter_v1beta1.types.Source]): + sources (MutableSequence[google.cloud.securitycenter_v1beta1.types.Source]): Sources belonging to the requested parent. next_page_token (str): Token to retrieve the next page of results, @@ -517,12 +519,12 @@ class ListSourcesResponse(proto.Message): def raw_page(self): return self - sources = proto.RepeatedField( + sources: MutableSequence[gcs_source.Source] = proto.RepeatedField( proto.MESSAGE, number=1, message=gcs_source.Source, ) - next_page_token = proto.Field( + next_page_token: str = proto.Field( proto.STRING, number=2, ) @@ -626,38 +628,38 @@ class ListAssetsRequest(proto.Message): maximum is 1000. """ - parent = proto.Field( + parent: str = proto.Field( proto.STRING, number=1, ) - filter = proto.Field( + filter: str = proto.Field( proto.STRING, number=2, ) - order_by = proto.Field( + order_by: str = proto.Field( proto.STRING, number=3, ) - read_time = proto.Field( + read_time: timestamp_pb2.Timestamp = proto.Field( proto.MESSAGE, number=4, message=timestamp_pb2.Timestamp, ) - compare_duration = proto.Field( + compare_duration: duration_pb2.Duration = proto.Field( proto.MESSAGE, number=5, message=duration_pb2.Duration, ) - field_mask = proto.Field( + field_mask: field_mask_pb2.FieldMask = proto.Field( proto.MESSAGE, number=7, message=field_mask_pb2.FieldMask, ) - page_token = proto.Field( + page_token: str = proto.Field( proto.STRING, number=8, ) - page_size = proto.Field( + page_size: int = proto.Field( proto.INT32, number=9, ) @@ -667,7 +669,7 @@ class ListAssetsResponse(proto.Message): r"""Response message for listing assets. Attributes: - list_assets_results (Sequence[google.cloud.securitycenter_v1beta1.types.ListAssetsResponse.ListAssetsResult]): + list_assets_results (MutableSequence[google.cloud.securitycenter_v1beta1.types.ListAssetsResponse.ListAssetsResult]): Assets matching the list request. read_time (google.protobuf.timestamp_pb2.Timestamp): Time used for executing the list request. @@ -702,12 +704,12 @@ class State(proto.Enum): REMOVED = 3 ACTIVE = 4 - asset = proto.Field( + asset: gcs_asset.Asset = proto.Field( proto.MESSAGE, number=1, message=gcs_asset.Asset, ) - state = proto.Field( + state: "ListAssetsResponse.ListAssetsResult.State" = proto.Field( proto.ENUM, number=2, enum="ListAssetsResponse.ListAssetsResult.State", @@ -717,21 +719,21 @@ class State(proto.Enum): def raw_page(self): return self - list_assets_results = proto.RepeatedField( + list_assets_results: MutableSequence[ListAssetsResult] = proto.RepeatedField( proto.MESSAGE, number=1, message=ListAssetsResult, ) - read_time = proto.Field( + read_time: timestamp_pb2.Timestamp = proto.Field( proto.MESSAGE, number=2, message=timestamp_pb2.Timestamp, ) - next_page_token = proto.Field( + next_page_token: str = proto.Field( proto.STRING, number=3, ) - total_size = proto.Field( + total_size: int = proto.Field( proto.INT32, number=4, ) @@ -808,33 +810,33 @@ class ListFindingsRequest(proto.Message): maximum is 1000. """ - parent = proto.Field( + parent: str = proto.Field( proto.STRING, number=1, ) - filter = proto.Field( + filter: str = proto.Field( proto.STRING, number=2, ) - order_by = proto.Field( + order_by: str = proto.Field( proto.STRING, number=3, ) - read_time = proto.Field( + read_time: timestamp_pb2.Timestamp = proto.Field( proto.MESSAGE, number=4, message=timestamp_pb2.Timestamp, ) - field_mask = proto.Field( + field_mask: field_mask_pb2.FieldMask = proto.Field( proto.MESSAGE, number=5, message=field_mask_pb2.FieldMask, ) - page_token = proto.Field( + page_token: str = proto.Field( proto.STRING, number=6, ) - page_size = proto.Field( + page_size: int = proto.Field( proto.INT32, number=7, ) @@ -844,7 +846,7 @@ class ListFindingsResponse(proto.Message): r"""Response message for listing findings. Attributes: - findings (Sequence[google.cloud.securitycenter_v1beta1.types.Finding]): + findings (MutableSequence[google.cloud.securitycenter_v1beta1.types.Finding]): Findings matching the list request. read_time (google.protobuf.timestamp_pb2.Timestamp): Time used for executing the list request. @@ -860,21 +862,21 @@ class ListFindingsResponse(proto.Message): def raw_page(self): return self - findings = proto.RepeatedField( + findings: MutableSequence[gcs_finding.Finding] = proto.RepeatedField( proto.MESSAGE, number=1, message=gcs_finding.Finding, ) - read_time = proto.Field( + read_time: timestamp_pb2.Timestamp = proto.Field( proto.MESSAGE, number=2, message=timestamp_pb2.Timestamp, ) - next_page_token = proto.Field( + next_page_token: str = proto.Field( proto.STRING, number=3, ) - total_size = proto.Field( + total_size: int = proto.Field( proto.INT32, number=4, ) @@ -896,16 +898,16 @@ class SetFindingStateRequest(proto.Message): takes effect. """ - name = proto.Field( + name: str = proto.Field( proto.STRING, number=1, ) - state = proto.Field( + state: gcs_finding.Finding.State = proto.Field( proto.ENUM, number=2, enum=gcs_finding.Finding.State, ) - start_time = proto.Field( + start_time: timestamp_pb2.Timestamp = proto.Field( proto.MESSAGE, number=3, message=timestamp_pb2.Timestamp, @@ -922,7 +924,7 @@ class RunAssetDiscoveryRequest(proto.Message): for. Its format is "organizations/[organization_id]". """ - parent = proto.Field( + parent: str = proto.Field( proto.STRING, number=1, ) @@ -946,12 +948,12 @@ class UpdateFindingRequest(proto.Message): specified when creating a finding. """ - finding = proto.Field( + finding: gcs_finding.Finding = proto.Field( proto.MESSAGE, number=1, message=gcs_finding.Finding, ) - update_mask = proto.Field( + update_mask: field_mask_pb2.FieldMask = proto.Field( proto.MESSAGE, number=2, message=field_mask_pb2.FieldMask, @@ -970,12 +972,12 @@ class UpdateOrganizationSettingsRequest(proto.Message): settings resource. """ - organization_settings = proto.Field( + organization_settings: gcs_organization_settings.OrganizationSettings = proto.Field( proto.MESSAGE, number=1, message=gcs_organization_settings.OrganizationSettings, ) - update_mask = proto.Field( + update_mask: field_mask_pb2.FieldMask = proto.Field( proto.MESSAGE, number=2, message=field_mask_pb2.FieldMask, @@ -993,12 +995,12 @@ class UpdateSourceRequest(proto.Message): resource. """ - source = proto.Field( + source: gcs_source.Source = proto.Field( proto.MESSAGE, number=1, message=gcs_source.Source, ) - update_mask = proto.Field( + update_mask: field_mask_pb2.FieldMask = proto.Field( proto.MESSAGE, number=2, message=field_mask_pb2.FieldMask, @@ -1020,17 +1022,17 @@ class UpdateSecurityMarksRequest(proto.Message): take effect. """ - security_marks = proto.Field( + security_marks: gcs_security_marks.SecurityMarks = proto.Field( proto.MESSAGE, number=1, message=gcs_security_marks.SecurityMarks, ) - update_mask = proto.Field( + update_mask: field_mask_pb2.FieldMask = proto.Field( proto.MESSAGE, number=2, message=field_mask_pb2.FieldMask, ) - start_time = proto.Field( + start_time: timestamp_pb2.Timestamp = proto.Field( proto.MESSAGE, number=3, message=timestamp_pb2.Timestamp, diff --git a/google/cloud/securitycenter_v1beta1/types/source.py b/google/cloud/securitycenter_v1beta1/types/source.py index a6e7f8f7..587546e3 100644 --- a/google/cloud/securitycenter_v1beta1/types/source.py +++ b/google/cloud/securitycenter_v1beta1/types/source.py @@ -13,6 +13,8 @@ # See the License for the specific language governing permissions and # limitations under the License. # +from typing import MutableMapping, MutableSequence + import proto # type: ignore __protobuf__ = proto.module( @@ -54,15 +56,15 @@ class Source(proto.Message): outdated/insecure libraries.". """ - name = proto.Field( + name: str = proto.Field( proto.STRING, number=1, ) - display_name = proto.Field( + display_name: str = proto.Field( proto.STRING, number=2, ) - description = proto.Field( + description: str = proto.Field( proto.STRING, number=3, ) diff --git a/google/cloud/securitycenter_v1p1beta1/__init__.py b/google/cloud/securitycenter_v1p1beta1/__init__.py index 93053f8e..64c20f57 100644 --- a/google/cloud/securitycenter_v1p1beta1/__init__.py +++ b/google/cloud/securitycenter_v1p1beta1/__init__.py @@ -13,6 +13,10 @@ # See the License for the specific language governing permissions and # limitations under the License. # +from google.cloud.securitycenter import gapic_version as package_version + +__version__ = package_version.__version__ + from .services.security_center import SecurityCenterAsyncClient, SecurityCenterClient from .types.asset import Asset diff --git a/google/cloud/securitycenter_v1p1beta1/services/security_center/async_client.py b/google/cloud/securitycenter_v1p1beta1/services/security_center/async_client.py index 5bc1a0f7..0052a57f 100644 --- a/google/cloud/securitycenter_v1p1beta1/services/security_center/async_client.py +++ b/google/cloud/securitycenter_v1p1beta1/services/security_center/async_client.py @@ -16,7 +16,17 @@ from collections import OrderedDict import functools import re -from typing import Dict, Mapping, Optional, Sequence, Tuple, Type, Union +from typing import ( + Dict, + Mapping, + MutableMapping, + MutableSequence, + Optional, + Sequence, + Tuple, + Type, + Union, +) from google.api_core import exceptions as core_exceptions from google.api_core import gapic_v1 @@ -206,9 +216,9 @@ def transport(self) -> SecurityCenterTransport: def __init__( self, *, - credentials: ga_credentials.Credentials = None, + credentials: Optional[ga_credentials.Credentials] = None, transport: Union[str, SecurityCenterTransport] = "grpc_asyncio", - client_options: ClientOptions = None, + client_options: Optional[ClientOptions] = None, client_info: gapic_v1.client_info.ClientInfo = DEFAULT_CLIENT_INFO, ) -> None: """Instantiates the security center client. @@ -252,12 +262,14 @@ def __init__( async def create_source( self, - request: Union[securitycenter_service.CreateSourceRequest, dict] = None, + request: Optional[ + Union[securitycenter_service.CreateSourceRequest, dict] + ] = None, *, - parent: str = None, - source: gcs_source.Source = None, + parent: Optional[str] = None, + source: Optional[gcs_source.Source] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> gcs_source.Source: r"""Creates a source. @@ -289,7 +301,7 @@ async def sample_create_source(): print(response) Args: - request (Union[google.cloud.securitycenter_v1p1beta1.types.CreateSourceRequest, dict]): + request (Optional[Union[google.cloud.securitycenter_v1p1beta1.types.CreateSourceRequest, dict]]): The request object. Request message for creating a source. parent (:class:`str`): @@ -369,13 +381,15 @@ async def sample_create_source(): async def create_finding( self, - request: Union[securitycenter_service.CreateFindingRequest, dict] = None, + request: Optional[ + Union[securitycenter_service.CreateFindingRequest, dict] + ] = None, *, - parent: str = None, - finding_id: str = None, - finding: gcs_finding.Finding = None, + parent: Optional[str] = None, + finding_id: Optional[str] = None, + finding: Optional[gcs_finding.Finding] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> gcs_finding.Finding: r"""Creates a finding. The corresponding source must @@ -409,7 +423,7 @@ async def sample_create_finding(): print(response) Args: - request (Union[google.cloud.securitycenter_v1p1beta1.types.CreateFindingRequest, dict]): + request (Optional[Union[google.cloud.securitycenter_v1p1beta1.types.CreateFindingRequest, dict]]): The request object. Request message for creating a finding. parent (:class:`str`): @@ -502,15 +516,17 @@ async def sample_create_finding(): async def create_notification_config( self, - request: Union[ - securitycenter_service.CreateNotificationConfigRequest, dict + request: Optional[ + Union[securitycenter_service.CreateNotificationConfigRequest, dict] ] = None, *, - parent: str = None, - config_id: str = None, - notification_config: gcs_notification_config.NotificationConfig = None, + parent: Optional[str] = None, + config_id: Optional[str] = None, + notification_config: Optional[ + gcs_notification_config.NotificationConfig + ] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> gcs_notification_config.NotificationConfig: r"""Creates a notification config. @@ -543,7 +559,7 @@ async def sample_create_notification_config(): print(response) Args: - request (Union[google.cloud.securitycenter_v1p1beta1.types.CreateNotificationConfigRequest, dict]): + request (Optional[Union[google.cloud.securitycenter_v1p1beta1.types.CreateNotificationConfigRequest, dict]]): The request object. Request message for creating a notification config. parent (:class:`str`): @@ -637,13 +653,13 @@ async def sample_create_notification_config(): async def delete_notification_config( self, - request: Union[ - securitycenter_service.DeleteNotificationConfigRequest, dict + request: Optional[ + Union[securitycenter_service.DeleteNotificationConfigRequest, dict] ] = None, *, - name: str = None, + name: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> None: r"""Deletes a notification config. @@ -672,7 +688,7 @@ async def sample_delete_notification_config(): await client.delete_notification_config(request=request) Args: - request (Union[google.cloud.securitycenter_v1p1beta1.types.DeleteNotificationConfigRequest, dict]): + request (Optional[Union[google.cloud.securitycenter_v1p1beta1.types.DeleteNotificationConfigRequest, dict]]): The request object. Request message for deleting a notification config. name (:class:`str`): @@ -730,11 +746,11 @@ async def sample_delete_notification_config(): async def get_iam_policy( self, - request: Union[iam_policy_pb2.GetIamPolicyRequest, dict] = None, + request: Optional[Union[iam_policy_pb2.GetIamPolicyRequest, dict]] = None, *, - resource: str = None, + resource: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> policy_pb2.Policy: r"""Gets the access control policy on the specified @@ -768,7 +784,7 @@ async def sample_get_iam_policy(): print(response) Args: - request (Union[google.iam.v1.iam_policy_pb2.GetIamPolicyRequest, dict]): + request (Optional[Union[google.iam.v1.iam_policy_pb2.GetIamPolicyRequest, dict]]): The request object. Request message for `GetIamPolicy` method. resource (:class:`str`): @@ -907,13 +923,13 @@ async def sample_get_iam_policy(): async def get_notification_config( self, - request: Union[ - securitycenter_service.GetNotificationConfigRequest, dict + request: Optional[ + Union[securitycenter_service.GetNotificationConfigRequest, dict] ] = None, *, - name: str = None, + name: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> notification_config.NotificationConfig: r"""Gets a notification config. @@ -945,7 +961,7 @@ async def sample_get_notification_config(): print(response) Args: - request (Union[google.cloud.securitycenter_v1p1beta1.types.GetNotificationConfigRequest, dict]): + request (Optional[Union[google.cloud.securitycenter_v1p1beta1.types.GetNotificationConfigRequest, dict]]): The request object. Request message for getting a notification config. name (:class:`str`): @@ -1027,13 +1043,13 @@ async def sample_get_notification_config(): async def get_organization_settings( self, - request: Union[ - securitycenter_service.GetOrganizationSettingsRequest, dict + request: Optional[ + Union[securitycenter_service.GetOrganizationSettingsRequest, dict] ] = None, *, - name: str = None, + name: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> organization_settings.OrganizationSettings: r"""Gets the settings for an organization. @@ -1065,7 +1081,7 @@ async def sample_get_organization_settings(): print(response) Args: - request (Union[google.cloud.securitycenter_v1p1beta1.types.GetOrganizationSettingsRequest, dict]): + request (Optional[Union[google.cloud.securitycenter_v1p1beta1.types.GetOrganizationSettingsRequest, dict]]): The request object. Request message for getting organization settings. name (:class:`str`): @@ -1143,11 +1159,11 @@ async def sample_get_organization_settings(): async def get_source( self, - request: Union[securitycenter_service.GetSourceRequest, dict] = None, + request: Optional[Union[securitycenter_service.GetSourceRequest, dict]] = None, *, - name: str = None, + name: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> source.Source: r"""Gets a source. @@ -1179,7 +1195,7 @@ async def sample_get_source(): print(response) Args: - request (Union[google.cloud.securitycenter_v1p1beta1.types.GetSourceRequest, dict]): + request (Optional[Union[google.cloud.securitycenter_v1p1beta1.types.GetSourceRequest, dict]]): The request object. Request message for getting a source. name (:class:`str`): @@ -1260,10 +1276,12 @@ async def sample_get_source(): async def group_assets( self, - request: Union[securitycenter_service.GroupAssetsRequest, dict] = None, + request: Optional[ + Union[securitycenter_service.GroupAssetsRequest, dict] + ] = None, *, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> pagers.GroupAssetsAsyncPager: r"""Filters an organization's assets and groups them by @@ -1298,7 +1316,7 @@ async def sample_group_assets(): print(response) Args: - request (Union[google.cloud.securitycenter_v1p1beta1.types.GroupAssetsRequest, dict]): + request (Optional[Union[google.cloud.securitycenter_v1p1beta1.types.GroupAssetsRequest, dict]]): The request object. Request message for grouping by assets. retry (google.api_core.retry.Retry): Designation of what errors, if any, @@ -1365,12 +1383,14 @@ async def sample_group_assets(): async def group_findings( self, - request: Union[securitycenter_service.GroupFindingsRequest, dict] = None, + request: Optional[ + Union[securitycenter_service.GroupFindingsRequest, dict] + ] = None, *, - parent: str = None, - group_by: str = None, + parent: Optional[str] = None, + group_by: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> pagers.GroupFindingsAsyncPager: r"""Filters an organization or source's findings and groups them by @@ -1410,7 +1430,7 @@ async def sample_group_findings(): print(response) Args: - request (Union[google.cloud.securitycenter_v1p1beta1.types.GroupFindingsRequest, dict]): + request (Optional[Union[google.cloud.securitycenter_v1p1beta1.types.GroupFindingsRequest, dict]]): The request object. Request message for grouping by findings. parent (:class:`str`): @@ -1528,11 +1548,11 @@ async def sample_group_findings(): async def list_assets( self, - request: Union[securitycenter_service.ListAssetsRequest, dict] = None, + request: Optional[Union[securitycenter_service.ListAssetsRequest, dict]] = None, *, - parent: str = None, + parent: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> pagers.ListAssetsAsyncPager: r"""Lists an organization's assets. @@ -1565,7 +1585,7 @@ async def sample_list_assets(): print(response) Args: - request (Union[google.cloud.securitycenter_v1p1beta1.types.ListAssetsRequest, dict]): + request (Optional[Union[google.cloud.securitycenter_v1p1beta1.types.ListAssetsRequest, dict]]): The request object. Request message for listing assets. parent (:class:`str`): Required. Name of the organization assets should belong @@ -1652,11 +1672,13 @@ async def sample_list_assets(): async def list_findings( self, - request: Union[securitycenter_service.ListFindingsRequest, dict] = None, + request: Optional[ + Union[securitycenter_service.ListFindingsRequest, dict] + ] = None, *, - parent: str = None, + parent: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> pagers.ListFindingsAsyncPager: r"""Lists an organization or source's findings. @@ -1693,7 +1715,7 @@ async def sample_list_findings(): print(response) Args: - request (Union[google.cloud.securitycenter_v1p1beta1.types.ListFindingsRequest, dict]): + request (Optional[Union[google.cloud.securitycenter_v1p1beta1.types.ListFindingsRequest, dict]]): The request object. Request message for listing findings. parent (:class:`str`): @@ -1788,13 +1810,13 @@ async def sample_list_findings(): async def list_notification_configs( self, - request: Union[ - securitycenter_service.ListNotificationConfigsRequest, dict + request: Optional[ + Union[securitycenter_service.ListNotificationConfigsRequest, dict] ] = None, *, - parent: str = None, + parent: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> pagers.ListNotificationConfigsAsyncPager: r"""Lists notification configs. @@ -1827,7 +1849,7 @@ async def sample_list_notification_configs(): print(response) Args: - request (Union[google.cloud.securitycenter_v1p1beta1.types.ListNotificationConfigsRequest, dict]): + request (Optional[Union[google.cloud.securitycenter_v1p1beta1.types.ListNotificationConfigsRequest, dict]]): The request object. Request message for listing notification configs. parent (:class:`str`): @@ -1916,11 +1938,13 @@ async def sample_list_notification_configs(): async def list_sources( self, - request: Union[securitycenter_service.ListSourcesRequest, dict] = None, + request: Optional[ + Union[securitycenter_service.ListSourcesRequest, dict] + ] = None, *, - parent: str = None, + parent: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> pagers.ListSourcesAsyncPager: r"""Lists all sources belonging to an organization. @@ -1953,7 +1977,7 @@ async def sample_list_sources(): print(response) Args: - request (Union[google.cloud.securitycenter_v1p1beta1.types.ListSourcesRequest, dict]): + request (Optional[Union[google.cloud.securitycenter_v1p1beta1.types.ListSourcesRequest, dict]]): The request object. Request message for listing sources. parent (:class:`str`): Required. Resource name of the parent of sources to @@ -2041,11 +2065,13 @@ async def sample_list_sources(): async def run_asset_discovery( self, - request: Union[securitycenter_service.RunAssetDiscoveryRequest, dict] = None, + request: Optional[ + Union[securitycenter_service.RunAssetDiscoveryRequest, dict] + ] = None, *, - parent: str = None, + parent: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> operation_async.AsyncOperation: r"""Runs asset discovery. The discovery is tracked with a @@ -2086,7 +2112,7 @@ async def sample_run_asset_discovery(): print(response) Args: - request (Union[google.cloud.securitycenter_v1p1beta1.types.RunAssetDiscoveryRequest, dict]): + request (Optional[Union[google.cloud.securitycenter_v1p1beta1.types.RunAssetDiscoveryRequest, dict]]): The request object. Request message for running asset discovery for an organization. parent (:class:`str`): @@ -2164,13 +2190,15 @@ async def sample_run_asset_discovery(): async def set_finding_state( self, - request: Union[securitycenter_service.SetFindingStateRequest, dict] = None, + request: Optional[ + Union[securitycenter_service.SetFindingStateRequest, dict] + ] = None, *, - name: str = None, - state: finding.Finding.State = None, - start_time: timestamp_pb2.Timestamp = None, + name: Optional[str] = None, + state: Optional[finding.Finding.State] = None, + start_time: Optional[timestamp_pb2.Timestamp] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> finding.Finding: r"""Updates the state of a finding. @@ -2203,7 +2231,7 @@ async def sample_set_finding_state(): print(response) Args: - request (Union[google.cloud.securitycenter_v1p1beta1.types.SetFindingStateRequest, dict]): + request (Optional[Union[google.cloud.securitycenter_v1p1beta1.types.SetFindingStateRequest, dict]]): The request object. Request message for updating a finding's state. name (:class:`str`): @@ -2297,11 +2325,11 @@ async def sample_set_finding_state(): async def set_iam_policy( self, - request: Union[iam_policy_pb2.SetIamPolicyRequest, dict] = None, + request: Optional[Union[iam_policy_pb2.SetIamPolicyRequest, dict]] = None, *, - resource: str = None, + resource: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> policy_pb2.Policy: r"""Sets the access control policy on the specified @@ -2335,7 +2363,7 @@ async def sample_set_iam_policy(): print(response) Args: - request (Union[google.iam.v1.iam_policy_pb2.SetIamPolicyRequest, dict]): + request (Optional[Union[google.iam.v1.iam_policy_pb2.SetIamPolicyRequest, dict]]): The request object. Request message for `SetIamPolicy` method. resource (:class:`str`): @@ -2464,12 +2492,12 @@ async def sample_set_iam_policy(): async def test_iam_permissions( self, - request: Union[iam_policy_pb2.TestIamPermissionsRequest, dict] = None, + request: Optional[Union[iam_policy_pb2.TestIamPermissionsRequest, dict]] = None, *, - resource: str = None, - permissions: Sequence[str] = None, + resource: Optional[str] = None, + permissions: Optional[MutableSequence[str]] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> iam_policy_pb2.TestIamPermissionsResponse: r"""Returns the permissions that a caller has on the @@ -2504,7 +2532,7 @@ async def sample_test_iam_permissions(): print(response) Args: - request (Union[google.iam.v1.iam_policy_pb2.TestIamPermissionsRequest, dict]): + request (Optional[Union[google.iam.v1.iam_policy_pb2.TestIamPermissionsRequest, dict]]): The request object. Request message for `TestIamPermissions` method. resource (:class:`str`): @@ -2516,7 +2544,7 @@ async def sample_test_iam_permissions(): This corresponds to the ``resource`` field on the ``request`` instance; if ``request`` is provided, this should not be set. - permissions (:class:`Sequence[str]`): + permissions (:class:`MutableSequence[str]`): The set of permissions to check for the ``resource``. Permissions with wildcards (such as '*' or 'storage.*') are not allowed. For more information see `IAM @@ -2592,12 +2620,14 @@ async def sample_test_iam_permissions(): async def update_finding( self, - request: Union[securitycenter_service.UpdateFindingRequest, dict] = None, + request: Optional[ + Union[securitycenter_service.UpdateFindingRequest, dict] + ] = None, *, - finding: gcs_finding.Finding = None, - update_mask: field_mask_pb2.FieldMask = None, + finding: Optional[gcs_finding.Finding] = None, + update_mask: Optional[field_mask_pb2.FieldMask] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> gcs_finding.Finding: r"""Creates or updates a finding. The corresponding @@ -2629,7 +2659,7 @@ async def sample_update_finding(): print(response) Args: - request (Union[google.cloud.securitycenter_v1p1beta1.types.UpdateFindingRequest, dict]): + request (Optional[Union[google.cloud.securitycenter_v1p1beta1.types.UpdateFindingRequest, dict]]): The request object. Request message for updating or creating a finding. finding (:class:`google.cloud.securitycenter_v1p1beta1.types.Finding`): @@ -2725,14 +2755,16 @@ async def sample_update_finding(): async def update_notification_config( self, - request: Union[ - securitycenter_service.UpdateNotificationConfigRequest, dict + request: Optional[ + Union[securitycenter_service.UpdateNotificationConfigRequest, dict] ] = None, *, - notification_config: gcs_notification_config.NotificationConfig = None, - update_mask: field_mask_pb2.FieldMask = None, + notification_config: Optional[ + gcs_notification_config.NotificationConfig + ] = None, + update_mask: Optional[field_mask_pb2.FieldMask] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> gcs_notification_config.NotificationConfig: r"""Updates a notification config. The following update fields are @@ -2764,7 +2796,7 @@ async def sample_update_notification_config(): print(response) Args: - request (Union[google.cloud.securitycenter_v1p1beta1.types.UpdateNotificationConfigRequest, dict]): + request (Optional[Union[google.cloud.securitycenter_v1p1beta1.types.UpdateNotificationConfigRequest, dict]]): The request object. Request message for updating a notification config. notification_config (:class:`google.cloud.securitycenter_v1p1beta1.types.NotificationConfig`): @@ -2848,13 +2880,15 @@ async def sample_update_notification_config(): async def update_organization_settings( self, - request: Union[ - securitycenter_service.UpdateOrganizationSettingsRequest, dict + request: Optional[ + Union[securitycenter_service.UpdateOrganizationSettingsRequest, dict] ] = None, *, - organization_settings: gcs_organization_settings.OrganizationSettings = None, + organization_settings: Optional[ + gcs_organization_settings.OrganizationSettings + ] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> gcs_organization_settings.OrganizationSettings: r"""Updates an organization's settings. @@ -2885,7 +2919,7 @@ async def sample_update_organization_settings(): print(response) Args: - request (Union[google.cloud.securitycenter_v1p1beta1.types.UpdateOrganizationSettingsRequest, dict]): + request (Optional[Union[google.cloud.securitycenter_v1p1beta1.types.UpdateOrganizationSettingsRequest, dict]]): The request object. Request message for updating an organization's settings. organization_settings (:class:`google.cloud.securitycenter_v1p1beta1.types.OrganizationSettings`): @@ -2954,12 +2988,14 @@ async def sample_update_organization_settings(): async def update_source( self, - request: Union[securitycenter_service.UpdateSourceRequest, dict] = None, + request: Optional[ + Union[securitycenter_service.UpdateSourceRequest, dict] + ] = None, *, - source: gcs_source.Source = None, - update_mask: field_mask_pb2.FieldMask = None, + source: Optional[gcs_source.Source] = None, + update_mask: Optional[field_mask_pb2.FieldMask] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> gcs_source.Source: r"""Updates a source. @@ -2990,7 +3026,7 @@ async def sample_update_source(): print(response) Args: - request (Union[google.cloud.securitycenter_v1p1beta1.types.UpdateSourceRequest, dict]): + request (Optional[Union[google.cloud.securitycenter_v1p1beta1.types.UpdateSourceRequest, dict]]): The request object. Request message for updating a source. source (:class:`google.cloud.securitycenter_v1p1beta1.types.Source`): @@ -3073,12 +3109,14 @@ async def sample_update_source(): async def update_security_marks( self, - request: Union[securitycenter_service.UpdateSecurityMarksRequest, dict] = None, + request: Optional[ + Union[securitycenter_service.UpdateSecurityMarksRequest, dict] + ] = None, *, - security_marks: gcs_security_marks.SecurityMarks = None, - update_mask: field_mask_pb2.FieldMask = None, + security_marks: Optional[gcs_security_marks.SecurityMarks] = None, + update_mask: Optional[field_mask_pb2.FieldMask] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> gcs_security_marks.SecurityMarks: r"""Updates security marks. @@ -3109,7 +3147,7 @@ async def sample_update_security_marks(): print(response) Args: - request (Union[google.cloud.securitycenter_v1p1beta1.types.UpdateSecurityMarksRequest, dict]): + request (Optional[Union[google.cloud.securitycenter_v1p1beta1.types.UpdateSecurityMarksRequest, dict]]): The request object. Request message for updating a SecurityMarks resource. security_marks (:class:`google.cloud.securitycenter_v1p1beta1.types.SecurityMarks`): diff --git a/google/cloud/securitycenter_v1p1beta1/services/security_center/client.py b/google/cloud/securitycenter_v1p1beta1/services/security_center/client.py index d0a8e6c3..505cb8a9 100644 --- a/google/cloud/securitycenter_v1p1beta1/services/security_center/client.py +++ b/google/cloud/securitycenter_v1p1beta1/services/security_center/client.py @@ -16,7 +16,18 @@ from collections import OrderedDict import os import re -from typing import Dict, Mapping, Optional, Sequence, Tuple, Type, Union +from typing import ( + Dict, + Mapping, + MutableMapping, + MutableSequence, + Optional, + Sequence, + Tuple, + Type, + Union, + cast, +) from google.api_core import client_options as client_options_lib from google.api_core import exceptions as core_exceptions @@ -83,7 +94,7 @@ class SecurityCenterClientMeta(type): def get_transport_class( cls, - label: str = None, + label: Optional[str] = None, ) -> Type[SecurityCenterTransport]: """Returns an appropriate transport class. @@ -472,8 +483,8 @@ def __init__( self, *, credentials: Optional[ga_credentials.Credentials] = None, - transport: Union[str, SecurityCenterTransport, None] = None, - client_options: Optional[client_options_lib.ClientOptions] = None, + transport: Optional[Union[str, SecurityCenterTransport]] = None, + client_options: Optional[Union[client_options_lib.ClientOptions, dict]] = None, client_info: gapic_v1.client_info.ClientInfo = DEFAULT_CLIENT_INFO, ) -> None: """Instantiates the security center client. @@ -487,7 +498,7 @@ def __init__( transport (Union[str, SecurityCenterTransport]): The transport to use. If set to None, a transport is chosen automatically. - client_options (google.api_core.client_options.ClientOptions): Custom options for the + client_options (Optional[Union[google.api_core.client_options.ClientOptions, dict]]): Custom options for the client. It won't take effect if a ``transport`` instance is provided. (1) The ``api_endpoint`` property can be used to override the default endpoint provided by the client. GOOGLE_API_USE_MTLS_ENDPOINT @@ -517,6 +528,7 @@ def __init__( client_options = client_options_lib.from_dict(client_options) if client_options is None: client_options = client_options_lib.ClientOptions() + client_options = cast(client_options_lib.ClientOptions, client_options) api_endpoint, client_cert_source_func = self.get_mtls_endpoint_and_cert_source( client_options @@ -569,12 +581,14 @@ def __init__( def create_source( self, - request: Union[securitycenter_service.CreateSourceRequest, dict] = None, + request: Optional[ + Union[securitycenter_service.CreateSourceRequest, dict] + ] = None, *, - parent: str = None, - source: gcs_source.Source = None, + parent: Optional[str] = None, + source: Optional[gcs_source.Source] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> gcs_source.Source: r"""Creates a source. @@ -686,13 +700,15 @@ def sample_create_source(): def create_finding( self, - request: Union[securitycenter_service.CreateFindingRequest, dict] = None, + request: Optional[ + Union[securitycenter_service.CreateFindingRequest, dict] + ] = None, *, - parent: str = None, - finding_id: str = None, - finding: gcs_finding.Finding = None, + parent: Optional[str] = None, + finding_id: Optional[str] = None, + finding: Optional[gcs_finding.Finding] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> gcs_finding.Finding: r"""Creates a finding. The corresponding source must @@ -819,15 +835,17 @@ def sample_create_finding(): def create_notification_config( self, - request: Union[ - securitycenter_service.CreateNotificationConfigRequest, dict + request: Optional[ + Union[securitycenter_service.CreateNotificationConfigRequest, dict] ] = None, *, - parent: str = None, - config_id: str = None, - notification_config: gcs_notification_config.NotificationConfig = None, + parent: Optional[str] = None, + config_id: Optional[str] = None, + notification_config: Optional[ + gcs_notification_config.NotificationConfig + ] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> gcs_notification_config.NotificationConfig: r"""Creates a notification config. @@ -958,13 +976,13 @@ def sample_create_notification_config(): def delete_notification_config( self, - request: Union[ - securitycenter_service.DeleteNotificationConfigRequest, dict + request: Optional[ + Union[securitycenter_service.DeleteNotificationConfigRequest, dict] ] = None, *, - name: str = None, + name: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> None: r"""Deletes a notification config. @@ -1055,11 +1073,11 @@ def sample_delete_notification_config(): def get_iam_policy( self, - request: Union[iam_policy_pb2.GetIamPolicyRequest, dict] = None, + request: Optional[Union[iam_policy_pb2.GetIamPolicyRequest, dict]] = None, *, - resource: str = None, + resource: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> policy_pb2.Policy: r"""Gets the access control policy on the specified @@ -1219,13 +1237,13 @@ def sample_get_iam_policy(): def get_notification_config( self, - request: Union[ - securitycenter_service.GetNotificationConfigRequest, dict + request: Optional[ + Union[securitycenter_service.GetNotificationConfigRequest, dict] ] = None, *, - name: str = None, + name: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> notification_config.NotificationConfig: r"""Gets a notification config. @@ -1329,13 +1347,13 @@ def sample_get_notification_config(): def get_organization_settings( self, - request: Union[ - securitycenter_service.GetOrganizationSettingsRequest, dict + request: Optional[ + Union[securitycenter_service.GetOrganizationSettingsRequest, dict] ] = None, *, - name: str = None, + name: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> organization_settings.OrganizationSettings: r"""Gets the settings for an organization. @@ -1439,11 +1457,11 @@ def sample_get_organization_settings(): def get_source( self, - request: Union[securitycenter_service.GetSourceRequest, dict] = None, + request: Optional[Union[securitycenter_service.GetSourceRequest, dict]] = None, *, - name: str = None, + name: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> source.Source: r"""Gets a source. @@ -1546,10 +1564,12 @@ def sample_get_source(): def group_assets( self, - request: Union[securitycenter_service.GroupAssetsRequest, dict] = None, + request: Optional[ + Union[securitycenter_service.GroupAssetsRequest, dict] + ] = None, *, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> pagers.GroupAssetsPager: r"""Filters an organization's assets and groups them by @@ -1642,12 +1662,14 @@ def sample_group_assets(): def group_findings( self, - request: Union[securitycenter_service.GroupFindingsRequest, dict] = None, + request: Optional[ + Union[securitycenter_service.GroupFindingsRequest, dict] + ] = None, *, - parent: str = None, - group_by: str = None, + parent: Optional[str] = None, + group_by: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> pagers.GroupFindingsPager: r"""Filters an organization or source's findings and groups them by @@ -1795,11 +1817,11 @@ def sample_group_findings(): def list_assets( self, - request: Union[securitycenter_service.ListAssetsRequest, dict] = None, + request: Optional[Union[securitycenter_service.ListAssetsRequest, dict]] = None, *, - parent: str = None, + parent: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> pagers.ListAssetsPager: r"""Lists an organization's assets. @@ -1909,11 +1931,13 @@ def sample_list_assets(): def list_findings( self, - request: Union[securitycenter_service.ListFindingsRequest, dict] = None, + request: Optional[ + Union[securitycenter_service.ListFindingsRequest, dict] + ] = None, *, - parent: str = None, + parent: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> pagers.ListFindingsPager: r"""Lists an organization or source's findings. @@ -2035,13 +2059,13 @@ def sample_list_findings(): def list_notification_configs( self, - request: Union[ - securitycenter_service.ListNotificationConfigsRequest, dict + request: Optional[ + Union[securitycenter_service.ListNotificationConfigsRequest, dict] ] = None, *, - parent: str = None, + parent: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> pagers.ListNotificationConfigsPager: r"""Lists notification configs. @@ -2157,11 +2181,13 @@ def sample_list_notification_configs(): def list_sources( self, - request: Union[securitycenter_service.ListSourcesRequest, dict] = None, + request: Optional[ + Union[securitycenter_service.ListSourcesRequest, dict] + ] = None, *, - parent: str = None, + parent: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> pagers.ListSourcesPager: r"""Lists all sources belonging to an organization. @@ -2272,11 +2298,13 @@ def sample_list_sources(): def run_asset_discovery( self, - request: Union[securitycenter_service.RunAssetDiscoveryRequest, dict] = None, + request: Optional[ + Union[securitycenter_service.RunAssetDiscoveryRequest, dict] + ] = None, *, - parent: str = None, + parent: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> operation.Operation: r"""Runs asset discovery. The discovery is tracked with a @@ -2395,13 +2423,15 @@ def sample_run_asset_discovery(): def set_finding_state( self, - request: Union[securitycenter_service.SetFindingStateRequest, dict] = None, + request: Optional[ + Union[securitycenter_service.SetFindingStateRequest, dict] + ] = None, *, - name: str = None, - state: finding.Finding.State = None, - start_time: timestamp_pb2.Timestamp = None, + name: Optional[str] = None, + state: Optional[finding.Finding.State] = None, + start_time: Optional[timestamp_pb2.Timestamp] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> finding.Finding: r"""Updates the state of a finding. @@ -2528,11 +2558,11 @@ def sample_set_finding_state(): def set_iam_policy( self, - request: Union[iam_policy_pb2.SetIamPolicyRequest, dict] = None, + request: Optional[Union[iam_policy_pb2.SetIamPolicyRequest, dict]] = None, *, - resource: str = None, + resource: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> policy_pb2.Policy: r"""Sets the access control policy on the specified @@ -2692,12 +2722,12 @@ def sample_set_iam_policy(): def test_iam_permissions( self, - request: Union[iam_policy_pb2.TestIamPermissionsRequest, dict] = None, + request: Optional[Union[iam_policy_pb2.TestIamPermissionsRequest, dict]] = None, *, - resource: str = None, - permissions: Sequence[str] = None, + resource: Optional[str] = None, + permissions: Optional[MutableSequence[str]] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> iam_policy_pb2.TestIamPermissionsResponse: r"""Returns the permissions that a caller has on the @@ -2744,7 +2774,7 @@ def sample_test_iam_permissions(): This corresponds to the ``resource`` field on the ``request`` instance; if ``request`` is provided, this should not be set. - permissions (Sequence[str]): + permissions (MutableSequence[str]): The set of permissions to check for the ``resource``. Permissions with wildcards (such as '*' or 'storage.*') are not allowed. For more information see `IAM @@ -2808,12 +2838,14 @@ def sample_test_iam_permissions(): def update_finding( self, - request: Union[securitycenter_service.UpdateFindingRequest, dict] = None, + request: Optional[ + Union[securitycenter_service.UpdateFindingRequest, dict] + ] = None, *, - finding: gcs_finding.Finding = None, - update_mask: field_mask_pb2.FieldMask = None, + finding: Optional[gcs_finding.Finding] = None, + update_mask: Optional[field_mask_pb2.FieldMask] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> gcs_finding.Finding: r"""Creates or updates a finding. The corresponding @@ -2941,14 +2973,16 @@ def sample_update_finding(): def update_notification_config( self, - request: Union[ - securitycenter_service.UpdateNotificationConfigRequest, dict + request: Optional[ + Union[securitycenter_service.UpdateNotificationConfigRequest, dict] ] = None, *, - notification_config: gcs_notification_config.NotificationConfig = None, - update_mask: field_mask_pb2.FieldMask = None, + notification_config: Optional[ + gcs_notification_config.NotificationConfig + ] = None, + update_mask: Optional[field_mask_pb2.FieldMask] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> gcs_notification_config.NotificationConfig: r"""Updates a notification config. The following update fields are @@ -3068,13 +3102,15 @@ def sample_update_notification_config(): def update_organization_settings( self, - request: Union[ - securitycenter_service.UpdateOrganizationSettingsRequest, dict + request: Optional[ + Union[securitycenter_service.UpdateOrganizationSettingsRequest, dict] ] = None, *, - organization_settings: gcs_organization_settings.OrganizationSettings = None, + organization_settings: Optional[ + gcs_organization_settings.OrganizationSettings + ] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> gcs_organization_settings.OrganizationSettings: r"""Updates an organization's settings. @@ -3178,12 +3214,14 @@ def sample_update_organization_settings(): def update_source( self, - request: Union[securitycenter_service.UpdateSourceRequest, dict] = None, + request: Optional[ + Union[securitycenter_service.UpdateSourceRequest, dict] + ] = None, *, - source: gcs_source.Source = None, - update_mask: field_mask_pb2.FieldMask = None, + source: Optional[gcs_source.Source] = None, + update_mask: Optional[field_mask_pb2.FieldMask] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> gcs_source.Source: r"""Updates a source. @@ -3297,12 +3335,14 @@ def sample_update_source(): def update_security_marks( self, - request: Union[securitycenter_service.UpdateSecurityMarksRequest, dict] = None, + request: Optional[ + Union[securitycenter_service.UpdateSecurityMarksRequest, dict] + ] = None, *, - security_marks: gcs_security_marks.SecurityMarks = None, - update_mask: field_mask_pb2.FieldMask = None, + security_marks: Optional[gcs_security_marks.SecurityMarks] = None, + update_mask: Optional[field_mask_pb2.FieldMask] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> gcs_security_marks.SecurityMarks: r"""Updates security marks. diff --git a/google/cloud/securitycenter_v1p1beta1/services/security_center/transports/base.py b/google/cloud/securitycenter_v1p1beta1/services/security_center/transports/base.py index 7accc851..68db217f 100644 --- a/google/cloud/securitycenter_v1p1beta1/services/security_center/transports/base.py +++ b/google/cloud/securitycenter_v1p1beta1/services/security_center/transports/base.py @@ -67,7 +67,7 @@ def __init__( self, *, host: str = DEFAULT_HOST, - credentials: ga_credentials.Credentials = None, + credentials: Optional[ga_credentials.Credentials] = None, credentials_file: Optional[str] = None, scopes: Optional[Sequence[str]] = None, quota_project_id: Optional[str] = None, diff --git a/google/cloud/securitycenter_v1p1beta1/services/security_center/transports/grpc.py b/google/cloud/securitycenter_v1p1beta1/services/security_center/transports/grpc.py index 355fd3f7..62d49b24 100644 --- a/google/cloud/securitycenter_v1p1beta1/services/security_center/transports/grpc.py +++ b/google/cloud/securitycenter_v1p1beta1/services/security_center/transports/grpc.py @@ -65,14 +65,14 @@ def __init__( self, *, host: str = "securitycenter.googleapis.com", - credentials: ga_credentials.Credentials = None, - credentials_file: str = None, - scopes: Sequence[str] = None, - channel: grpc.Channel = None, - api_mtls_endpoint: str = None, - client_cert_source: Callable[[], Tuple[bytes, bytes]] = None, - ssl_channel_credentials: grpc.ChannelCredentials = None, - client_cert_source_for_mtls: Callable[[], Tuple[bytes, bytes]] = None, + credentials: Optional[ga_credentials.Credentials] = None, + credentials_file: Optional[str] = None, + scopes: Optional[Sequence[str]] = None, + channel: Optional[grpc.Channel] = None, + api_mtls_endpoint: Optional[str] = None, + client_cert_source: Optional[Callable[[], Tuple[bytes, bytes]]] = None, + ssl_channel_credentials: Optional[grpc.ChannelCredentials] = None, + client_cert_source_for_mtls: Optional[Callable[[], Tuple[bytes, bytes]]] = None, quota_project_id: Optional[str] = None, client_info: gapic_v1.client_info.ClientInfo = DEFAULT_CLIENT_INFO, always_use_jwt_access: Optional[bool] = False, @@ -200,8 +200,8 @@ def __init__( def create_channel( cls, host: str = "securitycenter.googleapis.com", - credentials: ga_credentials.Credentials = None, - credentials_file: str = None, + credentials: Optional[ga_credentials.Credentials] = None, + credentials_file: Optional[str] = None, scopes: Optional[Sequence[str]] = None, quota_project_id: Optional[str] = None, **kwargs, diff --git a/google/cloud/securitycenter_v1p1beta1/services/security_center/transports/grpc_asyncio.py b/google/cloud/securitycenter_v1p1beta1/services/security_center/transports/grpc_asyncio.py index d7f15fac..48fa46f2 100644 --- a/google/cloud/securitycenter_v1p1beta1/services/security_center/transports/grpc_asyncio.py +++ b/google/cloud/securitycenter_v1p1beta1/services/security_center/transports/grpc_asyncio.py @@ -67,7 +67,7 @@ class SecurityCenterGrpcAsyncIOTransport(SecurityCenterTransport): def create_channel( cls, host: str = "securitycenter.googleapis.com", - credentials: ga_credentials.Credentials = None, + credentials: Optional[ga_credentials.Credentials] = None, credentials_file: Optional[str] = None, scopes: Optional[Sequence[str]] = None, quota_project_id: Optional[str] = None, @@ -110,15 +110,15 @@ def __init__( self, *, host: str = "securitycenter.googleapis.com", - credentials: ga_credentials.Credentials = None, + credentials: Optional[ga_credentials.Credentials] = None, credentials_file: Optional[str] = None, scopes: Optional[Sequence[str]] = None, - channel: aio.Channel = None, - api_mtls_endpoint: str = None, - client_cert_source: Callable[[], Tuple[bytes, bytes]] = None, - ssl_channel_credentials: grpc.ChannelCredentials = None, - client_cert_source_for_mtls: Callable[[], Tuple[bytes, bytes]] = None, - quota_project_id=None, + channel: Optional[aio.Channel] = None, + api_mtls_endpoint: Optional[str] = None, + client_cert_source: Optional[Callable[[], Tuple[bytes, bytes]]] = None, + ssl_channel_credentials: Optional[grpc.ChannelCredentials] = None, + client_cert_source_for_mtls: Optional[Callable[[], Tuple[bytes, bytes]]] = None, + quota_project_id: Optional[str] = None, client_info: gapic_v1.client_info.ClientInfo = DEFAULT_CLIENT_INFO, always_use_jwt_access: Optional[bool] = False, api_audience: Optional[str] = None, diff --git a/google/cloud/securitycenter_v1p1beta1/types/asset.py b/google/cloud/securitycenter_v1p1beta1/types/asset.py index fae606f5..d28230eb 100644 --- a/google/cloud/securitycenter_v1p1beta1/types/asset.py +++ b/google/cloud/securitycenter_v1p1beta1/types/asset.py @@ -13,6 +13,8 @@ # See the License for the specific language governing permissions and # limitations under the License. # +from typing import MutableMapping, MutableSequence + from google.protobuf import struct_pb2 # type: ignore from google.protobuf import timestamp_pb2 # type: ignore import proto # type: ignore @@ -50,7 +52,7 @@ class Asset(proto.Message): Security Command Center managed properties. These properties are managed by Security Command Center and cannot be modified by the user. - resource_properties (Mapping[str, google.protobuf.struct_pb2.Value]): + resource_properties (MutableMapping[str, google.protobuf.struct_pb2.Value]): Resource managed properties. These properties are managed and defined by the Google Cloud resource and cannot be modified by the user. @@ -105,7 +107,7 @@ class SecurityCenterProperties(proto.Message): The full resource name of the project the resource belongs to. See: https://cloud.google.com/apis/design/resource_names#full_resource_name - resource_owners (Sequence[str]): + resource_owners (MutableSequence[str]): Owners of the Google Cloud resource. resource_display_name (str): The user defined display name for this @@ -116,46 +118,46 @@ class SecurityCenterProperties(proto.Message): resource_project_display_name (str): The user defined display name for the project of this resource. - folders (Sequence[google.cloud.securitycenter_v1p1beta1.types.Folder]): + folders (MutableSequence[google.cloud.securitycenter_v1p1beta1.types.Folder]): Contains a Folder message for each folder in the assets ancestry. The first folder is the deepest nested folder, and the last folder is the folder directly under the Organization. """ - resource_name = proto.Field( + resource_name: str = proto.Field( proto.STRING, number=1, ) - resource_type = proto.Field( + resource_type: str = proto.Field( proto.STRING, number=2, ) - resource_parent = proto.Field( + resource_parent: str = proto.Field( proto.STRING, number=3, ) - resource_project = proto.Field( + resource_project: str = proto.Field( proto.STRING, number=4, ) - resource_owners = proto.RepeatedField( + resource_owners: MutableSequence[str] = proto.RepeatedField( proto.STRING, number=5, ) - resource_display_name = proto.Field( + resource_display_name: str = proto.Field( proto.STRING, number=6, ) - resource_parent_display_name = proto.Field( + resource_parent_display_name: str = proto.Field( proto.STRING, number=7, ) - resource_project_display_name = proto.Field( + resource_project_display_name: str = proto.Field( proto.STRING, number=8, ) - folders = proto.RepeatedField( + folders: MutableSequence[folder.Folder] = proto.RepeatedField( proto.MESSAGE, number=10, message=folder.Folder, @@ -175,47 +177,47 @@ class IamPolicy(proto.Message): for format details. """ - policy_blob = proto.Field( + policy_blob: str = proto.Field( proto.STRING, number=1, ) - name = proto.Field( + name: str = proto.Field( proto.STRING, number=1, ) - security_center_properties = proto.Field( + security_center_properties: SecurityCenterProperties = proto.Field( proto.MESSAGE, number=2, message=SecurityCenterProperties, ) - resource_properties = proto.MapField( + resource_properties: MutableMapping[str, struct_pb2.Value] = proto.MapField( proto.STRING, proto.MESSAGE, number=7, message=struct_pb2.Value, ) - security_marks = proto.Field( + security_marks: gcs_security_marks.SecurityMarks = proto.Field( proto.MESSAGE, number=8, message=gcs_security_marks.SecurityMarks, ) - create_time = proto.Field( + create_time: timestamp_pb2.Timestamp = proto.Field( proto.MESSAGE, number=9, message=timestamp_pb2.Timestamp, ) - update_time = proto.Field( + update_time: timestamp_pb2.Timestamp = proto.Field( proto.MESSAGE, number=10, message=timestamp_pb2.Timestamp, ) - iam_policy = proto.Field( + iam_policy: IamPolicy = proto.Field( proto.MESSAGE, number=11, message=IamPolicy, ) - canonical_name = proto.Field( + canonical_name: str = proto.Field( proto.STRING, number=13, ) diff --git a/google/cloud/securitycenter_v1p1beta1/types/finding.py b/google/cloud/securitycenter_v1p1beta1/types/finding.py index 90403f7b..900cb812 100644 --- a/google/cloud/securitycenter_v1p1beta1/types/finding.py +++ b/google/cloud/securitycenter_v1p1beta1/types/finding.py @@ -13,6 +13,8 @@ # See the License for the specific language governing permissions and # limitations under the License. # +from typing import MutableMapping, MutableSequence + from google.protobuf import struct_pb2 # type: ignore from google.protobuf import timestamp_pb2 # type: ignore import proto # type: ignore @@ -68,7 +70,7 @@ class Finding(proto.Message): additional information about the finding can be found. This field is guaranteed to be either empty or a well formed URL. - source_properties (Mapping[str, google.protobuf.struct_pb2.Value]): + source_properties (MutableMapping[str, google.protobuf.struct_pb2.Value]): Source specific properties. These properties are managed by the source that writes the finding. The key names in the source_properties map must be between 1 and 255 characters, @@ -122,58 +124,58 @@ class Severity(proto.Enum): MEDIUM = 3 LOW = 4 - name = proto.Field( + name: str = proto.Field( proto.STRING, number=1, ) - parent = proto.Field( + parent: str = proto.Field( proto.STRING, number=2, ) - resource_name = proto.Field( + resource_name: str = proto.Field( proto.STRING, number=3, ) - state = proto.Field( + state: State = proto.Field( proto.ENUM, number=4, enum=State, ) - category = proto.Field( + category: str = proto.Field( proto.STRING, number=5, ) - external_uri = proto.Field( + external_uri: str = proto.Field( proto.STRING, number=6, ) - source_properties = proto.MapField( + source_properties: MutableMapping[str, struct_pb2.Value] = proto.MapField( proto.STRING, proto.MESSAGE, number=7, message=struct_pb2.Value, ) - security_marks = proto.Field( + security_marks: gcs_security_marks.SecurityMarks = proto.Field( proto.MESSAGE, number=8, message=gcs_security_marks.SecurityMarks, ) - event_time = proto.Field( + event_time: timestamp_pb2.Timestamp = proto.Field( proto.MESSAGE, number=9, message=timestamp_pb2.Timestamp, ) - create_time = proto.Field( + create_time: timestamp_pb2.Timestamp = proto.Field( proto.MESSAGE, number=10, message=timestamp_pb2.Timestamp, ) - severity = proto.Field( + severity: Severity = proto.Field( proto.ENUM, number=13, enum=Severity, ) - canonical_name = proto.Field( + canonical_name: str = proto.Field( proto.STRING, number=14, ) diff --git a/google/cloud/securitycenter_v1p1beta1/types/folder.py b/google/cloud/securitycenter_v1p1beta1/types/folder.py index a7328d78..08e889f5 100644 --- a/google/cloud/securitycenter_v1p1beta1/types/folder.py +++ b/google/cloud/securitycenter_v1p1beta1/types/folder.py @@ -13,6 +13,8 @@ # See the License for the specific language governing permissions and # limitations under the License. # +from typing import MutableMapping, MutableSequence + import proto # type: ignore __protobuf__ = proto.module( @@ -36,11 +38,11 @@ class Folder(proto.Message): folder. """ - resource_folder = proto.Field( + resource_folder: str = proto.Field( proto.STRING, number=1, ) - resource_folder_display_name = proto.Field( + resource_folder_display_name: str = proto.Field( proto.STRING, number=2, ) diff --git a/google/cloud/securitycenter_v1p1beta1/types/notification_config.py b/google/cloud/securitycenter_v1p1beta1/types/notification_config.py index 528e5987..50ca126b 100644 --- a/google/cloud/securitycenter_v1p1beta1/types/notification_config.py +++ b/google/cloud/securitycenter_v1p1beta1/types/notification_config.py @@ -13,6 +13,8 @@ # See the License for the specific language governing permissions and # limitations under the License. # +from typing import MutableMapping, MutableSequence + import proto # type: ignore __protobuf__ = proto.module( @@ -94,33 +96,33 @@ class StreamingConfig(proto.Message): - boolean literals ``true`` and ``false`` without quotes. """ - filter = proto.Field( + filter: str = proto.Field( proto.STRING, number=1, ) - name = proto.Field( + name: str = proto.Field( proto.STRING, number=1, ) - description = proto.Field( + description: str = proto.Field( proto.STRING, number=2, ) - event_type = proto.Field( + event_type: EventType = proto.Field( proto.ENUM, number=3, enum=EventType, ) - pubsub_topic = proto.Field( + pubsub_topic: str = proto.Field( proto.STRING, number=4, ) - service_account = proto.Field( + service_account: str = proto.Field( proto.STRING, number=5, ) - streaming_config = proto.Field( + streaming_config: StreamingConfig = proto.Field( proto.MESSAGE, number=6, oneof="notify_config", diff --git a/google/cloud/securitycenter_v1p1beta1/types/notification_message.py b/google/cloud/securitycenter_v1p1beta1/types/notification_message.py index f743a862..e8b3ba8d 100644 --- a/google/cloud/securitycenter_v1p1beta1/types/notification_message.py +++ b/google/cloud/securitycenter_v1p1beta1/types/notification_message.py @@ -13,6 +13,8 @@ # See the License for the specific language governing permissions and # limitations under the License. # +from typing import MutableMapping, MutableSequence + import proto # type: ignore from google.cloud.securitycenter_v1p1beta1.types import resource as gcs_resource @@ -44,17 +46,17 @@ class NotificationMessage(proto.Message): The Cloud resource tied to the notification. """ - notification_config_name = proto.Field( + notification_config_name: str = proto.Field( proto.STRING, number=1, ) - finding = proto.Field( + finding: gcs_finding.Finding = proto.Field( proto.MESSAGE, number=2, oneof="event", message=gcs_finding.Finding, ) - resource = proto.Field( + resource: gcs_resource.Resource = proto.Field( proto.MESSAGE, number=3, message=gcs_resource.Resource, diff --git a/google/cloud/securitycenter_v1p1beta1/types/organization_settings.py b/google/cloud/securitycenter_v1p1beta1/types/organization_settings.py index 9b263cf6..a18af0e8 100644 --- a/google/cloud/securitycenter_v1p1beta1/types/organization_settings.py +++ b/google/cloud/securitycenter_v1p1beta1/types/organization_settings.py @@ -13,6 +13,8 @@ # See the License for the specific language governing permissions and # limitations under the License. # +from typing import MutableMapping, MutableSequence + import proto # type: ignore __protobuf__ = proto.module( @@ -47,13 +49,13 @@ class AssetDiscoveryConfig(proto.Message): r"""The configuration used for Asset Discovery runs. Attributes: - project_ids (Sequence[str]): + project_ids (MutableSequence[str]): The project ids to use for filtering asset discovery. inclusion_mode (google.cloud.securitycenter_v1p1beta1.types.OrganizationSettings.AssetDiscoveryConfig.InclusionMode): The mode to use for filtering asset discovery. - folder_ids (Sequence[str]): + folder_ids (MutableSequence[str]): The folder ids to use for filtering asset discovery. It consists of only digits, e.g., 756619654966. @@ -73,29 +75,31 @@ class InclusionMode(proto.Enum): INCLUDE_ONLY = 1 EXCLUDE = 2 - project_ids = proto.RepeatedField( + project_ids: MutableSequence[str] = proto.RepeatedField( proto.STRING, number=1, ) - inclusion_mode = proto.Field( - proto.ENUM, - number=2, - enum="OrganizationSettings.AssetDiscoveryConfig.InclusionMode", + inclusion_mode: "OrganizationSettings.AssetDiscoveryConfig.InclusionMode" = ( + proto.Field( + proto.ENUM, + number=2, + enum="OrganizationSettings.AssetDiscoveryConfig.InclusionMode", + ) ) - folder_ids = proto.RepeatedField( + folder_ids: MutableSequence[str] = proto.RepeatedField( proto.STRING, number=3, ) - name = proto.Field( + name: str = proto.Field( proto.STRING, number=1, ) - enable_asset_discovery = proto.Field( + enable_asset_discovery: bool = proto.Field( proto.BOOL, number=2, ) - asset_discovery_config = proto.Field( + asset_discovery_config: AssetDiscoveryConfig = proto.Field( proto.MESSAGE, number=3, message=AssetDiscoveryConfig, diff --git a/google/cloud/securitycenter_v1p1beta1/types/resource.py b/google/cloud/securitycenter_v1p1beta1/types/resource.py index 632b05c5..f9740833 100644 --- a/google/cloud/securitycenter_v1p1beta1/types/resource.py +++ b/google/cloud/securitycenter_v1p1beta1/types/resource.py @@ -13,6 +13,8 @@ # See the License for the specific language governing permissions and # limitations under the License. # +from typing import MutableMapping, MutableSequence + import proto # type: ignore from google.cloud.securitycenter_v1p1beta1.types import folder @@ -42,7 +44,7 @@ class Resource(proto.Message): The full resource name of resource's parent. parent_display_name (str): The human readable name of resource's parent. - folders (Sequence[google.cloud.securitycenter_v1p1beta1.types.Folder]): + folders (MutableSequence[google.cloud.securitycenter_v1p1beta1.types.Folder]): Output only. Contains a Folder message for each folder in the assets ancestry. The first folder is the deepest nested folder, and the @@ -50,27 +52,27 @@ class Resource(proto.Message): Organization. """ - name = proto.Field( + name: str = proto.Field( proto.STRING, number=1, ) - project = proto.Field( + project: str = proto.Field( proto.STRING, number=2, ) - project_display_name = proto.Field( + project_display_name: str = proto.Field( proto.STRING, number=3, ) - parent = proto.Field( + parent: str = proto.Field( proto.STRING, number=4, ) - parent_display_name = proto.Field( + parent_display_name: str = proto.Field( proto.STRING, number=5, ) - folders = proto.RepeatedField( + folders: MutableSequence[folder.Folder] = proto.RepeatedField( proto.MESSAGE, number=7, message=folder.Folder, diff --git a/google/cloud/securitycenter_v1p1beta1/types/run_asset_discovery_response.py b/google/cloud/securitycenter_v1p1beta1/types/run_asset_discovery_response.py index e6532005..d12ee4f3 100644 --- a/google/cloud/securitycenter_v1p1beta1/types/run_asset_discovery_response.py +++ b/google/cloud/securitycenter_v1p1beta1/types/run_asset_discovery_response.py @@ -13,6 +13,8 @@ # See the License for the specific language governing permissions and # limitations under the License. # +from typing import MutableMapping, MutableSequence + from google.protobuf import duration_pb2 # type: ignore import proto # type: ignore @@ -42,12 +44,12 @@ class State(proto.Enum): SUPERSEDED = 2 TERMINATED = 3 - state = proto.Field( + state: State = proto.Field( proto.ENUM, number=1, enum=State, ) - duration = proto.Field( + duration: duration_pb2.Duration = proto.Field( proto.MESSAGE, number=2, message=duration_pb2.Duration, diff --git a/google/cloud/securitycenter_v1p1beta1/types/security_marks.py b/google/cloud/securitycenter_v1p1beta1/types/security_marks.py index 741a59bd..8691afed 100644 --- a/google/cloud/securitycenter_v1p1beta1/types/security_marks.py +++ b/google/cloud/securitycenter_v1p1beta1/types/security_marks.py @@ -13,6 +13,8 @@ # See the License for the specific language governing permissions and # limitations under the License. # +from typing import MutableMapping, MutableSequence + import proto # type: ignore __protobuf__ = proto.module( @@ -37,7 +39,7 @@ class SecurityMarks(proto.Message): Examples: "organizations/{organization_id}/assets/{asset_id}/securityMarks" "organizations/{organization_id}/sources/{source_id}/findings/{finding_id}/securityMarks". - marks (Mapping[str, str]): + marks (MutableMapping[str, str]): Mutable user specified security marks belonging to the parent resource. Constraints are as follows: @@ -57,16 +59,16 @@ class SecurityMarks(proto.Message): "projects/{project_number}/sources/{source_id}/findings/{finding_id}/securityMarks". """ - name = proto.Field( + name: str = proto.Field( proto.STRING, number=1, ) - marks = proto.MapField( + marks: MutableMapping[str, str] = proto.MapField( proto.STRING, proto.STRING, number=2, ) - canonical_name = proto.Field( + canonical_name: str = proto.Field( proto.STRING, number=3, ) diff --git a/google/cloud/securitycenter_v1p1beta1/types/securitycenter_service.py b/google/cloud/securitycenter_v1p1beta1/types/securitycenter_service.py index f85f57d7..6aa1545f 100644 --- a/google/cloud/securitycenter_v1p1beta1/types/securitycenter_service.py +++ b/google/cloud/securitycenter_v1p1beta1/types/securitycenter_service.py @@ -13,6 +13,8 @@ # See the License for the specific language governing permissions and # limitations under the License. # +from typing import MutableMapping, MutableSequence + from google.protobuf import duration_pb2 # type: ignore from google.protobuf import field_mask_pb2 # type: ignore from google.protobuf import struct_pb2 # type: ignore @@ -84,15 +86,15 @@ class CreateFindingRequest(proto.Message): fields on this resource. """ - parent = proto.Field( + parent: str = proto.Field( proto.STRING, number=1, ) - finding_id = proto.Field( + finding_id: str = proto.Field( proto.STRING, number=2, ) - finding = proto.Field( + finding: gcs_finding.Finding = proto.Field( proto.MESSAGE, number=3, message=gcs_finding.Finding, @@ -119,15 +121,15 @@ class CreateNotificationConfigRequest(proto.Message): on this resource. """ - parent = proto.Field( + parent: str = proto.Field( proto.STRING, number=1, ) - config_id = proto.Field( + config_id: str = proto.Field( proto.STRING, number=2, ) - notification_config = proto.Field( + notification_config: gcs_notification_config.NotificationConfig = proto.Field( proto.MESSAGE, number=3, message=gcs_notification_config.NotificationConfig, @@ -147,11 +149,11 @@ class CreateSourceRequest(proto.Message): ignored. """ - parent = proto.Field( + parent: str = proto.Field( proto.STRING, number=1, ) - source = proto.Field( + source: gcs_source.Source = proto.Field( proto.MESSAGE, number=2, message=gcs_source.Source, @@ -168,7 +170,7 @@ class DeleteNotificationConfigRequest(proto.Message): "organizations/[organization_id]/notificationConfigs/[config_id]". """ - name = proto.Field( + name: str = proto.Field( proto.STRING, number=1, ) @@ -184,7 +186,7 @@ class GetNotificationConfigRequest(proto.Message): "organizations/[organization_id]/notificationConfigs/[config_id]". """ - name = proto.Field( + name: str = proto.Field( proto.STRING, number=1, ) @@ -200,7 +202,7 @@ class GetOrganizationSettingsRequest(proto.Message): "organizations/[organization_id]/organizationSettings". """ - name = proto.Field( + name: str = proto.Field( proto.STRING, number=1, ) @@ -215,7 +217,7 @@ class GetSourceRequest(proto.Message): is "organizations/[organization_id]/source/[source_id]". """ - name = proto.Field( + name: str = proto.Field( proto.STRING, number=1, ) @@ -381,33 +383,33 @@ class GroupAssetsRequest(proto.Message): maximum is 1000. """ - parent = proto.Field( + parent: str = proto.Field( proto.STRING, number=1, ) - filter = proto.Field( + filter: str = proto.Field( proto.STRING, number=2, ) - group_by = proto.Field( + group_by: str = proto.Field( proto.STRING, number=3, ) - compare_duration = proto.Field( + compare_duration: duration_pb2.Duration = proto.Field( proto.MESSAGE, number=4, message=duration_pb2.Duration, ) - read_time = proto.Field( + read_time: timestamp_pb2.Timestamp = proto.Field( proto.MESSAGE, number=5, message=timestamp_pb2.Timestamp, ) - page_token = proto.Field( + page_token: str = proto.Field( proto.STRING, number=7, ) - page_size = proto.Field( + page_size: int = proto.Field( proto.INT32, number=8, ) @@ -417,7 +419,7 @@ class GroupAssetsResponse(proto.Message): r"""Response message for grouping by assets. Attributes: - group_by_results (Sequence[google.cloud.securitycenter_v1p1beta1.types.GroupResult]): + group_by_results (MutableSequence[google.cloud.securitycenter_v1p1beta1.types.GroupResult]): Group results. There exists an element for each existing unique combination of property/values. The element contains a count @@ -437,21 +439,21 @@ class GroupAssetsResponse(proto.Message): def raw_page(self): return self - group_by_results = proto.RepeatedField( + group_by_results: MutableSequence["GroupResult"] = proto.RepeatedField( proto.MESSAGE, number=1, message="GroupResult", ) - read_time = proto.Field( + read_time: timestamp_pb2.Timestamp = proto.Field( proto.MESSAGE, number=2, message=timestamp_pb2.Timestamp, ) - next_page_token = proto.Field( + next_page_token: str = proto.Field( proto.STRING, number=3, ) - total_size = proto.Field( + total_size: int = proto.Field( proto.INT32, number=4, ) @@ -606,33 +608,33 @@ class GroupFindingsRequest(proto.Message): maximum is 1000. """ - parent = proto.Field( + parent: str = proto.Field( proto.STRING, number=1, ) - filter = proto.Field( + filter: str = proto.Field( proto.STRING, number=2, ) - group_by = proto.Field( + group_by: str = proto.Field( proto.STRING, number=3, ) - read_time = proto.Field( + read_time: timestamp_pb2.Timestamp = proto.Field( proto.MESSAGE, number=4, message=timestamp_pb2.Timestamp, ) - compare_duration = proto.Field( + compare_duration: duration_pb2.Duration = proto.Field( proto.MESSAGE, number=5, message=duration_pb2.Duration, ) - page_token = proto.Field( + page_token: str = proto.Field( proto.STRING, number=7, ) - page_size = proto.Field( + page_size: int = proto.Field( proto.INT32, number=8, ) @@ -642,7 +644,7 @@ class GroupFindingsResponse(proto.Message): r"""Response message for group by findings. Attributes: - group_by_results (Sequence[google.cloud.securitycenter_v1p1beta1.types.GroupResult]): + group_by_results (MutableSequence[google.cloud.securitycenter_v1p1beta1.types.GroupResult]): Group results. There exists an element for each existing unique combination of property/values. The element contains a count @@ -662,21 +664,21 @@ class GroupFindingsResponse(proto.Message): def raw_page(self): return self - group_by_results = proto.RepeatedField( + group_by_results: MutableSequence["GroupResult"] = proto.RepeatedField( proto.MESSAGE, number=1, message="GroupResult", ) - read_time = proto.Field( + read_time: timestamp_pb2.Timestamp = proto.Field( proto.MESSAGE, number=2, message=timestamp_pb2.Timestamp, ) - next_page_token = proto.Field( + next_page_token: str = proto.Field( proto.STRING, number=3, ) - total_size = proto.Field( + total_size: int = proto.Field( proto.INT32, number=4, ) @@ -687,7 +689,7 @@ class GroupResult(proto.Message): request. Attributes: - properties (Mapping[str, google.protobuf.struct_pb2.Value]): + properties (MutableMapping[str, google.protobuf.struct_pb2.Value]): Properties matching the groupBy fields in the request. count (int): @@ -695,13 +697,13 @@ class GroupResult(proto.Message): properties. """ - properties = proto.MapField( + properties: MutableMapping[str, struct_pb2.Value] = proto.MapField( proto.STRING, proto.MESSAGE, number=1, message=struct_pb2.Value, ) - count = proto.Field( + count: int = proto.Field( proto.INT64, number=2, ) @@ -725,15 +727,15 @@ class ListNotificationConfigsRequest(proto.Message): maximum is 1000. """ - parent = proto.Field( + parent: str = proto.Field( proto.STRING, number=1, ) - page_token = proto.Field( + page_token: str = proto.Field( proto.STRING, number=2, ) - page_size = proto.Field( + page_size: int = proto.Field( proto.INT32, number=3, ) @@ -743,7 +745,7 @@ class ListNotificationConfigsResponse(proto.Message): r"""Response message for listing notification configs. Attributes: - notification_configs (Sequence[google.cloud.securitycenter_v1p1beta1.types.NotificationConfig]): + notification_configs (MutableSequence[google.cloud.securitycenter_v1p1beta1.types.NotificationConfig]): Notification configs belonging to the requested parent. next_page_token (str): @@ -755,12 +757,14 @@ class ListNotificationConfigsResponse(proto.Message): def raw_page(self): return self - notification_configs = proto.RepeatedField( + notification_configs: MutableSequence[ + gcs_notification_config.NotificationConfig + ] = proto.RepeatedField( proto.MESSAGE, number=1, message=gcs_notification_config.NotificationConfig, ) - next_page_token = proto.Field( + next_page_token: str = proto.Field( proto.STRING, number=2, ) @@ -785,15 +789,15 @@ class ListSourcesRequest(proto.Message): maximum is 1000. """ - parent = proto.Field( + parent: str = proto.Field( proto.STRING, number=1, ) - page_token = proto.Field( + page_token: str = proto.Field( proto.STRING, number=2, ) - page_size = proto.Field( + page_size: int = proto.Field( proto.INT32, number=7, ) @@ -803,7 +807,7 @@ class ListSourcesResponse(proto.Message): r"""Response message for listing sources. Attributes: - sources (Sequence[google.cloud.securitycenter_v1p1beta1.types.Source]): + sources (MutableSequence[google.cloud.securitycenter_v1p1beta1.types.Source]): Sources belonging to the requested parent. next_page_token (str): Token to retrieve the next page of results, @@ -814,12 +818,12 @@ class ListSourcesResponse(proto.Message): def raw_page(self): return self - sources = proto.RepeatedField( + sources: MutableSequence[gcs_source.Source] = proto.RepeatedField( proto.MESSAGE, number=1, message=gcs_source.Source, ) - next_page_token = proto.Field( + next_page_token: str = proto.Field( proto.STRING, number=2, ) @@ -986,38 +990,38 @@ class ListAssetsRequest(proto.Message): maximum is 1000. """ - parent = proto.Field( + parent: str = proto.Field( proto.STRING, number=1, ) - filter = proto.Field( + filter: str = proto.Field( proto.STRING, number=2, ) - order_by = proto.Field( + order_by: str = proto.Field( proto.STRING, number=3, ) - read_time = proto.Field( + read_time: timestamp_pb2.Timestamp = proto.Field( proto.MESSAGE, number=4, message=timestamp_pb2.Timestamp, ) - compare_duration = proto.Field( + compare_duration: duration_pb2.Duration = proto.Field( proto.MESSAGE, number=5, message=duration_pb2.Duration, ) - field_mask = proto.Field( + field_mask: field_mask_pb2.FieldMask = proto.Field( proto.MESSAGE, number=7, message=field_mask_pb2.FieldMask, ) - page_token = proto.Field( + page_token: str = proto.Field( proto.STRING, number=8, ) - page_size = proto.Field( + page_size: int = proto.Field( proto.INT32, number=9, ) @@ -1027,7 +1031,7 @@ class ListAssetsResponse(proto.Message): r"""Response message for listing assets. Attributes: - list_assets_results (Sequence[google.cloud.securitycenter_v1p1beta1.types.ListAssetsResponse.ListAssetsResult]): + list_assets_results (MutableSequence[google.cloud.securitycenter_v1p1beta1.types.ListAssetsResponse.ListAssetsResult]): Assets matching the list request. read_time (google.protobuf.timestamp_pb2.Timestamp): Time used for executing the list request. @@ -1063,12 +1067,12 @@ class StateChange(proto.Enum): REMOVED = 2 ACTIVE = 3 - asset = proto.Field( + asset: gcs_asset.Asset = proto.Field( proto.MESSAGE, number=1, message=gcs_asset.Asset, ) - state_change = proto.Field( + state_change: "ListAssetsResponse.ListAssetsResult.StateChange" = proto.Field( proto.ENUM, number=2, enum="ListAssetsResponse.ListAssetsResult.StateChange", @@ -1078,21 +1082,21 @@ class StateChange(proto.Enum): def raw_page(self): return self - list_assets_results = proto.RepeatedField( + list_assets_results: MutableSequence[ListAssetsResult] = proto.RepeatedField( proto.MESSAGE, number=1, message=ListAssetsResult, ) - read_time = proto.Field( + read_time: timestamp_pb2.Timestamp = proto.Field( proto.MESSAGE, number=2, message=timestamp_pb2.Timestamp, ) - next_page_token = proto.Field( + next_page_token: str = proto.Field( proto.STRING, number=3, ) - total_size = proto.Field( + total_size: int = proto.Field( proto.INT32, number=4, ) @@ -1244,38 +1248,38 @@ class ListFindingsRequest(proto.Message): maximum is 1000. """ - parent = proto.Field( + parent: str = proto.Field( proto.STRING, number=1, ) - filter = proto.Field( + filter: str = proto.Field( proto.STRING, number=2, ) - order_by = proto.Field( + order_by: str = proto.Field( proto.STRING, number=3, ) - read_time = proto.Field( + read_time: timestamp_pb2.Timestamp = proto.Field( proto.MESSAGE, number=4, message=timestamp_pb2.Timestamp, ) - compare_duration = proto.Field( + compare_duration: duration_pb2.Duration = proto.Field( proto.MESSAGE, number=5, message=duration_pb2.Duration, ) - field_mask = proto.Field( + field_mask: field_mask_pb2.FieldMask = proto.Field( proto.MESSAGE, number=7, message=field_mask_pb2.FieldMask, ) - page_token = proto.Field( + page_token: str = proto.Field( proto.STRING, number=8, ) - page_size = proto.Field( + page_size: int = proto.Field( proto.INT32, number=9, ) @@ -1285,7 +1289,7 @@ class ListFindingsResponse(proto.Message): r"""Response message for listing findings. Attributes: - list_findings_results (Sequence[google.cloud.securitycenter_v1p1beta1.types.ListFindingsResponse.ListFindingsResult]): + list_findings_results (MutableSequence[google.cloud.securitycenter_v1p1beta1.types.ListFindingsResponse.ListFindingsResult]): Findings matching the list request. read_time (google.protobuf.timestamp_pb2.Timestamp): Time used for executing the list request. @@ -1345,50 +1349,52 @@ class Resource(proto.Message): The full resource name of resource's parent. parent_display_name (str): The human readable name of resource's parent. - folders (Sequence[google.cloud.securitycenter_v1p1beta1.types.Folder]): + folders (MutableSequence[google.cloud.securitycenter_v1p1beta1.types.Folder]): Contains a Folder message for each folder in the assets ancestry. The first folder is the deepest nested folder, and the last folder is the folder directly under the Organization. """ - name = proto.Field( + name: str = proto.Field( proto.STRING, number=1, ) - project_name = proto.Field( + project_name: str = proto.Field( proto.STRING, number=2, ) - project_display_name = proto.Field( + project_display_name: str = proto.Field( proto.STRING, number=3, ) - parent_name = proto.Field( + parent_name: str = proto.Field( proto.STRING, number=4, ) - parent_display_name = proto.Field( + parent_display_name: str = proto.Field( proto.STRING, number=5, ) - folders = proto.RepeatedField( + folders: MutableSequence[folder.Folder] = proto.RepeatedField( proto.MESSAGE, number=10, message=folder.Folder, ) - finding = proto.Field( + finding: gcs_finding.Finding = proto.Field( proto.MESSAGE, number=1, message=gcs_finding.Finding, ) - state_change = proto.Field( - proto.ENUM, - number=2, - enum="ListFindingsResponse.ListFindingsResult.StateChange", + state_change: "ListFindingsResponse.ListFindingsResult.StateChange" = ( + proto.Field( + proto.ENUM, + number=2, + enum="ListFindingsResponse.ListFindingsResult.StateChange", + ) ) - resource = proto.Field( + resource: "ListFindingsResponse.ListFindingsResult.Resource" = proto.Field( proto.MESSAGE, number=3, message="ListFindingsResponse.ListFindingsResult.Resource", @@ -1398,21 +1404,21 @@ class Resource(proto.Message): def raw_page(self): return self - list_findings_results = proto.RepeatedField( + list_findings_results: MutableSequence[ListFindingsResult] = proto.RepeatedField( proto.MESSAGE, number=1, message=ListFindingsResult, ) - read_time = proto.Field( + read_time: timestamp_pb2.Timestamp = proto.Field( proto.MESSAGE, number=2, message=timestamp_pb2.Timestamp, ) - next_page_token = proto.Field( + next_page_token: str = proto.Field( proto.STRING, number=3, ) - total_size = proto.Field( + total_size: int = proto.Field( proto.INT32, number=4, ) @@ -1434,16 +1440,16 @@ class SetFindingStateRequest(proto.Message): takes effect. """ - name = proto.Field( + name: str = proto.Field( proto.STRING, number=1, ) - state = proto.Field( + state: gcs_finding.Finding.State = proto.Field( proto.ENUM, number=2, enum=gcs_finding.Finding.State, ) - start_time = proto.Field( + start_time: timestamp_pb2.Timestamp = proto.Field( proto.MESSAGE, number=3, message=timestamp_pb2.Timestamp, @@ -1460,7 +1466,7 @@ class RunAssetDiscoveryRequest(proto.Message): for. Its format is "organizations/[organization_id]". """ - parent = proto.Field( + parent: str = proto.Field( proto.STRING, number=1, ) @@ -1488,12 +1494,12 @@ class UpdateFindingRequest(proto.Message): "source_properties." in the field mask. """ - finding = proto.Field( + finding: gcs_finding.Finding = proto.Field( proto.MESSAGE, number=1, message=gcs_finding.Finding, ) - update_mask = proto.Field( + update_mask: field_mask_pb2.FieldMask = proto.Field( proto.MESSAGE, number=2, message=field_mask_pb2.FieldMask, @@ -1512,12 +1518,12 @@ class UpdateNotificationConfigRequest(proto.Message): If empty all mutable fields will be updated. """ - notification_config = proto.Field( + notification_config: gcs_notification_config.NotificationConfig = proto.Field( proto.MESSAGE, number=1, message=gcs_notification_config.NotificationConfig, ) - update_mask = proto.Field( + update_mask: field_mask_pb2.FieldMask = proto.Field( proto.MESSAGE, number=2, message=field_mask_pb2.FieldMask, @@ -1537,12 +1543,12 @@ class UpdateOrganizationSettingsRequest(proto.Message): If empty all mutable fields will be updated. """ - organization_settings = proto.Field( + organization_settings: gcs_organization_settings.OrganizationSettings = proto.Field( proto.MESSAGE, number=1, message=gcs_organization_settings.OrganizationSettings, ) - update_mask = proto.Field( + update_mask: field_mask_pb2.FieldMask = proto.Field( proto.MESSAGE, number=2, message=field_mask_pb2.FieldMask, @@ -1561,12 +1567,12 @@ class UpdateSourceRequest(proto.Message): If empty all mutable fields will be updated. """ - source = proto.Field( + source: gcs_source.Source = proto.Field( proto.MESSAGE, number=1, message=gcs_source.Source, ) - update_mask = proto.Field( + update_mask: field_mask_pb2.FieldMask = proto.Field( proto.MESSAGE, number=2, message=field_mask_pb2.FieldMask, @@ -1595,17 +1601,17 @@ class UpdateSecurityMarksRequest(proto.Message): preceding this time. """ - security_marks = proto.Field( + security_marks: gcs_security_marks.SecurityMarks = proto.Field( proto.MESSAGE, number=1, message=gcs_security_marks.SecurityMarks, ) - update_mask = proto.Field( + update_mask: field_mask_pb2.FieldMask = proto.Field( proto.MESSAGE, number=2, message=field_mask_pb2.FieldMask, ) - start_time = proto.Field( + start_time: timestamp_pb2.Timestamp = proto.Field( proto.MESSAGE, number=3, message=timestamp_pb2.Timestamp, diff --git a/google/cloud/securitycenter_v1p1beta1/types/source.py b/google/cloud/securitycenter_v1p1beta1/types/source.py index 82500c9b..2f0053cd 100644 --- a/google/cloud/securitycenter_v1p1beta1/types/source.py +++ b/google/cloud/securitycenter_v1p1beta1/types/source.py @@ -13,6 +13,8 @@ # See the License for the specific language governing permissions and # limitations under the License. # +from typing import MutableMapping, MutableSequence + import proto # type: ignore __protobuf__ = proto.module( @@ -61,19 +63,19 @@ class Source(proto.Message): the finding. """ - name = proto.Field( + name: str = proto.Field( proto.STRING, number=1, ) - display_name = proto.Field( + display_name: str = proto.Field( proto.STRING, number=2, ) - description = proto.Field( + description: str = proto.Field( proto.STRING, number=3, ) - canonical_name = proto.Field( + canonical_name: str = proto.Field( proto.STRING, number=14, ) diff --git a/owlbot.py b/owlbot.py new file mode 100644 index 00000000..ce738f01 --- /dev/null +++ b/owlbot.py @@ -0,0 +1,56 @@ +# Copyright 2022 Google LLC +# +# 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. + +import json +from pathlib import Path +import shutil + +import synthtool as s +import synthtool.gcp as gcp +from synthtool.languages import python + +# ---------------------------------------------------------------------------- +# Copy the generated client from the owl-bot staging directory +# ---------------------------------------------------------------------------- + +clean_up_generated_samples = True + +# Load the default version defined in .repo-metadata.json. +default_version = json.load(open(".repo-metadata.json", "rt")).get( + "default_version" +) + +for library in s.get_staging_dirs(default_version): + if clean_up_generated_samples: + shutil.rmtree("samples/generated_samples", ignore_errors=True) + clean_up_generated_samples = False + s.move([library], excludes=["**/gapic_version.py"]) +s.remove_staging_dirs() + +# ---------------------------------------------------------------------------- +# Add templated files +# ---------------------------------------------------------------------------- + +templated_files = gcp.CommonTemplates().py_library( + cov_level=100, + microgenerator=True, + versions=gcp.common.detect_versions(path="./google", default_first=True), +) +s.move(templated_files, excludes=[".coveragerc", ".github/release-please.yml"]) + +python.py_samples(skip_readmes=True) + +# run format session for all directories which have a noxfile +for noxfile in Path(".").glob("**/noxfile.py"): + s.shell.run(["nox", "-s", "format"], cwd=noxfile.parent, hide_output=False) diff --git a/release-please-config.json b/release-please-config.json new file mode 100644 index 00000000..4186f6b1 --- /dev/null +++ b/release-please-config.json @@ -0,0 +1,33 @@ +{ + "$schema": "https://raw.githubusercontent.com/googleapis/release-please/main/schemas/config.json", + "packages": { + ".": { + "release-type": "python", + "extra-files": [ + "google/cloud/securitycenter/gapic_version.py", + { + "type": "json", + "path": "samples/generated_samples/snippet_metadata_google.cloud.securitycenter.v1p1beta1.json", + "jsonpath": "$.clientLibrary.version" + }, + { + "type": "json", + "path": "samples/generated_samples/snippet_metadata_google.cloud.securitycenter.v1.json", + "jsonpath": "$.clientLibrary.version" + }, + { + "type": "json", + "path": "samples/generated_samples/snippet_metadata_google.cloud.securitycenter.v1beta1.json", + "jsonpath": "$.clientLibrary.version" + } + ] + } + }, + "release-type": "python", + "plugins": [ + { + "type": "sentence-case" + } + ], + "initial-version": "0.1.0" +} diff --git a/samples/generated_samples/snippet_metadata_securitycenter_v1.json b/samples/generated_samples/snippet_metadata_google.cloud.securitycenter.v1.json similarity index 99% rename from samples/generated_samples/snippet_metadata_securitycenter_v1.json rename to samples/generated_samples/snippet_metadata_google.cloud.securitycenter.v1.json index e964dec5..90fa2b68 100644 --- a/samples/generated_samples/snippet_metadata_securitycenter_v1.json +++ b/samples/generated_samples/snippet_metadata_google.cloud.securitycenter.v1.json @@ -7,7 +7,8 @@ } ], "language": "PYTHON", - "name": "google-cloud-securitycenter" + "name": "google-cloud-securitycenter", + "version": "0.1.0" }, "snippets": [ { @@ -4447,7 +4448,7 @@ }, { "name": "permissions", - "type": "Sequence[str]" + "type": "MutableSequence[str]" }, { "name": "retry", @@ -4531,7 +4532,7 @@ }, { "name": "permissions", - "type": "Sequence[str]" + "type": "MutableSequence[str]" }, { "name": "retry", diff --git a/samples/generated_samples/snippet_metadata_securitycenter_v1beta1.json b/samples/generated_samples/snippet_metadata_google.cloud.securitycenter.v1beta1.json similarity index 99% rename from samples/generated_samples/snippet_metadata_securitycenter_v1beta1.json rename to samples/generated_samples/snippet_metadata_google.cloud.securitycenter.v1beta1.json index 7407f068..a4c1295e 100644 --- a/samples/generated_samples/snippet_metadata_securitycenter_v1beta1.json +++ b/samples/generated_samples/snippet_metadata_google.cloud.securitycenter.v1beta1.json @@ -7,7 +7,8 @@ } ], "language": "PYTHON", - "name": "google-cloud-securitycenter" + "name": "google-cloud-securitycenter", + "version": "0.1.0" }, "snippets": [ { @@ -2155,7 +2156,7 @@ }, { "name": "permissions", - "type": "Sequence[str]" + "type": "MutableSequence[str]" }, { "name": "retry", @@ -2239,7 +2240,7 @@ }, { "name": "permissions", - "type": "Sequence[str]" + "type": "MutableSequence[str]" }, { "name": "retry", diff --git a/samples/generated_samples/snippet_metadata_securitycenter_v1p1beta1.json b/samples/generated_samples/snippet_metadata_google.cloud.securitycenter.v1p1beta1.json similarity index 99% rename from samples/generated_samples/snippet_metadata_securitycenter_v1p1beta1.json rename to samples/generated_samples/snippet_metadata_google.cloud.securitycenter.v1p1beta1.json index 5b30fbf8..774592ce 100644 --- a/samples/generated_samples/snippet_metadata_securitycenter_v1p1beta1.json +++ b/samples/generated_samples/snippet_metadata_google.cloud.securitycenter.v1p1beta1.json @@ -7,7 +7,8 @@ } ], "language": "PYTHON", - "name": "google-cloud-securitycenter" + "name": "google-cloud-securitycenter", + "version": "0.1.0" }, "snippets": [ { @@ -2825,7 +2826,7 @@ }, { "name": "permissions", - "type": "Sequence[str]" + "type": "MutableSequence[str]" }, { "name": "retry", @@ -2909,7 +2910,7 @@ }, { "name": "permissions", - "type": "Sequence[str]" + "type": "MutableSequence[str]" }, { "name": "retry", diff --git a/setup.py b/setup.py index 22c7c4d6..c6b25ebd 100644 --- a/setup.py +++ b/setup.py @@ -1,35 +1,49 @@ # -*- coding: utf-8 -*- -# -# Copyright 2018 Google LLC +# Copyright 2022 Google LLC # # 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 # -# https://www.apache.org/licenses/LICENSE-2.0 +# 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. - +# import io import os -import setuptools +import setuptools # type: ignore + +package_root = os.path.abspath(os.path.dirname(__file__)) name = "google-cloud-securitycenter" -description = "Cloud Security Command Center API client library" -version = "1.16.2" -release_status = "Development Status :: 5 - Production/Stable" + + +description = "Google Cloud Securitycenter API client library" + +version = {} +with open( + os.path.join(package_root, "google/cloud/securitycenter/gapic_version.py") +) as fp: + exec(fp.read(), version) +version = version["__version__"] + +if version[0] == "0": + release_status = "Development Status :: 4 - Beta" +else: + release_status = "Development Status :: 5 - Production/Stable" + dependencies = [ - "google-api-core[grpc] >= 1.32.0, <3.0.0dev,!=2.0.*,!=2.1.*,!=2.2.*,!=2.3.*,!=2.4.*,!=2.5.*,!=2.6.*,!=2.7.*", - "grpc-google-iam-v1 >= 0.12.4, <1.0.0dev", + "google-api-core[grpc] >= 1.33.2, <3.0.0dev,!=2.0.*,!=2.1.*,!=2.2.*,!=2.3.*,!=2.4.*,!=2.5.*,!=2.6.*,!=2.7.*", "proto-plus >= 1.22.0, <2.0.0dev", "protobuf>=3.19.5,<5.0.0dev,!=3.20.0,!=3.20.1,!=4.21.0,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5", + "grpc-google-iam-v1 >= 0.12.4, < 1.0.0dev", ] -extras = {"libcst": "libcst >= 0.2.5"} +url = "https://github.com/googleapis/python-securitycenter" package_root = os.path.abspath(os.path.dirname(__file__)) @@ -55,7 +69,7 @@ author="Google LLC", author_email="googleapis-packages@google.com", license="Apache 2.0", - url="https://github.com/googleapis/python-securitycenter", + url=url, classifiers=[ release_status, "Intended Audience :: Developers", @@ -71,15 +85,9 @@ ], platforms="Posix; MacOS X; Windows", packages=packages, + python_requires=">=3.7", namespace_packages=namespaces, install_requires=dependencies, - extras_require=extras, - python_requires=">=3.7", - scripts=[ - "scripts/fixup_securitycenter_v1_keywords.py", - "scripts/fixup_securitycenter_v1beta1_keywords.py", - "scripts/fixup_securitycenter_v1p1beta1_keywords.py", - ], include_package_data=True, zip_safe=False, ) diff --git a/testing/constraints-3.10.txt b/testing/constraints-3.10.txt index e69de29b..ad3f0fa5 100644 --- a/testing/constraints-3.10.txt +++ b/testing/constraints-3.10.txt @@ -0,0 +1,7 @@ +# -*- coding: utf-8 -*- +# This constraints file is required for unit tests. +# List all library dependencies and extras in this file. +google-api-core +proto-plus +protobuf +grpc-google-iam-v1 diff --git a/testing/constraints-3.11.txt b/testing/constraints-3.11.txt index e69de29b..ad3f0fa5 100644 --- a/testing/constraints-3.11.txt +++ b/testing/constraints-3.11.txt @@ -0,0 +1,7 @@ +# -*- coding: utf-8 -*- +# This constraints file is required for unit tests. +# List all library dependencies and extras in this file. +google-api-core +proto-plus +protobuf +grpc-google-iam-v1 diff --git a/testing/constraints-3.7.txt b/testing/constraints-3.7.txt index 90f4b6d9..883a87ae 100644 --- a/testing/constraints-3.7.txt +++ b/testing/constraints-3.7.txt @@ -1,12 +1,10 @@ # This constraints file is used to check that lower bounds # are correct in setup.py -# List *all* library dependencies and extras in this file. +# List all library dependencies and extras in this file. # Pin the version to the lower bound. -# -# e.g., if setup.py has "foo >= 1.14.0, < 2.0.0dev", -# Then this file should have foo==1.14.0 -google-api-core==1.32.0 -grpc-google-iam-v1==0.12.4 +# e.g., if setup.py has "google-cloud-foo >= 1.14.0, < 2.0.0dev", +# Then this file should have google-cloud-foo==1.14.0 +google-api-core==1.33.2 proto-plus==1.22.0 -libcst==0.2.5 protobuf==3.19.5 +grpc-google-iam-v1==0.12.4 diff --git a/testing/constraints-3.8.txt b/testing/constraints-3.8.txt index e69de29b..ad3f0fa5 100644 --- a/testing/constraints-3.8.txt +++ b/testing/constraints-3.8.txt @@ -0,0 +1,7 @@ +# -*- coding: utf-8 -*- +# This constraints file is required for unit tests. +# List all library dependencies and extras in this file. +google-api-core +proto-plus +protobuf +grpc-google-iam-v1 diff --git a/testing/constraints-3.9.txt b/testing/constraints-3.9.txt index e69de29b..ad3f0fa5 100644 --- a/testing/constraints-3.9.txt +++ b/testing/constraints-3.9.txt @@ -0,0 +1,7 @@ +# -*- coding: utf-8 -*- +# This constraints file is required for unit tests. +# List all library dependencies and extras in this file. +google-api-core +proto-plus +protobuf +grpc-google-iam-v1 diff --git a/tests/unit/gapic/securitycenter_v1/test_security_center.py b/tests/unit/gapic/securitycenter_v1/test_security_center.py index 4b0cb12d..3eecb564 100644 --- a/tests/unit/gapic/securitycenter_v1/test_security_center.py +++ b/tests/unit/gapic/securitycenter_v1/test_security_center.py @@ -45,6 +45,7 @@ from google.longrunning import operations_pb2 from google.oauth2 import service_account from google.protobuf import duration_pb2 # type: ignore +from google.protobuf import empty_pb2 # type: ignore from google.protobuf import field_mask_pb2 # type: ignore from google.protobuf import struct_pb2 # type: ignore from google.protobuf import timestamp_pb2 # type: ignore diff --git a/tests/unit/gapic/securitycenter_v1beta1/test_security_center.py b/tests/unit/gapic/securitycenter_v1beta1/test_security_center.py index e8948d08..5ff8b98e 100644 --- a/tests/unit/gapic/securitycenter_v1beta1/test_security_center.py +++ b/tests/unit/gapic/securitycenter_v1beta1/test_security_center.py @@ -45,6 +45,7 @@ from google.longrunning import operations_pb2 from google.oauth2 import service_account from google.protobuf import duration_pb2 # type: ignore +from google.protobuf import empty_pb2 # type: ignore from google.protobuf import field_mask_pb2 # type: ignore from google.protobuf import struct_pb2 # type: ignore from google.protobuf import timestamp_pb2 # type: ignore diff --git a/tests/unit/gapic/securitycenter_v1p1beta1/test_security_center.py b/tests/unit/gapic/securitycenter_v1p1beta1/test_security_center.py index 7299e89f..0607814f 100644 --- a/tests/unit/gapic/securitycenter_v1p1beta1/test_security_center.py +++ b/tests/unit/gapic/securitycenter_v1p1beta1/test_security_center.py @@ -45,6 +45,7 @@ from google.longrunning import operations_pb2 from google.oauth2 import service_account from google.protobuf import duration_pb2 # type: ignore +from google.protobuf import empty_pb2 # type: ignore from google.protobuf import field_mask_pb2 # type: ignore from google.protobuf import struct_pb2 # type: ignore from google.protobuf import timestamp_pb2 # type: ignore From 62c9cb879066162b9f30879cfa63de63ff27c63d Mon Sep 17 00:00:00 2001 From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com> Date: Tue, 6 Dec 2022 08:28:39 -0500 Subject: [PATCH 11/16] feat: add kernel_rootkit field to finding's list of attributes (#413) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat: add kernel_rootkit field to finding's list of attributes docs: miscellaneous style improvements PiperOrigin-RevId: 493119809 Source-Link: https://github.com/googleapis/googleapis/commit/6aff6786b511f8faaf2fd2288385f4ffc1e33d3c Source-Link: https://github.com/googleapis/googleapis-gen/commit/ee521940a017f393fce7731e4c22a43aff6b000e Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiZWU1MjE5NDBhMDE3ZjM5M2ZjZTc3MzFlNGMyMmE0M2FmZjZiMDAwZSJ9 * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md Co-authored-by: Owl Bot --- google/cloud/securitycenter/__init__.py | 2 + google/cloud/securitycenter_v1/__init__.py | 2 + .../services/security_center/async_client.py | 68 +++++++----- .../services/security_center/client.py | 68 +++++++----- .../security_center/transports/grpc.py | 6 +- .../transports/grpc_asyncio.py | 6 +- .../cloud/securitycenter_v1/types/__init__.py | 2 + .../types/external_system.py | 9 +- .../cloud/securitycenter_v1/types/finding.py | 12 +- .../securitycenter_v1/types/kernel_rootkit.py | 104 ++++++++++++++++++ .../types/notification_config.py | 5 +- .../types/securitycenter_service.py | 67 ++++++----- securitycenter-v1-py.tar.gz | Bin 0 -> 49152 bytes .../securitycenter_v1/test_security_center.py | 1 + 14 files changed, 250 insertions(+), 102 deletions(-) create mode 100644 google/cloud/securitycenter_v1/types/kernel_rootkit.py create mode 100644 securitycenter-v1-py.tar.gz diff --git a/google/cloud/securitycenter/__init__.py b/google/cloud/securitycenter/__init__.py index 39833c6b..0605464d 100644 --- a/google/cloud/securitycenter/__init__.py +++ b/google/cloud/securitycenter/__init__.py @@ -46,6 +46,7 @@ from google.cloud.securitycenter_v1.types.folder import Folder from google.cloud.securitycenter_v1.types.iam_binding import IamBinding from google.cloud.securitycenter_v1.types.indicator import Indicator +from google.cloud.securitycenter_v1.types.kernel_rootkit import KernelRootkit from google.cloud.securitycenter_v1.types.kubernetes import Kubernetes from google.cloud.securitycenter_v1.types.label import Label from google.cloud.securitycenter_v1.types.mitre_attack import MitreAttack @@ -138,6 +139,7 @@ "Folder", "IamBinding", "Indicator", + "KernelRootkit", "Kubernetes", "Label", "MitreAttack", diff --git a/google/cloud/securitycenter_v1/__init__.py b/google/cloud/securitycenter_v1/__init__.py index df18a2e7..0152ba9b 100644 --- a/google/cloud/securitycenter_v1/__init__.py +++ b/google/cloud/securitycenter_v1/__init__.py @@ -34,6 +34,7 @@ from .types.folder import Folder from .types.iam_binding import IamBinding from .types.indicator import Indicator +from .types.kernel_rootkit import KernelRootkit from .types.kubernetes import Kubernetes from .types.label import Label from .types.mitre_attack import MitreAttack @@ -136,6 +137,7 @@ "GroupResult", "IamBinding", "Indicator", + "KernelRootkit", "Kubernetes", "Label", "ListAssetsRequest", diff --git a/google/cloud/securitycenter_v1/services/security_center/async_client.py b/google/cloud/securitycenter_v1/services/security_center/async_client.py index d9e77b6c..6208332f 100644 --- a/google/cloud/securitycenter_v1/services/security_center/async_client.py +++ b/google/cloud/securitycenter_v1/services/security_center/async_client.py @@ -62,6 +62,7 @@ from google.cloud.securitycenter_v1.types import ( iam_binding, indicator, + kernel_rootkit, kubernetes, mitre_attack, ) @@ -871,9 +872,9 @@ async def sample_create_notification_config(): Required. Unique identifier provided by the client within the parent scope. It must be - between 1 and 128 characters, and - contains alphanumeric characters, - underscores or hyphens only. + between 1 and 128 characters and contain + alphanumeric characters, underscores, or + hyphens only. This corresponds to the ``config_id`` field on the ``request`` instance; if ``request`` is provided, this @@ -1086,7 +1087,10 @@ async def sample_delete_notification_config(): name (:class:`str`): Required. Name of the notification config to delete. Its format is - "organizations/[organization_id]/notificationConfigs/[config_id]". + "organizations/[organization_id]/notificationConfigs/[config_id]", + "folders/[folder_id]/notificationConfigs/[config_id]", + or + "projects/[project_id]/notificationConfigs/[config_id]". This corresponds to the ``name`` field on the ``request`` instance; if ``request`` is provided, this @@ -1147,7 +1151,7 @@ async def get_big_query_export( timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> bigquery_export.BigQueryExport: - r"""Gets a big query export. + r"""Gets a BigQuery export. .. code-block:: python @@ -1177,10 +1181,10 @@ async def sample_get_big_query_export(): Args: request (Optional[Union[google.cloud.securitycenter_v1.types.GetBigQueryExportRequest, dict]]): - The request object. Request message for retrieving a big - query export. + The request object. Request message for retrieving a + BigQuery export. name (:class:`str`): - Required. Name of the big query export to retrieve. Its + Required. Name of the BigQuery export to retrieve. Its format is organizations/{organization}/bigQueryExports/{export_id}, folders/{folder}/bigQueryExports/{export_id}, or @@ -1574,7 +1578,10 @@ async def sample_get_notification_config(): name (:class:`str`): Required. Name of the notification config to get. Its format is - "organizations/[organization_id]/notificationConfigs/[config_id]". + "organizations/[organization_id]/notificationConfigs/[config_id]", + "folders/[folder_id]/notificationConfigs/[config_id]", + or + "projects/[project_id]/notificationConfigs/[config_id]". This corresponds to the ``name`` field on the ``request`` instance; if ``request`` is provided, this @@ -2526,8 +2533,8 @@ async def sample_list_notification_configs(): The request object. Request message for listing notification configs. parent (:class:`str`): - Required. Name of the organization to list notification - configs. Its format is + Required. The name of the parent in which to list the + notification configurations. Its format is "organizations/[organization_id]", "folders/[folder_id]", or "projects/[project_id]". @@ -2909,11 +2916,12 @@ async def sample_set_finding_state(): The request object. Request message for updating a finding's state. name (:class:`str`): - Required. The relative resource name of the finding. - See: - https://cloud.google.com/apis/design/resource_names#relative_resource_name - Example: - "organizations/{organization_id}/sources/{source_id}/findings/{finding_id}". + Required. The `relative resource + name `__ + of the finding. Example: + "organizations/{organization_id}/sources/{source_id}/findings/{finding_id}", + "folders/{folder_id}/sources/{source_id}/findings/{finding_id}", + "projects/{project_id}/sources/{source_id}/findings/{finding_id}". This corresponds to the ``name`` field on the ``request`` instance; if ``request`` is provided, this @@ -3041,10 +3049,9 @@ async def sample_set_mute(): The request object. Request message for updating a finding's mute status. name (:class:`str`): - Required. The relative resource name of the finding. - See: - https://cloud.google.com/apis/design/resource_names#relative_resource_name - Example: + Required. The `relative resource + name `__ + of the finding. Example: "organizations/{organization_id}/sources/{source_id}/findings/{finding_id}", "folders/{folder_id}/sources/{source_id}/findings/{finding_id}", "projects/{project_id}/sources/{source_id}/findings/{finding_id}". @@ -4238,7 +4245,7 @@ async def create_big_query_export( timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> bigquery_export.BigQueryExport: - r"""Creates a big query export. + r"""Creates a BigQuery export. .. code-block:: python @@ -4269,18 +4276,19 @@ async def sample_create_big_query_export(): Args: request (Optional[Union[google.cloud.securitycenter_v1.types.CreateBigQueryExportRequest, dict]]): - The request object. Request message for creating a big - query export. + The request object. Request message for creating a + BigQuery export. parent (:class:`str`): - Required. Resource name of the new big query export's - parent. Its format is "organizations/[organization_id]", + Required. The name of the parent resource of the new + BigQuery export. Its format is + "organizations/[organization_id]", "folders/[folder_id]", or "projects/[project_id]". This corresponds to the ``parent`` field on the ``request`` instance; if ``request`` is provided, this should not be set. big_query_export (:class:`google.cloud.securitycenter_v1.types.BigQueryExport`): - Required. The big query export being + Required. The BigQuery export being created. This corresponds to the ``big_query_export`` field @@ -4366,7 +4374,7 @@ async def delete_big_query_export( timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> None: - r"""Deletes an existing big query export. + r"""Deletes an existing BigQuery export. .. code-block:: python @@ -4393,10 +4401,10 @@ async def sample_delete_big_query_export(): Args: request (Optional[Union[google.cloud.securitycenter_v1.types.DeleteBigQueryExportRequest, dict]]): - The request object. Request message for deleting a big - query export. + The request object. Request message for deleting a + BigQuery export. name (:class:`str`): - Required. Name of the big query export to delete. Its + Required. The name of the BigQuery export to delete. Its format is organizations/{organization}/bigQueryExports/{export_id}, folders/{folder}/bigQueryExports/{export_id}, or diff --git a/google/cloud/securitycenter_v1/services/security_center/client.py b/google/cloud/securitycenter_v1/services/security_center/client.py index 51be2298..b1c45bd9 100644 --- a/google/cloud/securitycenter_v1/services/security_center/client.py +++ b/google/cloud/securitycenter_v1/services/security_center/client.py @@ -66,6 +66,7 @@ from google.cloud.securitycenter_v1.types import ( iam_binding, indicator, + kernel_rootkit, kubernetes, mitre_attack, ) @@ -1244,9 +1245,9 @@ def sample_create_notification_config(): Required. Unique identifier provided by the client within the parent scope. It must be - between 1 and 128 characters, and - contains alphanumeric characters, - underscores or hyphens only. + between 1 and 128 characters and contain + alphanumeric characters, underscores, or + hyphens only. This corresponds to the ``config_id`` field on the ``request`` instance; if ``request`` is provided, this @@ -1463,7 +1464,10 @@ def sample_delete_notification_config(): name (str): Required. Name of the notification config to delete. Its format is - "organizations/[organization_id]/notificationConfigs/[config_id]". + "organizations/[organization_id]/notificationConfigs/[config_id]", + "folders/[folder_id]/notificationConfigs/[config_id]", + or + "projects/[project_id]/notificationConfigs/[config_id]". This corresponds to the ``name`` field on the ``request`` instance; if ``request`` is provided, this @@ -1528,7 +1532,7 @@ def get_big_query_export( timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> bigquery_export.BigQueryExport: - r"""Gets a big query export. + r"""Gets a BigQuery export. .. code-block:: python @@ -1558,10 +1562,10 @@ def sample_get_big_query_export(): Args: request (Union[google.cloud.securitycenter_v1.types.GetBigQueryExportRequest, dict]): - The request object. Request message for retrieving a big - query export. + The request object. Request message for retrieving a + BigQuery export. name (str): - Required. Name of the big query export to retrieve. Its + Required. Name of the BigQuery export to retrieve. Its format is organizations/{organization}/bigQueryExports/{export_id}, folders/{folder}/bigQueryExports/{export_id}, or @@ -1942,7 +1946,10 @@ def sample_get_notification_config(): name (str): Required. Name of the notification config to get. Its format is - "organizations/[organization_id]/notificationConfigs/[config_id]". + "organizations/[organization_id]/notificationConfigs/[config_id]", + "folders/[folder_id]/notificationConfigs/[config_id]", + or + "projects/[project_id]/notificationConfigs/[config_id]". This corresponds to the ``name`` field on the ``request`` instance; if ``request`` is provided, this @@ -2831,8 +2838,8 @@ def sample_list_notification_configs(): The request object. Request message for listing notification configs. parent (str): - Required. Name of the organization to list notification - configs. Its format is + Required. The name of the parent in which to list the + notification configurations. Its format is "organizations/[organization_id]", "folders/[folder_id]", or "projects/[project_id]". @@ -3198,11 +3205,12 @@ def sample_set_finding_state(): The request object. Request message for updating a finding's state. name (str): - Required. The relative resource name of the finding. - See: - https://cloud.google.com/apis/design/resource_names#relative_resource_name - Example: - "organizations/{organization_id}/sources/{source_id}/findings/{finding_id}". + Required. The `relative resource + name `__ + of the finding. Example: + "organizations/{organization_id}/sources/{source_id}/findings/{finding_id}", + "folders/{folder_id}/sources/{source_id}/findings/{finding_id}", + "projects/{project_id}/sources/{source_id}/findings/{finding_id}". This corresponds to the ``name`` field on the ``request`` instance; if ``request`` is provided, this @@ -3330,10 +3338,9 @@ def sample_set_mute(): The request object. Request message for updating a finding's mute status. name (str): - Required. The relative resource name of the finding. - See: - https://cloud.google.com/apis/design/resource_names#relative_resource_name - Example: + Required. The `relative resource + name `__ + of the finding. Example: "organizations/{organization_id}/sources/{source_id}/findings/{finding_id}", "folders/{folder_id}/sources/{source_id}/findings/{finding_id}", "projects/{project_id}/sources/{source_id}/findings/{finding_id}". @@ -4520,7 +4527,7 @@ def create_big_query_export( timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> bigquery_export.BigQueryExport: - r"""Creates a big query export. + r"""Creates a BigQuery export. .. code-block:: python @@ -4551,18 +4558,19 @@ def sample_create_big_query_export(): Args: request (Union[google.cloud.securitycenter_v1.types.CreateBigQueryExportRequest, dict]): - The request object. Request message for creating a big - query export. + The request object. Request message for creating a + BigQuery export. parent (str): - Required. Resource name of the new big query export's - parent. Its format is "organizations/[organization_id]", + Required. The name of the parent resource of the new + BigQuery export. Its format is + "organizations/[organization_id]", "folders/[folder_id]", or "projects/[project_id]". This corresponds to the ``parent`` field on the ``request`` instance; if ``request`` is provided, this should not be set. big_query_export (google.cloud.securitycenter_v1.types.BigQueryExport): - Required. The big query export being + Required. The BigQuery export being created. This corresponds to the ``big_query_export`` field @@ -4648,7 +4656,7 @@ def delete_big_query_export( timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> None: - r"""Deletes an existing big query export. + r"""Deletes an existing BigQuery export. .. code-block:: python @@ -4675,10 +4683,10 @@ def sample_delete_big_query_export(): Args: request (Union[google.cloud.securitycenter_v1.types.DeleteBigQueryExportRequest, dict]): - The request object. Request message for deleting a big - query export. + The request object. Request message for deleting a + BigQuery export. name (str): - Required. Name of the big query export to delete. Its + Required. The name of the BigQuery export to delete. Its format is organizations/{organization}/bigQueryExports/{export_id}, folders/{folder}/bigQueryExports/{export_id}, or diff --git a/google/cloud/securitycenter_v1/services/security_center/transports/grpc.py b/google/cloud/securitycenter_v1/services/security_center/transports/grpc.py index 5b8ef58a..180962c2 100644 --- a/google/cloud/securitycenter_v1/services/security_center/transports/grpc.py +++ b/google/cloud/securitycenter_v1/services/security_center/transports/grpc.py @@ -468,7 +468,7 @@ def get_big_query_export( ]: r"""Return a callable for the get big query export method over gRPC. - Gets a big query export. + Gets a BigQuery export. Returns: Callable[[~.GetBigQueryExportRequest], @@ -1189,7 +1189,7 @@ def create_big_query_export( ]: r"""Return a callable for the create big query export method over gRPC. - Creates a big query export. + Creates a BigQuery export. Returns: Callable[[~.CreateBigQueryExportRequest], @@ -1217,7 +1217,7 @@ def delete_big_query_export( ]: r"""Return a callable for the delete big query export method over gRPC. - Deletes an existing big query export. + Deletes an existing BigQuery export. Returns: Callable[[~.DeleteBigQueryExportRequest], diff --git a/google/cloud/securitycenter_v1/services/security_center/transports/grpc_asyncio.py b/google/cloud/securitycenter_v1/services/security_center/transports/grpc_asyncio.py index b5b8f2d4..5997a063 100644 --- a/google/cloud/securitycenter_v1/services/security_center/transports/grpc_asyncio.py +++ b/google/cloud/securitycenter_v1/services/security_center/transports/grpc_asyncio.py @@ -482,7 +482,7 @@ def get_big_query_export( ]: r"""Return a callable for the get big query export method over gRPC. - Gets a big query export. + Gets a BigQuery export. Returns: Callable[[~.GetBigQueryExportRequest], @@ -1211,7 +1211,7 @@ def create_big_query_export( ]: r"""Return a callable for the create big query export method over gRPC. - Creates a big query export. + Creates a BigQuery export. Returns: Callable[[~.CreateBigQueryExportRequest], @@ -1239,7 +1239,7 @@ def delete_big_query_export( ]: r"""Return a callable for the delete big query export method over gRPC. - Deletes an existing big query export. + Deletes an existing BigQuery export. Returns: Callable[[~.DeleteBigQueryExportRequest], diff --git a/google/cloud/securitycenter_v1/types/__init__.py b/google/cloud/securitycenter_v1/types/__init__.py index 3c6a6227..5d902c0f 100644 --- a/google/cloud/securitycenter_v1/types/__init__.py +++ b/google/cloud/securitycenter_v1/types/__init__.py @@ -28,6 +28,7 @@ from .folder import Folder from .iam_binding import IamBinding from .indicator import Indicator +from .kernel_rootkit import KernelRootkit from .kubernetes import Kubernetes from .label import Label from .mitre_attack import MitreAttack @@ -107,6 +108,7 @@ "Folder", "IamBinding", "Indicator", + "KernelRootkit", "Kubernetes", "Label", "MitreAttack", diff --git a/google/cloud/securitycenter_v1/types/external_system.py b/google/cloud/securitycenter_v1/types/external_system.py index bc4ab5b4..0dc9880a 100644 --- a/google/cloud/securitycenter_v1/types/external_system.py +++ b/google/cloud/securitycenter_v1/types/external_system.py @@ -31,10 +31,11 @@ class ExternalSystem(proto.Message): Attributes: name (str): - External System Name e.g. jira, demisto, etc. e.g.: - ``organizations/1234/sources/5678/findings/123456/externalSystems/jira`` - ``folders/1234/sources/5678/findings/123456/externalSystems/jira`` - ``projects/1234/sources/5678/findings/123456/externalSystems/jira`` + Full resource name of the external system, + for example: + "organizations/1234/sources/5678/findings/123456/externalSystems/jira", + "folders/1234/sources/5678/findings/123456/externalSystems/jira", + "projects/1234/sources/5678/findings/123456/externalSystems/jira". assignees (MutableSequence[str]): References primary/secondary etc assignees in the external system. diff --git a/google/cloud/securitycenter_v1/types/finding.py b/google/cloud/securitycenter_v1/types/finding.py index 36de4fb3..c8594d2a 100644 --- a/google/cloud/securitycenter_v1/types/finding.py +++ b/google/cloud/securitycenter_v1/types/finding.py @@ -27,6 +27,7 @@ ) from google.cloud.securitycenter_v1.types import external_system, file, iam_binding from google.cloud.securitycenter_v1.types import exfiltration as gcs_exfiltration +from google.cloud.securitycenter_v1.types import kernel_rootkit as gcs_kernel_rootkit from google.cloud.securitycenter_v1.types import mitre_attack as gcs_mitre_attack from google.cloud.securitycenter_v1.types import security_marks as gcs_security_marks from google.cloud.securitycenter_v1.types import vulnerability as gcs_vulnerability @@ -133,8 +134,8 @@ class Finding(proto.Message): high confidence, indicates a computer intrusion. Reference: https://en.wikipedia.org/wiki/Indicator_of_compromise vulnerability (google.cloud.securitycenter_v1.types.Vulnerability): - Represents vulnerability specific fields like - cve, cvss scores etc. CVE stands for Common + Represents vulnerability-specific fields like + CVE and CVS scores. CVE stands for Common Vulnerabilities and Exposures (https://cve.mitre.org/about/) mute_update_time (google.protobuf.timestamp_pb2.Timestamp): @@ -212,6 +213,8 @@ class Finding(proto.Message): Database associated with the finding. files (MutableSequence[google.cloud.securitycenter_v1.types.File]): File associated with the finding. + kernel_rootkit (google.cloud.securitycenter_v1.types.KernelRootkit): + Kernel Rootkit signature. """ class State(proto.Enum): @@ -409,6 +412,11 @@ class FindingClass(proto.Enum): number=46, message=file.File, ) + kernel_rootkit: gcs_kernel_rootkit.KernelRootkit = proto.Field( + proto.MESSAGE, + number=50, + message=gcs_kernel_rootkit.KernelRootkit, + ) __all__ = tuple(sorted(__protobuf__.manifest)) diff --git a/google/cloud/securitycenter_v1/types/kernel_rootkit.py b/google/cloud/securitycenter_v1/types/kernel_rootkit.py new file mode 100644 index 00000000..a177766e --- /dev/null +++ b/google/cloud/securitycenter_v1/types/kernel_rootkit.py @@ -0,0 +1,104 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 Google LLC +# +# 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. +# +from typing import MutableMapping, MutableSequence + +import proto # type: ignore + +__protobuf__ = proto.module( + package="google.cloud.securitycenter.v1", + manifest={ + "KernelRootkit", + }, +) + + +class KernelRootkit(proto.Message): + r"""Kernel mode rootkit signatures. + + Attributes: + name (str): + Rootkit name when available. + unexpected_code_modification (bool): + True if unexpected modifications of kernel + code memory are present. + unexpected_read_only_data_modification (bool): + True if unexpected modifications of kernel + read-only data memory are present. + unexpected_ftrace_handler (bool): + True if ``ftrace`` points are present with callbacks + pointing to regions that are not in the expected kernel or + module code range. + unexpected_kprobe_handler (bool): + True if ``kprobe`` points are present with callbacks + pointing to regions that are not in the expected kernel or + module code range. + unexpected_kernel_code_pages (bool): + True if kernel code pages that are not in the + expected kernel or module code regions are + present. + unexpected_system_call_handler (bool): + True if system call handlers that are are not + in the expected kernel or module code regions + are present. + unexpected_interrupt_handler (bool): + True if interrupt handlers that are are not + in the expected kernel or module code regions + are present. + unexpected_processes_in_runqueue (bool): + True if unexpected processes in the scheduler + run queue are present. Such processes are in the + run queue, but not in the process task list. + """ + + name: str = proto.Field( + proto.STRING, + number=1, + ) + unexpected_code_modification: bool = proto.Field( + proto.BOOL, + number=2, + ) + unexpected_read_only_data_modification: bool = proto.Field( + proto.BOOL, + number=3, + ) + unexpected_ftrace_handler: bool = proto.Field( + proto.BOOL, + number=4, + ) + unexpected_kprobe_handler: bool = proto.Field( + proto.BOOL, + number=5, + ) + unexpected_kernel_code_pages: bool = proto.Field( + proto.BOOL, + number=6, + ) + unexpected_system_call_handler: bool = proto.Field( + proto.BOOL, + number=7, + ) + unexpected_interrupt_handler: bool = proto.Field( + proto.BOOL, + number=8, + ) + unexpected_processes_in_runqueue: bool = proto.Field( + proto.BOOL, + number=9, + ) + + +__all__ = tuple(sorted(__protobuf__.manifest)) diff --git a/google/cloud/securitycenter_v1/types/notification_config.py b/google/cloud/securitycenter_v1/types/notification_config.py index 2eec73ca..fdc7e57b 100644 --- a/google/cloud/securitycenter_v1/types/notification_config.py +++ b/google/cloud/securitycenter_v1/types/notification_config.py @@ -40,7 +40,10 @@ class NotificationConfig(proto.Message): The relative resource name of this notification config. See: https://cloud.google.com/apis/design/resource_names#relative_resource_name Example: - "organizations/{organization_id}/notificationConfigs/notify_public_bucket". + "organizations/{organization_id}/notificationConfigs/notify_public_bucket", + "folders/{folder_id}/notificationConfigs/notify_public_bucket", + or + "projects/{project_id}/notificationConfigs/notify_public_bucket". description (str): The description of the notification config (max of 1024 characters). diff --git a/google/cloud/securitycenter_v1/types/securitycenter_service.py b/google/cloud/securitycenter_v1/types/securitycenter_service.py index 4ad91ea7..f85c3384 100644 --- a/google/cloud/securitycenter_v1/types/securitycenter_service.py +++ b/google/cloud/securitycenter_v1/types/securitycenter_service.py @@ -228,8 +228,8 @@ class CreateNotificationConfigRequest(proto.Message): Required. Unique identifier provided by the client within the parent scope. It must be between 1 and 128 - characters, and contains alphanumeric - characters, underscores or hyphens only. + characters and contain alphanumeric characters, + underscores, or hyphens only. notification_config (google.cloud.securitycenter_v1.types.NotificationConfig): Required. The notification config being created. The name and the service account will @@ -300,7 +300,9 @@ class DeleteNotificationConfigRequest(proto.Message): name (str): Required. Name of the notification config to delete. Its format is - "organizations/[organization_id]/notificationConfigs/[config_id]". + "organizations/[organization_id]/notificationConfigs/[config_id]", + "folders/[folder_id]/notificationConfigs/[config_id]", or + "projects/[project_id]/notificationConfigs/[config_id]". """ name: str = proto.Field( @@ -310,11 +312,11 @@ class DeleteNotificationConfigRequest(proto.Message): class GetBigQueryExportRequest(proto.Message): - r"""Request message for retrieving a big query export. + r"""Request message for retrieving a BigQuery export. Attributes: name (str): - Required. Name of the big query export to retrieve. Its + Required. Name of the BigQuery export to retrieve. Its format is organizations/{organization}/bigQueryExports/{export_id}, folders/{folder}/bigQueryExports/{export_id}, or @@ -351,7 +353,9 @@ class GetNotificationConfigRequest(proto.Message): name (str): Required. Name of the notification config to get. Its format is - "organizations/[organization_id]/notificationConfigs/[config_id]". + "organizations/[organization_id]/notificationConfigs/[config_id]", + "folders/[folder_id]/notificationConfigs/[config_id]", or + "projects/[project_id]/notificationConfigs/[config_id]". """ name: str = proto.Field( @@ -396,9 +400,9 @@ class GroupAssetsRequest(proto.Message): Attributes: parent (str): - Required. Name of the organization to groupBy. Its format is - "organizations/[organization_id], folders/[folder_id], or - projects/[project_id]". + Required. The name of the parent to group the assets by. Its + format is "organizations/[organization_id], + folders/[folder_id], or projects/[project_id]". filter (str): Expression that defines the filter to apply across assets. The expression is a list of zero or more restrictions @@ -959,9 +963,10 @@ class ListNotificationConfigsRequest(proto.Message): Attributes: parent (str): - Required. Name of the organization to list notification - configs. Its format is "organizations/[organization_id]", - "folders/[folder_id]", or "projects/[project_id]". + Required. The name of the parent in which to list the + notification configurations. Its format is + "organizations/[organization_id]", "folders/[folder_id]", or + "projects/[project_id]". page_token (str): The value returned by the last ``ListNotificationConfigsResponse``; indicates that this is @@ -1080,8 +1085,8 @@ class ListAssetsRequest(proto.Message): Attributes: parent (str): - Required. Name of the organization assets should belong to. - Its format is "organizations/[organization_id], + Required. The name of the parent that the listed assets + belong to. Its format is "organizations/[organization_id], folders/[folder_id], or projects/[project_id]". filter (str): Expression that defines the filter to apply across assets. @@ -1702,10 +1707,12 @@ class SetFindingStateRequest(proto.Message): Attributes: name (str): - Required. The relative resource name of the finding. See: - https://cloud.google.com/apis/design/resource_names#relative_resource_name - Example: - "organizations/{organization_id}/sources/{source_id}/findings/{finding_id}". + Required. The `relative resource + name `__ + of the finding. Example: + "organizations/{organization_id}/sources/{source_id}/findings/{finding_id}", + "folders/{folder_id}/sources/{source_id}/findings/{finding_id}", + "projects/{project_id}/sources/{source_id}/findings/{finding_id}". state (google.cloud.securitycenter_v1.types.Finding.State): Required. The desired State of the finding. start_time (google.protobuf.timestamp_pb2.Timestamp): @@ -1734,9 +1741,9 @@ class SetMuteRequest(proto.Message): Attributes: name (str): - Required. The relative resource name of the finding. See: - https://cloud.google.com/apis/design/resource_names#relative_resource_name - Example: + Required. The `relative resource + name `__ + of the finding. Example: "organizations/{organization_id}/sources/{source_id}/findings/{finding_id}", "folders/{folder_id}/sources/{source_id}/findings/{finding_id}", "projects/{project_id}/sources/{source_id}/findings/{finding_id}". @@ -1967,15 +1974,16 @@ class UpdateSecurityMarksRequest(proto.Message): class CreateBigQueryExportRequest(proto.Message): - r"""Request message for creating a big query export. + r"""Request message for creating a BigQuery export. Attributes: parent (str): - Required. Resource name of the new big query export's - parent. Its format is "organizations/[organization_id]", - "folders/[folder_id]", or "projects/[project_id]". + Required. The name of the parent resource of the new + BigQuery export. Its format is + "organizations/[organization_id]", "folders/[folder_id]", or + "projects/[project_id]". big_query_export (google.cloud.securitycenter_v1.types.BigQueryExport): - Required. The big query export being created. + Required. The BigQuery export being created. big_query_export_id (str): Required. Unique identifier provided by the client within the parent scope. It must consist @@ -2090,12 +2098,13 @@ def raw_page(self): class DeleteBigQueryExportRequest(proto.Message): - r"""Request message for deleting a big query export. + r"""Request message for deleting a BigQuery export. Attributes: name (str): - Required. Name of the big query export to delete. Its format - is organizations/{organization}/bigQueryExports/{export_id}, + Required. The name of the BigQuery export to delete. Its + format is + organizations/{organization}/bigQueryExports/{export_id}, folders/{folder}/bigQueryExports/{export_id}, or projects/{project}/bigQueryExports/{export_id} """ diff --git a/securitycenter-v1-py.tar.gz b/securitycenter-v1-py.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..23c452a77c776833f97346954867f7a0c6f0197e GIT binary patch literal 49152 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 Date: Thu, 8 Dec 2022 13:05:37 -0500 Subject: [PATCH 12/16] fix(deps): Require google-api-core >=1.34.0, >=2.11.0 (#414) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix(deps): Require google-api-core >=1.34.0, >=2.11.0 fix: Drop usage of pkg_resources fix: Fix timeout default values docs(samples): Snippetgen should call await on the operation coroutine before calling result PiperOrigin-RevId: 493260409 Source-Link: https://github.com/googleapis/googleapis/commit/fea43879f83a8d0dacc9353b3f75f8f46d37162f Source-Link: https://github.com/googleapis/googleapis-gen/commit/387b7344c7529ee44be84e613b19a820508c612b Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiMzg3YjczNDRjNzUyOWVlNDRiZTg0ZTYxM2IxOWE4MjA1MDhjNjEyYiJ9 * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md * add gapic_version.py * add gapic_version.py Co-authored-by: Owl Bot Co-authored-by: Anthonios Partheniou --- .coveragerc | 5 -- .../cloud/securitycenter_v1/gapic_version.py | 16 ++++ .../services/security_center/async_client.py | 90 +++++++++---------- .../services/security_center/client.py | 86 +++++++++--------- .../security_center/transports/base.py | 13 +-- .../securitycenter_v1beta1/gapic_version.py | 16 ++++ .../services/security_center/async_client.py | 52 +++++------ .../services/security_center/client.py | 50 +++++------ .../security_center/transports/base.py | 13 +-- .../securitycenter_v1p1beta1/gapic_version.py | 16 ++++ .../services/security_center/async_client.py | 62 ++++++------- .../services/security_center/client.py | 60 ++++++------- .../security_center/transports/base.py | 13 +-- release-please-config.json | 3 + ...ecurity_center_bulk_mute_findings_async.py | 2 +- ...curity_center_run_asset_discovery_async.py | 2 +- ...curity_center_run_asset_discovery_async.py | 2 +- ...curity_center_run_asset_discovery_async.py | 2 +- setup.py | 2 +- testing/constraints-3.7.txt | 2 +- 20 files changed, 257 insertions(+), 250 deletions(-) create mode 100644 google/cloud/securitycenter_v1/gapic_version.py create mode 100644 google/cloud/securitycenter_v1beta1/gapic_version.py create mode 100644 google/cloud/securitycenter_v1p1beta1/gapic_version.py diff --git a/.coveragerc b/.coveragerc index 3655af7f..554452e0 100644 --- a/.coveragerc +++ b/.coveragerc @@ -10,8 +10,3 @@ exclude_lines = pragma: NO COVER # Ignore debug-only repr def __repr__ - # Ignore pkg_resources exceptions. - # This is added at the module level as a safeguard for if someone - # generates the code and tries to run it without pip installing. This - # makes it virtually impossible to test properly. - except pkg_resources.DistributionNotFound diff --git a/google/cloud/securitycenter_v1/gapic_version.py b/google/cloud/securitycenter_v1/gapic_version.py new file mode 100644 index 00000000..872b3e95 --- /dev/null +++ b/google/cloud/securitycenter_v1/gapic_version.py @@ -0,0 +1,16 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 Google LLC +# +# 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. +# +__version__ = "1.16.2" # {x-release-please-version} diff --git a/google/cloud/securitycenter_v1/services/security_center/async_client.py b/google/cloud/securitycenter_v1/services/security_center/async_client.py index 6208332f..974482c5 100644 --- a/google/cloud/securitycenter_v1/services/security_center/async_client.py +++ b/google/cloud/securitycenter_v1/services/security_center/async_client.py @@ -34,7 +34,8 @@ from google.api_core.client_options import ClientOptions from google.auth import credentials as ga_credentials # type: ignore from google.oauth2 import service_account # type: ignore -import pkg_resources + +from google.cloud.securitycenter_v1 import gapic_version as package_version try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault] @@ -297,7 +298,7 @@ async def bulk_mute_findings( *, parent: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> operation_async.AsyncOperation: r"""Kicks off an LRO to bulk mute findings for a parent @@ -330,7 +331,7 @@ async def sample_bulk_mute_findings(): print("Waiting for operation to complete...") - response = await operation.result() + response = (await operation).result() # Handle the response print(response) @@ -429,7 +430,7 @@ async def create_source( parent: Optional[str] = None, source: Optional[gcs_source.Source] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> gcs_source.Source: r"""Creates a source. @@ -549,7 +550,7 @@ async def create_finding( finding_id: Optional[str] = None, finding: Optional[gcs_finding.Finding] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> gcs_finding.Finding: r"""Creates a finding. The corresponding source must @@ -687,7 +688,7 @@ async def create_mute_config( mute_config: Optional[gcs_mute_config.MuteConfig] = None, mute_config_id: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> gcs_mute_config.MuteConfig: r"""Creates a mute config. @@ -824,7 +825,7 @@ async def create_notification_config( gcs_notification_config.NotificationConfig ] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> gcs_notification_config.NotificationConfig: r"""Creates a notification config. @@ -958,7 +959,7 @@ async def delete_mute_config( *, name: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> None: r"""Deletes an existing mute config. @@ -1052,7 +1053,7 @@ async def delete_notification_config( *, name: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> None: r"""Deletes a notification config. @@ -1148,7 +1149,7 @@ async def get_big_query_export( *, name: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> bigquery_export.BigQueryExport: r"""Gets a BigQuery export. @@ -1253,7 +1254,7 @@ async def get_iam_policy( *, resource: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> policy_pb2.Policy: r"""Gets the access control policy on the specified @@ -1432,7 +1433,7 @@ async def get_mute_config( *, name: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> mute_config.MuteConfig: r"""Gets a mute config. @@ -1540,7 +1541,7 @@ async def get_notification_config( *, name: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> notification_config.NotificationConfig: r"""Gets a notification config. @@ -1662,7 +1663,7 @@ async def get_organization_settings( *, name: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> organization_settings.OrganizationSettings: r"""Gets the settings for an organization. @@ -1776,7 +1777,7 @@ async def get_source( *, name: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> source.Source: r"""Gets a source. @@ -1894,7 +1895,7 @@ async def group_assets( ] = None, *, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> pagers.GroupAssetsAsyncPager: r"""Filters an organization's assets and groups them by @@ -2003,7 +2004,7 @@ async def group_findings( parent: Optional[str] = None, group_by: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> pagers.GroupFindingsAsyncPager: r"""Filters an organization or source's findings and groups them by @@ -2164,7 +2165,7 @@ async def list_assets( request: Optional[Union[securitycenter_service.ListAssetsRequest, dict]] = None, *, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> pagers.ListAssetsAsyncPager: r"""Lists an organization's assets. @@ -2267,7 +2268,7 @@ async def list_findings( ] = None, *, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> pagers.ListFindingsAsyncPager: r"""Lists an organization or source's findings. @@ -2376,7 +2377,7 @@ async def list_mute_configs( *, parent: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> pagers.ListMuteConfigsAsyncPager: r"""Lists mute configs. @@ -2496,7 +2497,7 @@ async def list_notification_configs( *, parent: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> pagers.ListNotificationConfigsAsyncPager: r"""Lists notification configs. @@ -2625,7 +2626,7 @@ async def list_sources( *, parent: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> pagers.ListSourcesAsyncPager: r"""Lists all sources belonging to an organization. @@ -2752,7 +2753,7 @@ async def run_asset_discovery( *, parent: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> operation_async.AsyncOperation: r"""Runs asset discovery. The discovery is tracked with a @@ -2787,7 +2788,7 @@ async def sample_run_asset_discovery(): print("Waiting for operation to complete...") - response = await operation.result() + response = (await operation).result() # Handle the response print(response) @@ -2879,7 +2880,7 @@ async def set_finding_state( state: Optional[finding.Finding.State] = None, start_time: Optional[timestamp_pb2.Timestamp] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> finding.Finding: r"""Updates the state of a finding. @@ -3012,7 +3013,7 @@ async def set_mute( name: Optional[str] = None, mute: Optional[finding.Finding.Mute] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> finding.Finding: r"""Updates the mute state of a finding. @@ -3135,7 +3136,7 @@ async def set_iam_policy( *, resource: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> policy_pb2.Policy: r"""Sets the access control policy on the specified @@ -3303,7 +3304,7 @@ async def test_iam_permissions( resource: Optional[str] = None, permissions: Optional[MutableSequence[str]] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> iam_policy_pb2.TestIamPermissionsResponse: r"""Returns the permissions that a caller has on the @@ -3433,7 +3434,7 @@ async def update_external_system( external_system: Optional[gcs_external_system.ExternalSystem] = None, update_mask: Optional[field_mask_pb2.FieldMask] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> gcs_external_system.ExternalSystem: r"""Updates external system. This is for a given finding. @@ -3549,7 +3550,7 @@ async def update_finding( *, finding: Optional[gcs_finding.Finding] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> gcs_finding.Finding: r"""Creates or updates a finding. The corresponding @@ -3668,7 +3669,7 @@ async def update_mute_config( mute_config: Optional[gcs_mute_config.MuteConfig] = None, update_mask: Optional[field_mask_pb2.FieldMask] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> gcs_mute_config.MuteConfig: r"""Updates a mute config. @@ -3791,7 +3792,7 @@ async def update_notification_config( ] = None, update_mask: Optional[field_mask_pb2.FieldMask] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> gcs_notification_config.NotificationConfig: r"""Updates a notification config. The following update fields are @@ -3914,7 +3915,7 @@ async def update_organization_settings( gcs_organization_settings.OrganizationSettings ] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> gcs_organization_settings.OrganizationSettings: r"""Updates an organization's settings. @@ -4020,7 +4021,7 @@ async def update_source( *, source: Optional[gcs_source.Source] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> gcs_source.Source: r"""Updates a source. @@ -4129,7 +4130,7 @@ async def update_security_marks( *, security_marks: Optional[gcs_security_marks.SecurityMarks] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> gcs_security_marks.SecurityMarks: r"""Updates security marks. @@ -4242,7 +4243,7 @@ async def create_big_query_export( big_query_export: Optional[bigquery_export.BigQueryExport] = None, big_query_export_id: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> bigquery_export.BigQueryExport: r"""Creates a BigQuery export. @@ -4371,7 +4372,7 @@ async def delete_big_query_export( *, name: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> None: r"""Deletes an existing BigQuery export. @@ -4467,7 +4468,7 @@ async def update_big_query_export( big_query_export: Optional[bigquery_export.BigQueryExport] = None, update_mask: Optional[field_mask_pb2.FieldMask] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> bigquery_export.BigQueryExport: r"""Updates a BigQuery export. @@ -4582,7 +4583,7 @@ async def list_big_query_exports( *, parent: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> pagers.ListBigQueryExportsAsyncPager: r"""Lists BigQuery exports. Note that when requesting @@ -4706,14 +4707,9 @@ async def __aexit__(self, exc_type, exc, tb): await self.transport.close() -try: - DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo( - gapic_version=pkg_resources.get_distribution( - "google-cloud-securitycenter", - ).version, - ) -except pkg_resources.DistributionNotFound: - DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo() +DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo( + gapic_version=package_version.__version__ +) __all__ = ("SecurityCenterAsyncClient",) diff --git a/google/cloud/securitycenter_v1/services/security_center/client.py b/google/cloud/securitycenter_v1/services/security_center/client.py index b1c45bd9..f12c2753 100644 --- a/google/cloud/securitycenter_v1/services/security_center/client.py +++ b/google/cloud/securitycenter_v1/services/security_center/client.py @@ -38,7 +38,8 @@ from google.auth.transport import mtls # type: ignore from google.auth.transport.grpc import SslCredentials # type: ignore from google.oauth2 import service_account # type: ignore -import pkg_resources + +from google.cloud.securitycenter_v1 import gapic_version as package_version try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault] @@ -670,7 +671,7 @@ def bulk_mute_findings( *, parent: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> operation.Operation: r"""Kicks off an LRO to bulk mute findings for a parent @@ -802,7 +803,7 @@ def create_source( parent: Optional[str] = None, source: Optional[gcs_source.Source] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> gcs_source.Source: r"""Creates a source. @@ -922,7 +923,7 @@ def create_finding( finding_id: Optional[str] = None, finding: Optional[gcs_finding.Finding] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> gcs_finding.Finding: r"""Creates a finding. The corresponding source must @@ -1060,7 +1061,7 @@ def create_mute_config( mute_config: Optional[gcs_mute_config.MuteConfig] = None, mute_config_id: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> gcs_mute_config.MuteConfig: r"""Creates a mute config. @@ -1197,7 +1198,7 @@ def create_notification_config( gcs_notification_config.NotificationConfig ] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> gcs_notification_config.NotificationConfig: r"""Creates a notification config. @@ -1335,7 +1336,7 @@ def delete_mute_config( *, name: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> None: r"""Deletes an existing mute config. @@ -1429,7 +1430,7 @@ def delete_notification_config( *, name: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> None: r"""Deletes a notification config. @@ -1529,7 +1530,7 @@ def get_big_query_export( *, name: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> bigquery_export.BigQueryExport: r"""Gets a BigQuery export. @@ -1634,7 +1635,7 @@ def get_iam_policy( *, resource: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> policy_pb2.Policy: r"""Gets the access control policy on the specified @@ -1800,7 +1801,7 @@ def get_mute_config( *, name: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> mute_config.MuteConfig: r"""Gets a mute config. @@ -1908,7 +1909,7 @@ def get_notification_config( *, name: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> notification_config.NotificationConfig: r"""Gets a notification config. @@ -2020,7 +2021,7 @@ def get_organization_settings( *, name: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> organization_settings.OrganizationSettings: r"""Gets the settings for an organization. @@ -2128,7 +2129,7 @@ def get_source( *, name: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> source.Source: r"""Gets a source. @@ -2236,7 +2237,7 @@ def group_assets( ] = None, *, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> pagers.GroupAssetsPager: r"""Filters an organization's assets and groups them by @@ -2336,7 +2337,7 @@ def group_findings( parent: Optional[str] = None, group_by: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> pagers.GroupFindingsPager: r"""Filters an organization or source's findings and groups them by @@ -2487,7 +2488,7 @@ def list_assets( request: Optional[Union[securitycenter_service.ListAssetsRequest, dict]] = None, *, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> pagers.ListAssetsPager: r"""Lists an organization's assets. @@ -2581,7 +2582,7 @@ def list_findings( ] = None, *, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> pagers.ListFindingsPager: r"""Lists an organization or source's findings. @@ -2681,7 +2682,7 @@ def list_mute_configs( *, parent: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> pagers.ListMuteConfigsPager: r"""Lists mute configs. @@ -2801,7 +2802,7 @@ def list_notification_configs( *, parent: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> pagers.ListNotificationConfigsPager: r"""Lists notification configs. @@ -2924,7 +2925,7 @@ def list_sources( *, parent: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> pagers.ListSourcesPager: r"""Lists all sources belonging to an organization. @@ -3041,7 +3042,7 @@ def run_asset_discovery( *, parent: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> operation.Operation: r"""Runs asset discovery. The discovery is tracked with a @@ -3168,7 +3169,7 @@ def set_finding_state( state: Optional[finding.Finding.State] = None, start_time: Optional[timestamp_pb2.Timestamp] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> finding.Finding: r"""Updates the state of a finding. @@ -3301,7 +3302,7 @@ def set_mute( name: Optional[str] = None, mute: Optional[finding.Finding.Mute] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> finding.Finding: r"""Updates the mute state of a finding. @@ -3424,7 +3425,7 @@ def set_iam_policy( *, resource: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> policy_pb2.Policy: r"""Sets the access control policy on the specified @@ -3589,7 +3590,7 @@ def test_iam_permissions( resource: Optional[str] = None, permissions: Optional[MutableSequence[str]] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> iam_policy_pb2.TestIamPermissionsResponse: r"""Returns the permissions that a caller has on the @@ -3707,7 +3708,7 @@ def update_external_system( external_system: Optional[gcs_external_system.ExternalSystem] = None, update_mask: Optional[field_mask_pb2.FieldMask] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> gcs_external_system.ExternalSystem: r"""Updates external system. This is for a given finding. @@ -3823,7 +3824,7 @@ def update_finding( *, finding: Optional[gcs_finding.Finding] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> gcs_finding.Finding: r"""Creates or updates a finding. The corresponding @@ -3942,7 +3943,7 @@ def update_mute_config( mute_config: Optional[gcs_mute_config.MuteConfig] = None, update_mask: Optional[field_mask_pb2.FieldMask] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> gcs_mute_config.MuteConfig: r"""Updates a mute config. @@ -4065,7 +4066,7 @@ def update_notification_config( ] = None, update_mask: Optional[field_mask_pb2.FieldMask] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> gcs_notification_config.NotificationConfig: r"""Updates a notification config. The following update fields are @@ -4192,7 +4193,7 @@ def update_organization_settings( gcs_organization_settings.OrganizationSettings ] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> gcs_organization_settings.OrganizationSettings: r"""Updates an organization's settings. @@ -4302,7 +4303,7 @@ def update_source( *, source: Optional[gcs_source.Source] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> gcs_source.Source: r"""Updates a source. @@ -4411,7 +4412,7 @@ def update_security_marks( *, security_marks: Optional[gcs_security_marks.SecurityMarks] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> gcs_security_marks.SecurityMarks: r"""Updates security marks. @@ -4524,7 +4525,7 @@ def create_big_query_export( big_query_export: Optional[bigquery_export.BigQueryExport] = None, big_query_export_id: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> bigquery_export.BigQueryExport: r"""Creates a BigQuery export. @@ -4653,7 +4654,7 @@ def delete_big_query_export( *, name: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> None: r"""Deletes an existing BigQuery export. @@ -4749,7 +4750,7 @@ def update_big_query_export( big_query_export: Optional[bigquery_export.BigQueryExport] = None, update_mask: Optional[field_mask_pb2.FieldMask] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> bigquery_export.BigQueryExport: r"""Updates a BigQuery export. @@ -4864,7 +4865,7 @@ def list_big_query_exports( *, parent: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> pagers.ListBigQueryExportsPager: r"""Lists BigQuery exports. Note that when requesting @@ -4995,14 +4996,9 @@ def __exit__(self, type, value, traceback): self.transport.close() -try: - DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo( - gapic_version=pkg_resources.get_distribution( - "google-cloud-securitycenter", - ).version, - ) -except pkg_resources.DistributionNotFound: - DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo() +DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo( + gapic_version=package_version.__version__ +) __all__ = ("SecurityCenterClient",) diff --git a/google/cloud/securitycenter_v1/services/security_center/transports/base.py b/google/cloud/securitycenter_v1/services/security_center/transports/base.py index 4c14a504..9c8ae781 100644 --- a/google/cloud/securitycenter_v1/services/security_center/transports/base.py +++ b/google/cloud/securitycenter_v1/services/security_center/transports/base.py @@ -27,8 +27,8 @@ from google.longrunning import operations_pb2 # type: ignore from google.oauth2 import service_account # type: ignore from google.protobuf import empty_pb2 # type: ignore -import pkg_resources +from google.cloud.securitycenter_v1 import gapic_version as package_version from google.cloud.securitycenter_v1.types import external_system as gcs_external_system from google.cloud.securitycenter_v1.types import ( notification_config as gcs_notification_config, @@ -48,14 +48,9 @@ from google.cloud.securitycenter_v1.types import source from google.cloud.securitycenter_v1.types import source as gcs_source -try: - DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo( - gapic_version=pkg_resources.get_distribution( - "google-cloud-securitycenter", - ).version, - ) -except pkg_resources.DistributionNotFound: - DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo() +DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo( + gapic_version=package_version.__version__ +) class SecurityCenterTransport(abc.ABC): diff --git a/google/cloud/securitycenter_v1beta1/gapic_version.py b/google/cloud/securitycenter_v1beta1/gapic_version.py new file mode 100644 index 00000000..872b3e95 --- /dev/null +++ b/google/cloud/securitycenter_v1beta1/gapic_version.py @@ -0,0 +1,16 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 Google LLC +# +# 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. +# +__version__ = "1.16.2" # {x-release-please-version} diff --git a/google/cloud/securitycenter_v1beta1/services/security_center/async_client.py b/google/cloud/securitycenter_v1beta1/services/security_center/async_client.py index 6a2a2ccc..79fdee57 100644 --- a/google/cloud/securitycenter_v1beta1/services/security_center/async_client.py +++ b/google/cloud/securitycenter_v1beta1/services/security_center/async_client.py @@ -34,7 +34,8 @@ from google.api_core.client_options import ClientOptions from google.auth import credentials as ga_credentials # type: ignore from google.oauth2 import service_account # type: ignore -import pkg_resources + +from google.cloud.securitycenter_v1beta1 import gapic_version as package_version try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault] @@ -255,7 +256,7 @@ async def create_source( parent: Optional[str] = None, source: Optional[gcs_source.Source] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> gcs_source.Source: r"""Creates a source. @@ -375,7 +376,7 @@ async def create_finding( finding_id: Optional[str] = None, finding: Optional[gcs_finding.Finding] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> gcs_finding.Finding: r"""Creates a finding. The corresponding source must @@ -509,7 +510,7 @@ async def get_iam_policy( *, resource: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> policy_pb2.Policy: r"""Gets the access control policy on the specified @@ -688,7 +689,7 @@ async def get_organization_settings( *, name: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> organization_settings.OrganizationSettings: r"""Gets the settings for an organization. @@ -802,7 +803,7 @@ async def get_source( *, name: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> source.Source: r"""Gets a source. @@ -920,7 +921,7 @@ async def group_assets( ] = None, *, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> pagers.GroupAssetsAsyncPager: r"""Filters an organization's assets and groups them by @@ -1029,7 +1030,7 @@ async def group_findings( parent: Optional[str] = None, group_by: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> pagers.GroupFindingsAsyncPager: r"""Filters an organization or source's findings and groups them by @@ -1180,7 +1181,7 @@ async def list_assets( request: Optional[Union[securitycenter_service.ListAssetsRequest, dict]] = None, *, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> pagers.ListAssetsAsyncPager: r"""Lists an organization's assets. @@ -1283,7 +1284,7 @@ async def list_findings( ] = None, *, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> pagers.ListFindingsAsyncPager: r"""Lists an organization or source's findings. @@ -1393,7 +1394,7 @@ async def list_sources( *, parent: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> pagers.ListSourcesAsyncPager: r"""Lists all sources belonging to an organization. @@ -1519,7 +1520,7 @@ async def run_asset_discovery( *, parent: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> operation_async.AsyncOperation: r"""Runs asset discovery. The discovery is tracked with a @@ -1554,7 +1555,7 @@ async def sample_run_asset_discovery(): print("Waiting for operation to complete...") - response = await operation.result() + response = (await operation).result() # Handle the response print(response) @@ -1653,7 +1654,7 @@ async def set_finding_state( state: Optional[finding.Finding.State] = None, start_time: Optional[timestamp_pb2.Timestamp] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> finding.Finding: r"""Updates the state of a finding. @@ -1784,7 +1785,7 @@ async def set_iam_policy( *, resource: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> policy_pb2.Policy: r"""Sets the access control policy on the specified @@ -1952,7 +1953,7 @@ async def test_iam_permissions( resource: Optional[str] = None, permissions: Optional[MutableSequence[str]] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> iam_policy_pb2.TestIamPermissionsResponse: r"""Returns the permissions that a caller has on the @@ -2081,7 +2082,7 @@ async def update_finding( *, finding: Optional[gcs_finding.Finding] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> gcs_finding.Finding: r"""Creates or updates a finding. The corresponding @@ -2201,7 +2202,7 @@ async def update_organization_settings( gcs_organization_settings.OrganizationSettings ] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> gcs_organization_settings.OrganizationSettings: r"""Updates an organization's settings. @@ -2307,7 +2308,7 @@ async def update_source( *, source: Optional[gcs_source.Source] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> gcs_source.Source: r"""Updates a source. @@ -2416,7 +2417,7 @@ async def update_security_marks( *, security_marks: Optional[gcs_security_marks.SecurityMarks] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> gcs_security_marks.SecurityMarks: r"""Updates security marks. @@ -2526,14 +2527,9 @@ async def __aexit__(self, exc_type, exc, tb): await self.transport.close() -try: - DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo( - gapic_version=pkg_resources.get_distribution( - "google-cloud-securitycenter", - ).version, - ) -except pkg_resources.DistributionNotFound: - DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo() +DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo( + gapic_version=package_version.__version__ +) __all__ = ("SecurityCenterAsyncClient",) diff --git a/google/cloud/securitycenter_v1beta1/services/security_center/client.py b/google/cloud/securitycenter_v1beta1/services/security_center/client.py index e077d28a..f589cfc7 100644 --- a/google/cloud/securitycenter_v1beta1/services/security_center/client.py +++ b/google/cloud/securitycenter_v1beta1/services/security_center/client.py @@ -38,7 +38,8 @@ from google.auth.transport import mtls # type: ignore from google.auth.transport.grpc import SslCredentials # type: ignore from google.oauth2 import service_account # type: ignore -import pkg_resources + +from google.cloud.securitycenter_v1beta1 import gapic_version as package_version try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault] @@ -545,7 +546,7 @@ def create_source( parent: Optional[str] = None, source: Optional[gcs_source.Source] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> gcs_source.Source: r"""Creates a source. @@ -665,7 +666,7 @@ def create_finding( finding_id: Optional[str] = None, finding: Optional[gcs_finding.Finding] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> gcs_finding.Finding: r"""Creates a finding. The corresponding source must @@ -799,7 +800,7 @@ def get_iam_policy( *, resource: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> policy_pb2.Policy: r"""Gets the access control policy on the specified @@ -965,7 +966,7 @@ def get_organization_settings( *, name: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> organization_settings.OrganizationSettings: r"""Gets the settings for an organization. @@ -1073,7 +1074,7 @@ def get_source( *, name: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> source.Source: r"""Gets a source. @@ -1181,7 +1182,7 @@ def group_assets( ] = None, *, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> pagers.GroupAssetsPager: r"""Filters an organization's assets and groups them by @@ -1281,7 +1282,7 @@ def group_findings( parent: Optional[str] = None, group_by: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> pagers.GroupFindingsPager: r"""Filters an organization or source's findings and groups them by @@ -1422,7 +1423,7 @@ def list_assets( request: Optional[Union[securitycenter_service.ListAssetsRequest, dict]] = None, *, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> pagers.ListAssetsPager: r"""Lists an organization's assets. @@ -1516,7 +1517,7 @@ def list_findings( ] = None, *, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> pagers.ListFindingsPager: r"""Lists an organization or source's findings. @@ -1617,7 +1618,7 @@ def list_sources( *, parent: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> pagers.ListSourcesPager: r"""Lists all sources belonging to an organization. @@ -1733,7 +1734,7 @@ def run_asset_discovery( *, parent: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> operation.Operation: r"""Runs asset discovery. The discovery is tracked with a @@ -1867,7 +1868,7 @@ def set_finding_state( state: Optional[finding.Finding.State] = None, start_time: Optional[timestamp_pb2.Timestamp] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> finding.Finding: r"""Updates the state of a finding. @@ -1998,7 +1999,7 @@ def set_iam_policy( *, resource: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> policy_pb2.Policy: r"""Sets the access control policy on the specified @@ -2163,7 +2164,7 @@ def test_iam_permissions( resource: Optional[str] = None, permissions: Optional[MutableSequence[str]] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> iam_policy_pb2.TestIamPermissionsResponse: r"""Returns the permissions that a caller has on the @@ -2280,7 +2281,7 @@ def update_finding( *, finding: Optional[gcs_finding.Finding] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> gcs_finding.Finding: r"""Creates or updates a finding. The corresponding @@ -2400,7 +2401,7 @@ def update_organization_settings( gcs_organization_settings.OrganizationSettings ] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> gcs_organization_settings.OrganizationSettings: r"""Updates an organization's settings. @@ -2510,7 +2511,7 @@ def update_source( *, source: Optional[gcs_source.Source] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> gcs_source.Source: r"""Updates a source. @@ -2619,7 +2620,7 @@ def update_security_marks( *, security_marks: Optional[gcs_security_marks.SecurityMarks] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> gcs_security_marks.SecurityMarks: r"""Updates security marks. @@ -2736,14 +2737,9 @@ def __exit__(self, type, value, traceback): self.transport.close() -try: - DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo( - gapic_version=pkg_resources.get_distribution( - "google-cloud-securitycenter", - ).version, - ) -except pkg_resources.DistributionNotFound: - DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo() +DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo( + gapic_version=package_version.__version__ +) __all__ = ("SecurityCenterClient",) diff --git a/google/cloud/securitycenter_v1beta1/services/security_center/transports/base.py b/google/cloud/securitycenter_v1beta1/services/security_center/transports/base.py index 407a0a4e..e8dfb178 100644 --- a/google/cloud/securitycenter_v1beta1/services/security_center/transports/base.py +++ b/google/cloud/securitycenter_v1beta1/services/security_center/transports/base.py @@ -26,8 +26,8 @@ from google.iam.v1 import policy_pb2 # type: ignore from google.longrunning import operations_pb2 # type: ignore from google.oauth2 import service_account # type: ignore -import pkg_resources +from google.cloud.securitycenter_v1beta1 import gapic_version as package_version from google.cloud.securitycenter_v1beta1.types import ( organization_settings as gcs_organization_settings, ) @@ -41,14 +41,9 @@ from google.cloud.securitycenter_v1beta1.types import source from google.cloud.securitycenter_v1beta1.types import source as gcs_source -try: - DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo( - gapic_version=pkg_resources.get_distribution( - "google-cloud-securitycenter", - ).version, - ) -except pkg_resources.DistributionNotFound: - DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo() +DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo( + gapic_version=package_version.__version__ +) class SecurityCenterTransport(abc.ABC): diff --git a/google/cloud/securitycenter_v1p1beta1/gapic_version.py b/google/cloud/securitycenter_v1p1beta1/gapic_version.py new file mode 100644 index 00000000..872b3e95 --- /dev/null +++ b/google/cloud/securitycenter_v1p1beta1/gapic_version.py @@ -0,0 +1,16 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 Google LLC +# +# 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. +# +__version__ = "1.16.2" # {x-release-please-version} diff --git a/google/cloud/securitycenter_v1p1beta1/services/security_center/async_client.py b/google/cloud/securitycenter_v1p1beta1/services/security_center/async_client.py index 0052a57f..d1fec0e5 100644 --- a/google/cloud/securitycenter_v1p1beta1/services/security_center/async_client.py +++ b/google/cloud/securitycenter_v1p1beta1/services/security_center/async_client.py @@ -34,7 +34,8 @@ from google.api_core.client_options import ClientOptions from google.auth import credentials as ga_credentials # type: ignore from google.oauth2 import service_account # type: ignore -import pkg_resources + +from google.cloud.securitycenter_v1p1beta1 import gapic_version as package_version try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault] @@ -269,7 +270,7 @@ async def create_source( parent: Optional[str] = None, source: Optional[gcs_source.Source] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> gcs_source.Source: r"""Creates a source. @@ -389,7 +390,7 @@ async def create_finding( finding_id: Optional[str] = None, finding: Optional[gcs_finding.Finding] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> gcs_finding.Finding: r"""Creates a finding. The corresponding source must @@ -526,7 +527,7 @@ async def create_notification_config( gcs_notification_config.NotificationConfig ] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> gcs_notification_config.NotificationConfig: r"""Creates a notification config. @@ -659,7 +660,7 @@ async def delete_notification_config( *, name: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> None: r"""Deletes a notification config. @@ -750,7 +751,7 @@ async def get_iam_policy( *, resource: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> policy_pb2.Policy: r"""Gets the access control policy on the specified @@ -929,7 +930,7 @@ async def get_notification_config( *, name: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> notification_config.NotificationConfig: r"""Gets a notification config. @@ -1049,7 +1050,7 @@ async def get_organization_settings( *, name: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> organization_settings.OrganizationSettings: r"""Gets the settings for an organization. @@ -1163,7 +1164,7 @@ async def get_source( *, name: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> source.Source: r"""Gets a source. @@ -1281,7 +1282,7 @@ async def group_assets( ] = None, *, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> pagers.GroupAssetsAsyncPager: r"""Filters an organization's assets and groups them by @@ -1390,7 +1391,7 @@ async def group_findings( parent: Optional[str] = None, group_by: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> pagers.GroupFindingsAsyncPager: r"""Filters an organization or source's findings and groups them by @@ -1552,7 +1553,7 @@ async def list_assets( *, parent: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> pagers.ListAssetsAsyncPager: r"""Lists an organization's assets. @@ -1678,7 +1679,7 @@ async def list_findings( *, parent: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> pagers.ListFindingsAsyncPager: r"""Lists an organization or source's findings. @@ -1816,7 +1817,7 @@ async def list_notification_configs( *, parent: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> pagers.ListNotificationConfigsAsyncPager: r"""Lists notification configs. @@ -1944,7 +1945,7 @@ async def list_sources( *, parent: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> pagers.ListSourcesAsyncPager: r"""Lists all sources belonging to an organization. @@ -2071,7 +2072,7 @@ async def run_asset_discovery( *, parent: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> operation_async.AsyncOperation: r"""Runs asset discovery. The discovery is tracked with a @@ -2106,7 +2107,7 @@ async def sample_run_asset_discovery(): print("Waiting for operation to complete...") - response = await operation.result() + response = (await operation).result() # Handle the response print(response) @@ -2198,7 +2199,7 @@ async def set_finding_state( state: Optional[finding.Finding.State] = None, start_time: Optional[timestamp_pb2.Timestamp] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> finding.Finding: r"""Updates the state of a finding. @@ -2329,7 +2330,7 @@ async def set_iam_policy( *, resource: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> policy_pb2.Policy: r"""Sets the access control policy on the specified @@ -2497,7 +2498,7 @@ async def test_iam_permissions( resource: Optional[str] = None, permissions: Optional[MutableSequence[str]] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> iam_policy_pb2.TestIamPermissionsResponse: r"""Returns the permissions that a caller has on the @@ -2627,7 +2628,7 @@ async def update_finding( finding: Optional[gcs_finding.Finding] = None, update_mask: Optional[field_mask_pb2.FieldMask] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> gcs_finding.Finding: r"""Creates or updates a finding. The corresponding @@ -2764,7 +2765,7 @@ async def update_notification_config( ] = None, update_mask: Optional[field_mask_pb2.FieldMask] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> gcs_notification_config.NotificationConfig: r"""Updates a notification config. The following update fields are @@ -2888,7 +2889,7 @@ async def update_organization_settings( gcs_organization_settings.OrganizationSettings ] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> gcs_organization_settings.OrganizationSettings: r"""Updates an organization's settings. @@ -2995,7 +2996,7 @@ async def update_source( source: Optional[gcs_source.Source] = None, update_mask: Optional[field_mask_pb2.FieldMask] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> gcs_source.Source: r"""Updates a source. @@ -3116,7 +3117,7 @@ async def update_security_marks( security_marks: Optional[gcs_security_marks.SecurityMarks] = None, update_mask: Optional[field_mask_pb2.FieldMask] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> gcs_security_marks.SecurityMarks: r"""Updates security marks. @@ -3240,14 +3241,9 @@ async def __aexit__(self, exc_type, exc, tb): await self.transport.close() -try: - DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo( - gapic_version=pkg_resources.get_distribution( - "google-cloud-securitycenter", - ).version, - ) -except pkg_resources.DistributionNotFound: - DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo() +DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo( + gapic_version=package_version.__version__ +) __all__ = ("SecurityCenterAsyncClient",) diff --git a/google/cloud/securitycenter_v1p1beta1/services/security_center/client.py b/google/cloud/securitycenter_v1p1beta1/services/security_center/client.py index 505cb8a9..33bf4a24 100644 --- a/google/cloud/securitycenter_v1p1beta1/services/security_center/client.py +++ b/google/cloud/securitycenter_v1p1beta1/services/security_center/client.py @@ -38,7 +38,8 @@ from google.auth.transport import mtls # type: ignore from google.auth.transport.grpc import SslCredentials # type: ignore from google.oauth2 import service_account # type: ignore -import pkg_resources + +from google.cloud.securitycenter_v1p1beta1 import gapic_version as package_version try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault] @@ -588,7 +589,7 @@ def create_source( parent: Optional[str] = None, source: Optional[gcs_source.Source] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> gcs_source.Source: r"""Creates a source. @@ -708,7 +709,7 @@ def create_finding( finding_id: Optional[str] = None, finding: Optional[gcs_finding.Finding] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> gcs_finding.Finding: r"""Creates a finding. The corresponding source must @@ -845,7 +846,7 @@ def create_notification_config( gcs_notification_config.NotificationConfig ] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> gcs_notification_config.NotificationConfig: r"""Creates a notification config. @@ -982,7 +983,7 @@ def delete_notification_config( *, name: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> None: r"""Deletes a notification config. @@ -1077,7 +1078,7 @@ def get_iam_policy( *, resource: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> policy_pb2.Policy: r"""Gets the access control policy on the specified @@ -1243,7 +1244,7 @@ def get_notification_config( *, name: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> notification_config.NotificationConfig: r"""Gets a notification config. @@ -1353,7 +1354,7 @@ def get_organization_settings( *, name: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> organization_settings.OrganizationSettings: r"""Gets the settings for an organization. @@ -1461,7 +1462,7 @@ def get_source( *, name: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> source.Source: r"""Gets a source. @@ -1569,7 +1570,7 @@ def group_assets( ] = None, *, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> pagers.GroupAssetsPager: r"""Filters an organization's assets and groups them by @@ -1669,7 +1670,7 @@ def group_findings( parent: Optional[str] = None, group_by: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> pagers.GroupFindingsPager: r"""Filters an organization or source's findings and groups them by @@ -1821,7 +1822,7 @@ def list_assets( *, parent: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> pagers.ListAssetsPager: r"""Lists an organization's assets. @@ -1937,7 +1938,7 @@ def list_findings( *, parent: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> pagers.ListFindingsPager: r"""Lists an organization or source's findings. @@ -2065,7 +2066,7 @@ def list_notification_configs( *, parent: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> pagers.ListNotificationConfigsPager: r"""Lists notification configs. @@ -2187,7 +2188,7 @@ def list_sources( *, parent: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> pagers.ListSourcesPager: r"""Lists all sources belonging to an organization. @@ -2304,7 +2305,7 @@ def run_asset_discovery( *, parent: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> operation.Operation: r"""Runs asset discovery. The discovery is tracked with a @@ -2431,7 +2432,7 @@ def set_finding_state( state: Optional[finding.Finding.State] = None, start_time: Optional[timestamp_pb2.Timestamp] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> finding.Finding: r"""Updates the state of a finding. @@ -2562,7 +2563,7 @@ def set_iam_policy( *, resource: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> policy_pb2.Policy: r"""Sets the access control policy on the specified @@ -2727,7 +2728,7 @@ def test_iam_permissions( resource: Optional[str] = None, permissions: Optional[MutableSequence[str]] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> iam_policy_pb2.TestIamPermissionsResponse: r"""Returns the permissions that a caller has on the @@ -2845,7 +2846,7 @@ def update_finding( finding: Optional[gcs_finding.Finding] = None, update_mask: Optional[field_mask_pb2.FieldMask] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> gcs_finding.Finding: r"""Creates or updates a finding. The corresponding @@ -2982,7 +2983,7 @@ def update_notification_config( ] = None, update_mask: Optional[field_mask_pb2.FieldMask] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> gcs_notification_config.NotificationConfig: r"""Updates a notification config. The following update fields are @@ -3110,7 +3111,7 @@ def update_organization_settings( gcs_organization_settings.OrganizationSettings ] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> gcs_organization_settings.OrganizationSettings: r"""Updates an organization's settings. @@ -3221,7 +3222,7 @@ def update_source( source: Optional[gcs_source.Source] = None, update_mask: Optional[field_mask_pb2.FieldMask] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> gcs_source.Source: r"""Updates a source. @@ -3342,7 +3343,7 @@ def update_security_marks( security_marks: Optional[gcs_security_marks.SecurityMarks] = None, update_mask: Optional[field_mask_pb2.FieldMask] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: Optional[float] = None, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, str]] = (), ) -> gcs_security_marks.SecurityMarks: r"""Updates security marks. @@ -3473,14 +3474,9 @@ def __exit__(self, type, value, traceback): self.transport.close() -try: - DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo( - gapic_version=pkg_resources.get_distribution( - "google-cloud-securitycenter", - ).version, - ) -except pkg_resources.DistributionNotFound: - DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo() +DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo( + gapic_version=package_version.__version__ +) __all__ = ("SecurityCenterClient",) diff --git a/google/cloud/securitycenter_v1p1beta1/services/security_center/transports/base.py b/google/cloud/securitycenter_v1p1beta1/services/security_center/transports/base.py index 68db217f..a7cb4a59 100644 --- a/google/cloud/securitycenter_v1p1beta1/services/security_center/transports/base.py +++ b/google/cloud/securitycenter_v1p1beta1/services/security_center/transports/base.py @@ -27,8 +27,8 @@ from google.longrunning import operations_pb2 # type: ignore from google.oauth2 import service_account # type: ignore from google.protobuf import empty_pb2 # type: ignore -import pkg_resources +from google.cloud.securitycenter_v1p1beta1 import gapic_version as package_version from google.cloud.securitycenter_v1p1beta1.types import ( notification_config as gcs_notification_config, ) @@ -46,14 +46,9 @@ from google.cloud.securitycenter_v1p1beta1.types import source from google.cloud.securitycenter_v1p1beta1.types import source as gcs_source -try: - DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo( - gapic_version=pkg_resources.get_distribution( - "google-cloud-securitycenter", - ).version, - ) -except pkg_resources.DistributionNotFound: - DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo() +DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo( + gapic_version=package_version.__version__ +) class SecurityCenterTransport(abc.ABC): diff --git a/release-please-config.json b/release-please-config.json index 4186f6b1..dba3e030 100644 --- a/release-please-config.json +++ b/release-please-config.json @@ -4,7 +4,10 @@ ".": { "release-type": "python", "extra-files": [ + "google/cloud/securitycenter_v1beta1/gapic_version.py", "google/cloud/securitycenter/gapic_version.py", + "google/cloud/securitycenter_v1p1beta1/gapic_version.py", + "google/cloud/securitycenter_v1/gapic_version.py", { "type": "json", "path": "samples/generated_samples/snippet_metadata_google.cloud.securitycenter.v1p1beta1.json", diff --git a/samples/generated_samples/securitycenter_v1_generated_security_center_bulk_mute_findings_async.py b/samples/generated_samples/securitycenter_v1_generated_security_center_bulk_mute_findings_async.py index bc9019eb..9f200964 100644 --- a/samples/generated_samples/securitycenter_v1_generated_security_center_bulk_mute_findings_async.py +++ b/samples/generated_samples/securitycenter_v1_generated_security_center_bulk_mute_findings_async.py @@ -48,7 +48,7 @@ async def sample_bulk_mute_findings(): print("Waiting for operation to complete...") - response = await operation.result() + response = (await operation).result() # Handle the response print(response) diff --git a/samples/generated_samples/securitycenter_v1_generated_security_center_run_asset_discovery_async.py b/samples/generated_samples/securitycenter_v1_generated_security_center_run_asset_discovery_async.py index 2b9a1205..f46d5c97 100644 --- a/samples/generated_samples/securitycenter_v1_generated_security_center_run_asset_discovery_async.py +++ b/samples/generated_samples/securitycenter_v1_generated_security_center_run_asset_discovery_async.py @@ -48,7 +48,7 @@ async def sample_run_asset_discovery(): print("Waiting for operation to complete...") - response = await operation.result() + response = (await operation).result() # Handle the response print(response) diff --git a/samples/generated_samples/securitycenter_v1beta1_generated_security_center_run_asset_discovery_async.py b/samples/generated_samples/securitycenter_v1beta1_generated_security_center_run_asset_discovery_async.py index 7e15623e..856c1087 100644 --- a/samples/generated_samples/securitycenter_v1beta1_generated_security_center_run_asset_discovery_async.py +++ b/samples/generated_samples/securitycenter_v1beta1_generated_security_center_run_asset_discovery_async.py @@ -48,7 +48,7 @@ async def sample_run_asset_discovery(): print("Waiting for operation to complete...") - response = await operation.result() + response = (await operation).result() # Handle the response print(response) diff --git a/samples/generated_samples/securitycenter_v1p1beta1_generated_security_center_run_asset_discovery_async.py b/samples/generated_samples/securitycenter_v1p1beta1_generated_security_center_run_asset_discovery_async.py index 45938922..1f51b6eb 100644 --- a/samples/generated_samples/securitycenter_v1p1beta1_generated_security_center_run_asset_discovery_async.py +++ b/samples/generated_samples/securitycenter_v1p1beta1_generated_security_center_run_asset_discovery_async.py @@ -48,7 +48,7 @@ async def sample_run_asset_discovery(): print("Waiting for operation to complete...") - response = await operation.result() + response = (await operation).result() # Handle the response print(response) diff --git a/setup.py b/setup.py index c6b25ebd..9e4af075 100644 --- a/setup.py +++ b/setup.py @@ -38,7 +38,7 @@ release_status = "Development Status :: 5 - Production/Stable" dependencies = [ - "google-api-core[grpc] >= 1.33.2, <3.0.0dev,!=2.0.*,!=2.1.*,!=2.2.*,!=2.3.*,!=2.4.*,!=2.5.*,!=2.6.*,!=2.7.*", + "google-api-core[grpc] >= 1.34.0, <3.0.0dev,!=2.0.*,!=2.1.*,!=2.2.*,!=2.3.*,!=2.4.*,!=2.5.*,!=2.6.*,!=2.7.*,!=2.8.*,!=2.9.*,!=2.10.*", "proto-plus >= 1.22.0, <2.0.0dev", "protobuf>=3.19.5,<5.0.0dev,!=3.20.0,!=3.20.1,!=4.21.0,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5", "grpc-google-iam-v1 >= 0.12.4, < 1.0.0dev", diff --git a/testing/constraints-3.7.txt b/testing/constraints-3.7.txt index 883a87ae..2beecf99 100644 --- a/testing/constraints-3.7.txt +++ b/testing/constraints-3.7.txt @@ -4,7 +4,7 @@ # Pin the version to the lower bound. # e.g., if setup.py has "google-cloud-foo >= 1.14.0, < 2.0.0dev", # Then this file should have google-cloud-foo==1.14.0 -google-api-core==1.33.2 +google-api-core==1.34.0 proto-plus==1.22.0 protobuf==3.19.5 grpc-google-iam-v1==0.12.4 From d9163f29c3aae41bd3551a6e756d6f543663edee Mon Sep 17 00:00:00 2001 From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com> Date: Thu, 8 Dec 2022 19:28:19 +0000 Subject: [PATCH 13/16] build(deps): bump certifi from 2022.9.24 to 2022.12.7 [autoapprove] (#416) Source-Link: https://togithub.com/googleapis/synthtool/commit/b4fe62efb5114b6738ad4b13d6f654f2bf4b7cc0 Post-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:3bf87e47c2173d7eed42714589dc4da2c07c3268610f1e47f8e1a30decbfc7f1 --- .github/.OwlBot.lock.yaml | 2 +- .kokoro/requirements.txt | 6 +++--- .pre-commit-config.yaml | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/.OwlBot.lock.yaml b/.github/.OwlBot.lock.yaml index bb21147e..fccaa8e8 100644 --- a/.github/.OwlBot.lock.yaml +++ b/.github/.OwlBot.lock.yaml @@ -13,4 +13,4 @@ # limitations under the License. docker: image: gcr.io/cloud-devrel-public-resources/owlbot-python:latest - digest: sha256:3abfa0f1886adaf0b83f07cb117b24a639ea1cb9cffe56d43280b977033563eb + digest: sha256:3bf87e47c2173d7eed42714589dc4da2c07c3268610f1e47f8e1a30decbfc7f1 diff --git a/.kokoro/requirements.txt b/.kokoro/requirements.txt index 9c1b9be3..05dc4672 100644 --- a/.kokoro/requirements.txt +++ b/.kokoro/requirements.txt @@ -20,9 +20,9 @@ cachetools==5.2.0 \ --hash=sha256:6a94c6402995a99c3970cc7e4884bb60b4a8639938157eeed436098bf9831757 \ --hash=sha256:f9f17d2aec496a9aa6b76f53e3b614c965223c061982d434d160f930c698a9db # via google-auth -certifi==2022.9.24 \ - --hash=sha256:0d9c601124e5a6ba9712dbc60d9c53c21e34f5f641fe83002317394311bdce14 \ - --hash=sha256:90c1a32f1d68f940488354e36370f6cca89f0f106db09518524c88d6ed83f382 +certifi==2022.12.7 \ + --hash=sha256:35824b4c3a97115964b408844d64aa14db1cc518f6562e8d7261699d1350a9e3 \ + --hash=sha256:4ad3232f5e926d6718ec31cfc1fcadfde020920e278684144551c91769c7bc18 # via requests cffi==1.15.1 \ --hash=sha256:00a9ed42e88df81ffae7a8ab6d9356b371399b91dbdf0c3cb1e84c03a13aceb5 \ diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 46d23716..5405cc8f 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -25,7 +25,7 @@ repos: rev: 22.3.0 hooks: - id: black -- repo: https://gitlab.com/pycqa/flake8 +- repo: https://github.com/pycqa/flake8 rev: 3.9.2 hooks: - id: flake8 From ced00fdf89d33a078bce530f320b2601466eae8e Mon Sep 17 00:00:00 2001 From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com> Date: Wed, 14 Dec 2022 09:47:35 -0500 Subject: [PATCH 14/16] feat: add user_name field to the finding access (#418) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat: add user_name field to the finding access PiperOrigin-RevId: 495123979 Source-Link: https://github.com/googleapis/googleapis/commit/fe20b12600dc008c8603b13011ebce9804cc16ac Source-Link: https://github.com/googleapis/googleapis-gen/commit/8d4762d0933dab6ea45f301b4525eee8bcb83281 Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiOGQ0NzYyZDA5MzNkYWI2ZWE0NWYzMDFiNDUyNWVlZThiY2I4MzI4MSJ9 * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md Co-authored-by: Owl Bot --- .../cloud/securitycenter_v1/types/access.py | 21 ++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/google/cloud/securitycenter_v1/types/access.py b/google/cloud/securitycenter_v1/types/access.py index a7764160..32b07313 100644 --- a/google/cloud/securitycenter_v1/types/access.py +++ b/google/cloud/securitycenter_v1/types/access.py @@ -48,9 +48,9 @@ class Access(proto.Message): The caller IP's geolocation, which identifies where the call came from. user_agent_family (str): - What kind of user agent is associated, e.g. - operating system shells, embedded or stand-alone - applications, etc. + What kind of user agent is associated, for + example operating system shells, embedded or + stand-alone applications, etc. service_name (str): This is the API service that the service account made a call to, e.g. @@ -84,6 +84,17 @@ class Access(proto.Message): authorities are present, they are guaranteed to be sorted based on the original ordering of the identity delegation events. + user_name (str): + A string that represents the username of a + user, user account, or other entity involved in + the access event. What the entity is and what + its role in the access event is depends on the + finding that this field appears in. The entity + is likely not an IAM principal, but could be a + user that is logged into an operating system, if + the finding is VM-related, or a user that is + logged into some type of application that is + involved in the access event. """ principal_email: str = proto.Field( @@ -126,6 +137,10 @@ class Access(proto.Message): number=9, message="ServiceAccountDelegationInfo", ) + user_name: str = proto.Field( + proto.STRING, + number=11, + ) class ServiceAccountDelegationInfo(proto.Message): From 39414f2b766b77b5c3df7cfae7ebd938b7cb8a23 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 15 Dec 2022 19:44:29 +0100 Subject: [PATCH 15/16] chore(deps): update dependency google-cloud-bigquery to v3.4.1 (#417) Co-authored-by: Anthonios Partheniou --- samples/snippets/requirements-test.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/samples/snippets/requirements-test.txt b/samples/snippets/requirements-test.txt index e4a48ec7..0e06879c 100644 --- a/samples/snippets/requirements-test.txt +++ b/samples/snippets/requirements-test.txt @@ -1,2 +1,2 @@ pytest==7.2.0 -google-cloud-bigquery==3.4.0 +google-cloud-bigquery==3.4.1 From 3d0a013708e8e0ceac436d3d2015f8fd3d920158 Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Thu, 15 Dec 2022 14:44:23 -0500 Subject: [PATCH 16/16] chore(main): release 1.17.0 (#404) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> --- .release-please-manifest.json | 2 +- CHANGELOG.md | 27 +++++++++++++++++++ google/cloud/securitycenter/gapic_version.py | 2 +- .../cloud/securitycenter_v1/gapic_version.py | 2 +- .../securitycenter_v1beta1/gapic_version.py | 2 +- .../securitycenter_v1p1beta1/gapic_version.py | 2 +- ...tadata_google.cloud.securitycenter.v1.json | 2 +- ...a_google.cloud.securitycenter.v1beta1.json | 2 +- ...google.cloud.securitycenter.v1p1beta1.json | 2 +- 9 files changed, 35 insertions(+), 8 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 6d833911..46e7a463 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "1.16.2" + ".": "1.17.0" } diff --git a/CHANGELOG.md b/CHANGELOG.md index dd7b857b..14c8e4d9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,33 @@ [1]: https://pypi.org/project/google-cloud-securitycenter/#history +## [1.17.0](https://github.com/googleapis/python-securitycenter/compare/v1.16.2...v1.17.0) (2022-12-15) + + +### Features + +* Add files field to finding's list of attributes ([63c76ad](https://github.com/googleapis/python-securitycenter/commit/63c76adae5a4f45e7b9f330bac21c934bd46bac2)) +* Add kernel_rootkit field to finding's list of attributes ([#413](https://github.com/googleapis/python-securitycenter/issues/413)) ([62c9cb8](https://github.com/googleapis/python-securitycenter/commit/62c9cb879066162b9f30879cfa63de63ff27c63d)) +* Add support for `google.cloud.securitycenter.__version__` ([63c76ad](https://github.com/googleapis/python-securitycenter/commit/63c76adae5a4f45e7b9f330bac21c934bd46bac2)) +* Add typing to proto.Message based class attributes ([63c76ad](https://github.com/googleapis/python-securitycenter/commit/63c76adae5a4f45e7b9f330bac21c934bd46bac2)) +* Add user_name field to the finding access ([#418](https://github.com/googleapis/python-securitycenter/issues/418)) ([ced00fd](https://github.com/googleapis/python-securitycenter/commit/ced00fdf89d33a078bce530f320b2601466eae8e)) +* Adding project/folder level parents to notification configs in SCC ([#403](https://github.com/googleapis/python-securitycenter/issues/403)) ([667729a](https://github.com/googleapis/python-securitycenter/commit/667729a0ef3b59269302d68f53cd52d1068cf4fa)) + + +### Bug Fixes + +* Add dict typing for client_options ([63c76ad](https://github.com/googleapis/python-securitycenter/commit/63c76adae5a4f45e7b9f330bac21c934bd46bac2)) +* **deps:** Require google-api-core >=1.34.0, >=2.11.0 ([fae54be](https://github.com/googleapis/python-securitycenter/commit/fae54bea80a45616dab340530b8cceacda58ce1c)) +* Drop usage of pkg_resources ([fae54be](https://github.com/googleapis/python-securitycenter/commit/fae54bea80a45616dab340530b8cceacda58ce1c)) +* Fix timeout default values ([fae54be](https://github.com/googleapis/python-securitycenter/commit/fae54bea80a45616dab340530b8cceacda58ce1c)) + + +### Documentation + +* **samples:** Snippetgen handling of repeated enum field ([63c76ad](https://github.com/googleapis/python-securitycenter/commit/63c76adae5a4f45e7b9f330bac21c934bd46bac2)) +* **samples:** Snippetgen should call await on the operation coroutine before calling result ([fae54be](https://github.com/googleapis/python-securitycenter/commit/fae54bea80a45616dab340530b8cceacda58ce1c)) +* **samples:** Update samples to include new parent levels (folder and project) ([#405](https://github.com/googleapis/python-securitycenter/issues/405)) ([5960173](https://github.com/googleapis/python-securitycenter/commit/596017339116c243c5f42d9942fd4a37afd9207c)) + ## [1.16.2](https://github.com/googleapis/python-securitycenter/compare/v1.16.1...v1.16.2) (2022-10-07) diff --git a/google/cloud/securitycenter/gapic_version.py b/google/cloud/securitycenter/gapic_version.py index 872b3e95..cb72862e 100644 --- a/google/cloud/securitycenter/gapic_version.py +++ b/google/cloud/securitycenter/gapic_version.py @@ -13,4 +13,4 @@ # See the License for the specific language governing permissions and # limitations under the License. # -__version__ = "1.16.2" # {x-release-please-version} +__version__ = "1.17.0" # {x-release-please-version} diff --git a/google/cloud/securitycenter_v1/gapic_version.py b/google/cloud/securitycenter_v1/gapic_version.py index 872b3e95..cb72862e 100644 --- a/google/cloud/securitycenter_v1/gapic_version.py +++ b/google/cloud/securitycenter_v1/gapic_version.py @@ -13,4 +13,4 @@ # See the License for the specific language governing permissions and # limitations under the License. # -__version__ = "1.16.2" # {x-release-please-version} +__version__ = "1.17.0" # {x-release-please-version} diff --git a/google/cloud/securitycenter_v1beta1/gapic_version.py b/google/cloud/securitycenter_v1beta1/gapic_version.py index 872b3e95..cb72862e 100644 --- a/google/cloud/securitycenter_v1beta1/gapic_version.py +++ b/google/cloud/securitycenter_v1beta1/gapic_version.py @@ -13,4 +13,4 @@ # See the License for the specific language governing permissions and # limitations under the License. # -__version__ = "1.16.2" # {x-release-please-version} +__version__ = "1.17.0" # {x-release-please-version} diff --git a/google/cloud/securitycenter_v1p1beta1/gapic_version.py b/google/cloud/securitycenter_v1p1beta1/gapic_version.py index 872b3e95..cb72862e 100644 --- a/google/cloud/securitycenter_v1p1beta1/gapic_version.py +++ b/google/cloud/securitycenter_v1p1beta1/gapic_version.py @@ -13,4 +13,4 @@ # See the License for the specific language governing permissions and # limitations under the License. # -__version__ = "1.16.2" # {x-release-please-version} +__version__ = "1.17.0" # {x-release-please-version} diff --git a/samples/generated_samples/snippet_metadata_google.cloud.securitycenter.v1.json b/samples/generated_samples/snippet_metadata_google.cloud.securitycenter.v1.json index 90fa2b68..d82a9bce 100644 --- a/samples/generated_samples/snippet_metadata_google.cloud.securitycenter.v1.json +++ b/samples/generated_samples/snippet_metadata_google.cloud.securitycenter.v1.json @@ -8,7 +8,7 @@ ], "language": "PYTHON", "name": "google-cloud-securitycenter", - "version": "0.1.0" + "version": "1.17.0" }, "snippets": [ { diff --git a/samples/generated_samples/snippet_metadata_google.cloud.securitycenter.v1beta1.json b/samples/generated_samples/snippet_metadata_google.cloud.securitycenter.v1beta1.json index a4c1295e..c2408ad8 100644 --- a/samples/generated_samples/snippet_metadata_google.cloud.securitycenter.v1beta1.json +++ b/samples/generated_samples/snippet_metadata_google.cloud.securitycenter.v1beta1.json @@ -8,7 +8,7 @@ ], "language": "PYTHON", "name": "google-cloud-securitycenter", - "version": "0.1.0" + "version": "1.17.0" }, "snippets": [ { diff --git a/samples/generated_samples/snippet_metadata_google.cloud.securitycenter.v1p1beta1.json b/samples/generated_samples/snippet_metadata_google.cloud.securitycenter.v1p1beta1.json index 774592ce..0e74a4ad 100644 --- a/samples/generated_samples/snippet_metadata_google.cloud.securitycenter.v1p1beta1.json +++ b/samples/generated_samples/snippet_metadata_google.cloud.securitycenter.v1p1beta1.json @@ -8,7 +8,7 @@ ], "language": "PYTHON", "name": "google-cloud-securitycenter", - "version": "0.1.0" + "version": "1.17.0" }, "snippets": [ {