func()

in custom-targets/infrastructure-manager/im-deployer/render.go [157:206]


func (r *renderer) deploymentYAML(gcsSourceURI string) ([]byte, error) {
	labels := make(map[string]string)
	if !r.params.disableCloudDeployLabels {
		labels = map[string]string{
			"managed-by":           "google-cloud-deploy",
			"project":              r.req.Project,
			"location":             r.req.Location,
			"delivery-pipeline-id": r.req.Pipeline,
			"release-id":           r.req.Release,
			"target-id":            r.req.Target,
		}
	}

	d := &configpb.Deployment{
		Name:   r.params.deploymentName(),
		Labels: labels,
		Blueprint: &configpb.Deployment_TerraformBlueprint{
			TerraformBlueprint: &configpb.TerraformBlueprint{
				Source: &configpb.TerraformBlueprint_GcsSource{
					GcsSource: gcsSourceURI,
				},
			},
		},
		ImportExistingResources: &r.params.importExistingResources,
	}

	// Use Cloud Deploy workload service account if deploy parameter overwrite wasn't provided.
	serviceAccount := r.params.imServiceAccount
	if len(serviceAccount) == 0 {
		serviceAccount = r.req.WorkloadCBInfo.ServiceAccount
	}
	d.ServiceAccount = &serviceAccount

	// Use Cloud Deploy workload worker pool if present and deploy parameter overwrite wasn't provided.
	if len(r.params.imWorkerPool) != 0 {
		d.WorkerPool = &r.params.imWorkerPool
	} else if len(r.req.WorkloadCBInfo.WorkerPool) != 0 {
		d.WorkerPool = &r.req.WorkloadCBInfo.WorkerPool
	}

	j, err := protojson.Marshal(d)
	if err != nil {
		return nil, fmt.Errorf("error marshaling deployment: %v", err)
	}
	y, err := yaml.JSONToYAML(j)
	if err != nil {
		return nil, fmt.Errorf("error converting deployment json to yaml: %v", err)
	}
	return y, nil
}