diff options
| author | William Artero <github@artero.dev> | 2022-08-03 15:58:45 +0200 |
|---|---|---|
| committer | William Artero <github@artero.dev> | 2022-08-03 16:16:18 +0200 |
| commit | 67daf4a279c7cd425290fc99e54b4e4e77c4b3a6 (patch) | |
| tree | b76707798e7efa287b9416d5c127931ae8693e64 | |
| parent | cef29ccde2435059f650ed87ec7bcabead08ce09 (diff) | |
fix: flatten project falls back to organization default template ID
The Azure DevOps API does not guarantee a process template ID will
be returned when getting a project detail. This seems to be caused
for projects which use the organization default template. As such,
the lookup logic should fallback to that value, if none is present
at the project level. Thanks @tmeckel for the suggested
implementation.
Fixes #199
| -rw-r--r-- | azuredevops/internal/service/core/resource_project.go | 21 |
1 files changed, 18 insertions, 3 deletions
diff --git a/azuredevops/internal/service/core/resource_project.go b/azuredevops/internal/service/core/resource_project.go index 97b8cc3e..33ef110b 100644 --- a/azuredevops/internal/service/core/resource_project.go +++ b/azuredevops/internal/service/core/resource_project.go @@ -455,11 +455,26 @@ func expandProject(clients *client.AggregatedClient, d *schema.ResourceData, for } func flattenProject(clients *client.AggregatedClient, d *schema.ResourceData, project *core.TeamProject) error { + var err error + processTemplateName := "" processTemplateID := (*project.Capabilities)["processTemplate"]["templateTypeId"] - processTemplateName, err := lookupProcessTemplateName(clients, processTemplateID) + if len(processTemplateID) > 0 { + processTemplateName, err = lookupProcessTemplateName(clients, processTemplateID) + if err != nil { + return err + } + } else { // fallback to the organization default process + processes, err := clients.CoreClient.GetProcesses(clients.Ctx, core.GetProcessesArgs{}) + if err != nil { + return err + } - if err != nil { - return err + for _, p := range *processes { + if *p.IsDefault == true { + processTemplateName = *p.Name + break + } + } } var currentFeatureStates *map[ProjectFeatureType]featuremanagement.ContributedFeatureEnabledValue |
