Skip to content

[WIP] Add CloudStack role resource #181

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

Draft
wants to merge 4 commits into
base: main
Choose a base branch
from

Conversation

ianc769
Copy link

@ianc769 ianc769 commented May 22, 2025

Adding role as a terraform managed resource option -> https://cloudstack.apache.org/api/apidocs-4.20/apis/createRole.html

Contributes to #82

Using this code for example:

resource "cloudstack_role" "admin" {
  name        = "foo"
  type        = "Admin"
  description = "Administrator role"
  is_public   = true
}

data "cloudstack_role" "role_name" {
  filter {
    name  = "name"
    value = cloudstack_role.admin.name
  }
}

data "cloudstack_role" "role_id" {
  filter {
    name  = "id"
    value = cloudstack_role.admin.id
  }
}

output "id_filter" {
  value = data.cloudstack_role.role_name.name
}

output "name_filter" {
  value = data.cloudstack_role.role_id.name
}
Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols:
  + create
 <= read (data resources)

Terraform will perform the following actions:

  # data.cloudstack_role.role_id will be read during apply
  # (config refers to values not yet known)
 <= data "cloudstack_role" "role_id" {
      + description = (known after apply)
      + id          = (known after apply)
      + is_public   = (known after apply)
      + name        = (known after apply)
      + type        = (known after apply)

      + filter {
          + name  = "id"
          + value = (known after apply)
        }
    }

  # data.cloudstack_role.role_name will be read during apply
  # (depends on a resource or a module with changes pending)
 <= data "cloudstack_role" "role_name" {
      + description = (known after apply)
      + id          = (known after apply)
      + is_public   = (known after apply)
      + name        = (known after apply)
      + type        = (known after apply)

      + filter {
          + name  = "name"
          + value = "foo"
        }
    }

  # cloudstack_role.admin will be created
  + resource "cloudstack_role" "admin" {
      + description = "Administrator role"
      + id          = (known after apply)
      + is_public   = true
      + name        = "foo"
      + type        = "Admin"
    }

Plan: 1 to add, 0 to change, 0 to destroy.

Changes to Outputs:
  + id_filter            = (known after apply)
  + name_filter          = (known after apply)
cloudstack_role.admin: Creating...
cloudstack_role.admin: Creation complete after 0s [id=ae39c5ba-e457-4483-b1b1-4a05f5b9990b]
data.cloudstack_role.role_name: Reading...
data.cloudstack_role.role_id: Reading...
data.cloudstack_role.role_id: Read complete after 1s [id=ae39c5ba-e457-4483-b1b1-4a05f5b9990b]
data.cloudstack_role.role_name: Read complete after 1s [id=ae39c5ba-e457-4483-b1b1-4a05f5b9990b]

{3CCB38DD-0B3C-453D-B89C-D9C4D1552090}

ianc769 added 4 commits May 22, 2025 12:44
- Implement data source for cloudstack_role with read functionality.
- Create resource for managing cloudstack_role with CRUD operations.
- Update documentation for cloudstack_role data source and resource.
…and improved documentation

- Added filter support to the cloudstack_role data source for role retrieval.
- Updated resource_cloudstack_role to require either role_id or type.
- Enhanced documentation for both data source and resource with examples and argument descriptions.
1. Add required 'type' parameter to role resource configuration in both resource and data source tests
2. Modify testAccCheckCloudStackRoleDestroy function to handle potential panic when accessing l.Roles[0]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant