in processors/clouddeploy.py [0:0]
def process(self, output_var='clouddeploy'):
if 'region' not in self.config:
raise NotConfiguredException('No Cloud Deploy region specified.')
if 'name' not in self.config:
raise NotConfiguredException(
'No Cloud Deploy delivery pipeline name specified.')
if 'mode' not in self.config:
raise NotConfiguredException('No Cloud Deploy operation specified.')
credentials, credentials_project_id = google.auth.default()
project = self._jinja_expand_string(
self.config['project'],
'project') if 'project' in self.config else credentials_project_id
if not project:
project = credentials.quota_project_id
region_name = self._jinja_expand_string(self.config['region'], 'region')
pipeline_name = self._jinja_expand_string(self.config['name'], 'name')
pipeline_full_name = "projects/%s/locations/%s/deliveryPipelines/%s" % (
project, region_name, pipeline_name)
deploy_service = discovery.build(
'clouddeploy', 'v1', http=self._get_branded_http(credentials))
deploy_base_request = deploy_service.projects().locations(
).deliveryPipelines()
if self.config['mode'] == 'pipelines.get':
deploy_response = deploy_base_request.get(
name=pipeline_full_name).execute()
return {
output_var: deploy_response,
}
if self.config['mode'] == 'releases.get':
deploy_response = deploy_base_request.releases().get(
name=pipeline_full_name).execute()
return {
output_var: deploy_response,
}
if self.config['mode'] == 'releases.create':
if 'releaseId' not in self.config:
raise NotConfiguredException(
'No releaseId parameter configured for releases.create.')
release_id = self._jinja_expand_string(self.config['releaseId'],
'release_id')
if 'release' not in self.config:
raise NotConfiguredException(
'No release parameter configured for releases.create.')
body = self._jinja_expand_dict_all(self.config['release'],
'release')
deploy_response = deploy_base_request.releases().create(
body=body, parent=pipeline_full_name,
releaseId=release_id).execute()
deploy_response = self.wait_for_operation_done(
deploy_service, deploy_response['name'])
return {
output_var: deploy_response,
}
if self.config['mode'] == 'releases.rollouts.create':
if 'releaseId' not in self.config:
raise NotConfiguredException(
'No releaseId parameter configured for releases.rollouts.create.'
)
if 'rolloutId' not in self.config:
raise NotConfiguredException(
'No rolloutId parameter configured for releases.rollouts.create.'
)
release_id = self._jinja_expand_string(self.config['releaseId'],
'release_id')
rollout_id = self._jinja_expand_string(self.config['rolloutId'],
'rollout_id')
if 'rollout' not in self.config:
raise NotConfiguredException(
'No rollout parameter configured for releases.rollouts.create.'
)
body = self._jinja_expand_dict_all(self.config['rollout'],
'rollout')
if '/releases/' not in release_id:
release_full_name = '%s/releases/%s' % (pipeline_full_name,
release_id)
else:
release_full_name = release_id
deploy_response = deploy_base_request.releases().rollouts().create(
body=body, parent=release_full_name,
rolloutId=rollout_id).execute()
deploy_response = self.wait_for_operation_done(
deploy_service, deploy_response['name'])
return {
output_var: deploy_response,
}
if self.config['mode'] == 'releases.rollouts.approve' or self.config[
'mode'] == 'releases.rollouts.reject':
if 'releaseId' not in self.config:
raise NotConfiguredException(
'No releaseId parameter configured for releases.rollouts.approve/reject.'
)
if 'rolloutId' not in self.config:
raise NotConfiguredException(
'No rolloutId parameter configured for releases.rollouts.approve/reject.'
)
release_id = self._jinja_expand_string(self.config['releaseId'],
'release_id')
rollout_id = self._jinja_expand_string(self.config['rolloutId'],
'rollout_id')
if self.config['mode'] == 'releases.rollouts.approve':
body = {'approved': True}
else:
body = {'approved': False}
if '/releases/' not in release_id:
release_full_name = '%s/releases/%s' % (pipeline_full_name,
release_id)
else:
release_full_name = release_id
if '/rollouts/' in rollout_id:
rollout_full_name = rollout_id
else:
rollout_full_name = '%s/rollouts/%s' % (release_full_name,
rollout_id)
deploy_response = deploy_base_request.releases().rollouts().approve(
body=body, name=rollout_full_name).execute()
return {
output_var: deploy_response,
}
return {
output_var: None,
}