From a9bf04bd3c7f6debe641e94fe145d1eedd3c4c15 Mon Sep 17 00:00:00 2001 From: Ringo De Smet Date: Sun, 21 Jun 2020 19:21:07 +0200 Subject: [PATCH] parent 1cbab81c5ac228dca0978f1f61f65ac9c48a2252 author Ringo De Smet 1592760067 +0200 committer sfang97 1600137187 -0500 parent 1cbab81c5ac228dca0978f1f61f65ac9c48a2252 author Ringo De Smet 1592760067 +0200 committer sfang97 1600137111 -0500 parent 1cbab81c5ac228dca0978f1f61f65ac9c48a2252 author Ringo De Smet 1592760067 +0200 committer sfang97 1600136946 -0500 Fix required Go version Add instance clusters to Terraform provider Add support for instance level cluster management via the Gitlab Terraform provider. Add instance cluster to provider Add instance cluster go file Add instance clusters to website Only test read instance cluster for now Add functionality to CRUD Tests mostly passing now, except a weird invalid URL escape thing, will investigate this Remove instance_clusters.go from this PR Contributed the instance API file to the upstream repo github.com/xanzy/go-gitlab, so removing from this PR Readding instance_clusters for failed pipeline Replace required libary in go mod Replace vendor with upstream in go mod Remove vendor files Remove changes to gitlab go Remove instance clusters from README Add management project param back in Rerun CI build Removing line for CI build Rerun CI pipeline Undo change to xanzy README Undo another change to README Change the commit to replace go-gitlab requirement Add go mod vendor to travis Move go mod vendors command to lint stage Change function names based on vendor change Remove replace package feat: Add support to create projects from templates Undo cherry pick This reverts commit 51918399edf223f61b8de52fe2f32391c85c9545. Update go mod to latest go-gitlab Remove changes to travis Remove newline for new pipeline Update docs, no instance ID Add backlashes so no italics Remove instance from example usage Remove white space, change instance link Address PR comments Add forcenew back to auth type run make fmt Prepare changelog for release v2.11.0 Cleanup after v2.11.0 release Fix Jira Service error handling (#363) Fix nil pointer dereferences during error handling (#364) * Fix error handling when deleting deploy key There was the possibility of a panic if response was nil, and the GitLab client already treats the 204 code as a success, so the extra check was not needed. * Fix nil pointer dereference issues in error messages correct management_project_id argument in documentation (#368) Fix incorrect description of valid access levels (#342) This minor change corrects a mistake showing `master` as a valid level of `group_access_level`. Import group labels (#339) * add support for importing gitlab group labels * fix resource name in the acceptance test * convert group ID to string Co-authored-by: David Townshend Add importer to resource_gitlab_project_push_rules (#360) * Add importer to resource_gitlab_project_push_rules * Fix apparent copy-paste problem and inconsistency in push rules debug logs Bump go-gitlab to v.0.34.1 (#378) * Fix variable passed to ListLabelsOptions Needed to fix nested struct format * Don't need go mod changes * Add back go mod * Bump to 0.34.1 * Add 0.34.1 to modules.txt * Revert "Add 0.34.1 to modules.txt" This reverts commit 2ac4e3eda9b1202bfc9eedcd9a70030a4b3107e7. * Add vendor files for bump Co-authored-by: sfang97 Renamed the Github organization after the migration to https://github.com/gitlabhq Change isRunningInEE test Fix import packages Call configure in provider test Only initialize provider in acceptance tests Remove undefined resource reference Add undefined testenvvar Had to run make fmt Remove unused variable Reference testenvvar resource correctly Add group_ldap_link to index Signed-off-by: Sune Keller Adding project miorror and tests responding to PR comments, removing import state verify for acceptance test Setting all properties in SetToState removed commented out ignore adding docs page adding to index Store more attributes into the state Fix missing test checks in the resource user Allow to change user email address without creating a new resource Fix the external flag being mapped to admin instead Switching the external flag makes tests fail Add new data source gitlab_group_membership Allow to filter members by their access_level Add new doc page to gitlab.erb Update website/gitlab.erb Co-authored-by: Adam Snyder Added Quotes in the example for group cluster Prepare changelog for release Cleanup after v2.11.0 release Fix Jira Service error handling (#363) Fix nil pointer dereferences during error handling (#364) * Fix error handling when deleting deploy key There was the possibility of a panic if response was nil, and the GitLab client already treats the 204 code as a success, so the extra check was not needed. * Fix nil pointer dereference issues in error messages correct management_project_id argument in documentation (#368) Fix incorrect description of valid access levels (#342) This minor change corrects a mistake showing `master` as a valid level of `group_access_level`. Import group labels (#339) * add support for importing gitlab group labels * fix resource name in the acceptance test * convert group ID to string Co-authored-by: David Townshend Add importer to resource_gitlab_project_push_rules (#360) * Add importer to resource_gitlab_project_push_rules * Fix apparent copy-paste problem and inconsistency in push rules debug logs Bump go-gitlab to v.0.34.1 (#378) * Fix variable passed to ListLabelsOptions Needed to fix nested struct format * Don't need go mod changes * Add back go mod * Bump to 0.34.1 * Add 0.34.1 to modules.txt * Revert "Add 0.34.1 to modules.txt" This reverts commit 2ac4e3eda9b1202bfc9eedcd9a70030a4b3107e7. * Add vendor files for bump Co-authored-by: sfang97 Change isRunningInEE test Fix import packages Call configure in provider test Only initialize provider in acceptance tests Remove undefined resource reference Add undefined testenvvar Had to run make fmt Remove unused variable Reference testenvvar resource correctly Add group_ldap_link to index Signed-off-by: Sune Keller Adding project miorror and tests responding to PR comments, removing import state verify for acceptance test Setting all properties in SetToState removed commented out ignore adding docs page adding to index Store more attributes into the state Fix missing test checks in the resource user Allow to change user email address without creating a new resource Fix the external flag being mapped to admin instead Switching the external flag makes tests fail Allow to filter members by their access_level Update website/gitlab.erb Co-authored-by: Adam Snyder Added Quotes in the example for group cluster Remove redundant test func Add managed test Address PR comments Revert "Address PR comments" This reverts commit a963eaffc278ffbf9a944956c0ef452b69132cd1. Remove managed and enabled for now --- CHANGELOG.md | 172 +++++------ README.md | 16 +- gitlab/data_source_gitlab_group_membership.go | 172 +++++++++++ ...ata_source_gitlab_group_membership_test.go | 91 ++++++ gitlab/provider.go | 13 +- gitlab/provider_test.go | 17 +- gitlab/resource_gitlab_deploy_key.go | 6 +- gitlab/resource_gitlab_group_label.go | 28 ++ gitlab/resource_gitlab_group_label_test.go | 42 +++ gitlab/resource_gitlab_group_test.go | 2 +- gitlab/resource_gitlab_instance_cluster.go | 254 ++++++++++++++++ .../resource_gitlab_instance_cluster_test.go | 275 ++++++++++++++++++ gitlab/resource_gitlab_label.go | 2 +- gitlab/resource_gitlab_label_test.go | 2 +- gitlab/resource_gitlab_pipeline_schedule.go | 8 +- ...ource_gitlab_pipeline_schedule_variable.go | 8 +- gitlab/resource_gitlab_project_mirror.go | 176 +++++++++++ gitlab/resource_gitlab_project_mirror_test.go | 210 +++++++++++++ gitlab/resource_gitlab_project_push_rules.go | 29 +- ...resource_gitlab_project_push_rules_test.go | 23 ++ gitlab/resource_gitlab_service_github_test.go | 6 +- gitlab/resource_gitlab_service_jira.go | 5 +- gitlab/resource_gitlab_user.go | 14 +- gitlab/resource_gitlab_user_test.go | 34 ++- go.mod | 4 +- go.sum | 4 +- main.go | 2 +- vendor/github.com/xanzy/go-gitlab/README.md | 3 +- .../xanzy/go-gitlab/event_webhook_types.go | 5 + vendor/github.com/xanzy/go-gitlab/gitlab.go | 6 + .../xanzy/go-gitlab/group_clusters.go | 18 +- .../xanzy/go-gitlab/group_labels.go | 29 ++ .../xanzy/go-gitlab/group_members.go | 44 +++ .../xanzy/go-gitlab/group_milestones.go | 39 +++ vendor/github.com/xanzy/go-gitlab/groups.go | 74 ++--- .../xanzy/go-gitlab/instance_clusters.go | 151 ++++++++++ .../xanzy/go-gitlab/issues_statistics.go | 186 ++++++++++++ vendor/github.com/xanzy/go-gitlab/labels.go | 57 +++- vendor/github.com/xanzy/go-gitlab/license.go | 7 +- .../xanzy/go-gitlab/project_mirror.go | 145 +++++++++ .../xanzy/go-gitlab/project_snippets.go | 4 +- vendor/github.com/xanzy/go-gitlab/projects.go | 124 ++++---- vendor/github.com/xanzy/go-gitlab/runners.go | 38 +++ vendor/github.com/xanzy/go-gitlab/services.go | 26 +- vendor/github.com/xanzy/go-gitlab/users.go | 1 + vendor/modules.txt | 2 +- website/docs/d/group_membership.html.markdown | 56 ++++ website/docs/r/group_cluster.html.markdown | 6 +- website/docs/r/group_label.html.markdown | 8 + website/docs/r/instance_cluster.html.markdown | 64 ++++ website/docs/r/project.html.markdown | 2 +- website/docs/r/project_cluster.html.markdown | 4 +- website/docs/r/project_mirror.html.markdown | 43 +++ .../docs/r/project_push_rules.html.markdown | 8 + website/docs/r/service_github.html.markdown | 4 +- website/gitlab.erb | 12 + 56 files changed, 2528 insertions(+), 253 deletions(-) create mode 100644 gitlab/data_source_gitlab_group_membership.go create mode 100644 gitlab/data_source_gitlab_group_membership_test.go create mode 100644 gitlab/resource_gitlab_instance_cluster.go create mode 100644 gitlab/resource_gitlab_instance_cluster_test.go create mode 100644 gitlab/resource_gitlab_project_mirror.go create mode 100644 gitlab/resource_gitlab_project_mirror_test.go create mode 100644 vendor/github.com/xanzy/go-gitlab/instance_clusters.go create mode 100644 vendor/github.com/xanzy/go-gitlab/issues_statistics.go create mode 100644 vendor/github.com/xanzy/go-gitlab/project_mirror.go create mode 100644 website/docs/d/group_membership.html.markdown create mode 100644 website/docs/r/instance_cluster.html.markdown create mode 100644 website/docs/r/project_mirror.html.markdown diff --git a/CHANGELOG.md b/CHANGELOG.md index 4dec50385..b8ea80bd3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,112 +1,118 @@ -## 2.11.0 (Unreleased) +## 2.12.0 (Unreleased) +## 2.11.0 (July 24, 2020) + +ENHANCEMENTS: +* Improvements to resource `gitlab_user` import + ([#340](https://github.com/gitlabhq/terraform-provider-gitlab/issues/340)) + ## 2.10.0 (June 09, 2020) FEATURES: * **New Resource:** `gitlab_service_github` - ([#311](https://github.com/terraform-providers/terraform-provider-gitlab/issues/311)) + ([#311](https://github.com/gitlabhq/terraform-provider-gitlab/issues/311)) ENHANCEMENTS: -* add attribute remove_source_branch_after_merge to projects - ([#289](https://github.com/terraform-providers/terraform-provider-gitlab/issues/289)) +* add attribute `remove_source_branch_after_merge` to projects + ([#289](https://github.com/gitlabhq/terraform-provider-gitlab/issues/289)) BUGFIXES: * fix for flaky `gitlab_group` tests - ([#320](https://github.com/terraform-providers/terraform-provider-gitlab/issues/320)) + ([#320](https://github.com/gitlabhq/terraform-provider-gitlab/issues/320)) * Creating custom skip function for group_ldap_link tests. - ([#328](https://github.com/terraform-providers/terraform-provider-gitlab/issues/328)) + ([#328](https://github.com/gitlabhq/terraform-provider-gitlab/issues/328)) ## 2.9.0 (June 01, 2020) FEATURES: * **New DataSource:** `gitlab_projects` - ([#279](https://github.com/terraform-providers/terraform-provider-gitlab/issues/279)) + ([#279](https://github.com/gitlabhq/terraform-provider-gitlab/issues/279)) * **New Resource:** `gitlab_deploy_token` - ([#284](https://github.com/terraform-providers/terraform-provider-gitlab/issues/284)) + ([#284](https://github.com/gitlabhq/terraform-provider-gitlab/issues/284)) ENHANCEMENTS: * Add `management_project_id` for Group and Project Clusters - ([#301](https://github.com/terraform-providers/terraform-provider-gitlab/issues/301)) + ([#301](https://github.com/gitlabhq/terraform-provider-gitlab/issues/301)) ## 2.8.0 (May 28, 2020) FEATURES: * **New Resource:** `gitlab_group_ldap_link` - ([#296](https://github.com/terraform-providers/terraform-provider-gitlab/issues/296), - [#316](https://github.com/terraform-providers/terraform-provider-gitlab/issues/316)) + ([#296](https://github.com/gitlabhq/terraform-provider-gitlab/issues/296), + [#316](https://github.com/gitlabhq/terraform-provider-gitlab/issues/316)) ENHANCEMENTS: * Update resource gitlab_group_label to read labels from all pages - ([#302](https://github.com/terraform-providers/terraform-provider-gitlab/issues/302)) + ([#302](https://github.com/gitlabhq/terraform-provider-gitlab/issues/302)) * Provide a way to specify client cert and key - ([#315](https://github.com/terraform-providers/terraform-provider-gitlab/issues/315)) + ([#315](https://github.com/gitlabhq/terraform-provider-gitlab/issues/315)) BUGFIXES: * Increase MaxIdleConnsPerHost in http.Transport - ([#305](https://github.com/terraform-providers/terraform-provider-gitlab/issues/305)) + ([#305](https://github.com/gitlabhq/terraform-provider-gitlab/issues/305)) ## 2.7.0 (May 20, 2020) * Implement `masked` parameters for `gitlab_group_variable` - ([#271](https://github.com/terraform-providers/terraform-provider-gitlab/issues/271)) + ([#271](https://github.com/gitlabhq/terraform-provider-gitlab/issues/271)) ## 2.6.0 (April 08, 2020) ENHANCEMENTS: * Add jira flags - ([#274](https://github.com/terraform-providers/terraform-provider-gitlab/issues/274)) + ([#274](https://github.com/gitlabhq/terraform-provider-gitlab/issues/274)) ## 2.5.1 (April 06, 2020) BUGFIXES: -* Support for soft-delete of groups and projects in Gitlab Enterprise Edition - ([#282](https://github.com/terraform-providers/terraform-provider-gitlab/issues/282), - [#283](https://github.com/terraform-providers/terraform-provider-gitlab/issues/283), - [#285](https://github.com/terraform-providers/terraform-provider-gitlab/issues/285), - [#291](https://github.com/terraform-providers/terraform-provider-gitlab/issues/291)) +* Support for soft-delete of groups and projects in Gitlab Enterprise Edition + ([#282](https://github.com/gitlabhq/terraform-provider-gitlab/issues/282), + [#283](https://github.com/gitlabhq/terraform-provider-gitlab/issues/283), + [#285](https://github.com/gitlabhq/terraform-provider-gitlab/issues/285), + [#291](https://github.com/gitlabhq/terraform-provider-gitlab/issues/291)) ENHANCEMENTS: -* Switched from Travis CI to Github Actions - ([#216](https://github.com/terraform-providers/terraform-provider-gitlab/issues/216)) +* Switched from Travis CI to Github Actions + ([#216](https://github.com/gitlabhq/terraform-provider-gitlab/issues/216)) ## 2.5.0 (December 05, 2019) ENHANCEMENTS: * Implement `lfs_enabled`, `request_access_enabled`, and `pipelines_enabled` parameters for `gitlab_project` - ([#225](https://github.com/terraform-providers/terraform-provider-gitlab/pull/225), - [#226](https://github.com/terraform-providers/terraform-provider-gitlab/pull/226), - [#227](https://github.com/terraform-providers/terraform-provider-gitlab/pull/227)) + ([#225](https://github.com/gitlabhq/terraform-provider-gitlab/pull/225), + [#226](https://github.com/gitlabhq/terraform-provider-gitlab/pull/226), + [#227](https://github.com/gitlabhq/terraform-provider-gitlab/pull/227)) BUGFIXES: * Fix label support when there is more than 20 labels on a project - ([#229](https://github.com/terraform-providers/terraform-provider-gitlab/pull/229)) + ([#229](https://github.com/gitlabhq/terraform-provider-gitlab/pull/229)) * Enable `environment_scope` for `gitlab_project_variable` lookup - ([#228](https://github.com/terraform-providers/terraform-provider-gitlab/pull/229)) + ([#228](https://github.com/gitlabhq/terraform-provider-gitlab/pull/229)) * Fix users data source when there is more than 20 users returned - ([#230](https://github.com/terraform-providers/terraform-provider-gitlab/pull/230)) + ([#230](https://github.com/gitlabhq/terraform-provider-gitlab/pull/230)) ## 2.4.0 (November 28, 2019) FEATURES: -* **New Resource:** `gitlab_group_label` ([#186](https://github.com/terraform-providers/terraform-provider-gitlab/pull/186)) +* **New Resource:** `gitlab_group_label` ([#186](https://github.com/gitlabhq/terraform-provider-gitlab/pull/186)) * **New Resource:** `gitlab_group_cluster` - ([#178](https://github.com/terraform-providers/terraform-provider-gitlab/pull/178)) + ([#178](https://github.com/gitlabhq/terraform-provider-gitlab/pull/178)) * **New Resource:** `gitlab_pipeline_schedule_variable` - ([#204](https://github.com/terraform-providers/terraform-provider-gitlab/pull/204)) + ([#204](https://github.com/gitlabhq/terraform-provider-gitlab/pull/204)) ENHANCEMENTS: -* Add `runners_token` to gitlab groups ([#218](https://github.com/terraform-providers/terraform-provider-gitlab/pull/218)) -* Add `reset_password` to `gitlab_user` ([#127](https://github.com/terraform-providers/terraform-provider-gitlab/pull/127)) -* Update `access_level` available values ([#220](https://github.com/terraform-providers/terraform-provider-gitlab/pull/220)) +* Add `runners_token` to gitlab groups ([#218](https://github.com/gitlabhq/terraform-provider-gitlab/pull/218)) +* Add `reset_password` to `gitlab_user` ([#127](https://github.com/gitlabhq/terraform-provider-gitlab/pull/127)) +* Update `access_level` available values ([#220](https://github.com/gitlabhq/terraform-provider-gitlab/pull/220)) * Make read callbacks graceful for `gitlab_project_share_group`, `gitlab_branch_protection` and - `gitlab_label` resources ([#223](https://github.com/terraform-providers/terraform-provider-gitlab/pull/223)) + `gitlab_label` resources ([#223](https://github.com/gitlabhq/terraform-provider-gitlab/pull/223)) BUGFIXES: * Fix state not being updated for `gitlab_branch_protection` - ([#166](https://github.com/terraform-providers/terraform-provider-gitlab/pull/166)) + ([#166](https://github.com/gitlabhq/terraform-provider-gitlab/pull/166)) * Set ForceNew for `gitlab_pipeline_schedule` `project` - ([#203](https://github.com/terraform-providers/terraform-provider-gitlab/pull/203)) + ([#203](https://github.com/gitlabhq/terraform-provider-gitlab/pull/203)) ## 2.3.0 (October 17, 2019) @@ -114,37 +120,37 @@ BUGFIXES: is now tested against Gitlab CE and Gitlab EE.* FEATURES: -* **New Resource:** `gitlab_project_push_rules` ([#163](https://github.com/terraform-providers/terraform-provider-gitlab/pull/163)) -* **New Resource:** `gitlab_deploy_key_enable` ([#176](https://github.com/terraform-providers/terraform-provider-gitlab/pull/176)) -* **New Resource:** `gitlab_project_share_group` ([#167](https://github.com/terraform-providers/terraform-provider-gitlab/pull/167)) +* **New Resource:** `gitlab_project_push_rules` ([#163](https://github.com/gitlabhq/terraform-provider-gitlab/pull/163)) +* **New Resource:** `gitlab_deploy_key_enable` ([#176](https://github.com/gitlabhq/terraform-provider-gitlab/pull/176)) +* **New Resource:** `gitlab_project_share_group` ([#167](https://github.com/gitlabhq/terraform-provider-gitlab/pull/167)) ENHANCEMENTS: -* Add `initialize_with_readme` to `gitlab_project` ([#179](https://github.com/terraform-providers/terraform-provider-gitlab/issues/179)) -* Add support for more variable options ([#169](https://github.com/terraform-providers/terraform-provider-gitlab/issues/169)) -* Documentation improvements ([#168](https://github.com/terraform-providers/terraform-provider-gitlab/issues/168), [#187](https://github.com/terraform-providers/terraform-provider-gitlab/issues/187), [#171](https://github.com/terraform-providers/terraform-provider-gitlab/issues/171)) +* Add `initialize_with_readme` to `gitlab_project` ([#179](https://github.com/gitlabhq/terraform-provider-gitlab/issues/179)) +* Add support for more variable options ([#169](https://github.com/gitlabhq/terraform-provider-gitlab/issues/169)) +* Documentation improvements ([#168](https://github.com/gitlabhq/terraform-provider-gitlab/issues/168), [#187](https://github.com/gitlabhq/terraform-provider-gitlab/issues/187), [#171](https://github.com/gitlabhq/terraform-provider-gitlab/issues/171)) BUGFIXES: * Fix tag protection URL - ([#156](https://github.com/terraform-providers/terraform-provider-gitlab/issues/156)) + ([#156](https://github.com/gitlabhq/terraform-provider-gitlab/issues/156)) * Properly manage the default branch in a git repo - ([#158](https://github.com/terraform-providers/terraform-provider-gitlab/issues/158)) + ([#158](https://github.com/gitlabhq/terraform-provider-gitlab/issues/158)) * Resolve triggers pagination issue by calling `GetPipelineTrigger` - ([#173](https://github.com/terraform-providers/terraform-provider-gitlab/issues/173)) + ([#173](https://github.com/gitlabhq/terraform-provider-gitlab/issues/173)) ## 2.2.0 (June 12, 2019) FEATURES: -* **New Resource:** `gitlab_service_jira` ([#101](https://github.com/terraform-providers/terraform-provider-gitlab/pull/101)) -* **New Resource:** `gitlab_pipeline_schedule` ([#116](https://github.com/terraform-providers/terraform-provider-gitlab/pull/116)) +* **New Resource:** `gitlab_service_jira` ([#101](https://github.com/gitlabhq/terraform-provider-gitlab/pull/101)) +* **New Resource:** `gitlab_pipeline_schedule` ([#116](https://github.com/gitlabhq/terraform-provider-gitlab/pull/116)) ENHANCEMENTS: -* Add `archived` argument to `gitlab_project` ([#148](https://github.com/terraform-providers/terraform-provider-gitlab/issues/148)) -* Add `managed` argument to `gitlab_project_cluster` ([#137](https://github.com/terraform-providers/terraform-provider-gitlab/issues/137)) +* Add `archived` argument to `gitlab_project` ([#148](https://github.com/gitlabhq/terraform-provider-gitlab/issues/148)) +* Add `managed` argument to `gitlab_project_cluster` ([#137](https://github.com/gitlabhq/terraform-provider-gitlab/issues/137)) ## 2.1.0 (May 29, 2019) FEATURES: -* **New Datasource**: `gitlab_group` ([#129](https://github.com/terraform-providers/terraform-provider-gitlab/issues/129)) +* **New Datasource**: `gitlab_group` ([#129](https://github.com/gitlabhq/terraform-provider-gitlab/issues/129)) ## 2.0.0 (May 23, 2019) @@ -157,46 +163,46 @@ BACKWARDS INCOMPATIBILITIES: the state (e.g. `terraform state rm`). We have done this because we can not make the difference between permission denied and resources removed outside of terraform (gitlab returns 404 in both cases) - ([#130](https://github.com/terraform-providers/terraform-provider-gitlab/pull/130)) + ([#130](https://github.com/gitlabhq/terraform-provider-gitlab/pull/130)) FEATURES: -* **New Resource:** `gitlab_tag_protection` ([#125](https://github.com/terraform-providers/terraform-provider-gitlab/pull/125)) +* **New Resource:** `gitlab_tag_protection` ([#125](https://github.com/gitlabhq/terraform-provider-gitlab/pull/125)) ENHANCEMENTS: -* Add `container_registry_enabled` argument to `gitlab_project` ([#115](https://github.com/terraform-providers/terraform-provider-gitlab/issues/115)) -* Add `shared_runners_enabled` argument to `gitlab_project` ([#134](https://github.com/terraform-providers/terraform-provider-gitlab/issues/134) [#104](https://github.com/terraform-providers/terraform-provider-gitlab/issues/104)) +* Add `container_registry_enabled` argument to `gitlab_project` ([#115](https://github.com/gitlabhq/terraform-provider-gitlab/issues/115)) +* Add `shared_runners_enabled` argument to `gitlab_project` ([#134](https://github.com/gitlabhq/terraform-provider-gitlab/issues/134) [#104](https://github.com/gitlabhq/terraform-provider-gitlab/issues/104)) ## 1.3.0 (May 03, 2019) FEATURES: -* **New Resource:** `gitlab_service_slack` ([#96](https://github.com/terraform-providers/terraform-provider-gitlab/issues/96)) -* **New Resource:** `gitlab_branch_protection` ([#68](https://github.com/terraform-providers/terraform-provider-gitlab/issues/68)) +* **New Resource:** `gitlab_service_slack` ([#96](https://github.com/gitlabhq/terraform-provider-gitlab/issues/96)) +* **New Resource:** `gitlab_branch_protection` ([#68](https://github.com/gitlabhq/terraform-provider-gitlab/issues/68)) ENHANCEMENTS: -* Support for request/response logging when >`DEBUG` severity is set ([#93](https://github.com/terraform-providers/terraform-provider-gitlab/issues/93)) -* Datasource `gitlab_user` supports user_id, email lookup and return lots of new attributes ([#102](https://github.com/terraform-providers/terraform-provider-gitlab/issues/102)) -* Resource `gitlab_deploy_key` can now be imported ([#197](https://github.com/terraform-providers/terraform-provider-gitlab/issues/97)) -* Add `tags` attribute for `gitlab_project` ([#106](https://github.com/terraform-providers/terraform-provider-gitlab/pull/106)) +* Support for request/response logging when >`DEBUG` severity is set ([#93](https://github.com/gitlabhq/terraform-provider-gitlab/issues/93)) +* Datasource `gitlab_user` supports user_id, email lookup and return lots of new attributes ([#102](https://github.com/gitlabhq/terraform-provider-gitlab/issues/102)) +* Resource `gitlab_deploy_key` can now be imported ([#197](https://github.com/gitlabhq/terraform-provider-gitlab/issues/97)) +* Add `tags` attribute for `gitlab_project` ([#106](https://github.com/gitlabhq/terraform-provider-gitlab/pull/106)) BUGFIXES: -* Documentation fixes ([#108](https://github.com/terraform-providers/terraform-provider-gitlab/issues/108), [#113](https://github.com/terraform-providers/terraform-provider-gitlab/issues/113)) +* Documentation fixes ([#108](https://github.com/gitlabhq/terraform-provider-gitlab/issues/108), [#113](https://github.com/gitlabhq/terraform-provider-gitlab/issues/113)) ## 1.2.0 (February 19, 2019) FEATURES: -* **New Datasource:** `gitlab_users` ([#79](https://github.com/terraform-providers/terraform-provider-gitlab/issues/79)) -* **New Resource:** `gitlab_pipeline_trigger` ([#82](https://github.com/terraform-providers/terraform-provider-gitlab/issues/82)) -* **New Resource:** `gitlab_project_cluster` ([#87](https://github.com/terraform-providers/terraform-provider-gitlab/issues/87)) +* **New Datasource:** `gitlab_users` ([#79](https://github.com/gitlabhq/terraform-provider-gitlab/issues/79)) +* **New Resource:** `gitlab_pipeline_trigger` ([#82](https://github.com/gitlabhq/terraform-provider-gitlab/issues/82)) +* **New Resource:** `gitlab_project_cluster` ([#87](https://github.com/gitlabhq/terraform-provider-gitlab/issues/87)) ENHANCEMENTS: -* Supports "No one" and "maintainer" permissions ([#83](https://github.com/terraform-providers/terraform-provider-gitlab/issues/83)) -* `gitlab_project.shared_with_groups` is now order-independent ([#86](https://github.com/terraform-providers/terraform-provider-gitlab/issues/86)) -* add `merge_method`, `only_allow_merge_if_*`, `approvals_before_merge` parameters to `gitlab_project` ([#72](https://github.com/terraform-providers/terraform-provider-gitlab/issues/72), [#88](https://github.com/terraform-providers/terraform-provider-gitlab/issues/88)) +* Supports "No one" and "maintainer" permissions ([#83](https://github.com/gitlabhq/terraform-provider-gitlab/issues/83)) +* `gitlab_project.shared_with_groups` is now order-independent ([#86](https://github.com/gitlabhq/terraform-provider-gitlab/issues/86)) +* add `merge_method`, `only_allow_merge_if_*`, `approvals_before_merge` parameters to `gitlab_project` ([#72](https://github.com/gitlabhq/terraform-provider-gitlab/issues/72), [#88](https://github.com/gitlabhq/terraform-provider-gitlab/issues/88)) ## 1.1.0 (January 14, 2019) @@ -204,9 +210,9 @@ ENHANCEMENTS: FEATURES: * **New Resource:** `gitlab_project_membership` -* **New Resource:** `gitlab_group_membership` ([#8](https://github.com/terraform-providers/terraform-provider-gitlab/issues/8)) -* **New Resource:** `gitlab_project_variable` ([#47](https://github.com/terraform-providers/terraform-provider-gitlab/issues/47)) -* **New Resource:** `gitlab_group_variable` ([#47](https://github.com/terraform-providers/terraform-provider-gitlab/issues/47)) +* **New Resource:** `gitlab_group_membership` ([#8](https://github.com/gitlabhq/terraform-provider-gitlab/issues/8)) +* **New Resource:** `gitlab_project_variable` ([#47](https://github.com/gitlabhq/terraform-provider-gitlab/issues/47)) +* **New Resource:** `gitlab_group_variable` ([#47](https://github.com/gitlabhq/terraform-provider-gitlab/issues/47)) BACKWARDS INCOMPATIBILITIES: @@ -221,13 +227,13 @@ terraform import gitlab_project_membership.foo 12345:1337 BACKWARDS INCOMPATIBILITIES: -* This provider now uses the v4 api. It means that if you set up a custom API url, you need to update it to use the /api/v4 url. As a side effect, we no longer support Gitlab < 9.0. ([#20](https://github.com/terraform-providers/terraform-provider-gitlab/issues/20)) +* This provider now uses the v4 api. It means that if you set up a custom API url, you need to update it to use the /api/v4 url. As a side effect, we no longer support Gitlab < 9.0. ([#20](https://github.com/gitlabhq/terraform-provider-gitlab/issues/20)) * We now support Parent ID for `gitlab_groups`. However, due to a limitation in the gitlab API, changing a Parent ID requires destroying and recreating the group. Since previous versions of this provider did not support it, there are chances that terraform will try do delete all your nested group when you update to 1.0.0. A workaround to prevent this is to use the `ignore_changes` - lifecycle parameter. ([#28](https://github.com/terraform-providers/terraform-provider-gitlab/issues/28)) + lifecycle parameter. ([#28](https://github.com/gitlabhq/terraform-provider-gitlab/issues/28)) ``` resource "gitlab_group" "nested_group" { @@ -241,18 +247,18 @@ resource "gitlab_group" "nested_group" { FEATURES: -* **New Resource:** `gitlab_user` ([#23](https://github.com/terraform-providers/terraform-provider-gitlab/issues/23)) -* **New Resource:** `gitlab_label` ([#22](https://github.com/terraform-providers/terraform-provider-gitlab/issues/22)) +* **New Resource:** `gitlab_user` ([#23](https://github.com/gitlabhq/terraform-provider-gitlab/issues/23)) +* **New Resource:** `gitlab_label` ([#22](https://github.com/gitlabhq/terraform-provider-gitlab/issues/22)) IMPROVEMENTS: -* Add `cacert_file` and `insecure` options to the provider. ([#5](https://github.com/terraform-providers/terraform-provider-gitlab/issues/5)) -* Fix race conditions with `gitlab_project` deletion. ([#19](https://github.com/terraform-providers/terraform-provider-gitlab/issues/19)) -* Add `parent_id` argument to `gitlab_group`. ([#28](https://github.com/terraform-providers/terraform-provider-gitlab/issues/28)) -* Add support for `gitlab_project` import. ([#30](https://github.com/terraform-providers/terraform-provider-gitlab/issues/30)) -* Add support for `gitlab_groups` import. ([#31](https://github.com/terraform-providers/terraform-provider-gitlab/issues/31)) -* Add `path` argument for `gitlab_project`. ([#21](https://github.com/terraform-providers/terraform-provider-gitlab/issues/21)) -* Fix indempotency issue with `gitlab_deploy_key` and white spaces. ([#34](https://github.com/terraform-providers/terraform-provider-gitlab/issues/34)) +* Add `cacert_file` and `insecure` options to the provider. ([#5](https://github.com/gitlabhq/terraform-provider-gitlab/issues/5)) +* Fix race conditions with `gitlab_project` deletion. ([#19](https://github.com/gitlabhq/terraform-provider-gitlab/issues/19)) +* Add `parent_id` argument to `gitlab_group`. ([#28](https://github.com/gitlabhq/terraform-provider-gitlab/issues/28)) +* Add support for `gitlab_project` import. ([#30](https://github.com/gitlabhq/terraform-provider-gitlab/issues/30)) +* Add support for `gitlab_groups` import. ([#31](https://github.com/gitlabhq/terraform-provider-gitlab/issues/31)) +* Add `path` argument for `gitlab_project`. ([#21](https://github.com/gitlabhq/terraform-provider-gitlab/issues/21)) +* Fix indempotency issue with `gitlab_deploy_key` and white spaces. ([#34](https://github.com/gitlabhq/terraform-provider-gitlab/issues/34)) ## 0.1.0 (June 20, 2017) diff --git a/README.md b/README.md index 74de3f9d3..6d7fbc7d4 100644 --- a/README.md +++ b/README.md @@ -7,30 +7,30 @@ Terraform Provider for Gitlab - [![Gitter chat](https://badges.gitter.im/hashicorp-terraform/Lobby.png)](https://gitter.im/hashicorp-terraform/Lobby) - Mailing list: [Google Groups](http://groups.google.com/group/terraform-tool) - Build status: - - ![Unit Tests](https://github.com/terraform-providers/terraform-provider-gitlab/workflows/Unit%20Tests/badge.svg?branch=master) - - ![Acceptance Tests](https://github.com/terraform-providers/terraform-provider-gitlab/workflows/Acceptance%20Tests/badge.svg?branch=master) - - ![Website Build](https://github.com/terraform-providers/terraform-provider-gitlab/workflows/Website%20Build/badge.svg?branch=master) + - ![Unit Tests](https://github.com/gitlabhq/terraform-provider-gitlab/workflows/Unit%20Tests/badge.svg?branch=master) + - ![Acceptance Tests](https://github.com/gitlabhq/terraform-provider-gitlab/workflows/Acceptance%20Tests/badge.svg?branch=master) + - ![Website Build](https://github.com/gitlabhq/terraform-provider-gitlab/workflows/Website%20Build/badge.svg?branch=master) Requirements ------------ - [Terraform](https://www.terraform.io/downloads.html) 0.12.x -- [Go](https://golang.org/doc/install) >= 1.13 (to build the provider plugin) +- [Go](https://golang.org/doc/install) >= 1.14 (to build the provider plugin) Building The Provider --------------------- -Clone repository to: `$GOPATH/src/github.com/terraform-providers/terraform-provider-gitlab` +Clone repository to: `$GOPATH/src/github.com/gitlabhq/terraform-provider-gitlab` ```sh -$ mkdir -p $GOPATH/src/github.com/terraform-providers; cd $GOPATH/src/github.com/terraform-providers -$ git clone git@github.com:terraform-providers/terraform-provider-gitlab +$ mkdir -p $GOPATH/src/github.com/gitlabhq; cd $GOPATH/src/github.com/gitlabhq +$ git clone git@github.com:gitlabhq/terraform-provider-gitlab ``` Enter the provider directory and build the provider ```sh -$ cd $GOPATH/src/github.com/terraform-providers/terraform-provider-gitlab +$ cd $GOPATH/src/github.com/gitlabhq/terraform-provider-gitlab $ make build ``` diff --git a/gitlab/data_source_gitlab_group_membership.go b/gitlab/data_source_gitlab_group_membership.go new file mode 100644 index 000000000..78be727fa --- /dev/null +++ b/gitlab/data_source_gitlab_group_membership.go @@ -0,0 +1,172 @@ +package gitlab + +import ( + "fmt" + "log" + "strconv" + "strings" + + "github.com/hashicorp/terraform-plugin-sdk/helper/schema" + "github.com/xanzy/go-gitlab" +) + +func dataSourceGitlabGroupMembership() *schema.Resource { + acceptedAccessLevels := make([]string, 0, len(accessLevelID)) + for k := range accessLevelID { + acceptedAccessLevels = append(acceptedAccessLevels, k) + } + return &schema.Resource{ + Read: dataSourceGitlabGroupMembershipRead, + Schema: map[string]*schema.Schema{ + "group_id": { + Type: schema.TypeInt, + Computed: true, + Optional: true, + ConflictsWith: []string{ + "full_path", + }, + }, + "full_path": { + Type: schema.TypeString, + Computed: true, + Optional: true, + ConflictsWith: []string{ + "group_id", + }, + }, + "access_level": { + Type: schema.TypeString, + Computed: true, + Optional: true, + ValidateFunc: validateValueFunc(acceptedAccessLevels), + }, + "members": { + Type: schema.TypeList, + Computed: true, + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "id": { + Type: schema.TypeInt, + Computed: true, + }, + "username": { + Type: schema.TypeString, + Computed: true, + }, + "name": { + Type: schema.TypeString, + Computed: true, + }, + "state": { + Type: schema.TypeString, + Computed: true, + }, + "avatar_url": { + Type: schema.TypeString, + Computed: true, + }, + "web_url": { + Type: schema.TypeString, + Computed: true, + }, + "access_level": { + Type: schema.TypeString, + Computed: true, + }, + "expires_at": { + Type: schema.TypeString, + Computed: true, + }, + }, + }, + }, + }, + } +} + +func dataSourceGitlabGroupMembershipRead(d *schema.ResourceData, meta interface{}) error { + client := meta.(*gitlab.Client) + + var gm []*gitlab.GroupMember + var group *gitlab.Group + var err error + + log.Printf("[INFO] Reading Gitlab group") + + groupIDData, groupIDOk := d.GetOk("group_id") + fullPathData, fullPathOk := d.GetOk("full_path") + + if groupIDOk { + // Get group by id + group, _, err = client.Groups.GetGroup(groupIDData.(int)) + if err != nil { + return err + } + } else if fullPathOk { + // Get group by full path + group, _, err = client.Groups.GetGroup(fullPathData.(string)) + if err != nil { + return err + } + } else { + return fmt.Errorf("one and only one of group_id or full_path must be set") + } + + log.Printf("[INFO] Reading Gitlab group memberships") + + // Get group memberships + gm, _, err = client.Groups.ListGroupMembers(group.ID, &gitlab.ListGroupMembersOptions{}) + if err != nil { + return err + } + + d.Set("group_id", group.ID) + d.Set("full_path", group.FullPath) + + d.Set("members", flattenGitlabMembers(d, gm)) + + var optionsHash strings.Builder + optionsHash.WriteString(strconv.Itoa(group.ID)) + + if data, ok := d.GetOk("access_level"); ok { + optionsHash.WriteString(data.(string)) + } + + id := schema.HashString(optionsHash.String()) + d.SetId(fmt.Sprintf("%d", id)) + + return nil +} + +func flattenGitlabMembers(d *schema.ResourceData, members []*gitlab.GroupMember) []interface{} { + membersList := []interface{}{} + + var filterAccessLevel gitlab.AccessLevelValue = gitlab.NoPermissions + if data, ok := d.GetOk("access_level"); ok { + filterAccessLevel = accessLevelID[data.(string)] + } + + for _, member := range members { + if filterAccessLevel != gitlab.NoPermissions && filterAccessLevel != member.AccessLevel { + continue + } + + values := map[string]interface{}{ + "id": member.ID, + "username": member.Username, + "name": member.Name, + "state": member.State, + "avatar_url": member.AvatarURL, + "web_url": member.WebURL, + "access_level": accessLevel[gitlab.AccessLevelValue(member.AccessLevel)], + } + + if member.ExpiresAt != nil { + values["expires_at"] = member.ExpiresAt.String() + } + + membersList = append(membersList, values) + } + + return membersList +} diff --git a/gitlab/data_source_gitlab_group_membership_test.go b/gitlab/data_source_gitlab_group_membership_test.go new file mode 100644 index 000000000..b70be8242 --- /dev/null +++ b/gitlab/data_source_gitlab_group_membership_test.go @@ -0,0 +1,91 @@ +package gitlab + +import ( + "fmt" + "testing" + + "github.com/hashicorp/terraform-plugin-sdk/helper/acctest" + "github.com/hashicorp/terraform-plugin-sdk/helper/resource" +) + +func TestAccDataSourceGitlabMembership_basic(t *testing.T) { + rInt := acctest.RandInt() + + resource.Test(t, resource.TestCase{ + PreCheck: func() { testAccPreCheck(t) }, + Providers: testAccProviders, + Steps: []resource.TestStep{ + // Create the group and one member + { + Config: testAccDataSourceGitlabGroupMembershipConfig(rInt), + Check: resource.ComposeTestCheckFunc( + resource.TestCheckResourceAttr("gitlab_group.foo", "name", fmt.Sprintf("foo%d", rInt)), + resource.TestCheckResourceAttr("gitlab_user.test", "name", fmt.Sprintf("foo%d", rInt)), + resource.TestCheckResourceAttr("gitlab_group_membership.foo", "access_level", "developer"), + ), + }, + { + Config: testAccDataSourceGitlabGroupMembershipConfig_basic(rInt), + Check: resource.ComposeTestCheckFunc( + // Members is 2 because the user owning the token is always added to the group + resource.TestCheckResourceAttr("data.gitlab_group_membership.foo", "members.#", "2"), + resource.TestCheckResourceAttr("data.gitlab_group_membership.foo", "members.1.username", fmt.Sprintf("listest%d", rInt)), + ), + }, + + // Get group using its ID, but return maintainers only + { + Config: testAccDataSourceGitlabGroupMembershipConfigFilterAccessLevel(rInt), + Check: resource.ComposeTestCheckFunc( + resource.TestCheckResourceAttr("data.gitlab_group_membership.foomaintainers", "members.#", "0"), + ), + }, + }, + }) +} + +func testAccDataSourceGitlabGroupMembershipConfig(rInt int) string { + return fmt.Sprintf(` +resource "gitlab_group" "foo" { + name = "foo%d" + path = "foo%d" +} + +resource "gitlab_user" "test" { + name = "foo%d" + username = "listest%d" + password = "test%dtt" + email = "listest%d@ssss.com" +} + +resource "gitlab_group_membership" "foo" { + group_id = "${gitlab_group.foo.id}" + user_id = "${gitlab_user.test.id}" + access_level = "developer" +}`, rInt, rInt, rInt, rInt, rInt, rInt) +} + +func testAccDataSourceGitlabGroupMembershipConfig_basic(rInt int) string { + return fmt.Sprintf(` +resource "gitlab_group" "foo" { + name = "foo%d" + path = "foo%d" +} + +data "gitlab_group_membership" "foo" { + group_id = "${gitlab_group.foo.id}" +}`, rInt, rInt) +} + +func testAccDataSourceGitlabGroupMembershipConfigFilterAccessLevel(rInt int) string { + return fmt.Sprintf(` +resource "gitlab_group" "foo" { + name = "foo%d" + path = "foo%d" +} + +data "gitlab_group_membership" "foomaintainers" { + group_id = "${gitlab_group.foo.id}" + access_level = "maintainer" +}`, rInt, rInt) +} diff --git a/gitlab/provider.go b/gitlab/provider.go index 7cfd1c2b2..24f76f73e 100644 --- a/gitlab/provider.go +++ b/gitlab/provider.go @@ -54,11 +54,12 @@ func Provider() terraform.ResourceProvider { }, DataSourcesMap: map[string]*schema.Resource{ - "gitlab_group": dataSourceGitlabGroup(), - "gitlab_project": dataSourceGitlabProject(), - "gitlab_projects": dataSourceGitlabProjects(), - "gitlab_user": dataSourceGitlabUser(), - "gitlab_users": dataSourceGitlabUsers(), + "gitlab_group": dataSourceGitlabGroup(), + "gitlab_group_membership": dataSourceGitlabGroupMembership(), + "gitlab_project": dataSourceGitlabProject(), + "gitlab_projects": dataSourceGitlabProjects(), + "gitlab_user": dataSourceGitlabUser(), + "gitlab_users": dataSourceGitlabUsers(), }, ResourcesMap: map[string]*schema.Resource{ @@ -88,6 +89,8 @@ func Provider() terraform.ResourceProvider { "gitlab_project_share_group": resourceGitlabProjectShareGroup(), "gitlab_group_cluster": resourceGitlabGroupCluster(), "gitlab_group_ldap_link": resourceGitlabGroupLdapLink(), + "gitlab_instance_cluster": resourceGitlabInstanceCluster(), + "gitlab_project_mirror": resourceGitlabProjectMirror(), }, ConfigureFunc: providerConfigure, diff --git a/gitlab/provider_test.go b/gitlab/provider_test.go index 1270740a9..74abe57ab 100644 --- a/gitlab/provider_test.go +++ b/gitlab/provider_test.go @@ -1,20 +1,25 @@ package gitlab import ( - "os" - "testing" - + "github.com/hashicorp/terraform-plugin-sdk/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/terraform" + "os" + "testing" ) var testAccProviders map[string]terraform.ResourceProvider var testAccProvider *schema.Provider func init() { - testAccProvider = Provider().(*schema.Provider) - testAccProviders = map[string]terraform.ResourceProvider{ - "gitlab": testAccProvider, + if os.Getenv(resource.TestEnvVar) != "" { + testAccProvider = Provider().(*schema.Provider) + if err := testAccProvider.Configure(&terraform.ResourceConfig{}); err != nil { + panic(err) + } + testAccProviders = map[string]terraform.ResourceProvider{ + "gitlab": testAccProvider, + } } } diff --git a/gitlab/resource_gitlab_deploy_key.go b/gitlab/resource_gitlab_deploy_key.go index ad660688d..bdf9fbf7a 100644 --- a/gitlab/resource_gitlab_deploy_key.go +++ b/gitlab/resource_gitlab_deploy_key.go @@ -98,12 +98,8 @@ func resourceGitlabDeployKeyDelete(d *schema.ResourceData, meta interface{}) err } log.Printf("[DEBUG] Delete gitlab deploy key %s", d.Id()) - response, err := client.DeployKeys.DeleteDeployKey(project, deployKeyID) + _, err = client.DeployKeys.DeleteDeployKey(project, deployKeyID) - // HTTP 204 is success with no body - if response.StatusCode == 204 { - return nil - } return err } diff --git a/gitlab/resource_gitlab_group_label.go b/gitlab/resource_gitlab_group_label.go index b9c839224..f91b66d70 100644 --- a/gitlab/resource_gitlab_group_label.go +++ b/gitlab/resource_gitlab_group_label.go @@ -1,7 +1,10 @@ package gitlab import ( + "fmt" "log" + "strconv" + "strings" "github.com/hashicorp/terraform-plugin-sdk/helper/schema" gitlab "github.com/xanzy/go-gitlab" @@ -13,6 +16,9 @@ func resourceGitlabGroupLabel() *schema.Resource { Read: resourceGitlabGroupLabelRead, Update: resourceGitlabGroupLabelUpdate, Delete: resourceGitlabGroupLabelDelete, + Importer: &schema.ResourceImporter{ + State: resourceGitlabGroupLabelImporter, + }, Schema: map[string]*schema.Schema{ "group": { @@ -123,3 +129,25 @@ func resourceGitlabGroupLabelDelete(d *schema.ResourceData, meta interface{}) er _, err := client.GroupLabels.DeleteGroupLabel(group, options) return err } + +func resourceGitlabGroupLabelImporter(d *schema.ResourceData, meta interface{}) ([]*schema.ResourceData, error) { + client := meta.(*gitlab.Client) + parts := strings.SplitN(d.Id(), ":", 2) + if len(parts) != 2 { + return nil, fmt.Errorf("invalid label id (should be .