From 9f312bf1cc540e2a496d15cf846b480bf5bc695e Mon Sep 17 00:00:00 2001 From: Dan Petersen Date: Sun, 8 Dec 2019 18:37:39 +0100 Subject: [PATCH] Latest work --- CHANGELOG.md | 12 +-- README.md | 12 +-- ...source_virtual_environment_access_group.go | 26 ++--- ...e_virtual_environment_access_group_test.go | 22 ++--- ...ource_virtual_environment_access_groups.go | 20 ++-- ..._virtual_environment_access_groups_test.go | 22 ++--- ..._source_virtual_environment_access_role.go | 20 ++-- ...ce_virtual_environment_access_role_test.go | 20 ++-- ...source_virtual_environment_access_roles.go | 26 ++--- ...e_virtual_environment_access_roles_test.go | 24 ++--- ...source_virtual_environment_access_group.tf | 11 --- ...ource_virtual_environment_access_groups.tf | 8 -- ..._source_virtual_environment_access_role.tf | 11 --- ...source_virtual_environment_access_roles.tf | 13 --- .../data_source_virtual_environment_group.tf | 11 +++ .../data_source_virtual_environment_groups.tf | 8 ++ .../data_source_virtual_environment_role.tf | 11 +++ .../data_source_virtual_environment_roles.tf | 13 +++ ...source_virtual_environment_access_group.tf | 16 --- ...esource_virtual_environment_access_role.tf | 14 --- example/resource_virtual_environment_group.tf | 16 +++ example/resource_virtual_environment_role.tf | 14 +++ provider.go | 14 +-- proxmox/virtual_environment.go | 2 +- proxmox/virtual_environment_access_groups.go | 98 ------------------- proxmox/virtual_environment_access_roles.go | 93 ------------------ proxmox/virtual_environment_groups.go | 98 +++++++++++++++++++ proxmox/virtual_environment_roles.go | 93 ++++++++++++++++++ resource_virtual_environment_access_group.go | 56 +++++------ ...e_virtual_environment_access_group_test.go | 20 ++-- resource_virtual_environment_access_role.go | 50 +++++----- ...ce_virtual_environment_access_role_test.go | 18 ++-- 32 files changed, 446 insertions(+), 446 deletions(-) delete mode 100644 example/data_source_virtual_environment_access_group.tf delete mode 100644 example/data_source_virtual_environment_access_groups.tf delete mode 100644 example/data_source_virtual_environment_access_role.tf delete mode 100644 example/data_source_virtual_environment_access_roles.tf create mode 100644 example/data_source_virtual_environment_group.tf create mode 100644 example/data_source_virtual_environment_groups.tf create mode 100644 example/data_source_virtual_environment_role.tf create mode 100644 example/data_source_virtual_environment_roles.tf delete mode 100644 example/resource_virtual_environment_access_group.tf delete mode 100644 example/resource_virtual_environment_access_role.tf create mode 100644 example/resource_virtual_environment_group.tf create mode 100644 example/resource_virtual_environment_role.tf delete mode 100644 proxmox/virtual_environment_access_groups.go delete mode 100644 proxmox/virtual_environment_access_roles.go create mode 100644 proxmox/virtual_environment_groups.go create mode 100644 proxmox/virtual_environment_roles.go diff --git a/CHANGELOG.md b/CHANGELOG.md index 4d2f9a8e..1db529d6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,10 +2,10 @@ FEATURES: -* **New Data Source:** `proxmox_virtual_environment_access_group` -* **New Data Source:** `proxmox_virtual_environment_access_groups` -* **New Data Source:** `proxmox_virtual_environment_access_role` -* **New Data Source:** `proxmox_virtual_environment_access_roles` +* **New Data Source:** `proxmox_virtual_environment_group` +* **New Data Source:** `proxmox_virtual_environment_groups` +* **New Data Source:** `proxmox_virtual_environment_role` +* **New Data Source:** `proxmox_virtual_environment_roles` * **New Data Source:** `proxmox_virtual_environment_version` -* **New Resource:** `proxmox_virtual_environment_access_group` -* **New Resource:** `proxmox_virtual_environment_access_role` +* **New Resource:** `proxmox_virtual_environment_group` +* **New Resource:** `proxmox_virtual_environment_role` diff --git a/README.md b/README.md index d28f7d77..cf2c56e2 100644 --- a/README.md +++ b/README.md @@ -37,7 +37,7 @@ If you're building the provider, follow the instructions to [install it as a plu #### Virtual Environment -##### Access Group (proxmox_virtual_environment_access_group) +##### Group (proxmox_virtual_environment_group) ###### Arguments * `group_id` - (Required) The group id. @@ -46,7 +46,7 @@ If you're building the provider, follow the instructions to [install it as a plu * `comment` - The group comment. * `members` - The group members as a list with `username@realm` entries. -##### Access Groups (proxmox_virtual_environment_access_groups) +##### Groups (proxmox_virtual_environment_groups) ###### Arguments This data source doesn't accept arguments. @@ -55,7 +55,7 @@ This data source doesn't accept arguments. * `comments` - The group comments. * `group_ids` - The group ids. -##### Access Role (proxmox_virtual_environment_access_role) +##### Role (proxmox_virtual_environment_role) ###### Arguments * `role_id` - (Required) The role id. @@ -63,7 +63,7 @@ This data source doesn't accept arguments. ###### Attributes * `privileges` - The role privileges. -##### Access Roles (proxmox_virtual_environment_access_roles) +##### Roles (proxmox_virtual_environment_roles) ###### Arguments This data source doesn't accept arguments. @@ -88,7 +88,7 @@ This data source doesn't accept arguments. #### Virtual Environment -##### Access Group (proxmox_virtual_environment_access_group) +##### Group (proxmox_virtual_environment_group) ###### Arguments * `comment` - (Optional) The group comment. @@ -97,7 +97,7 @@ This data source doesn't accept arguments. ###### Attributes * `members` - The group members as a list with `username@realm` entries. -##### Access Role (proxmox_virtual_environment_access_role) +##### Role (proxmox_virtual_environment_role) ###### Arguments * `privileges` - (Required) The role privileges. diff --git a/data_source_virtual_environment_access_group.go b/data_source_virtual_environment_access_group.go index 36be29ea..4c877caa 100644 --- a/data_source_virtual_environment_access_group.go +++ b/data_source_virtual_environment_access_group.go @@ -9,36 +9,36 @@ import ( ) const ( - mkDataSourceVirtualEnvironmentAccessGroupComment = "comment" - mkDataSourceVirtualEnvironmentAccessGroupID = "group_id" - mkDataSourceVirtualEnvironmentAccessGroupMembers = "members" + mkDataSourceVirtualEnvironmentGroupComment = "comment" + mkDataSourceVirtualEnvironmentGroupID = "group_id" + mkDataSourceVirtualEnvironmentGroupMembers = "members" ) -func dataSourceVirtualEnvironmentAccessGroup() *schema.Resource { +func dataSourceVirtualEnvironmentGroup() *schema.Resource { return &schema.Resource{ Schema: map[string]*schema.Schema{ - mkDataSourceVirtualEnvironmentAccessGroupComment: &schema.Schema{ + mkDataSourceVirtualEnvironmentGroupComment: &schema.Schema{ Type: schema.TypeString, Description: "The group comment", Computed: true, }, - mkDataSourceVirtualEnvironmentAccessGroupID: &schema.Schema{ + mkDataSourceVirtualEnvironmentGroupID: &schema.Schema{ Type: schema.TypeString, Description: "The group id", Required: true, }, - mkDataSourceVirtualEnvironmentAccessGroupMembers: &schema.Schema{ + mkDataSourceVirtualEnvironmentGroupMembers: &schema.Schema{ Type: schema.TypeList, Description: "The group members", Computed: true, Elem: &schema.Schema{Type: schema.TypeString}, }, }, - Read: dataSourceVirtualEnvironmentAccessGroupRead, + Read: dataSourceVirtualEnvironmentGroupRead, } } -func dataSourceVirtualEnvironmentAccessGroupRead(d *schema.ResourceData, m interface{}) error { +func dataSourceVirtualEnvironmentGroupRead(d *schema.ResourceData, m interface{}) error { config := m.(providerConfiguration) veClient, err := config.GetVEClient() @@ -46,8 +46,8 @@ func dataSourceVirtualEnvironmentAccessGroupRead(d *schema.ResourceData, m inter return err } - groupID := d.Get(mkDataSourceVirtualEnvironmentAccessGroupID).(string) - accessGroup, err := veClient.GetAccessGroup(groupID) + groupID := d.Get(mkDataSourceVirtualEnvironmentGroupID).(string) + accessGroup, err := veClient.GetGroup(groupID) if err != nil { return err @@ -55,8 +55,8 @@ func dataSourceVirtualEnvironmentAccessGroupRead(d *schema.ResourceData, m inter d.SetId(groupID) - d.Set(mkDataSourceVirtualEnvironmentAccessGroupComment, accessGroup.Comment) - d.Set(mkDataSourceVirtualEnvironmentAccessGroupMembers, accessGroup.Members) + d.Set(mkDataSourceVirtualEnvironmentGroupComment, accessGroup.Comment) + d.Set(mkDataSourceVirtualEnvironmentGroupMembers, accessGroup.Members) return nil } diff --git a/data_source_virtual_environment_access_group_test.go b/data_source_virtual_environment_access_group_test.go index d7b59ec8..e036373d 100644 --- a/data_source_virtual_environment_access_group_test.go +++ b/data_source_virtual_environment_access_group_test.go @@ -8,31 +8,31 @@ import ( "testing" ) -// TestDataSourceVirtualEnvironmentAccessGroupInstantiation tests whether the DataSourceVirtualEnvironmentAccessGroup instance can be instantiated. -func TestDataSourceVirtualEnvironmentAccessGroupInstantiation(t *testing.T) { - s := dataSourceVirtualEnvironmentAccessGroup() +// TestDataSourceVirtualEnvironmentGroupInstantiation tests whether the DataSourceVirtualEnvironmentGroup instance can be instantiated. +func TestDataSourceVirtualEnvironmentGroupInstantiation(t *testing.T) { + s := dataSourceVirtualEnvironmentGroup() if s == nil { - t.Fatalf("Cannot instantiate dataSourceVirtualEnvironmentAccessGroup") + t.Fatalf("Cannot instantiate dataSourceVirtualEnvironmentGroup") } } -// TestDataSourceVirtualEnvironmentAccessGroupSchema tests the dataSourceVirtualEnvironmentAccessGroup schema. -func TestDataSourceVirtualEnvironmentAccessGroupSchema(t *testing.T) { - s := dataSourceVirtualEnvironmentAccessGroup() +// TestDataSourceVirtualEnvironmentGroupSchema tests the dataSourceVirtualEnvironmentGroup schema. +func TestDataSourceVirtualEnvironmentGroupSchema(t *testing.T) { + s := dataSourceVirtualEnvironmentGroup() attributeKeys := []string{ - mkDataSourceVirtualEnvironmentAccessGroupComment, - mkDataSourceVirtualEnvironmentAccessGroupMembers, + mkDataSourceVirtualEnvironmentGroupComment, + mkDataSourceVirtualEnvironmentGroupMembers, } for _, v := range attributeKeys { if s.Schema[v] == nil { - t.Fatalf("Error in dataSourceVirtualEnvironmentAccessGroup.Schema: Missing attribute \"%s\"", v) + t.Fatalf("Error in dataSourceVirtualEnvironmentGroup.Schema: Missing attribute \"%s\"", v) } if s.Schema[v].Computed != true { - t.Fatalf("Error in dataSourceVirtualEnvironmentAccessGroup.Schema: Attribute \"%s\" is not computed", v) + t.Fatalf("Error in dataSourceVirtualEnvironmentGroup.Schema: Attribute \"%s\" is not computed", v) } } } diff --git a/data_source_virtual_environment_access_groups.go b/data_source_virtual_environment_access_groups.go index 0595f08c..2eacc29a 100644 --- a/data_source_virtual_environment_access_groups.go +++ b/data_source_virtual_environment_access_groups.go @@ -9,31 +9,31 @@ import ( ) const ( - mkDataSourceVirtualEnvironmentAccessGroupsComments = "comments" - mkDataSourceVirtualEnvironmentAccessGroupsGroupIDs = "group_ids" + mkDataSourceVirtualEnvironmentGroupsComments = "comments" + mkDataSourceVirtualEnvironmentGroupsGroupIDs = "group_ids" ) -func dataSourceVirtualEnvironmentAccessGroups() *schema.Resource { +func dataSourceVirtualEnvironmentGroups() *schema.Resource { return &schema.Resource{ Schema: map[string]*schema.Schema{ - mkDataSourceVirtualEnvironmentAccessGroupsComments: &schema.Schema{ + mkDataSourceVirtualEnvironmentGroupsComments: &schema.Schema{ Type: schema.TypeList, Description: "The group comments", Computed: true, Elem: &schema.Schema{Type: schema.TypeString}, }, - mkDataSourceVirtualEnvironmentAccessGroupsGroupIDs: &schema.Schema{ + mkDataSourceVirtualEnvironmentGroupsGroupIDs: &schema.Schema{ Type: schema.TypeList, Description: "The group ids", Computed: true, Elem: &schema.Schema{Type: schema.TypeString}, }, }, - Read: dataSourceVirtualEnvironmentAccessGroupsRead, + Read: dataSourceVirtualEnvironmentGroupsRead, } } -func dataSourceVirtualEnvironmentAccessGroupsRead(d *schema.ResourceData, m interface{}) error { +func dataSourceVirtualEnvironmentGroupsRead(d *schema.ResourceData, m interface{}) error { config := m.(providerConfiguration) veClient, err := config.GetVEClient() @@ -41,7 +41,7 @@ func dataSourceVirtualEnvironmentAccessGroupsRead(d *schema.ResourceData, m inte return err } - list, err := veClient.ListAccessGroups() + list, err := veClient.ListGroups() if err != nil { return err @@ -57,8 +57,8 @@ func dataSourceVirtualEnvironmentAccessGroupsRead(d *schema.ResourceData, m inte d.SetId("access_groups") - d.Set(mkDataSourceVirtualEnvironmentAccessGroupsComments, comments) - d.Set(mkDataSourceVirtualEnvironmentAccessGroupsGroupIDs, groupIDs) + d.Set(mkDataSourceVirtualEnvironmentGroupsComments, comments) + d.Set(mkDataSourceVirtualEnvironmentGroupsGroupIDs, groupIDs) return nil } diff --git a/data_source_virtual_environment_access_groups_test.go b/data_source_virtual_environment_access_groups_test.go index 7f300c20..35be42ca 100644 --- a/data_source_virtual_environment_access_groups_test.go +++ b/data_source_virtual_environment_access_groups_test.go @@ -8,31 +8,31 @@ import ( "testing" ) -// TestDataSourceVirtualEnvironmentAccessGroupsInstantiation tests whether the DataSourceVirtualEnvironmentAccessGroups instance can be instantiated. -func TestDataSourceVirtualEnvironmentAccessGroupsInstantiation(t *testing.T) { - s := dataSourceVirtualEnvironmentAccessGroups() +// TestDataSourceVirtualEnvironmentGroupsInstantiation tests whether the DataSourceVirtualEnvironmentGroups instance can be instantiated. +func TestDataSourceVirtualEnvironmentGroupsInstantiation(t *testing.T) { + s := dataSourceVirtualEnvironmentGroups() if s == nil { - t.Fatalf("Cannot instantiate dataSourceVirtualEnvironmentAccessGroups") + t.Fatalf("Cannot instantiate dataSourceVirtualEnvironmentGroups") } } -// TestDataSourceVirtualEnvironmentAccessGroupsSchema tests the dataSourceVirtualEnvironmentAccessGroups schema. -func TestDataSourceVirtualEnvironmentAccessGroupsSchema(t *testing.T) { - s := dataSourceVirtualEnvironmentAccessGroups() +// TestDataSourceVirtualEnvironmentGroupsSchema tests the dataSourceVirtualEnvironmentGroups schema. +func TestDataSourceVirtualEnvironmentGroupsSchema(t *testing.T) { + s := dataSourceVirtualEnvironmentGroups() attributeKeys := []string{ - mkDataSourceVirtualEnvironmentAccessGroupsComments, - mkDataSourceVirtualEnvironmentAccessGroupsGroupIDs, + mkDataSourceVirtualEnvironmentGroupsComments, + mkDataSourceVirtualEnvironmentGroupsGroupIDs, } for _, v := range attributeKeys { if s.Schema[v] == nil { - t.Fatalf("Error in dataSourceVirtualEnvironmentAccessGroups.Schema: Missing attribute \"%s\"", v) + t.Fatalf("Error in dataSourceVirtualEnvironmentGroups.Schema: Missing attribute \"%s\"", v) } if s.Schema[v].Computed != true { - t.Fatalf("Error in dataSourceVirtualEnvironmentAccessGroups.Schema: Attribute \"%s\" is not computed", v) + t.Fatalf("Error in dataSourceVirtualEnvironmentGroups.Schema: Attribute \"%s\" is not computed", v) } } } diff --git a/data_source_virtual_environment_access_role.go b/data_source_virtual_environment_access_role.go index 8443d1fc..a004e289 100644 --- a/data_source_virtual_environment_access_role.go +++ b/data_source_virtual_environment_access_role.go @@ -9,30 +9,30 @@ import ( ) const ( - mkDataSourceVirtualEnvironmentAccessRoleID = "role_id" - mkDataSourceVirtualEnvironmentAccessRolePrivileges = "privileges" + mkDataSourceVirtualEnvironmentRoleID = "role_id" + mkDataSourceVirtualEnvironmentRolePrivileges = "privileges" ) -func dataSourceVirtualEnvironmentAccessRole() *schema.Resource { +func dataSourceVirtualEnvironmentRole() *schema.Resource { return &schema.Resource{ Schema: map[string]*schema.Schema{ - mkDataSourceVirtualEnvironmentAccessRoleID: &schema.Schema{ + mkDataSourceVirtualEnvironmentRoleID: &schema.Schema{ Type: schema.TypeString, Description: "The role id", Required: true, }, - mkDataSourceVirtualEnvironmentAccessRolePrivileges: &schema.Schema{ + mkDataSourceVirtualEnvironmentRolePrivileges: &schema.Schema{ Type: schema.TypeList, Description: "The role privileges", Computed: true, Elem: &schema.Schema{Type: schema.TypeString}, }, }, - Read: dataSourceVirtualEnvironmentAccessRoleRead, + Read: dataSourceVirtualEnvironmentRoleRead, } } -func dataSourceVirtualEnvironmentAccessRoleRead(d *schema.ResourceData, m interface{}) error { +func dataSourceVirtualEnvironmentRoleRead(d *schema.ResourceData, m interface{}) error { config := m.(providerConfiguration) veClient, err := config.GetVEClient() @@ -40,15 +40,15 @@ func dataSourceVirtualEnvironmentAccessRoleRead(d *schema.ResourceData, m interf return err } - roleID := d.Get(mkDataSourceVirtualEnvironmentAccessRoleID).(string) - accessRole, err := veClient.GetAccessRole(roleID) + roleID := d.Get(mkDataSourceVirtualEnvironmentRoleID).(string) + accessRole, err := veClient.GetRole(roleID) if err != nil { return err } d.SetId(roleID) - d.Set(mkDataSourceVirtualEnvironmentAccessRolePrivileges, *accessRole) + d.Set(mkDataSourceVirtualEnvironmentRolePrivileges, *accessRole) return nil } diff --git a/data_source_virtual_environment_access_role_test.go b/data_source_virtual_environment_access_role_test.go index 7d3900c3..2d37f36a 100644 --- a/data_source_virtual_environment_access_role_test.go +++ b/data_source_virtual_environment_access_role_test.go @@ -8,30 +8,30 @@ import ( "testing" ) -// TestDataSourceVirtualEnvironmentAccessRoleInstantiation tests whether the DataSourceVirtualEnvironmentAccessRole instance can be instantiated. -func TestDataSourceVirtualEnvironmentAccessRoleInstantiation(t *testing.T) { - s := dataSourceVirtualEnvironmentAccessRole() +// TestDataSourceVirtualEnvironmentRoleInstantiation tests whether the DataSourceVirtualEnvironmentRole instance can be instantiated. +func TestDataSourceVirtualEnvironmentRoleInstantiation(t *testing.T) { + s := dataSourceVirtualEnvironmentRole() if s == nil { - t.Fatalf("Cannot instantiate dataSourceVirtualEnvironmentAccessRole") + t.Fatalf("Cannot instantiate dataSourceVirtualEnvironmentRole") } } -// TestDataSourceVirtualEnvironmentAccessRoleSchema tests the dataSourceVirtualEnvironmentAccessRole schema. -func TestDataSourceVirtualEnvironmentAccessRoleSchema(t *testing.T) { - s := dataSourceVirtualEnvironmentAccessRole() +// TestDataSourceVirtualEnvironmentRoleSchema tests the dataSourceVirtualEnvironmentRole schema. +func TestDataSourceVirtualEnvironmentRoleSchema(t *testing.T) { + s := dataSourceVirtualEnvironmentRole() attributeKeys := []string{ - mkDataSourceVirtualEnvironmentAccessRolePrivileges, + mkDataSourceVirtualEnvironmentRolePrivileges, } for _, v := range attributeKeys { if s.Schema[v] == nil { - t.Fatalf("Error in dataSourceVirtualEnvironmentAccessRole.Schema: Missing attribute \"%s\"", v) + t.Fatalf("Error in dataSourceVirtualEnvironmentRole.Schema: Missing attribute \"%s\"", v) } if s.Schema[v].Computed != true { - t.Fatalf("Error in dataSourceVirtualEnvironmentAccessRole.Schema: Attribute \"%s\" is not computed", v) + t.Fatalf("Error in dataSourceVirtualEnvironmentRole.Schema: Attribute \"%s\" is not computed", v) } } } diff --git a/data_source_virtual_environment_access_roles.go b/data_source_virtual_environment_access_roles.go index 734ad5cc..6408aefe 100644 --- a/data_source_virtual_environment_access_roles.go +++ b/data_source_virtual_environment_access_roles.go @@ -9,15 +9,15 @@ import ( ) const ( - mkDataSourceVirtualEnvironmentAccessRolesPrivileges = "privileges" - mkDataSourceVirtualEnvironmentAccessRolesRoleIDs = "role_ids" - mkDataSourceVirtualEnvironmentAccessRolesSpecial = "special" + mkDataSourceVirtualEnvironmentRolesPrivileges = "privileges" + mkDataSourceVirtualEnvironmentRolesRoleIDs = "role_ids" + mkDataSourceVirtualEnvironmentRolesSpecial = "special" ) -func dataSourceVirtualEnvironmentAccessRoles() *schema.Resource { +func dataSourceVirtualEnvironmentRoles() *schema.Resource { return &schema.Resource{ Schema: map[string]*schema.Schema{ - mkDataSourceVirtualEnvironmentAccessRolesPrivileges: &schema.Schema{ + mkDataSourceVirtualEnvironmentRolesPrivileges: &schema.Schema{ Type: schema.TypeList, Description: "The role privileges", Computed: true, @@ -26,24 +26,24 @@ func dataSourceVirtualEnvironmentAccessRoles() *schema.Resource { Elem: &schema.Schema{Type: schema.TypeString}, }, }, - mkDataSourceVirtualEnvironmentAccessRolesRoleIDs: &schema.Schema{ + mkDataSourceVirtualEnvironmentRolesRoleIDs: &schema.Schema{ Type: schema.TypeList, Description: "The role ids", Computed: true, Elem: &schema.Schema{Type: schema.TypeString}, }, - mkDataSourceVirtualEnvironmentAccessRolesSpecial: &schema.Schema{ + mkDataSourceVirtualEnvironmentRolesSpecial: &schema.Schema{ Type: schema.TypeList, Description: "Whether the role is special (built-in)", Computed: true, Elem: &schema.Schema{Type: schema.TypeBool}, }, }, - Read: dataSourceVirtualEnvironmentAccessRolesRead, + Read: dataSourceVirtualEnvironmentRolesRead, } } -func dataSourceVirtualEnvironmentAccessRolesRead(d *schema.ResourceData, m interface{}) error { +func dataSourceVirtualEnvironmentRolesRead(d *schema.ResourceData, m interface{}) error { config := m.(providerConfiguration) veClient, err := config.GetVEClient() @@ -51,7 +51,7 @@ func dataSourceVirtualEnvironmentAccessRolesRead(d *schema.ResourceData, m inter return err } - list, err := veClient.ListAccessRoles() + list, err := veClient.ListRoles() if err != nil { return err @@ -69,9 +69,9 @@ func dataSourceVirtualEnvironmentAccessRolesRead(d *schema.ResourceData, m inter d.SetId("access_roles") - d.Set(mkDataSourceVirtualEnvironmentAccessRolesPrivileges, privileges) - d.Set(mkDataSourceVirtualEnvironmentAccessRolesRoleIDs, roleIDs) - d.Set(mkDataSourceVirtualEnvironmentAccessRolesSpecial, special) + d.Set(mkDataSourceVirtualEnvironmentRolesPrivileges, privileges) + d.Set(mkDataSourceVirtualEnvironmentRolesRoleIDs, roleIDs) + d.Set(mkDataSourceVirtualEnvironmentRolesSpecial, special) return nil } diff --git a/data_source_virtual_environment_access_roles_test.go b/data_source_virtual_environment_access_roles_test.go index b6048aeb..3a3f5227 100644 --- a/data_source_virtual_environment_access_roles_test.go +++ b/data_source_virtual_environment_access_roles_test.go @@ -8,32 +8,32 @@ import ( "testing" ) -// TestDataSourceVirtualEnvironmentAccessRolesInstantiation tests whether the DataSourceVirtualEnvironmentAccessRoles instance can be instantiated. -func TestDataSourceVirtualEnvironmentAccessRolesInstantiation(t *testing.T) { - s := dataSourceVirtualEnvironmentAccessRoles() +// TestDataSourceVirtualEnvironmentRolesInstantiation tests whether the DataSourceVirtualEnvironmentRoles instance can be instantiated. +func TestDataSourceVirtualEnvironmentRolesInstantiation(t *testing.T) { + s := dataSourceVirtualEnvironmentRoles() if s == nil { - t.Fatalf("Cannot instantiate dataSourceVirtualEnvironmentAccessRoles") + t.Fatalf("Cannot instantiate dataSourceVirtualEnvironmentRoles") } } -// TestDataSourceVirtualEnvironmentAccessRolesSchema tests the dataSourceVirtualEnvironmentAccessRoles schema. -func TestDataSourceVirtualEnvironmentAccessRolesSchema(t *testing.T) { - s := dataSourceVirtualEnvironmentAccessRoles() +// TestDataSourceVirtualEnvironmentRolesSchema tests the dataSourceVirtualEnvironmentRoles schema. +func TestDataSourceVirtualEnvironmentRolesSchema(t *testing.T) { + s := dataSourceVirtualEnvironmentRoles() attributeKeys := []string{ - mkDataSourceVirtualEnvironmentAccessRolesPrivileges, - mkDataSourceVirtualEnvironmentAccessRolesRoleIDs, - mkDataSourceVirtualEnvironmentAccessRolesSpecial, + mkDataSourceVirtualEnvironmentRolesPrivileges, + mkDataSourceVirtualEnvironmentRolesRoleIDs, + mkDataSourceVirtualEnvironmentRolesSpecial, } for _, v := range attributeKeys { if s.Schema[v] == nil { - t.Fatalf("Error in dataSourceVirtualEnvironmentAccessRoles.Schema: Missing attribute \"%s\"", v) + t.Fatalf("Error in dataSourceVirtualEnvironmentRoles.Schema: Missing attribute \"%s\"", v) } if s.Schema[v].Computed != true { - t.Fatalf("Error in dataSourceVirtualEnvironmentAccessRoles.Schema: Attribute \"%s\" is not computed", v) + t.Fatalf("Error in dataSourceVirtualEnvironmentRoles.Schema: Attribute \"%s\" is not computed", v) } } } diff --git a/example/data_source_virtual_environment_access_group.tf b/example/data_source_virtual_environment_access_group.tf deleted file mode 100644 index aeca91dd..00000000 --- a/example/data_source_virtual_environment_access_group.tf +++ /dev/null @@ -1,11 +0,0 @@ -data "proxmox_virtual_environment_access_group" "example" { - group_id = "${proxmox_virtual_environment_access_group.example.id}" -} - -output "data_proxmox_virtual_environment_access_group_example_comments" { - value = "${data.proxmox_virtual_environment_access_group.example.*.comment}" -} - -output "data_proxmox_virtual_environment_access_group_example_members" { - value = "${data.proxmox_virtual_environment_access_group.example.*.members}" -} diff --git a/example/data_source_virtual_environment_access_groups.tf b/example/data_source_virtual_environment_access_groups.tf deleted file mode 100644 index 610d3ff2..00000000 --- a/example/data_source_virtual_environment_access_groups.tf +++ /dev/null @@ -1,8 +0,0 @@ -data "proxmox_virtual_environment_access_groups" "example" {} - -output "data_proxmox_virtual_environment_access_groups_example" { - value = "${map( - "comments", data.proxmox_virtual_environment_access_groups.example.comments, - "group_ids", data.proxmox_virtual_environment_access_groups.example.group_ids, - )}" -} diff --git a/example/data_source_virtual_environment_access_role.tf b/example/data_source_virtual_environment_access_role.tf deleted file mode 100644 index 84e7b241..00000000 --- a/example/data_source_virtual_environment_access_role.tf +++ /dev/null @@ -1,11 +0,0 @@ -data "proxmox_virtual_environment_access_role" "example" { - role_id = "${proxmox_virtual_environment_access_role.example.id}" -} - -output "data_proxmox_virtual_environment_access_role_example_privileges" { - value = "${data.proxmox_virtual_environment_access_role.example.privileges}" -} - -output "data_proxmox_virtual_environment_access_role_example_role_id" { - value = "${data.proxmox_virtual_environment_access_role.example.id}" -} diff --git a/example/data_source_virtual_environment_access_roles.tf b/example/data_source_virtual_environment_access_roles.tf deleted file mode 100644 index 82db47f5..00000000 --- a/example/data_source_virtual_environment_access_roles.tf +++ /dev/null @@ -1,13 +0,0 @@ -data "proxmox_virtual_environment_access_roles" "example" {} - -output "data_proxmox_virtual_environment_access_roles_example_privileges" { - value = "${data.proxmox_virtual_environment_access_roles.example.privileges}" -} - -output "data_proxmox_virtual_environment_access_roles_example_role_ids" { - value = "${data.proxmox_virtual_environment_access_roles.example.role_ids}" -} - -output "data_proxmox_virtual_environment_access_roles_example_special" { - value = "${data.proxmox_virtual_environment_access_roles.example.special}" -} diff --git a/example/data_source_virtual_environment_group.tf b/example/data_source_virtual_environment_group.tf new file mode 100644 index 00000000..bf6d84b2 --- /dev/null +++ b/example/data_source_virtual_environment_group.tf @@ -0,0 +1,11 @@ +data "proxmox_virtual_environment_group" "example" { + group_id = "${proxmox_virtual_environment_group.example.id}" +} + +output "data_proxmox_virtual_environment_group_example_comments" { + value = "${data.proxmox_virtual_environment_group.example.*.comment}" +} + +output "data_proxmox_virtual_environment_group_example_members" { + value = "${data.proxmox_virtual_environment_group.example.*.members}" +} diff --git a/example/data_source_virtual_environment_groups.tf b/example/data_source_virtual_environment_groups.tf new file mode 100644 index 00000000..2e424eda --- /dev/null +++ b/example/data_source_virtual_environment_groups.tf @@ -0,0 +1,8 @@ +data "proxmox_virtual_environment_groups" "example" {} + +output "data_proxmox_virtual_environment_groups_example" { + value = "${map( + "comments", data.proxmox_virtual_environment_groups.example.comments, + "group_ids", data.proxmox_virtual_environment_groups.example.group_ids, + )}" +} diff --git a/example/data_source_virtual_environment_role.tf b/example/data_source_virtual_environment_role.tf new file mode 100644 index 00000000..c461fa38 --- /dev/null +++ b/example/data_source_virtual_environment_role.tf @@ -0,0 +1,11 @@ +data "proxmox_virtual_environment_role" "example" { + role_id = "${proxmox_virtual_environment_role.example.id}" +} + +output "data_proxmox_virtual_environment_role_example_privileges" { + value = "${data.proxmox_virtual_environment_role.example.privileges}" +} + +output "data_proxmox_virtual_environment_role_example_role_id" { + value = "${data.proxmox_virtual_environment_role.example.id}" +} diff --git a/example/data_source_virtual_environment_roles.tf b/example/data_source_virtual_environment_roles.tf new file mode 100644 index 00000000..e6c5e4d1 --- /dev/null +++ b/example/data_source_virtual_environment_roles.tf @@ -0,0 +1,13 @@ +data "proxmox_virtual_environment_roles" "example" {} + +output "data_proxmox_virtual_environment_roles_example_privileges" { + value = "${data.proxmox_virtual_environment_roles.example.privileges}" +} + +output "data_proxmox_virtual_environment_roles_example_role_ids" { + value = "${data.proxmox_virtual_environment_roles.example.role_ids}" +} + +output "data_proxmox_virtual_environment_roles_example_special" { + value = "${data.proxmox_virtual_environment_roles.example.special}" +} diff --git a/example/resource_virtual_environment_access_group.tf b/example/resource_virtual_environment_access_group.tf deleted file mode 100644 index 02beed3c..00000000 --- a/example/resource_virtual_environment_access_group.tf +++ /dev/null @@ -1,16 +0,0 @@ -resource "proxmox_virtual_environment_access_group" "example" { - comment = "Created by Terraform" - group_id = "terraform-provider-proxmox-example" -} - -output "resource_proxmox_virtual_environment_access_group_example_comment" { - value = "${proxmox_virtual_environment_access_group.example.comment}" -} - -output "resource_proxmox_virtual_environment_access_group_example_id" { - value = "${proxmox_virtual_environment_access_group.example.id}" -} - -output "resource_proxmox_virtual_environment_access_group_example_members" { - value = "${proxmox_virtual_environment_access_group.example.members}" -} diff --git a/example/resource_virtual_environment_access_role.tf b/example/resource_virtual_environment_access_role.tf deleted file mode 100644 index 9fd7200a..00000000 --- a/example/resource_virtual_environment_access_role.tf +++ /dev/null @@ -1,14 +0,0 @@ -resource "proxmox_virtual_environment_access_role" "example" { - privileges = [ - "VM.Monitor", - ] - role_id = "terraform-provider-proxmox-example" -} - -output "resource_proxmox_virtual_environment_access_role_example_privileges" { - value = "${proxmox_virtual_environment_access_role.example.privileges}" -} - -output "resource_proxmox_virtual_environment_access_role_example_role_id" { - value = "${proxmox_virtual_environment_access_role.example.role_id}" -} diff --git a/example/resource_virtual_environment_group.tf b/example/resource_virtual_environment_group.tf new file mode 100644 index 00000000..3f86c3ee --- /dev/null +++ b/example/resource_virtual_environment_group.tf @@ -0,0 +1,16 @@ +resource "proxmox_virtual_environment_group" "example" { + comment = "Created by Terraform" + group_id = "terraform-provider-proxmox-example" +} + +output "resource_proxmox_virtual_environment_group_example_comment" { + value = "${proxmox_virtual_environment_group.example.comment}" +} + +output "resource_proxmox_virtual_environment_group_example_id" { + value = "${proxmox_virtual_environment_group.example.id}" +} + +output "resource_proxmox_virtual_environment_group_example_members" { + value = "${proxmox_virtual_environment_group.example.members}" +} diff --git a/example/resource_virtual_environment_role.tf b/example/resource_virtual_environment_role.tf new file mode 100644 index 00000000..6b9832dd --- /dev/null +++ b/example/resource_virtual_environment_role.tf @@ -0,0 +1,14 @@ +resource "proxmox_virtual_environment_role" "example" { + privileges = [ + "VM.Monitor", + ] + role_id = "terraform-provider-proxmox-example" +} + +output "resource_proxmox_virtual_environment_role_example_privileges" { + value = "${proxmox_virtual_environment_role.example.privileges}" +} + +output "resource_proxmox_virtual_environment_role_example_role_id" { + value = "${proxmox_virtual_environment_role.example.role_id}" +} diff --git a/provider.go b/provider.go index 05c0a75c..001b3078 100644 --- a/provider.go +++ b/provider.go @@ -28,15 +28,15 @@ func Provider() *schema.Provider { return &schema.Provider{ ConfigureFunc: providerConfigure, DataSourcesMap: map[string]*schema.Resource{ - "proxmox_virtual_environment_access_group": dataSourceVirtualEnvironmentAccessGroup(), - "proxmox_virtual_environment_access_groups": dataSourceVirtualEnvironmentAccessGroups(), - "proxmox_virtual_environment_access_role": dataSourceVirtualEnvironmentAccessRole(), - "proxmox_virtual_environment_access_roles": dataSourceVirtualEnvironmentAccessRoles(), - "proxmox_virtual_environment_version": dataSourceVirtualEnvironmentVersion(), + "proxmox_virtual_environment_group": dataSourceVirtualEnvironmentGroup(), + "proxmox_virtual_environment_groups": dataSourceVirtualEnvironmentGroups(), + "proxmox_virtual_environment_role": dataSourceVirtualEnvironmentRole(), + "proxmox_virtual_environment_roles": dataSourceVirtualEnvironmentRoles(), + "proxmox_virtual_environment_version": dataSourceVirtualEnvironmentVersion(), }, ResourcesMap: map[string]*schema.Resource{ - "proxmox_virtual_environment_access_group": resourceVirtualEnvironmentAccessGroup(), - "proxmox_virtual_environment_access_role": resourceVirtualEnvironmentAccessRole(), + "proxmox_virtual_environment_group": resourceVirtualEnvironmentGroup(), + "proxmox_virtual_environment_role": resourceVirtualEnvironmentRole(), }, Schema: map[string]*schema.Schema{ mkProviderVirtualEnvironment: &schema.Schema{ diff --git a/proxmox/virtual_environment.go b/proxmox/virtual_environment.go index 742a6053..9e81c9b4 100644 --- a/proxmox/virtual_environment.go +++ b/proxmox/virtual_environment.go @@ -148,7 +148,7 @@ func (c *VirtualEnvironmentClient) ValidateResponseCode(res *http.Response) erro case 404: return fmt.Errorf("Received a HTTP %d response - Please verify that the endpoint refers to a supported version of the Proxmox Virtual Environment API", res.StatusCode) case 500: - return fmt.Errorf("Received a HTTP %d response - Please verify that Proxmox Virtual Environment is healthy", res.StatusCode) + return fmt.Errorf("Received a HTTP %d response - Please verify that the Proxmox Virtual Environment API is healthy", res.StatusCode) default: return fmt.Errorf("Received a HTTP %d response", res.StatusCode) } diff --git a/proxmox/virtual_environment_access_groups.go b/proxmox/virtual_environment_access_groups.go deleted file mode 100644 index 8a561109..00000000 --- a/proxmox/virtual_environment_access_groups.go +++ /dev/null @@ -1,98 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ - -package proxmox - -import ( - "errors" - "fmt" - "net/url" - "sort" -) - -// VirtualEnvironmentAccessGroupCreateRequestBody contains the data for an access group create request. -type VirtualEnvironmentAccessGroupCreateRequestBody struct { - Comment string `json:"comment" url:"comment"` - ID string `json:"groupid" url:"groupid"` -} - -// VirtualEnvironmentAccessGroupGetResponseBody contains the body from an access group get response. -type VirtualEnvironmentAccessGroupGetResponseBody struct { - Data *VirtualEnvironmentAccessGroupGetResponseData `json:"data,omitempty"` -} - -// VirtualEnvironmentAccessGroupGetResponseData contains the data from an access group get response. -type VirtualEnvironmentAccessGroupGetResponseData struct { - Comment string `json:"comment"` - Members []string `json:"members"` -} - -// VirtualEnvironmentAccessGroupListResponseBody contains the body from an access group list response. -type VirtualEnvironmentAccessGroupListResponseBody struct { - Data []*VirtualEnvironmentAccessGroupListResponseData `json:"data,omitempty"` -} - -// VirtualEnvironmentAccessGroupListResponseData contains the data from an access group list response. -type VirtualEnvironmentAccessGroupListResponseData struct { - Comment string `json:"comment"` - ID string `json:"groupid"` -} - -// VirtualEnvironmentAccessGroupUpdateRequestBody contains the data for an access group update request. -type VirtualEnvironmentAccessGroupUpdateRequestBody struct { - Comment string `json:"comment" url:"comment"` -} - -// CreateAccessGroup creates an access group. -func (c *VirtualEnvironmentClient) CreateAccessGroup(d *VirtualEnvironmentAccessGroupCreateRequestBody) error { - return c.DoRequest(hmPOST, "access/groups", d, nil) -} - -// DeleteAccessGroup deletes an access group. -func (c *VirtualEnvironmentClient) DeleteAccessGroup(id string) error { - return c.DoRequest(hmDELETE, fmt.Sprintf("access/groups/%s", id), nil, nil) -} - -// GetAccessGroup retrieves an access group. -func (c *VirtualEnvironmentClient) GetAccessGroup(id string) (*VirtualEnvironmentAccessGroupGetResponseData, error) { - resBody := &VirtualEnvironmentAccessGroupGetResponseBody{} - err := c.DoRequest(hmGET, fmt.Sprintf("access/groups/%s", url.PathEscape(id)), nil, resBody) - - if err != nil { - return nil, err - } - - if resBody.Data == nil { - return nil, errors.New("The server did not include a data object in the response") - } - - sort.Strings(resBody.Data.Members) - - return resBody.Data, nil -} - -// ListAccessGroups retrieves a list of access groups. -func (c *VirtualEnvironmentClient) ListAccessGroups() ([]*VirtualEnvironmentAccessGroupListResponseData, error) { - resBody := &VirtualEnvironmentAccessGroupListResponseBody{} - err := c.DoRequest(hmGET, "access/groups", nil, resBody) - - if err != nil { - return nil, err - } - - if resBody.Data == nil { - return nil, errors.New("The server did not include a data object in the response") - } - - sort.Slice(resBody.Data, func(i, j int) bool { - return resBody.Data[i].ID < resBody.Data[j].ID - }) - - return resBody.Data, nil -} - -// UpdateAccessGroup updates an access group. -func (c *VirtualEnvironmentClient) UpdateAccessGroup(id string, d *VirtualEnvironmentAccessGroupUpdateRequestBody) error { - return c.DoRequest(hmPUT, fmt.Sprintf("access/groups/%s", id), d, nil) -} diff --git a/proxmox/virtual_environment_access_roles.go b/proxmox/virtual_environment_access_roles.go deleted file mode 100644 index 5cd2951d..00000000 --- a/proxmox/virtual_environment_access_roles.go +++ /dev/null @@ -1,93 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ - -package proxmox - -import ( - "errors" - "fmt" - "net/url" - "sort" -) - -// VirtualEnvironmentAccessRoleCreateRequestBody contains the data for an access group create request. -type VirtualEnvironmentAccessRoleCreateRequestBody struct { - ID string `json:"roleid" url:"roleid"` - Privileges CustomPrivileges `json:"privs" url:"privs,comma"` -} - -// VirtualEnvironmentAccessRoleGetResponseBody contains the body from an access group get response. -type VirtualEnvironmentAccessRoleGetResponseBody struct { - Data *CustomPrivileges `json:"data,omitempty"` -} - -// VirtualEnvironmentAccessRoleListResponseBody contains the body from an access group list response. -type VirtualEnvironmentAccessRoleListResponseBody struct { - Data []*VirtualEnvironmentAccessRoleListResponseData `json:"data,omitempty"` -} - -// VirtualEnvironmentAccessRoleListResponseData contains the data from an access group list response. -type VirtualEnvironmentAccessRoleListResponseData struct { - ID string `json:"roleid"` - Privileges *CustomPrivileges `json:"privs"` - Special CustomBool `json:"special"` -} - -// VirtualEnvironmentAccessRoleUpdateRequestBody contains the data for an access group update request. -type VirtualEnvironmentAccessRoleUpdateRequestBody struct { - Privileges CustomPrivileges `json:"privs" url:"privs,comma"` -} - -// CreateAccessRole creates an access role. -func (c *VirtualEnvironmentClient) CreateAccessRole(d *VirtualEnvironmentAccessRoleCreateRequestBody) error { - return c.DoRequest(hmPOST, "access/roles", d, nil) -} - -// DeleteAccessRole deletes an access role. -func (c *VirtualEnvironmentClient) DeleteAccessRole(id string) error { - return c.DoRequest(hmDELETE, fmt.Sprintf("access/roles/%s", id), nil, nil) -} - -// GetAccessRole retrieves an access role. -func (c *VirtualEnvironmentClient) GetAccessRole(id string) (*CustomPrivileges, error) { - resBody := &VirtualEnvironmentAccessRoleGetResponseBody{} - err := c.DoRequest(hmGET, fmt.Sprintf("access/roles/%s", url.PathEscape(id)), nil, resBody) - - if err != nil { - return nil, err - } - - if resBody.Data == nil { - return nil, errors.New("The server did not include a data object in the response") - } - - sort.Strings(*resBody.Data) - - return resBody.Data, nil -} - -// ListAccessRoles retrieves a list of access roles. -func (c *VirtualEnvironmentClient) ListAccessRoles() ([]*VirtualEnvironmentAccessRoleListResponseData, error) { - resBody := &VirtualEnvironmentAccessRoleListResponseBody{} - err := c.DoRequest(hmGET, "access/roles", nil, resBody) - - if err != nil { - return nil, err - } - - if resBody.Data == nil { - return nil, errors.New("The server did not include a data object in the response") - } - - sort.Slice(resBody.Data, func(i, j int) bool { - return resBody.Data[i].ID < resBody.Data[j].ID - }) - - return resBody.Data, nil -} - -// UpdateAccessRole updates an access role. -func (c *VirtualEnvironmentClient) UpdateAccessRole(id string, d *VirtualEnvironmentAccessRoleUpdateRequestBody) error { - return c.DoRequest(hmPUT, fmt.Sprintf("access/roles/%s", id), d, nil) -} diff --git a/proxmox/virtual_environment_groups.go b/proxmox/virtual_environment_groups.go new file mode 100644 index 00000000..c8db3f43 --- /dev/null +++ b/proxmox/virtual_environment_groups.go @@ -0,0 +1,98 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ + +package proxmox + +import ( + "errors" + "fmt" + "net/url" + "sort" +) + +// VirtualEnvironmentGroupCreateRequestBody contains the data for an access group create request. +type VirtualEnvironmentGroupCreateRequestBody struct { + Comment string `json:"comment" url:"comment"` + ID string `json:"groupid" url:"groupid"` +} + +// VirtualEnvironmentGroupGetResponseBody contains the body from an access group get response. +type VirtualEnvironmentGroupGetResponseBody struct { + Data *VirtualEnvironmentGroupGetResponseData `json:"data,omitempty"` +} + +// VirtualEnvironmentGroupGetResponseData contains the data from an access group get response. +type VirtualEnvironmentGroupGetResponseData struct { + Comment string `json:"comment"` + Members []string `json:"members"` +} + +// VirtualEnvironmentGroupListResponseBody contains the body from an access group list response. +type VirtualEnvironmentGroupListResponseBody struct { + Data []*VirtualEnvironmentGroupListResponseData `json:"data,omitempty"` +} + +// VirtualEnvironmentGroupListResponseData contains the data from an access group list response. +type VirtualEnvironmentGroupListResponseData struct { + Comment string `json:"comment"` + ID string `json:"groupid"` +} + +// VirtualEnvironmentGroupUpdateRequestBody contains the data for an access group update request. +type VirtualEnvironmentGroupUpdateRequestBody struct { + Comment string `json:"comment" url:"comment"` +} + +// CreateGroup creates an access group. +func (c *VirtualEnvironmentClient) CreateGroup(d *VirtualEnvironmentGroupCreateRequestBody) error { + return c.DoRequest(hmPOST, "access/groups", d, nil) +} + +// DeleteGroup deletes an access group. +func (c *VirtualEnvironmentClient) DeleteGroup(id string) error { + return c.DoRequest(hmDELETE, fmt.Sprintf("access/groups/%s", id), nil, nil) +} + +// GetGroup retrieves an access group. +func (c *VirtualEnvironmentClient) GetGroup(id string) (*VirtualEnvironmentGroupGetResponseData, error) { + resBody := &VirtualEnvironmentGroupGetResponseBody{} + err := c.DoRequest(hmGET, fmt.Sprintf("access/groups/%s", url.PathEscape(id)), nil, resBody) + + if err != nil { + return nil, err + } + + if resBody.Data == nil { + return nil, errors.New("The server did not include a data object in the response") + } + + sort.Strings(resBody.Data.Members) + + return resBody.Data, nil +} + +// ListGroups retrieves a list of access groups. +func (c *VirtualEnvironmentClient) ListGroups() ([]*VirtualEnvironmentGroupListResponseData, error) { + resBody := &VirtualEnvironmentGroupListResponseBody{} + err := c.DoRequest(hmGET, "access/groups", nil, resBody) + + if err != nil { + return nil, err + } + + if resBody.Data == nil { + return nil, errors.New("The server did not include a data object in the response") + } + + sort.Slice(resBody.Data, func(i, j int) bool { + return resBody.Data[i].ID < resBody.Data[j].ID + }) + + return resBody.Data, nil +} + +// UpdateGroup updates an access group. +func (c *VirtualEnvironmentClient) UpdateGroup(id string, d *VirtualEnvironmentGroupUpdateRequestBody) error { + return c.DoRequest(hmPUT, fmt.Sprintf("access/groups/%s", id), d, nil) +} diff --git a/proxmox/virtual_environment_roles.go b/proxmox/virtual_environment_roles.go new file mode 100644 index 00000000..92b40576 --- /dev/null +++ b/proxmox/virtual_environment_roles.go @@ -0,0 +1,93 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ + +package proxmox + +import ( + "errors" + "fmt" + "net/url" + "sort" +) + +// VirtualEnvironmentRoleCreateRequestBody contains the data for an access group create request. +type VirtualEnvironmentRoleCreateRequestBody struct { + ID string `json:"roleid" url:"roleid"` + Privileges CustomPrivileges `json:"privs" url:"privs,comma"` +} + +// VirtualEnvironmentRoleGetResponseBody contains the body from an access group get response. +type VirtualEnvironmentRoleGetResponseBody struct { + Data *CustomPrivileges `json:"data,omitempty"` +} + +// VirtualEnvironmentRoleListResponseBody contains the body from an access group list response. +type VirtualEnvironmentRoleListResponseBody struct { + Data []*VirtualEnvironmentRoleListResponseData `json:"data,omitempty"` +} + +// VirtualEnvironmentRoleListResponseData contains the data from an access group list response. +type VirtualEnvironmentRoleListResponseData struct { + ID string `json:"roleid"` + Privileges *CustomPrivileges `json:"privs"` + Special CustomBool `json:"special"` +} + +// VirtualEnvironmentRoleUpdateRequestBody contains the data for an access group update request. +type VirtualEnvironmentRoleUpdateRequestBody struct { + Privileges CustomPrivileges `json:"privs" url:"privs,comma"` +} + +// CreateRole creates an access role. +func (c *VirtualEnvironmentClient) CreateRole(d *VirtualEnvironmentRoleCreateRequestBody) error { + return c.DoRequest(hmPOST, "access/roles", d, nil) +} + +// DeleteRole deletes an access role. +func (c *VirtualEnvironmentClient) DeleteRole(id string) error { + return c.DoRequest(hmDELETE, fmt.Sprintf("access/roles/%s", id), nil, nil) +} + +// GetRole retrieves an access role. +func (c *VirtualEnvironmentClient) GetRole(id string) (*CustomPrivileges, error) { + resBody := &VirtualEnvironmentRoleGetResponseBody{} + err := c.DoRequest(hmGET, fmt.Sprintf("access/roles/%s", url.PathEscape(id)), nil, resBody) + + if err != nil { + return nil, err + } + + if resBody.Data == nil { + return nil, errors.New("The server did not include a data object in the response") + } + + sort.Strings(*resBody.Data) + + return resBody.Data, nil +} + +// ListRoles retrieves a list of access roles. +func (c *VirtualEnvironmentClient) ListRoles() ([]*VirtualEnvironmentRoleListResponseData, error) { + resBody := &VirtualEnvironmentRoleListResponseBody{} + err := c.DoRequest(hmGET, "access/roles", nil, resBody) + + if err != nil { + return nil, err + } + + if resBody.Data == nil { + return nil, errors.New("The server did not include a data object in the response") + } + + sort.Slice(resBody.Data, func(i, j int) bool { + return resBody.Data[i].ID < resBody.Data[j].ID + }) + + return resBody.Data, nil +} + +// UpdateRole updates an access role. +func (c *VirtualEnvironmentClient) UpdateRole(id string, d *VirtualEnvironmentRoleUpdateRequestBody) error { + return c.DoRequest(hmPUT, fmt.Sprintf("access/roles/%s", id), d, nil) +} diff --git a/resource_virtual_environment_access_group.go b/resource_virtual_environment_access_group.go index 4f79bb75..78b2eb49 100644 --- a/resource_virtual_environment_access_group.go +++ b/resource_virtual_environment_access_group.go @@ -12,40 +12,40 @@ import ( ) const ( - mkResourceVirtualEnvironmentAccessGroupComment = "comment" - mkResourceVirtualEnvironmentAccessGroupID = "group_id" - mkResourceVirtualEnvironmentAccessGroupMembers = "members" + mkResourceVirtualEnvironmentGroupComment = "comment" + mkResourceVirtualEnvironmentGroupID = "group_id" + mkResourceVirtualEnvironmentGroupMembers = "members" ) -func resourceVirtualEnvironmentAccessGroup() *schema.Resource { +func resourceVirtualEnvironmentGroup() *schema.Resource { return &schema.Resource{ Schema: map[string]*schema.Schema{ - mkResourceVirtualEnvironmentAccessGroupComment: &schema.Schema{ + mkResourceVirtualEnvironmentGroupComment: &schema.Schema{ Type: schema.TypeString, Description: "The group comment", Optional: true, Default: "", }, - mkResourceVirtualEnvironmentAccessGroupID: &schema.Schema{ + mkResourceVirtualEnvironmentGroupID: &schema.Schema{ Type: schema.TypeString, Description: "The group id", Required: true, }, - mkResourceVirtualEnvironmentAccessGroupMembers: &schema.Schema{ + mkResourceVirtualEnvironmentGroupMembers: &schema.Schema{ Type: schema.TypeList, Description: "The group members", Computed: true, Elem: &schema.Schema{Type: schema.TypeString}, }, }, - Create: resourceVirtualEnvironmentAccessGroupCreate, - Read: resourceVirtualEnvironmentAccessGroupRead, - Update: resourceVirtualEnvironmentAccessGroupUpdate, - Delete: resourceVirtualEnvironmentAccessGroupDelete, + Create: resourceVirtualEnvironmentGroupCreate, + Read: resourceVirtualEnvironmentGroupRead, + Update: resourceVirtualEnvironmentGroupUpdate, + Delete: resourceVirtualEnvironmentGroupDelete, } } -func resourceVirtualEnvironmentAccessGroupCreate(d *schema.ResourceData, m interface{}) error { +func resourceVirtualEnvironmentGroupCreate(d *schema.ResourceData, m interface{}) error { config := m.(providerConfiguration) veClient, err := config.GetVEClient() @@ -53,13 +53,13 @@ func resourceVirtualEnvironmentAccessGroupCreate(d *schema.ResourceData, m inter return err } - groupID := d.Get(mkResourceVirtualEnvironmentAccessGroupID).(string) - body := &proxmox.VirtualEnvironmentAccessGroupCreateRequestBody{ - Comment: d.Get(mkResourceVirtualEnvironmentAccessGroupComment).(string), + groupID := d.Get(mkResourceVirtualEnvironmentGroupID).(string) + body := &proxmox.VirtualEnvironmentGroupCreateRequestBody{ + Comment: d.Get(mkResourceVirtualEnvironmentGroupComment).(string), ID: groupID, } - err = veClient.CreateAccessGroup(body) + err = veClient.CreateGroup(body) if err != nil { return err @@ -67,10 +67,10 @@ func resourceVirtualEnvironmentAccessGroupCreate(d *schema.ResourceData, m inter d.SetId(groupID) - return resourceVirtualEnvironmentAccessGroupRead(d, m) + return resourceVirtualEnvironmentGroupRead(d, m) } -func resourceVirtualEnvironmentAccessGroupRead(d *schema.ResourceData, m interface{}) error { +func resourceVirtualEnvironmentGroupRead(d *schema.ResourceData, m interface{}) error { config := m.(providerConfiguration) veClient, err := config.GetVEClient() @@ -79,7 +79,7 @@ func resourceVirtualEnvironmentAccessGroupRead(d *schema.ResourceData, m interfa } groupID := d.Id() - accessGroup, err := veClient.GetAccessGroup(groupID) + accessGroup, err := veClient.GetGroup(groupID) if err != nil { if strings.Contains(err.Error(), "HTTP 404") { @@ -93,13 +93,13 @@ func resourceVirtualEnvironmentAccessGroupRead(d *schema.ResourceData, m interfa d.SetId(groupID) - d.Set(mkResourceVirtualEnvironmentAccessGroupComment, accessGroup.Comment) - d.Set(mkResourceVirtualEnvironmentAccessGroupMembers, accessGroup.Members) + d.Set(mkResourceVirtualEnvironmentGroupComment, accessGroup.Comment) + d.Set(mkResourceVirtualEnvironmentGroupMembers, accessGroup.Members) return nil } -func resourceVirtualEnvironmentAccessGroupUpdate(d *schema.ResourceData, m interface{}) error { +func resourceVirtualEnvironmentGroupUpdate(d *schema.ResourceData, m interface{}) error { config := m.(providerConfiguration) veClient, err := config.GetVEClient() @@ -107,21 +107,21 @@ func resourceVirtualEnvironmentAccessGroupUpdate(d *schema.ResourceData, m inter return err } - body := &proxmox.VirtualEnvironmentAccessGroupUpdateRequestBody{ - Comment: d.Get(mkResourceVirtualEnvironmentAccessGroupComment).(string), + body := &proxmox.VirtualEnvironmentGroupUpdateRequestBody{ + Comment: d.Get(mkResourceVirtualEnvironmentGroupComment).(string), } groupID := d.Id() - err = veClient.UpdateAccessGroup(groupID, body) + err = veClient.UpdateGroup(groupID, body) if err != nil { return err } - return resourceVirtualEnvironmentAccessGroupRead(d, m) + return resourceVirtualEnvironmentGroupRead(d, m) } -func resourceVirtualEnvironmentAccessGroupDelete(d *schema.ResourceData, m interface{}) error { +func resourceVirtualEnvironmentGroupDelete(d *schema.ResourceData, m interface{}) error { config := m.(providerConfiguration) veClient, err := config.GetVEClient() @@ -130,7 +130,7 @@ func resourceVirtualEnvironmentAccessGroupDelete(d *schema.ResourceData, m inter } groupID := d.Id() - err = veClient.DeleteAccessGroup(groupID) + err = veClient.DeleteGroup(groupID) if err != nil { if strings.Contains(err.Error(), "HTTP 404") { diff --git a/resource_virtual_environment_access_group_test.go b/resource_virtual_environment_access_group_test.go index 04551ff9..4ab533a0 100644 --- a/resource_virtual_environment_access_group_test.go +++ b/resource_virtual_environment_access_group_test.go @@ -8,30 +8,30 @@ import ( "testing" ) -// TestResourceVirtualEnvironmentAccessGroupInstantiation tests whether the ResourceVirtualEnvironmentAccessGroup instance can be instantiated. -func TestResourceVirtualEnvironmentAccessGroupInstantiation(t *testing.T) { - s := resourceVirtualEnvironmentAccessGroup() +// TestResourceVirtualEnvironmentGroupInstantiation tests whether the ResourceVirtualEnvironmentGroup instance can be instantiated. +func TestResourceVirtualEnvironmentGroupInstantiation(t *testing.T) { + s := resourceVirtualEnvironmentGroup() if s == nil { - t.Fatalf("Cannot instantiate resourceVirtualEnvironmentAccessGroup") + t.Fatalf("Cannot instantiate resourceVirtualEnvironmentGroup") } } -// TestResourceVirtualEnvironmentAccessGroupSchema tests the resourceVirtualEnvironmentAccessGroup schema. -func TestResourceVirtualEnvironmentAccessGroupSchema(t *testing.T) { - s := resourceVirtualEnvironmentAccessGroup() +// TestResourceVirtualEnvironmentGroupSchema tests the resourceVirtualEnvironmentGroup schema. +func TestResourceVirtualEnvironmentGroupSchema(t *testing.T) { + s := resourceVirtualEnvironmentGroup() attributeKeys := []string{ - mkResourceVirtualEnvironmentAccessGroupMembers, + mkResourceVirtualEnvironmentGroupMembers, } for _, v := range attributeKeys { if s.Schema[v] == nil { - t.Fatalf("Error in resourceVirtualEnvironmentAccessGroup.Schema: Missing attribute \"%s\"", v) + t.Fatalf("Error in resourceVirtualEnvironmentGroup.Schema: Missing attribute \"%s\"", v) } if s.Schema[v].Computed != true { - t.Fatalf("Error in resourceVirtualEnvironmentAccessGroup.Schema: Attribute \"%s\" is not computed", v) + t.Fatalf("Error in resourceVirtualEnvironmentGroup.Schema: Attribute \"%s\" is not computed", v) } } } diff --git a/resource_virtual_environment_access_role.go b/resource_virtual_environment_access_role.go index 1290b4f5..4edb8e03 100644 --- a/resource_virtual_environment_access_role.go +++ b/resource_virtual_environment_access_role.go @@ -12,33 +12,33 @@ import ( ) const ( - mkResourceVirtualEnvironmentAccessRolePrivileges = "privileges" - mkResourceVirtualEnvironmentAccessRoleRoleID = "role_id" + mkResourceVirtualEnvironmentRolePrivileges = "privileges" + mkResourceVirtualEnvironmentRoleRoleID = "role_id" ) -func resourceVirtualEnvironmentAccessRole() *schema.Resource { +func resourceVirtualEnvironmentRole() *schema.Resource { return &schema.Resource{ Schema: map[string]*schema.Schema{ - mkResourceVirtualEnvironmentAccessRolePrivileges: &schema.Schema{ + mkResourceVirtualEnvironmentRolePrivileges: &schema.Schema{ Type: schema.TypeList, Description: "The role privileges", Required: true, Elem: &schema.Schema{Type: schema.TypeString}, }, - mkResourceVirtualEnvironmentAccessRoleRoleID: &schema.Schema{ + mkResourceVirtualEnvironmentRoleRoleID: &schema.Schema{ Type: schema.TypeString, Description: "The role id", Required: true, }, }, - Create: resourceVirtualEnvironmentAccessRoleCreate, - Read: resourceVirtualEnvironmentAccessRoleRead, - Update: resourceVirtualEnvironmentAccessRoleUpdate, - Delete: resourceVirtualEnvironmentAccessRoleDelete, + Create: resourceVirtualEnvironmentRoleCreate, + Read: resourceVirtualEnvironmentRoleRead, + Update: resourceVirtualEnvironmentRoleUpdate, + Delete: resourceVirtualEnvironmentRoleDelete, } } -func resourceVirtualEnvironmentAccessRoleCreate(d *schema.ResourceData, m interface{}) error { +func resourceVirtualEnvironmentRoleCreate(d *schema.ResourceData, m interface{}) error { config := m.(providerConfiguration) veClient, err := config.GetVEClient() @@ -46,8 +46,8 @@ func resourceVirtualEnvironmentAccessRoleCreate(d *schema.ResourceData, m interf return err } - privileges := d.Get(mkResourceVirtualEnvironmentAccessRolePrivileges).([]interface{}) - roleID := d.Get(mkResourceVirtualEnvironmentAccessRoleRoleID).(string) + privileges := d.Get(mkResourceVirtualEnvironmentRolePrivileges).([]interface{}) + roleID := d.Get(mkResourceVirtualEnvironmentRoleRoleID).(string) customPrivileges := make(proxmox.CustomPrivileges, len(privileges)) @@ -55,12 +55,12 @@ func resourceVirtualEnvironmentAccessRoleCreate(d *schema.ResourceData, m interf customPrivileges[i] = v.(string) } - body := &proxmox.VirtualEnvironmentAccessRoleCreateRequestBody{ + body := &proxmox.VirtualEnvironmentRoleCreateRequestBody{ ID: roleID, Privileges: customPrivileges, } - err = veClient.CreateAccessRole(body) + err = veClient.CreateRole(body) if err != nil { return err @@ -68,10 +68,10 @@ func resourceVirtualEnvironmentAccessRoleCreate(d *schema.ResourceData, m interf d.SetId(roleID) - return resourceVirtualEnvironmentAccessRoleRead(d, m) + return resourceVirtualEnvironmentRoleRead(d, m) } -func resourceVirtualEnvironmentAccessRoleRead(d *schema.ResourceData, m interface{}) error { +func resourceVirtualEnvironmentRoleRead(d *schema.ResourceData, m interface{}) error { config := m.(providerConfiguration) veClient, err := config.GetVEClient() @@ -80,7 +80,7 @@ func resourceVirtualEnvironmentAccessRoleRead(d *schema.ResourceData, m interfac } roleID := d.Id() - accessRole, err := veClient.GetAccessRole(roleID) + accessRole, err := veClient.GetRole(roleID) if err != nil { if strings.Contains(err.Error(), "HTTP 404") { @@ -94,12 +94,12 @@ func resourceVirtualEnvironmentAccessRoleRead(d *schema.ResourceData, m interfac d.SetId(roleID) - d.Set(mkResourceVirtualEnvironmentAccessRolePrivileges, *accessRole) + d.Set(mkResourceVirtualEnvironmentRolePrivileges, *accessRole) return nil } -func resourceVirtualEnvironmentAccessRoleUpdate(d *schema.ResourceData, m interface{}) error { +func resourceVirtualEnvironmentRoleUpdate(d *schema.ResourceData, m interface{}) error { config := m.(providerConfiguration) veClient, err := config.GetVEClient() @@ -107,28 +107,28 @@ func resourceVirtualEnvironmentAccessRoleUpdate(d *schema.ResourceData, m interf return err } - privileges := d.Get(mkResourceVirtualEnvironmentAccessRolePrivileges).([]interface{}) + privileges := d.Get(mkResourceVirtualEnvironmentRolePrivileges).([]interface{}) customPrivileges := make(proxmox.CustomPrivileges, len(privileges)) for i, v := range privileges { customPrivileges[i] = v.(string) } - body := &proxmox.VirtualEnvironmentAccessRoleUpdateRequestBody{ + body := &proxmox.VirtualEnvironmentRoleUpdateRequestBody{ Privileges: customPrivileges, } roleID := d.Id() - err = veClient.UpdateAccessRole(roleID, body) + err = veClient.UpdateRole(roleID, body) if err != nil { return err } - return resourceVirtualEnvironmentAccessRoleRead(d, m) + return resourceVirtualEnvironmentRoleRead(d, m) } -func resourceVirtualEnvironmentAccessRoleDelete(d *schema.ResourceData, m interface{}) error { +func resourceVirtualEnvironmentRoleDelete(d *schema.ResourceData, m interface{}) error { config := m.(providerConfiguration) veClient, err := config.GetVEClient() @@ -137,7 +137,7 @@ func resourceVirtualEnvironmentAccessRoleDelete(d *schema.ResourceData, m interf } roleID := d.Id() - err = veClient.DeleteAccessRole(roleID) + err = veClient.DeleteRole(roleID) if err != nil { if strings.Contains(err.Error(), "HTTP 404") { diff --git a/resource_virtual_environment_access_role_test.go b/resource_virtual_environment_access_role_test.go index 1d7b29c0..8d7a5dfd 100644 --- a/resource_virtual_environment_access_role_test.go +++ b/resource_virtual_environment_access_role_test.go @@ -8,28 +8,28 @@ import ( "testing" ) -// TestResourceVirtualEnvironmentAccessRoleInstantiation tests whether the ResourceVirtualEnvironmentAccessRole instance can be instantiated. -func TestResourceVirtualEnvironmentAccessRoleInstantiation(t *testing.T) { - s := resourceVirtualEnvironmentAccessRole() +// TestResourceVirtualEnvironmentRoleInstantiation tests whether the ResourceVirtualEnvironmentRole instance can be instantiated. +func TestResourceVirtualEnvironmentRoleInstantiation(t *testing.T) { + s := resourceVirtualEnvironmentRole() if s == nil { - t.Fatalf("Cannot instantiate resourceVirtualEnvironmentAccessRole") + t.Fatalf("Cannot instantiate resourceVirtualEnvironmentRole") } } -// TestResourceVirtualEnvironmentAccessRoleSchema tests the resourceVirtualEnvironmentAccessRole schema. -func TestResourceVirtualEnvironmentAccessRoleSchema(t *testing.T) { - s := resourceVirtualEnvironmentAccessRole() +// TestResourceVirtualEnvironmentRoleSchema tests the resourceVirtualEnvironmentRole schema. +func TestResourceVirtualEnvironmentRoleSchema(t *testing.T) { + s := resourceVirtualEnvironmentRole() attributeKeys := []string{} for _, v := range attributeKeys { if s.Schema[v] == nil { - t.Fatalf("Error in resourceVirtualEnvironmentAccessRole.Schema: Missing attribute \"%s\"", v) + t.Fatalf("Error in resourceVirtualEnvironmentRole.Schema: Missing attribute \"%s\"", v) } if s.Schema[v].Computed != true { - t.Fatalf("Error in resourceVirtualEnvironmentAccessRole.Schema: Attribute \"%s\" is not computed", v) + t.Fatalf("Error in resourceVirtualEnvironmentRole.Schema: Attribute \"%s\" is not computed", v) } } }