func updateDeployment()

in custom-targets/infrastructure-manager/im-deployer/inframanager.go [111:138]


func updateDeployment(ctx context.Context, client *config.Client, renderedDeployment *configpb.Deployment) (*configpb.Deployment, error) {
	op, err := client.UpdateDeployment(ctx, &configpb.UpdateDeploymentRequest{
		Deployment: renderedDeployment,
	})
	if err != nil {
		return nil, fmt.Errorf("error calling update deployment: %v", err)
	}
	fmt.Printf("Waiting on update Deployment operation %s\n", op.Name())
	var d *configpb.Deployment
	for {
		time.Sleep(30 * time.Second)
		pd, err := op.Poll(ctx)
		if err != nil {
			return nil, fmt.Errorf("error polling create deployment operation: %v", err)
		}
		if pd != nil {
			d = pd
			break
		}
		// If the operation isn't complete then get the Deployment to log the current state.
		tempD, err := getDeployment(ctx, client, renderedDeployment.Name)
		if err != nil {
			return nil, fmt.Errorf("error getting deployment: %v", err)
		}
		fmt.Printf("Update operation still in progress, current Deployment state: %s", tempD.State)
	}
	return d, nil
}