python/services/cloudbuildv2/connection.py (621 lines of code) (raw):
# Copyright 2025 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.
from connector import channel
from google3.cloud.graphite.mmv2.services.google.cloudbuildv2 import connection_pb2
from google3.cloud.graphite.mmv2.services.google.cloudbuildv2 import connection_pb2_grpc
from typing import List
class Connection(object):
def __init__(
self,
name: str = None,
create_time: str = None,
update_time: str = None,
github_config: dict = None,
github_enterprise_config: dict = None,
gitlab_config: dict = None,
installation_state: dict = None,
disabled: bool = None,
reconciling: bool = None,
annotations: dict = None,
etag: str = None,
project: str = None,
location: str = None,
service_account_file: str = "",
):
channel.initialize()
self.name = name
self.github_config = github_config
self.github_enterprise_config = github_enterprise_config
self.gitlab_config = gitlab_config
self.disabled = disabled
self.annotations = annotations
self.project = project
self.location = location
self.service_account_file = service_account_file
def apply(self):
stub = connection_pb2_grpc.Cloudbuildv2ConnectionServiceStub(channel.Channel())
request = connection_pb2.ApplyCloudbuildv2ConnectionRequest()
if Primitive.to_proto(self.name):
request.resource.name = Primitive.to_proto(self.name)
if ConnectionGithubConfig.to_proto(self.github_config):
request.resource.github_config.CopyFrom(
ConnectionGithubConfig.to_proto(self.github_config)
)
else:
request.resource.ClearField("github_config")
if ConnectionGithubEnterpriseConfig.to_proto(self.github_enterprise_config):
request.resource.github_enterprise_config.CopyFrom(
ConnectionGithubEnterpriseConfig.to_proto(self.github_enterprise_config)
)
else:
request.resource.ClearField("github_enterprise_config")
if ConnectionGitlabConfig.to_proto(self.gitlab_config):
request.resource.gitlab_config.CopyFrom(
ConnectionGitlabConfig.to_proto(self.gitlab_config)
)
else:
request.resource.ClearField("gitlab_config")
if Primitive.to_proto(self.disabled):
request.resource.disabled = Primitive.to_proto(self.disabled)
if Primitive.to_proto(self.annotations):
request.resource.annotations = Primitive.to_proto(self.annotations)
if Primitive.to_proto(self.project):
request.resource.project = Primitive.to_proto(self.project)
if Primitive.to_proto(self.location):
request.resource.location = Primitive.to_proto(self.location)
request.service_account_file = self.service_account_file
response = stub.ApplyCloudbuildv2Connection(request)
self.name = Primitive.from_proto(response.name)
self.create_time = Primitive.from_proto(response.create_time)
self.update_time = Primitive.from_proto(response.update_time)
self.github_config = ConnectionGithubConfig.from_proto(response.github_config)
self.github_enterprise_config = ConnectionGithubEnterpriseConfig.from_proto(
response.github_enterprise_config
)
self.gitlab_config = ConnectionGitlabConfig.from_proto(response.gitlab_config)
self.installation_state = ConnectionInstallationState.from_proto(
response.installation_state
)
self.disabled = Primitive.from_proto(response.disabled)
self.reconciling = Primitive.from_proto(response.reconciling)
self.annotations = Primitive.from_proto(response.annotations)
self.etag = Primitive.from_proto(response.etag)
self.project = Primitive.from_proto(response.project)
self.location = Primitive.from_proto(response.location)
def delete(self):
stub = connection_pb2_grpc.Cloudbuildv2ConnectionServiceStub(channel.Channel())
request = connection_pb2.DeleteCloudbuildv2ConnectionRequest()
request.service_account_file = self.service_account_file
if Primitive.to_proto(self.name):
request.resource.name = Primitive.to_proto(self.name)
if ConnectionGithubConfig.to_proto(self.github_config):
request.resource.github_config.CopyFrom(
ConnectionGithubConfig.to_proto(self.github_config)
)
else:
request.resource.ClearField("github_config")
if ConnectionGithubEnterpriseConfig.to_proto(self.github_enterprise_config):
request.resource.github_enterprise_config.CopyFrom(
ConnectionGithubEnterpriseConfig.to_proto(self.github_enterprise_config)
)
else:
request.resource.ClearField("github_enterprise_config")
if ConnectionGitlabConfig.to_proto(self.gitlab_config):
request.resource.gitlab_config.CopyFrom(
ConnectionGitlabConfig.to_proto(self.gitlab_config)
)
else:
request.resource.ClearField("gitlab_config")
if Primitive.to_proto(self.disabled):
request.resource.disabled = Primitive.to_proto(self.disabled)
if Primitive.to_proto(self.annotations):
request.resource.annotations = Primitive.to_proto(self.annotations)
if Primitive.to_proto(self.project):
request.resource.project = Primitive.to_proto(self.project)
if Primitive.to_proto(self.location):
request.resource.location = Primitive.to_proto(self.location)
response = stub.DeleteCloudbuildv2Connection(request)
@classmethod
def list(self, project, location, service_account_file=""):
stub = connection_pb2_grpc.Cloudbuildv2ConnectionServiceStub(channel.Channel())
request = connection_pb2.ListCloudbuildv2ConnectionRequest()
request.service_account_file = service_account_file
request.Project = project
request.Location = location
return stub.ListCloudbuildv2Connection(request).items
def to_proto(self):
resource = connection_pb2.Cloudbuildv2Connection()
if Primitive.to_proto(self.name):
resource.name = Primitive.to_proto(self.name)
if ConnectionGithubConfig.to_proto(self.github_config):
resource.github_config.CopyFrom(
ConnectionGithubConfig.to_proto(self.github_config)
)
else:
resource.ClearField("github_config")
if ConnectionGithubEnterpriseConfig.to_proto(self.github_enterprise_config):
resource.github_enterprise_config.CopyFrom(
ConnectionGithubEnterpriseConfig.to_proto(self.github_enterprise_config)
)
else:
resource.ClearField("github_enterprise_config")
if ConnectionGitlabConfig.to_proto(self.gitlab_config):
resource.gitlab_config.CopyFrom(
ConnectionGitlabConfig.to_proto(self.gitlab_config)
)
else:
resource.ClearField("gitlab_config")
if Primitive.to_proto(self.disabled):
resource.disabled = Primitive.to_proto(self.disabled)
if Primitive.to_proto(self.annotations):
resource.annotations = Primitive.to_proto(self.annotations)
if Primitive.to_proto(self.project):
resource.project = Primitive.to_proto(self.project)
if Primitive.to_proto(self.location):
resource.location = Primitive.to_proto(self.location)
return resource
class ConnectionGithubConfig(object):
def __init__(
self, authorizer_credential: dict = None, app_installation_id: int = None
):
self.authorizer_credential = authorizer_credential
self.app_installation_id = app_installation_id
@classmethod
def to_proto(self, resource):
if not resource:
return None
res = connection_pb2.Cloudbuildv2ConnectionGithubConfig()
if ConnectionGithubConfigAuthorizerCredential.to_proto(
resource.authorizer_credential
):
res.authorizer_credential.CopyFrom(
ConnectionGithubConfigAuthorizerCredential.to_proto(
resource.authorizer_credential
)
)
else:
res.ClearField("authorizer_credential")
if Primitive.to_proto(resource.app_installation_id):
res.app_installation_id = Primitive.to_proto(resource.app_installation_id)
return res
@classmethod
def from_proto(self, resource):
if not resource:
return None
return ConnectionGithubConfig(
authorizer_credential=ConnectionGithubConfigAuthorizerCredential.from_proto(
resource.authorizer_credential
),
app_installation_id=Primitive.from_proto(resource.app_installation_id),
)
class ConnectionGithubConfigArray(object):
@classmethod
def to_proto(self, resources):
if not resources:
return resources
return [ConnectionGithubConfig.to_proto(i) for i in resources]
@classmethod
def from_proto(self, resources):
return [ConnectionGithubConfig.from_proto(i) for i in resources]
class ConnectionGithubConfigAuthorizerCredential(object):
def __init__(self, oauth_token_secret_version: str = None, username: str = None):
self.oauth_token_secret_version = oauth_token_secret_version
self.username = username
@classmethod
def to_proto(self, resource):
if not resource:
return None
res = connection_pb2.Cloudbuildv2ConnectionGithubConfigAuthorizerCredential()
if Primitive.to_proto(resource.oauth_token_secret_version):
res.oauth_token_secret_version = Primitive.to_proto(
resource.oauth_token_secret_version
)
if Primitive.to_proto(resource.username):
res.username = Primitive.to_proto(resource.username)
return res
@classmethod
def from_proto(self, resource):
if not resource:
return None
return ConnectionGithubConfigAuthorizerCredential(
oauth_token_secret_version=Primitive.from_proto(
resource.oauth_token_secret_version
),
username=Primitive.from_proto(resource.username),
)
class ConnectionGithubConfigAuthorizerCredentialArray(object):
@classmethod
def to_proto(self, resources):
if not resources:
return resources
return [
ConnectionGithubConfigAuthorizerCredential.to_proto(i) for i in resources
]
@classmethod
def from_proto(self, resources):
return [
ConnectionGithubConfigAuthorizerCredential.from_proto(i) for i in resources
]
class ConnectionGithubEnterpriseConfig(object):
def __init__(
self,
host_uri: str = None,
app_id: int = None,
app_slug: str = None,
private_key_secret_version: str = None,
webhook_secret_secret_version: str = None,
app_installation_id: int = None,
service_directory_config: dict = None,
ssl_ca: str = None,
):
self.host_uri = host_uri
self.app_id = app_id
self.app_slug = app_slug
self.private_key_secret_version = private_key_secret_version
self.webhook_secret_secret_version = webhook_secret_secret_version
self.app_installation_id = app_installation_id
self.service_directory_config = service_directory_config
self.ssl_ca = ssl_ca
@classmethod
def to_proto(self, resource):
if not resource:
return None
res = connection_pb2.Cloudbuildv2ConnectionGithubEnterpriseConfig()
if Primitive.to_proto(resource.host_uri):
res.host_uri = Primitive.to_proto(resource.host_uri)
if Primitive.to_proto(resource.app_id):
res.app_id = Primitive.to_proto(resource.app_id)
if Primitive.to_proto(resource.app_slug):
res.app_slug = Primitive.to_proto(resource.app_slug)
if Primitive.to_proto(resource.private_key_secret_version):
res.private_key_secret_version = Primitive.to_proto(
resource.private_key_secret_version
)
if Primitive.to_proto(resource.webhook_secret_secret_version):
res.webhook_secret_secret_version = Primitive.to_proto(
resource.webhook_secret_secret_version
)
if Primitive.to_proto(resource.app_installation_id):
res.app_installation_id = Primitive.to_proto(resource.app_installation_id)
if ConnectionGithubEnterpriseConfigServiceDirectoryConfig.to_proto(
resource.service_directory_config
):
res.service_directory_config.CopyFrom(
ConnectionGithubEnterpriseConfigServiceDirectoryConfig.to_proto(
resource.service_directory_config
)
)
else:
res.ClearField("service_directory_config")
if Primitive.to_proto(resource.ssl_ca):
res.ssl_ca = Primitive.to_proto(resource.ssl_ca)
return res
@classmethod
def from_proto(self, resource):
if not resource:
return None
return ConnectionGithubEnterpriseConfig(
host_uri=Primitive.from_proto(resource.host_uri),
app_id=Primitive.from_proto(resource.app_id),
app_slug=Primitive.from_proto(resource.app_slug),
private_key_secret_version=Primitive.from_proto(
resource.private_key_secret_version
),
webhook_secret_secret_version=Primitive.from_proto(
resource.webhook_secret_secret_version
),
app_installation_id=Primitive.from_proto(resource.app_installation_id),
service_directory_config=ConnectionGithubEnterpriseConfigServiceDirectoryConfig.from_proto(
resource.service_directory_config
),
ssl_ca=Primitive.from_proto(resource.ssl_ca),
)
class ConnectionGithubEnterpriseConfigArray(object):
@classmethod
def to_proto(self, resources):
if not resources:
return resources
return [ConnectionGithubEnterpriseConfig.to_proto(i) for i in resources]
@classmethod
def from_proto(self, resources):
return [ConnectionGithubEnterpriseConfig.from_proto(i) for i in resources]
class ConnectionGithubEnterpriseConfigServiceDirectoryConfig(object):
def __init__(self, service: str = None):
self.service = service
@classmethod
def to_proto(self, resource):
if not resource:
return None
res = (
connection_pb2.Cloudbuildv2ConnectionGithubEnterpriseConfigServiceDirectoryConfig()
)
if Primitive.to_proto(resource.service):
res.service = Primitive.to_proto(resource.service)
return res
@classmethod
def from_proto(self, resource):
if not resource:
return None
return ConnectionGithubEnterpriseConfigServiceDirectoryConfig(
service=Primitive.from_proto(resource.service),
)
class ConnectionGithubEnterpriseConfigServiceDirectoryConfigArray(object):
@classmethod
def to_proto(self, resources):
if not resources:
return resources
return [
ConnectionGithubEnterpriseConfigServiceDirectoryConfig.to_proto(i)
for i in resources
]
@classmethod
def from_proto(self, resources):
return [
ConnectionGithubEnterpriseConfigServiceDirectoryConfig.from_proto(i)
for i in resources
]
class ConnectionGitlabConfig(object):
def __init__(
self,
host_uri: str = None,
webhook_secret_secret_version: str = None,
read_authorizer_credential: dict = None,
authorizer_credential: dict = None,
service_directory_config: dict = None,
ssl_ca: str = None,
server_version: str = None,
):
self.host_uri = host_uri
self.webhook_secret_secret_version = webhook_secret_secret_version
self.read_authorizer_credential = read_authorizer_credential
self.authorizer_credential = authorizer_credential
self.service_directory_config = service_directory_config
self.ssl_ca = ssl_ca
self.server_version = server_version
@classmethod
def to_proto(self, resource):
if not resource:
return None
res = connection_pb2.Cloudbuildv2ConnectionGitlabConfig()
if Primitive.to_proto(resource.host_uri):
res.host_uri = Primitive.to_proto(resource.host_uri)
if Primitive.to_proto(resource.webhook_secret_secret_version):
res.webhook_secret_secret_version = Primitive.to_proto(
resource.webhook_secret_secret_version
)
if ConnectionGitlabConfigReadAuthorizerCredential.to_proto(
resource.read_authorizer_credential
):
res.read_authorizer_credential.CopyFrom(
ConnectionGitlabConfigReadAuthorizerCredential.to_proto(
resource.read_authorizer_credential
)
)
else:
res.ClearField("read_authorizer_credential")
if ConnectionGitlabConfigAuthorizerCredential.to_proto(
resource.authorizer_credential
):
res.authorizer_credential.CopyFrom(
ConnectionGitlabConfigAuthorizerCredential.to_proto(
resource.authorizer_credential
)
)
else:
res.ClearField("authorizer_credential")
if ConnectionGitlabConfigServiceDirectoryConfig.to_proto(
resource.service_directory_config
):
res.service_directory_config.CopyFrom(
ConnectionGitlabConfigServiceDirectoryConfig.to_proto(
resource.service_directory_config
)
)
else:
res.ClearField("service_directory_config")
if Primitive.to_proto(resource.ssl_ca):
res.ssl_ca = Primitive.to_proto(resource.ssl_ca)
if Primitive.to_proto(resource.server_version):
res.server_version = Primitive.to_proto(resource.server_version)
return res
@classmethod
def from_proto(self, resource):
if not resource:
return None
return ConnectionGitlabConfig(
host_uri=Primitive.from_proto(resource.host_uri),
webhook_secret_secret_version=Primitive.from_proto(
resource.webhook_secret_secret_version
),
read_authorizer_credential=ConnectionGitlabConfigReadAuthorizerCredential.from_proto(
resource.read_authorizer_credential
),
authorizer_credential=ConnectionGitlabConfigAuthorizerCredential.from_proto(
resource.authorizer_credential
),
service_directory_config=ConnectionGitlabConfigServiceDirectoryConfig.from_proto(
resource.service_directory_config
),
ssl_ca=Primitive.from_proto(resource.ssl_ca),
server_version=Primitive.from_proto(resource.server_version),
)
class ConnectionGitlabConfigArray(object):
@classmethod
def to_proto(self, resources):
if not resources:
return resources
return [ConnectionGitlabConfig.to_proto(i) for i in resources]
@classmethod
def from_proto(self, resources):
return [ConnectionGitlabConfig.from_proto(i) for i in resources]
class ConnectionGitlabConfigReadAuthorizerCredential(object):
def __init__(self, user_token_secret_version: str = None, username: str = None):
self.user_token_secret_version = user_token_secret_version
self.username = username
@classmethod
def to_proto(self, resource):
if not resource:
return None
res = (
connection_pb2.Cloudbuildv2ConnectionGitlabConfigReadAuthorizerCredential()
)
if Primitive.to_proto(resource.user_token_secret_version):
res.user_token_secret_version = Primitive.to_proto(
resource.user_token_secret_version
)
if Primitive.to_proto(resource.username):
res.username = Primitive.to_proto(resource.username)
return res
@classmethod
def from_proto(self, resource):
if not resource:
return None
return ConnectionGitlabConfigReadAuthorizerCredential(
user_token_secret_version=Primitive.from_proto(
resource.user_token_secret_version
),
username=Primitive.from_proto(resource.username),
)
class ConnectionGitlabConfigReadAuthorizerCredentialArray(object):
@classmethod
def to_proto(self, resources):
if not resources:
return resources
return [
ConnectionGitlabConfigReadAuthorizerCredential.to_proto(i)
for i in resources
]
@classmethod
def from_proto(self, resources):
return [
ConnectionGitlabConfigReadAuthorizerCredential.from_proto(i)
for i in resources
]
class ConnectionGitlabConfigAuthorizerCredential(object):
def __init__(self, user_token_secret_version: str = None, username: str = None):
self.user_token_secret_version = user_token_secret_version
self.username = username
@classmethod
def to_proto(self, resource):
if not resource:
return None
res = connection_pb2.Cloudbuildv2ConnectionGitlabConfigAuthorizerCredential()
if Primitive.to_proto(resource.user_token_secret_version):
res.user_token_secret_version = Primitive.to_proto(
resource.user_token_secret_version
)
if Primitive.to_proto(resource.username):
res.username = Primitive.to_proto(resource.username)
return res
@classmethod
def from_proto(self, resource):
if not resource:
return None
return ConnectionGitlabConfigAuthorizerCredential(
user_token_secret_version=Primitive.from_proto(
resource.user_token_secret_version
),
username=Primitive.from_proto(resource.username),
)
class ConnectionGitlabConfigAuthorizerCredentialArray(object):
@classmethod
def to_proto(self, resources):
if not resources:
return resources
return [
ConnectionGitlabConfigAuthorizerCredential.to_proto(i) for i in resources
]
@classmethod
def from_proto(self, resources):
return [
ConnectionGitlabConfigAuthorizerCredential.from_proto(i) for i in resources
]
class ConnectionGitlabConfigServiceDirectoryConfig(object):
def __init__(self, service: str = None):
self.service = service
@classmethod
def to_proto(self, resource):
if not resource:
return None
res = connection_pb2.Cloudbuildv2ConnectionGitlabConfigServiceDirectoryConfig()
if Primitive.to_proto(resource.service):
res.service = Primitive.to_proto(resource.service)
return res
@classmethod
def from_proto(self, resource):
if not resource:
return None
return ConnectionGitlabConfigServiceDirectoryConfig(
service=Primitive.from_proto(resource.service),
)
class ConnectionGitlabConfigServiceDirectoryConfigArray(object):
@classmethod
def to_proto(self, resources):
if not resources:
return resources
return [
ConnectionGitlabConfigServiceDirectoryConfig.to_proto(i) for i in resources
]
@classmethod
def from_proto(self, resources):
return [
ConnectionGitlabConfigServiceDirectoryConfig.from_proto(i)
for i in resources
]
class ConnectionInstallationState(object):
def __init__(self, stage: str = None, message: str = None, action_uri: str = None):
self.stage = stage
self.message = message
self.action_uri = action_uri
@classmethod
def to_proto(self, resource):
if not resource:
return None
res = connection_pb2.Cloudbuildv2ConnectionInstallationState()
if ConnectionInstallationStateStageEnum.to_proto(resource.stage):
res.stage = ConnectionInstallationStateStageEnum.to_proto(resource.stage)
if Primitive.to_proto(resource.message):
res.message = Primitive.to_proto(resource.message)
if Primitive.to_proto(resource.action_uri):
res.action_uri = Primitive.to_proto(resource.action_uri)
return res
@classmethod
def from_proto(self, resource):
if not resource:
return None
return ConnectionInstallationState(
stage=ConnectionInstallationStateStageEnum.from_proto(resource.stage),
message=Primitive.from_proto(resource.message),
action_uri=Primitive.from_proto(resource.action_uri),
)
class ConnectionInstallationStateArray(object):
@classmethod
def to_proto(self, resources):
if not resources:
return resources
return [ConnectionInstallationState.to_proto(i) for i in resources]
@classmethod
def from_proto(self, resources):
return [ConnectionInstallationState.from_proto(i) for i in resources]
class ConnectionInstallationStateStageEnum(object):
@classmethod
def to_proto(self, resource):
if not resource:
return resource
return connection_pb2.Cloudbuildv2ConnectionInstallationStateStageEnum.Value(
"Cloudbuildv2ConnectionInstallationStateStageEnum%s" % resource
)
@classmethod
def from_proto(self, resource):
if not resource:
return resource
return connection_pb2.Cloudbuildv2ConnectionInstallationStateStageEnum.Name(
resource
)[len("Cloudbuildv2ConnectionInstallationStateStageEnum") :]
class Primitive(object):
@classmethod
def to_proto(self, s):
if not s:
return ""
return s
@classmethod
def from_proto(self, s):
return s