File: //snap/google-cloud-cli/current/lib/googlecloudsdk/api_lib/certificate_manager/certificates.py
# -*- coding: utf-8 -*- #
# Copyright 2020 Google LLC. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
"""API client library for Certificate Manager certificates."""
from __future__ import absolute_import
from __future__ import division
from __future__ import unicode_literals
from apitools.base.py import list_pager
from googlecloudsdk.api_lib.certificate_manager import api_client
class CertificateClient(object):
"""API client for Certificate Manager certificates."""
def __init__(self, client=None, messages=None):
self._client = client or api_client.GetClientInstance()
self._service = self._client.projects_locations_certificates
self.messages = messages or self._client.MESSAGES_MODULE
def Create(self,
parent_ref,
cert_id,
self_managed_cert_data=None,
description='',
labels=None):
"""Creates a certificate.
Args:
parent_ref: a Resource reference to a
certificatemanager.projects.locations resource for the parent of this
certificate.
cert_id: str, the ID of the cerificate to create.
self_managed_cert_data: API message for self-managed certificate data.
description: str, user-provided description.
labels: Unified GCP Labels for the resource.
Returns:
Operation: the long running operation to create a certificate.
"""
req = self.messages.CertificatemanagerProjectsLocationsCertificatesCreateRequest(
parent=parent_ref.RelativeName(),
certificateId=cert_id,
certificate=self.messages.Certificate(
labels=labels,
description=description,
selfManagedCertData=self_managed_cert_data,
))
return self._service.Create(req)
def Get(self, cert_ref):
"""Gets certificate.
Args:
cert_ref: a Resource reference to a
certificatemanager.projects.locations.certificates resource to get.
Returns:
Certificate API representation.
"""
get_req = self.messages.CertificatemanagerProjectsLocationsCertificatesGetRequest(
name=cert_ref.RelativeName())
return self._service.Get(get_req)
def List(
self,
parent_ref,
limit=None,
page_size=None,
list_filter=None,
order_by=None,
):
"""List certificates in a given project and location.
Args:
parent_ref: a Resource reference to a
certificatemanager.projects.locations resource to list certs for.
limit: int, the total number of results to return from the API.
page_size: int, the number of results in each batch from the API.
list_filter: str, filter to apply in the list request.
order_by: str, fields used for resource ordering.
Returns:
A list of the certificates in the project.
"""
list_req = self.messages.CertificatemanagerProjectsLocationsCertificatesListRequest(
parent=parent_ref.RelativeName(), filter=list_filter, orderBy=order_by)
return list_pager.YieldFromList(
self._service,
list_req,
batch_size=page_size,
limit=limit,
current_token_attribute='pageToken',
next_token_attribute='nextPageToken',
field='certificates',
batch_size_attribute='pageSize')
def Delete(self, cert_ref):
"""Deletes certificate.
Args:
cert_ref: a Resource reference to a
certificatemanager.projects.locations.certificates resource to delete.
Returns:
Operation: the long running operation to delete certificate.
"""
delete_req = self.messages.CertificatemanagerProjectsLocationsCertificatesDeleteRequest(
name=cert_ref.RelativeName())
return self._service.Delete(delete_req)
def Patch(self,
cert_ref,
self_managed_cert_data=None,
labels=None,
description=None):
"""Updates a certificate.
Used for updating labels, description and certificate data.
Args:
cert_ref: a Resource reference to a
certificatemanager.projects.locations.certificates resource.
self_managed_cert_data: API message for self-managed certificate data.
labels: unified GCP Labels for the resource.
description: str, new description
Returns:
Operation: the long running operation to patch certificate.
"""
certificate = self.messages.Certificate()
updated_fields = []
if self_managed_cert_data:
certificate.selfManaged = self_managed_cert_data
updated_fields.append('self_managed')
if labels:
certificate.labels = labels
updated_fields.append('labels')
if description:
certificate.description = description
updated_fields.append('description')
update_mask = ','.join(updated_fields)
patch_req = self.messages.CertificatemanagerProjectsLocationsCertificatesPatchRequest(
certificate=certificate,
name=cert_ref.RelativeName(),
updateMask=update_mask)
return self._service.Patch(patch_req)