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
}