Skip to content

Commit

Permalink
chore: added code samples for etag usage (#129) (#130)
Browse files Browse the repository at this point in the history
Co-authored-by: Miroslava Sotakova <mirka@google.com>
  • Loading branch information
2 people authored and dandhlee committed Nov 10, 2022
1 parent 933ca90 commit e69c7b0
Show file tree
Hide file tree
Showing 6 changed files with 360 additions and 17 deletions.
59 changes: 59 additions & 0 deletions secretmanager/snippets/delete_secret_with_etag.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
#!/usr/bin/env python

# Copyright 2021 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
"""
command line application and sample code for deleting an existing secret.
"""

import argparse


# [START secretmanager_delete_secret_with_etag]
def delete_secret_with_etag(project_id, secret_id, etag):
"""
Delete the secret with the given name, etag, and all of its versions.
"""

# Import the Secret Manager client library and types.
from google.cloud import secretmanager
from google.cloud.secretmanager_v1.types import service

# Create the Secret Manager client.
client = secretmanager.SecretManagerServiceClient()

# Build the resource name of the secret.
name = client.secret_path(project_id, secret_id)

# Build the request
request = service.DeleteSecretRequest()
request.name = name
request.etag = etag

# Delete the secret.
client.delete_secret(request=request)


# [END secretmanager_delete_secret_with_etag]


if __name__ == "__main__":
parser = argparse.ArgumentParser(
description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter
)
parser.add_argument("project_id", help="id of the GCP project")
parser.add_argument("secret_id", help="id of the secret to delete")
parser.add_argument("etag", help="current etag of the secret to delete")
args = parser.parse_args()

delete_secret_with_etag(args.project_id, args.secret_id, args.etag)
64 changes: 64 additions & 0 deletions secretmanager/snippets/destroy_secret_version_with_etag.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
#!/usr/bin/env python

# Copyright 2021 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
"""
command line application and sample code for destroying a secret verison.
"""

import argparse


# [START secretmanager_destroy_secret_version_with_etag]
def destroy_secret_version_with_etag(project_id, secret_id, version_id, etag):
"""
Destroy the given secret version, making the payload irrecoverable. Other
secrets versions are unaffected.
"""

# Import the Secret Manager client library.
from google.cloud import secretmanager
from google.cloud.secretmanager_v1.types import service

# Create the Secret Manager client.
client = secretmanager.SecretManagerServiceClient()

# Build the resource name of the secret version
name = f"projects/{project_id}/secrets/{secret_id}/versions/{version_id}"

# Build the request
request = service.DestroySecretVersionRequest()
request.name = name
request.etag = etag

# Destroy the secret version.
response = client.destroy_secret_version(request=request)

print("Destroyed secret version: {}".format(response.name))
# [END secretmanager_destroy_secret_version_with_etag]

return response


if __name__ == "__main__":
parser = argparse.ArgumentParser(
description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter
)
parser.add_argument("project_id", help="id of the GCP project")
parser.add_argument("secret_id", help="id of the secret from which to act")
parser.add_argument("version_id", help="id of the version to destroy")
parser.add_argument("etag", help="current etag of the version")
args = parser.parse_args()

destroy_secret_version_with_etag(
args.project_id, args.secret_id, args.version_id, args.etag)
64 changes: 64 additions & 0 deletions secretmanager/snippets/disable_secret_version_with_etag.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
#!/usr/bin/env python

# Copyright 2021 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
"""
command line application and sample code for disabling a secret version.
"""

import argparse


# [START secretmanager_disable_secret_version_with_etag]
def disable_secret_version_with_etag(project_id, secret_id, version_id, etag):
"""
Disable the given secret version. Future requests will throw an error until
the secret version is enabled. Other secrets versions are unaffected.
"""

# Import the Secret Manager client library.
from google.cloud import secretmanager
from google.cloud.secretmanager_v1.types import service

# Create the Secret Manager client.
client = secretmanager.SecretManagerServiceClient()

# Build the resource name of the secret version
name = f"projects/{project_id}/secrets/{secret_id}/versions/{version_id}"

# Build the request
request = service.DisableSecretVersionRequest()
request.name = name
request.etag = etag

# Disable the secret version.
response = client.disable_secret_version(request=request)

print("Disabled secret version: {}".format(response.name))
# [END secretmanager_disable_secret_version_with_etag]

return response


if __name__ == "__main__":
parser = argparse.ArgumentParser(
description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter
)
parser.add_argument("project_id", help="id of the GCP project")
parser.add_argument("secret_id", help="id of the secret from which to act")
parser.add_argument("version_id", help="id of the version to disable")
parser.add_argument("etag", help="current etag of the version")
args = parser.parse_args()

disable_secret_version_with_etag(
args.project_id, args.secret_id, args.version_id, args.etag)
64 changes: 64 additions & 0 deletions secretmanager/snippets/enable_secret_version_with_etag.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
#!/usr/bin/env python

# Copyright 2021 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
"""
command line application and sample code for enabling a secret version.
"""

import argparse


# [START secretmanager_enable_secret_version_with_etag]
def enable_secret_version_with_etag(project_id, secret_id, version_id, etag):
"""
Enable the given secret version, enabling it to be accessed after
previously being disabled. Other secrets versions are unaffected.
"""

# Import the Secret Manager client library.
from google.cloud import secretmanager
from google.cloud.secretmanager_v1.types import service

# Create the Secret Manager client.
client = secretmanager.SecretManagerServiceClient()

# Build the resource name of the secret version
name = f"projects/{project_id}/secrets/{secret_id}/versions/{version_id}"

# Build the request
request = service.EnableSecretVersionRequest()
request.name = name
request.etag = etag

# Disable the secret version.
response = client.enable_secret_version(request=request)

print("Enabled secret version: {}".format(response.name))
# [END secretmanager_enable_secret_version_with_etag]

return response


if __name__ == "__main__":
parser = argparse.ArgumentParser(
description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter
)
parser.add_argument("project_id", help="id of the GCP project")
parser.add_argument("secret_id", help="id of the secret from which to act")
parser.add_argument("version_id", help="id of the version to enable")
parser.add_argument("etag", help="current etag of the version")
args = parser.parse_args()

enable_secret_version_with_etag(
args.project_id, args.secret_id, args.version_id, args.etag)
Loading

0 comments on commit e69c7b0

Please sign in to comment.