cloudstack-terraform-provider icon indicating copy to clipboard operation
cloudstack-terraform-provider copied to clipboard

[WIP] Add CloudStack `role` resource

Open ianc769 opened this issue 6 months ago • 0 comments

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 avatar May 22 '25 20:05 ianc769