summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWilliam Artero <github@artero.dev>2022-08-03 15:58:45 +0200
committerWilliam Artero <github@artero.dev>2022-08-03 16:16:18 +0200
commit67daf4a279c7cd425290fc99e54b4e4e77c4b3a6 (patch)
treeb76707798e7efa287b9416d5c127931ae8693e64
parentcef29ccde2435059f650ed87ec7bcabead08ce09 (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.go21
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