func createRequestHandler()

in custom-targets/git-ops/git-deployer/main.go [69:106]


func createRequestHandler(ctx context.Context, cloudDeployRequest interface{}, params *params, gcsClient *storage.Client) (requestHandler, error) {
	// The git deployer only supports deploy. If a render request is received then a not supported result will be
	// uploaded to Cloud Storage in order to provide Cloud Deploy with context on why the render failed.
	switch r := cloudDeployRequest.(type) {
	case *clouddeploy.RenderRequest:
		fmt.Println("Received render request from Cloud Deploy, which is not supported. Uploading not supported render results")
		res := &clouddeploy.RenderResult{
			ResultStatus:   clouddeploy.RenderNotSupported,
			FailureMessage: fmt.Sprintf("Render is not supported by %s", gitDeployerSampleName),
			Metadata: map[string]string{
				clouddeploy.CustomTargetSourceMetadataKey:    gitDeployerSampleName,
				clouddeploy.CustomTargetSourceSHAMetadataKey: clouddeploy.GitCommit,
			},
		}
		rURI, err := r.UploadResult(ctx, gcsClient, res)
		if err != nil {
			return nil, fmt.Errorf("error uploading not supported render results: %v", err)
		}
		fmt.Printf("Uploaded not supported render results to %s\n", rURI)
		return nil, fmt.Errorf("render not supported by %s", gitDeployerSampleName)

	case *clouddeploy.DeployRequest:
		smClient, err := secretmanager.NewClient(ctx)
		if err != nil {
			return nil, fmt.Errorf("unable to create secret manager client: %v", err)
		}

		return &deployer{
			req:       r,
			params:    params,
			gcsClient: gcsClient,
			smClient:  smClient,
		}, nil

	default:
		return nil, fmt.Errorf("received unsupported cloud deploy request type: %q", os.Getenv(clouddeploy.RequestTypeEnvKey))
	}
}