-
Notifications
You must be signed in to change notification settings - Fork 210
doc: Adds example & documentation for new mongodbatlas_cloud_user_org_assignment resource
#3493
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from 26 commits
521c29d
50461ab
826229d
de9d081
181ae68
84e2dca
e9ae785
4fc35a9
6d978fd
acd7625
b76e316
4299860
6ecb199
9af33a2
8549f3e
6812cf8
b6f41c8
e93bb0f
4fd8883
7e1372e
0cbaf00
b463342
c0591aa
5f01691
a13d61b
faaf64b
29ed588
fee0ec0
76d18e9
a9f5cfe
25a8ade
5597465
e25dea7
e8647b1
3c98afc
429cb5a
4710e4a
2ccfa6f
fafdbc3
982b2f1
80b4fba
e536ca2
83cc568
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,3 @@ | ||
| ```release-note:new-resource | ||
| resource/mongodbatlas_cloud_user_org_assignment | ||
| ``` |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,3 @@ | ||
| ```release-note:new-datasource | ||
| data-source/mongodbatlas_cloud_user_org_assignment | ||
| ``` |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,74 @@ | ||
| # Data Source: mongodbatlas_cloud_user_org_assignment | ||
|
|
||
| `mongodbatlas_cloud_user_org_assignment` provides a Cloud User Organization Assignment data source. The data source lets you retrieve a user assigned to an organization. | ||
|
|
||
| **NOTE**: Users with pending invitations created using the deprecated`mongodbatlas_project_invitation` resource or via the deprecated [Invite One MongoDB Cloud User to One Project](https://www.mongodb.com/docs/api/doc/atlas-admin-api-v2/operation/operation-getorganizationuser#tag/Projects/operation/createProjectInvitation) | ||
| endpoint are not returned with this resource. See [MongoDB Atlas API](https://www.mongodb.com/docs/api/doc/atlas-admin-api-v2/operation/operation-getorganizationuser) for details. | ||
| To manage such users with this resource, refer to our [migration guide]<link-to-migration-guide>. | ||
|
|
||
| ## Example Usages | ||
|
|
||
| ```terraform | ||
| resource "mongodbatlas_cloud_user_org_assignment" "example" { | ||
| org_id = var.org_id | ||
| username = var.user_email | ||
| roles = { | ||
| org_roles = ["ORG_MEMBER"] | ||
| } | ||
| } | ||
|
|
||
| data "mongodbatlas_cloud_user_org_assignment" "example_username" { | ||
| org_id = var.org_id | ||
| username = var.user_email | ||
| } | ||
|
|
||
| data "mongodbatlas_cloud_user_org_assignment" "example_user_id" { | ||
| org_id = var.org_id | ||
| user_id = var.user_id | ||
| } | ||
| ``` | ||
|
|
||
| <!-- schema generated by tfplugindocs --> | ||
| ## Schema | ||
|
|
||
| ### Required | ||
|
|
||
| - `org_id` (String) Unique 24-hexadecimal digit string that identifies the organization that contains your projects. Use the [/orgs](#tag/Organizations/operation/listOrganizations) endpoint to retrieve all organizations to which the authenticated user has access. | ||
|
|
||
| ### Optional | ||
|
|
||
| - `user_id` (String) Unique 24-hexadecimal digit string that identifies the MongoDB Cloud user. | ||
| - `username` (String) Email address that represents the username of the MongoDB Cloud user. | ||
|
|
||
| ### Read-Only | ||
|
|
||
| - `country` (String) Two-character alphabetical string that identifies the MongoDB Cloud user's geographic location. This parameter uses the ISO 3166-1a2 code format. | ||
| - `created_at` (String) Date and time when MongoDB Cloud created the current account. This value is in the ISO 8601 timestamp format in UTC. | ||
| - `first_name` (String) First or given name that belongs to the MongoDB Cloud user. | ||
| - `invitation_created_at` (String) Date and time when MongoDB Cloud sent the invitation. MongoDB Cloud represents this timestamp in ISO 8601 format in UTC. | ||
| - `invitation_expires_at` (String) Date and time when the invitation from MongoDB Cloud expires. MongoDB Cloud represents this timestamp in ISO 8601 format in UTC. | ||
| - `inviter_username` (String) Username of the MongoDB Cloud user who sent the invitation to join the organization. | ||
| - `last_auth` (String) Date and time when the current account last authenticated. This value is in the ISO 8601 timestamp format in UTC. | ||
| - `last_name` (String) Last name, family name, or surname that belongs to the MongoDB Cloud user. | ||
| - `mobile_number` (String) Mobile phone number that belongs to the MongoDB Cloud user. | ||
| - `org_membership_status` (String) String enum that indicates whether the MongoDB Cloud user has a pending invitation to join the organization or they are already active in the organization. | ||
| - `roles` (Attributes) Organization and project level roles to assign the MongoDB Cloud user within one organization. (see [below for nested schema](#nestedatt--roles)) | ||
| - `team_ids` (Set of String) List of unique 24-hexadecimal digit strings that identifies the teams to which this MongoDB Cloud user belongs. | ||
|
|
||
| <a id="nestedatt--roles"></a> | ||
| ### Nested Schema for `roles` | ||
|
|
||
| Read-Only: | ||
|
|
||
| - `org_roles` (Set of String) One or more organization level roles to assign the MongoDB Cloud user. | ||
| - `project_role_assignments` (Attributes List) List of project level role assignments to assign the MongoDB Cloud user. (see [below for nested schema](#nestedatt--roles--project_role_assignments)) | ||
|
|
||
| <a id="nestedatt--roles--project_role_assignments"></a> | ||
| ### Nested Schema for `roles.project_role_assignments` | ||
|
|
||
| Read-Only: | ||
|
|
||
| - `project_id` (String) Unique 24-hexadecimal digit string that identifies the project to which these roles belong. | ||
| - `project_roles` (Set of String) One or more project-level roles assigned to the MongoDB Cloud user. | ||
|
|
||
| For more information see: [MongoDB Atlas API - Cloud Users](https://www.mongodb.com/docs/api/doc/atlas-admin-api-v2/operation/operation-getorganizationuser) Documentation. | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,84 @@ | ||
| # Resource: mongodbatlas_cloud_user_org_assignment | ||
|
|
||
| `mongodbatlas_cloud_user_org_assignment` provides a Cloud User Organization Assignment resource. The resource lets you import, assign, remove, update a user to an organization. | ||
maastha marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
|
|
||
| **NOTE**: Users with pending invitations created using the deprecated `mongodbatlas_project_invitation` resource or via the deprecated [Invite One MongoDB Cloud User to One Project](https://www.mongodb.com/docs/api/doc/atlas-admin-api-v2/operation/operation-getorganizationuser#tag/Projects/operation/createProjectInvitation) | ||
| endpoint cannot be managed with this resource. See [MongoDB Atlas API](https://www.mongodb.com/docs/api/doc/atlas-admin-api-v2/operation/operation-getorganizationuser) for details. | ||
| To manage such users with this resource, refer to our [migration guide]<link-to-migration-guide>. | ||
|
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. same as resource, correct migration guide link?
Collaborator
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. same as above |
||
|
|
||
| ## Example Usages | ||
|
|
||
| ```terraform | ||
| resource "mongodbatlas_cloud_user_org_assignment" "example" { | ||
| org_id = var.org_id | ||
| username = var.user_email | ||
| roles = { | ||
| org_roles = ["ORG_MEMBER"] | ||
| } | ||
| } | ||
|
|
||
| data "mongodbatlas_cloud_user_org_assignment" "example_username" { | ||
| org_id = var.org_id | ||
| username = var.user_email | ||
| } | ||
|
|
||
| data "mongodbatlas_cloud_user_org_assignment" "example_user_id" { | ||
| org_id = var.org_id | ||
| user_id = var.user_id | ||
| } | ||
| ``` | ||
|
|
||
| <!-- schema generated by tfplugindocs --> | ||
| ## Schema | ||
|
|
||
| ### Required | ||
|
|
||
| - `org_id` (String) Unique 24-hexadecimal digit string that identifies the organization that contains your projects. Use the [/orgs](#tag/Organizations/operation/listOrganizations) endpoint to retrieve all organizations to which the authenticated user has access. | ||
| - `roles` (Attributes) Organization and project level roles to assign the MongoDB Cloud user within one organization. (see [below for nested schema](#nestedatt--roles)) | ||
| - `username` (String) Email address that represents the username of the MongoDB Cloud user. | ||
|
|
||
| ### Read-Only | ||
|
|
||
| - `country` (String) Two-character alphabetical string that identifies the MongoDB Cloud user's geographic location. This parameter uses the ISO 3166-1a2 code format. | ||
| - `created_at` (String) Date and time when MongoDB Cloud created the current account. This value is in the ISO 8601 timestamp format in UTC. | ||
| - `first_name` (String) First or given name that belongs to the MongoDB Cloud user. | ||
| - `invitation_created_at` (String) Date and time when MongoDB Cloud sent the invitation. MongoDB Cloud represents this timestamp in ISO 8601 format in UTC. | ||
| - `invitation_expires_at` (String) Date and time when the invitation from MongoDB Cloud expires. MongoDB Cloud represents this timestamp in ISO 8601 format in UTC. | ||
| - `inviter_username` (String) Username of the MongoDB Cloud user who sent the invitation to join the organization. | ||
| - `last_auth` (String) Date and time when the current account last authenticated. This value is in the ISO 8601 timestamp format in UTC. | ||
| - `last_name` (String) Last name, family name, or surname that belongs to the MongoDB Cloud user. | ||
| - `mobile_number` (String) Mobile phone number that belongs to the MongoDB Cloud user. | ||
| - `org_membership_status` (String) String enum that indicates whether the MongoDB Cloud user has a pending invitation to join the organization or they are already active in the organization. | ||
| - `team_ids` (Set of String) List of unique 24-hexadecimal digit strings that identifies the teams to which this MongoDB Cloud user belongs. | ||
| - `user_id` (String) Unique 24-hexadecimal digit string that identifies the MongoDB Cloud user. | ||
|
|
||
| <a id="nestedatt--roles"></a> | ||
| ### Nested Schema for `roles` | ||
|
|
||
| Optional: | ||
|
|
||
| - `org_roles` (Set of String) One or more organization level roles to assign the MongoDB Cloud user. | ||
|
|
||
| Read-Only: | ||
|
|
||
| - `project_role_assignments` (Attributes List) List of project level role assignments to assign the MongoDB Cloud user. (see [below for nested schema](#nestedatt--roles--project_role_assignments)) | ||
|
|
||
| <a id="nestedatt--roles--project_role_assignments"></a> | ||
| ### Nested Schema for `roles.project_role_assignments` | ||
|
|
||
| Read-Only: | ||
|
|
||
| - `project_id` (String) Unique 24-hexadecimal digit string that identifies the project to which these roles belong. | ||
| - `project_roles` (Set of String) One or more project-level roles assigned to the MongoDB Cloud user. | ||
|
|
||
| ## Import | ||
|
|
||
| Cloud User Org Assignment resource can be imported using the Org ID & Username OR Org ID & User ID, in the format `ORG_ID/USERNAME` OR `ORG_ID/USER_ID`. | ||
|
|
||
| ``` | ||
| $ terraform import mongodbatlas_cloud_user_org_assignment.test 63cfbf302333a3011d98592e/[email protected] | ||
| OR | ||
| $ terraform import mongodbatlas_cloud_user_org_assignment.test 63cfbf302333a3011d98592e/5f18367ccb7a503a2b481b7a | ||
| ``` | ||
|
|
||
| For more information see: [MongoDB Atlas API - Cloud Users](https://www.mongodb.com/docs/api/doc/atlas-admin-api-v2/operation/operation-createorganizationuser) Documentation. | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,29 @@ | ||
| # Example: mongodbatlas_cloud_user_org_assignment | ||
|
|
||
| This example demonstrates how to use the `mongodbatlas_cloud_user_org_assignment` resource to assign a user to an existing organization with specified roles in MongoDB Atlas. | ||
|
|
||
| ## Usage | ||
|
|
||
| ```hcl | ||
| provider "mongodbatlas" { | ||
| public_key = var.public_key | ||
| private_key = var.private_key | ||
| } | ||
|
|
||
| resource "mongodbatlas_cloud_user_org_assignment" "example" { | ||
| org_id = var.org_id | ||
| username = var.user_email | ||
| roles = { | ||
| org_roles = ["ORG_MEMBER"] | ||
| } | ||
| } | ||
| ``` | ||
|
|
||
| You must set the following variables: | ||
|
|
||
| - `public_key`: Your MongoDB Atlas API public key. | ||
| - `private_key`: Your MongoDB Atlas API private key. | ||
| - `org_id`: The ID of the organization to assign the user to. | ||
| - `user_email`: The email address of the user to assign. | ||
|
|
||
| To learn more, see the [MongoDB Cloud Users Documentation](https://www.mongodb.com/docs/api/doc/atlas-admin-api-v2/operation/operation-createorganizationuser). |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,17 @@ | ||
| resource "mongodbatlas_cloud_user_org_assignment" "example" { | ||
| org_id = var.org_id | ||
| username = var.user_email | ||
| roles = { | ||
| org_roles = ["ORG_MEMBER"] | ||
| } | ||
| } | ||
|
|
||
| data "mongodbatlas_cloud_user_org_assignment" "example_username" { | ||
| org_id = var.org_id | ||
| username = var.user_email | ||
| } | ||
|
|
||
| data "mongodbatlas_cloud_user_org_assignment" "example_user_id" { | ||
| org_id = var.org_id | ||
| user_id = var.user_id | ||
| } | ||
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,14 @@ | ||
| output "user_from_username" { | ||
| description = "User details retrieved by username" | ||
| value = data.mongodbatlas_cloud_user_org_assignment.example_username | ||
| } | ||
|
|
||
| output "user_from_user_id" { | ||
| description = "User details retrieved by user_id" | ||
| value = data.mongodbatlas_cloud_user_org_assignment.example_user_id | ||
| } | ||
|
|
||
| output "created_user" { | ||
| description = "Details of the created user" | ||
| value = mongodbatlas_cloud_user_org_assignment.example | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,4 @@ | ||
| provider "mongodbatlas" { | ||
| public_key = var.public_key | ||
| private_key = var.private_key | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,24 @@ | ||
| variable "org_id" { | ||
| description = "The MongoDB Atlas organization ID" | ||
| type = string | ||
| } | ||
|
|
||
| variable "user_email" { | ||
| description = "The email address of the user" | ||
| type = string | ||
| } | ||
|
|
||
| variable "user_id" { | ||
| description = "The user ID" | ||
| type = string | ||
| } | ||
|
|
||
| variable "public_key" { | ||
| description = "Atlas API public key" | ||
| type = string | ||
| } | ||
|
|
||
| variable "private_key" { | ||
| description = "Atlas API private key" | ||
| type = string | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,9 @@ | ||
| terraform { | ||
| required_providers { | ||
| mongodbatlas = { | ||
| source = "mongodb/mongodbatlas" | ||
| version = "~> 1.38.0" | ||
| } | ||
| } | ||
| required_version = ">= 1.0" | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,11 @@ | ||
| package schemafunc | ||
|
|
||
| import "github.com/hashicorp/terraform-plugin-go/tftypes" | ||
|
|
||
| func GetAttrFromStateObj[T any](rawState map[string]tftypes.Value, attrName string) *T { | ||
| var ret *T | ||
| if err := rawState[attrName].As(&ret); err != nil { | ||
| return nil | ||
| } | ||
| return ret | ||
| } |
Uh oh!
There was an error while loading. Please reload this page.