Skip to content

Commit f980f39

Browse files
authored
Merge pull request #649 from gitlabhq/mattkasa-handle-errors-in-project-set-to-state
chore: add error handling to resourceGitlabProjectSetToState
2 parents 9c19fc9 + f3e5d3e commit f980f39

File tree

3 files changed

+61
-37
lines changed

3 files changed

+61
-37
lines changed

gitlab/resource_gitlab_project.go

Lines changed: 41 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -310,41 +310,44 @@ func resourceGitlabProject() *schema.Resource {
310310
}
311311
}
312312

313-
func resourceGitlabProjectSetToState(d *schema.ResourceData, project *gitlab.Project) {
313+
func resourceGitlabProjectSetToState(d *schema.ResourceData, project *gitlab.Project) error {
314314
d.SetId(fmt.Sprintf("%d", project.ID))
315-
d.Set("name", project.Name)
316-
d.Set("path", project.Path)
317-
d.Set("path_with_namespace", project.PathWithNamespace)
318-
d.Set("description", project.Description)
319-
d.Set("default_branch", project.DefaultBranch)
320-
d.Set("request_access_enabled", project.RequestAccessEnabled)
321-
d.Set("issues_enabled", project.IssuesEnabled)
322-
d.Set("merge_requests_enabled", project.MergeRequestsEnabled)
323-
d.Set("pipelines_enabled", project.JobsEnabled)
324-
d.Set("approvals_before_merge", project.ApprovalsBeforeMerge)
325-
d.Set("wiki_enabled", project.WikiEnabled)
326-
d.Set("snippets_enabled", project.SnippetsEnabled)
327-
d.Set("container_registry_enabled", project.ContainerRegistryEnabled)
328-
d.Set("lfs_enabled", project.LFSEnabled)
329-
d.Set("visibility_level", string(project.Visibility))
330-
d.Set("merge_method", string(project.MergeMethod))
331-
d.Set("only_allow_merge_if_pipeline_succeeds", project.OnlyAllowMergeIfPipelineSucceeds)
332-
d.Set("only_allow_merge_if_all_discussions_are_resolved", project.OnlyAllowMergeIfAllDiscussionsAreResolved)
333-
d.Set("namespace_id", project.Namespace.ID)
334-
d.Set("ssh_url_to_repo", project.SSHURLToRepo)
335-
d.Set("http_url_to_repo", project.HTTPURLToRepo)
336-
d.Set("web_url", project.WebURL)
337-
d.Set("runners_token", project.RunnersToken)
338-
d.Set("shared_runners_enabled", project.SharedRunnersEnabled)
339-
d.Set("tags", project.TagList)
340-
d.Set("archived", project.Archived)
341-
d.Set("remove_source_branch_after_merge", project.RemoveSourceBranchAfterMerge)
342-
d.Set("packages_enabled", project.PackagesEnabled)
343-
d.Set("pages_access_level", string(project.PagesAccessLevel))
344-
d.Set("mirror", project.Mirror)
345-
d.Set("mirror_trigger_builds", project.MirrorTriggerBuilds)
346-
d.Set("mirror_overwrites_diverged_branches", project.MirrorOverwritesDivergedBranches)
347-
d.Set("only_mirror_protected_branches", project.OnlyMirrorProtectedBranches)
315+
values := map[string]interface{}{
316+
"name": project.Name,
317+
"path": project.Path,
318+
"path_with_namespace": project.PathWithNamespace,
319+
"description": project.Description,
320+
"default_branch": project.DefaultBranch,
321+
"request_access_enabled": project.RequestAccessEnabled,
322+
"issues_enabled": project.IssuesEnabled,
323+
"merge_requests_enabled": project.MergeRequestsEnabled,
324+
"pipelines_enabled": project.JobsEnabled,
325+
"approvals_before_merge": project.ApprovalsBeforeMerge,
326+
"wiki_enabled": project.WikiEnabled,
327+
"snippets_enabled": project.SnippetsEnabled,
328+
"container_registry_enabled": project.ContainerRegistryEnabled,
329+
"lfs_enabled": project.LFSEnabled,
330+
"visibility_level": string(project.Visibility),
331+
"merge_method": string(project.MergeMethod),
332+
"only_allow_merge_if_pipeline_succeeds": project.OnlyAllowMergeIfPipelineSucceeds,
333+
"only_allow_merge_if_all_discussions_are_resolved": project.OnlyAllowMergeIfAllDiscussionsAreResolved,
334+
"namespace_id": project.Namespace.ID,
335+
"ssh_url_to_repo": project.SSHURLToRepo,
336+
"http_url_to_repo": project.HTTPURLToRepo,
337+
"web_url": project.WebURL,
338+
"runners_token": project.RunnersToken,
339+
"shared_runners_enabled": project.SharedRunnersEnabled,
340+
"tags": project.TagList,
341+
"archived": project.Archived,
342+
"remove_source_branch_after_merge": project.RemoveSourceBranchAfterMerge,
343+
"packages_enabled": project.PackagesEnabled,
344+
"pages_access_level": string(project.PagesAccessLevel),
345+
"mirror": project.Mirror,
346+
"mirror_trigger_builds": project.MirrorTriggerBuilds,
347+
"mirror_overwrites_diverged_branches": project.MirrorOverwritesDivergedBranches,
348+
"only_mirror_protected_branches": project.OnlyMirrorProtectedBranches,
349+
}
350+
return setResourceData(d, values)
348351
}
349352

350353
func resourceGitlabProjectCreate(d *schema.ResourceData, meta interface{}) error {
@@ -492,7 +495,10 @@ func resourceGitlabProjectRead(d *schema.ResourceData, meta interface{}) error {
492495
return nil
493496
}
494497

495-
resourceGitlabProjectSetToState(d, project)
498+
err = resourceGitlabProjectSetToState(d, project)
499+
if err != nil {
500+
return err
501+
}
496502

497503
log.Printf("[DEBUG] read gitlab project %q push rules", d.Id())
498504

gitlab/resource_gitlab_project_test.go

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -762,10 +762,18 @@ func testAccCheckAggregateGitlabProject(expected, received *gitlab.Project) reso
762762
} else {
763763
return err
764764
}
765+
}
766+
767+
err := resourceGitlabProjectSetToState(expectedData, expected)
768+
if err != nil {
769+
return err
770+
}
765771

772+
err = resourceGitlabProjectSetToState(receivedData, received)
773+
if err != nil {
774+
return err
766775
}
767-
resourceGitlabProjectSetToState(expectedData, expected)
768-
resourceGitlabProjectSetToState(receivedData, received)
776+
769777
return testAccCompareGitLabAttribute(attribute, expectedData, receivedData)
770778
})
771779
}

gitlab/util.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -303,3 +303,13 @@ func parseVersionMajorMinor(version string) (int, int, error) {
303303

304304
return major, minor, nil
305305
}
306+
307+
func setResourceData(d *schema.ResourceData, values map[string]interface{}) error {
308+
for name, value := range values {
309+
err := d.Set(name, value)
310+
if err != nil {
311+
return err
312+
}
313+
}
314+
return nil
315+
}

0 commit comments

Comments
 (0)