From 1333c07a427c5e6b50c665d132c363f0174e2b3e Mon Sep 17 00:00:00 2001 From: Dan Petersen Date: Sat, 18 Apr 2020 14:21:50 +0200 Subject: [PATCH 1/2] Initial work on time resource --- CHANGELOG.md | 5 + .../data_source_virtual_environment_time.md | 30 +++++ .../data_source_virtual_environment_user.md | 2 +- .../data_source_virtual_environment_users.md | 2 +- ...data_source_virtual_environment_version.md | 2 +- .../proxmox_virtual_environment_time.md | 31 +++++ .../proxmox_virtual_environment_user.md | 2 +- .../proxmox_virtual_environment_vm.md | 2 +- .../data_source_virtual_environment_time.tf | 11 ++ example/resource_virtual_environment_time.tf | 12 ++ proxmox/common_types.go | 2 +- proxmox/virtual_environment_nodes.go | 21 +++ proxmox/virtual_environment_nodes_types.go | 17 +++ .../data_source_virtual_environment_time.go | 80 +++++++++++ ...ta_source_virtual_environment_time_test.go | 42 ++++++ proxmoxtf/provider.go | 2 + .../resource_virtual_environment_time.go | 126 ++++++++++++++++++ .../resource_virtual_environment_time_test.go | 42 ++++++ 18 files changed, 425 insertions(+), 6 deletions(-) create mode 100644 docs/data_sources/virtual_environment/data_source_virtual_environment_time.md create mode 100644 docs/resources/virtual_environment/proxmox_virtual_environment_time.md create mode 100644 example/data_source_virtual_environment_time.tf create mode 100644 example/resource_virtual_environment_time.tf create mode 100644 proxmoxtf/data_source_virtual_environment_time.go create mode 100644 proxmoxtf/data_source_virtual_environment_time_test.go create mode 100644 proxmoxtf/resource_virtual_environment_time.go create mode 100644 proxmoxtf/resource_virtual_environment_time_test.go diff --git a/CHANGELOG.md b/CHANGELOG.md index 4c804b7e..4a400769 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ ## 0.4.0 (UNRELEASED) +FEATURES: + +* **New Data Source:** `proxmox_virtual_environment_time` +* **New Resource:** `proxmox_virtual_environment_time` + ENHANCEMENTS: * provider/configuration: Add `virtual_environment.otp` argument for TOTP support diff --git a/docs/data_sources/virtual_environment/data_source_virtual_environment_time.md b/docs/data_sources/virtual_environment/data_source_virtual_environment_time.md new file mode 100644 index 00000000..54fc08a3 --- /dev/null +++ b/docs/data_sources/virtual_environment/data_source_virtual_environment_time.md @@ -0,0 +1,30 @@ +--- +layout: page +title: Time +permalink: /data-sources/virtual-environment/time +nav_order: 11 +parent: Virtual Environment Data Sources +grand_parent: Data Sources +--- + +# Data Source: Time + +Retrieves the current time for a specific node. + +## Example Usage + +``` +data "proxmox_virtual_environment_time" "first_node_time" { + node_name = "first-node" +} +``` + +## Arguments Reference + +* `node_name` - (Required) A node name. + +## Attributes Reference + +* `local_time` - The node's local time. +* `time_zone` - The node's time zone. +* `utc_time` - The node's local time formatted as UTC. diff --git a/docs/data_sources/virtual_environment/data_source_virtual_environment_user.md b/docs/data_sources/virtual_environment/data_source_virtual_environment_user.md index 4c97f8f4..a6338b07 100644 --- a/docs/data_sources/virtual_environment/data_source_virtual_environment_user.md +++ b/docs/data_sources/virtual_environment/data_source_virtual_environment_user.md @@ -2,7 +2,7 @@ layout: page title: User permalink: /data-sources/virtual-environment/user -nav_order: 11 +nav_order: 12 parent: Virtual Environment Data Sources grand_parent: Data Sources --- diff --git a/docs/data_sources/virtual_environment/data_source_virtual_environment_users.md b/docs/data_sources/virtual_environment/data_source_virtual_environment_users.md index 2a66ce3d..6259ed42 100644 --- a/docs/data_sources/virtual_environment/data_source_virtual_environment_users.md +++ b/docs/data_sources/virtual_environment/data_source_virtual_environment_users.md @@ -2,7 +2,7 @@ layout: page title: Users permalink: /data-sources/virtual-environment/users -nav_order: 12 +nav_order: 13 parent: Virtual Environment Data Sources grand_parent: Data Sources --- diff --git a/docs/data_sources/virtual_environment/data_source_virtual_environment_version.md b/docs/data_sources/virtual_environment/data_source_virtual_environment_version.md index 45df9263..700dc88f 100644 --- a/docs/data_sources/virtual_environment/data_source_virtual_environment_version.md +++ b/docs/data_sources/virtual_environment/data_source_virtual_environment_version.md @@ -2,7 +2,7 @@ layout: page title: Version permalink: /data-sources/virtual-environment/version -nav_order: 13 +nav_order: 14 parent: Virtual Environment Data Sources grand_parent: Data Sources --- diff --git a/docs/resources/virtual_environment/proxmox_virtual_environment_time.md b/docs/resources/virtual_environment/proxmox_virtual_environment_time.md new file mode 100644 index 00000000..c124386c --- /dev/null +++ b/docs/resources/virtual_environment/proxmox_virtual_environment_time.md @@ -0,0 +1,31 @@ +--- +layout: page +title: Time +permalink: /ressources/virtual-environment/time +nav_order: 9 +parent: Virtual Environment Resources +grand_parent: Resources +--- + +# Resource: Time + +Manages the time for a specific node. + +## Example Usage + +``` +resource "proxmox_virtual_environment_time" "first_node_time" { + node_name = "first-node" + time_zone = "UTC" +} +``` + +## Arguments Reference + +* `node_name` - (Required) A node name. +* `time_zone` - (Required) The node's time zone. + +## Attributes Reference + +* `local_time` - The node's local time. +* `utc_time` - The node's local time formatted as UTC. diff --git a/docs/resources/virtual_environment/proxmox_virtual_environment_user.md b/docs/resources/virtual_environment/proxmox_virtual_environment_user.md index 8490f60e..e40dd67a 100644 --- a/docs/resources/virtual_environment/proxmox_virtual_environment_user.md +++ b/docs/resources/virtual_environment/proxmox_virtual_environment_user.md @@ -2,7 +2,7 @@ layout: page title: User permalink: /ressources/virtual-environment/user -nav_order: 9 +nav_order: 10 parent: Virtual Environment Resources grand_parent: Resources --- diff --git a/docs/resources/virtual_environment/proxmox_virtual_environment_vm.md b/docs/resources/virtual_environment/proxmox_virtual_environment_vm.md index c907650d..4445cdde 100644 --- a/docs/resources/virtual_environment/proxmox_virtual_environment_vm.md +++ b/docs/resources/virtual_environment/proxmox_virtual_environment_vm.md @@ -2,7 +2,7 @@ layout: page title: VM permalink: /ressources/virtual-environment/vm -nav_order: 10 +nav_order: 11 parent: Virtual Environment Resources grand_parent: Resources --- diff --git a/example/data_source_virtual_environment_time.tf b/example/data_source_virtual_environment_time.tf new file mode 100644 index 00000000..cdbdd8a1 --- /dev/null +++ b/example/data_source_virtual_environment_time.tf @@ -0,0 +1,11 @@ +data "proxmox_virtual_environment_time" "example" { + node_name = "${data.proxmox_virtual_environment_nodes.example.names[0]}" +} + +output "data_proxmox_virtual_environment_time" { + value = "${map( + "local_time", data.proxmox_virtual_environment_time.example.local_time, + "time_zone", data.proxmox_virtual_environment_time.example.time_zone, + "utc_time", data.proxmox_virtual_environment_time.example.utc_time, + )}" +} diff --git a/example/resource_virtual_environment_time.tf b/example/resource_virtual_environment_time.tf new file mode 100644 index 00000000..2dadf379 --- /dev/null +++ b/example/resource_virtual_environment_time.tf @@ -0,0 +1,12 @@ +resource "proxmox_virtual_environment_time" "example" { + node_name = "${data.proxmox_virtual_environment_time.example.node_name}" + time_zone = "${data.proxmox_virtual_environment_time.example.time_zone}" +} + +output "resource_proxmox_virtual_environment_time" { + value = "${map( + "local_time", data.proxmox_virtual_environment_time.example.local_time, + "time_zone", data.proxmox_virtual_environment_time.example.time_zone, + "utc_time", data.proxmox_virtual_environment_time.example.utc_time, + )}" +} diff --git a/proxmox/common_types.go b/proxmox/common_types.go index d92fcdbf..7df3c9bd 100644 --- a/proxmox/common_types.go +++ b/proxmox/common_types.go @@ -176,7 +176,7 @@ func (r *CustomTimestamp) UnmarshalJSON(b []byte) error { return err } - *r = CustomTimestamp(time.Unix(i, 0)) + *r = CustomTimestamp(time.Unix(i, 0).UTC()) return nil } diff --git a/proxmox/virtual_environment_nodes.go b/proxmox/virtual_environment_nodes.go index d99da3d3..da114aed 100644 --- a/proxmox/virtual_environment_nodes.go +++ b/proxmox/virtual_environment_nodes.go @@ -72,6 +72,22 @@ func (c *VirtualEnvironmentClient) GetNodeIP(nodeName string) (*string, error) { return &nodeAddressParts[0], nil } +// GetNodeTime retrieves the time information for a node. +func (c *VirtualEnvironmentClient) GetNodeTime(nodeName string) (*VirtualEnvironmentNodeGetTimeResponseData, error) { + resBody := &VirtualEnvironmentNodeGetTimeResponseBody{} + err := c.DoRequest(hmGET, fmt.Sprintf("nodes/%s/time", url.PathEscape(nodeName)), 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") + } + + return resBody.Data, nil +} + // ListNodeNetworkDevices retrieves a list of network devices for a specific nodes. func (c *VirtualEnvironmentClient) ListNodeNetworkDevices(nodeName string) ([]*VirtualEnvironmentNodeNetworkDeviceListResponseData, error) { resBody := &VirtualEnvironmentNodeNetworkDeviceListResponseBody{} @@ -136,3 +152,8 @@ func (c *VirtualEnvironmentClient) OpenNodeShell(nodeName string) (*ssh.Client, return sshClient, nil } + +// UpdateNodeTime updates the time on a node. +func (c *VirtualEnvironmentClient) UpdateNodeTime(nodeName string, d *VirtualEnvironmentNodeUpdateTimeRequestBody) error { + return c.DoRequest(hmPUT, fmt.Sprintf("nodes/%s/time", url.PathEscape(nodeName)), d, nil) +} diff --git a/proxmox/virtual_environment_nodes_types.go b/proxmox/virtual_environment_nodes_types.go index 3a869efa..66e6cdd0 100644 --- a/proxmox/virtual_environment_nodes_types.go +++ b/proxmox/virtual_environment_nodes_types.go @@ -17,6 +17,18 @@ type VirtualEnvironmentNodeExecuteRequestBody struct { Commands CustomNodeCommands `json:"commands" url:"commands"` } +// VirtualEnvironmentNodeGetTimeResponseBody contains the body from a node time zone get response. +type VirtualEnvironmentNodeGetTimeResponseBody struct { + Data *VirtualEnvironmentNodeGetTimeResponseData `json:"data,omitempty"` +} + +// VirtualEnvironmentNodeGetTimeResponseData contains the data from a node list response. +type VirtualEnvironmentNodeGetTimeResponseData struct { + LocalTime CustomTimestamp `json:"localtime"` + TimeZone string `json:"timezone"` + UTCTime CustomTimestamp `json:"time"` +} + // VirtualEnvironmentNodeListResponseBody contains the body from a node list response. type VirtualEnvironmentNodeListResponseBody struct { Data []*VirtualEnvironmentNodeListResponseData `json:"data,omitempty"` @@ -60,6 +72,11 @@ type VirtualEnvironmentNodeNetworkDeviceListResponseData struct { Type string `json:"type"` } +// VirtualEnvironmentNodeUpdateTimeRequestBody contains the body for a node time update request. +type VirtualEnvironmentNodeUpdateTimeRequestBody struct { + TimeZone string `json:"timezone" url:"timezone"` +} + // EncodeValues converts a CustomNodeCommands array to a JSON encoded URL vlaue. func (r CustomNodeCommands) EncodeValues(key string, v *url.Values) error { jsonArrayBytes, err := json.Marshal(r) diff --git a/proxmoxtf/data_source_virtual_environment_time.go b/proxmoxtf/data_source_virtual_environment_time.go new file mode 100644 index 00000000..3b562565 --- /dev/null +++ b/proxmoxtf/data_source_virtual_environment_time.go @@ -0,0 +1,80 @@ +/* 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 proxmoxtf + +import ( + "fmt" + "time" + + "github.com/hashicorp/terraform/helper/schema" +) + +const ( + mkDataSourceVirtualEnvironmentTimeLocalTime = "local_time" + mkDataSourceVirtualEnvironmentTimeNodeName = "node_name" + mkDataSourceVirtualEnvironmentTimeTimeZone = "time_zone" + mkDataSourceVirtualEnvironmentTimeUTCTime = "utc_time" +) + +func dataSourceVirtualEnvironmentTime() *schema.Resource { + return &schema.Resource{ + Schema: map[string]*schema.Schema{ + mkDataSourceVirtualEnvironmentTimeLocalTime: { + Type: schema.TypeString, + Description: "The local timestamp", + Computed: true, + }, + mkDataSourceVirtualEnvironmentTimeNodeName: { + Type: schema.TypeString, + Description: "The node name", + Required: true, + }, + mkDataSourceVirtualEnvironmentTimeTimeZone: { + Type: schema.TypeString, + Description: "The time zone", + Computed: true, + }, + mkDataSourceVirtualEnvironmentTimeUTCTime: { + Type: schema.TypeString, + Description: "The UTC timestamp", + Computed: true, + }, + }, + Read: dataSourceVirtualEnvironmentTimeRead, + } +} + +func dataSourceVirtualEnvironmentTimeRead(d *schema.ResourceData, m interface{}) error { + config := m.(providerConfiguration) + veClient, err := config.GetVEClient() + + if err != nil { + return err + } + + nodeName := d.Get(mkDataSourceVirtualEnvironmentTimeNodeName).(string) + nodeTime, err := veClient.GetNodeTime(nodeName) + + if err != nil { + return err + } + + localLocation, err := time.LoadLocation(nodeTime.TimeZone) + + if err != nil { + return err + } + + d.SetId(fmt.Sprintf("%s_time", nodeName)) + + localTimeOffset := time.Time(nodeTime.LocalTime).Sub(time.Now().UTC()) + localTime := time.Time(nodeTime.LocalTime).Add(-localTimeOffset).In(localLocation) + + d.Set(mkDataSourceVirtualEnvironmentTimeLocalTime, localTime.Format(time.RFC3339)) + d.Set(mkDataSourceVirtualEnvironmentTimeTimeZone, nodeTime.TimeZone) + d.Set(mkDataSourceVirtualEnvironmentTimeUTCTime, time.Time(nodeTime.UTCTime).Format(time.RFC3339)) + + return nil +} diff --git a/proxmoxtf/data_source_virtual_environment_time_test.go b/proxmoxtf/data_source_virtual_environment_time_test.go new file mode 100644 index 00000000..73337086 --- /dev/null +++ b/proxmoxtf/data_source_virtual_environment_time_test.go @@ -0,0 +1,42 @@ +/* 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 proxmoxtf + +import ( + "testing" + + "github.com/hashicorp/terraform/helper/schema" +) + +// TestDataSourceVirtualEnvironmentTimeInstantiation tests whether the DataSourceVirtualEnvironmentRoles instance can be instantiated. +func TestDataSourceVirtualEnvironmentTimeInstantiation(t *testing.T) { + s := dataSourceVirtualEnvironmentTime() + + if s == nil { + t.Fatalf("Cannot instantiate dataSourceVirtualEnvironmentTime") + } +} + +// TestDataSourceVirtualEnvironmentTimeSchema tests the dataSourceVirtualEnvironmentTime schema. +func TestDataSourceVirtualEnvironmentTimeSchema(t *testing.T) { + s := dataSourceVirtualEnvironmentTime() + + testRequiredArguments(t, s, []string{ + mkDataSourceVirtualEnvironmentTimeNodeName, + }) + + testComputedAttributes(t, s, []string{ + mkDataSourceVirtualEnvironmentTimeLocalTime, + mkDataSourceVirtualEnvironmentTimeTimeZone, + mkDataSourceVirtualEnvironmentTimeUTCTime, + }) + + testValueTypes(t, s, map[string]schema.ValueType{ + mkDataSourceVirtualEnvironmentTimeLocalTime: schema.TypeString, + mkDataSourceVirtualEnvironmentTimeNodeName: schema.TypeString, + mkDataSourceVirtualEnvironmentTimeTimeZone: schema.TypeString, + mkDataSourceVirtualEnvironmentTimeUTCTime: schema.TypeString, + }) +} diff --git a/proxmoxtf/provider.go b/proxmoxtf/provider.go index 2bdbfb21..7d2b514f 100644 --- a/proxmoxtf/provider.go +++ b/proxmoxtf/provider.go @@ -46,6 +46,7 @@ func Provider() *schema.Provider { "proxmox_virtual_environment_pools": dataSourceVirtualEnvironmentPools(), "proxmox_virtual_environment_role": dataSourceVirtualEnvironmentRole(), "proxmox_virtual_environment_roles": dataSourceVirtualEnvironmentRoles(), + "proxmox_virtual_environment_time": dataSourceVirtualEnvironmentTime(), "proxmox_virtual_environment_user": dataSourceVirtualEnvironmentUser(), "proxmox_virtual_environment_users": dataSourceVirtualEnvironmentUsers(), "proxmox_virtual_environment_version": dataSourceVirtualEnvironmentVersion(), @@ -59,6 +60,7 @@ func Provider() *schema.Provider { "proxmox_virtual_environment_hosts": resourceVirtualEnvironmentHosts(), "proxmox_virtual_environment_pool": resourceVirtualEnvironmentPool(), "proxmox_virtual_environment_role": resourceVirtualEnvironmentRole(), + "proxmox_virtual_environment_time": resourceVirtualEnvironmentTime(), "proxmox_virtual_environment_user": resourceVirtualEnvironmentUser(), "proxmox_virtual_environment_vm": resourceVirtualEnvironmentVM(), }, diff --git a/proxmoxtf/resource_virtual_environment_time.go b/proxmoxtf/resource_virtual_environment_time.go new file mode 100644 index 00000000..bdd11379 --- /dev/null +++ b/proxmoxtf/resource_virtual_environment_time.go @@ -0,0 +1,126 @@ +/* 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 proxmoxtf + +import ( + "fmt" + "time" + + "github.com/danitso/terraform-provider-proxmox/proxmox" + "github.com/hashicorp/terraform/helper/schema" +) + +const ( + mkResourceVirtualEnvironmentTimeLocalTime = "local_time" + mkResourceVirtualEnvironmentTimeNodeName = "node_name" + mkResourceVirtualEnvironmentTimeTimeZone = "time_zone" + mkResourceVirtualEnvironmentTimeUTCTime = "utc_time" +) + +func resourceVirtualEnvironmentTime() *schema.Resource { + return &schema.Resource{ + Schema: map[string]*schema.Schema{ + mkResourceVirtualEnvironmentTimeLocalTime: { + Type: schema.TypeString, + Description: "The local timestamp", + Computed: true, + }, + mkResourceVirtualEnvironmentTimeNodeName: { + Type: schema.TypeString, + Description: "The node name", + Required: true, + }, + mkResourceVirtualEnvironmentTimeTimeZone: { + Type: schema.TypeString, + Description: "The time zone", + Required: true, + }, + mkResourceVirtualEnvironmentTimeUTCTime: { + Type: schema.TypeString, + Description: "The UTC timestamp", + Computed: true, + }, + }, + Create: resourceVirtualEnvironmentTimeCreate, + Read: resourceVirtualEnvironmentTimeRead, + Update: resourceVirtualEnvironmentTimeUpdate, + Delete: resourceVirtualEnvironmentTimeDelete, + } +} + +func resourceVirtualEnvironmentTimeCreate(d *schema.ResourceData, m interface{}) error { + err := resourceVirtualEnvironmentTimeUpdate(d, m) + + if err != nil { + return err + } + + nodeName := d.Get(mkResourceVirtualEnvironmentTimeNodeName).(string) + + d.SetId(fmt.Sprintf("%s_time", nodeName)) + + return nil +} + +func resourceVirtualEnvironmentTimeRead(d *schema.ResourceData, m interface{}) error { + config := m.(providerConfiguration) + veClient, err := config.GetVEClient() + + if err != nil { + return err + } + + nodeName := d.Get(mkResourceVirtualEnvironmentTimeNodeName).(string) + nodeTime, err := veClient.GetNodeTime(nodeName) + + if err != nil { + return err + } + + localLocation, err := time.LoadLocation(nodeTime.TimeZone) + + if err != nil { + return err + } + + d.SetId(fmt.Sprintf("%s_time", nodeName)) + + localTimeOffset := time.Time(nodeTime.LocalTime).Sub(time.Now().UTC()) + localTime := time.Time(nodeTime.LocalTime).Add(-localTimeOffset).In(localLocation) + + d.Set(mkDataSourceVirtualEnvironmentTimeLocalTime, localTime.Format(time.RFC3339)) + d.Set(mkDataSourceVirtualEnvironmentTimeTimeZone, nodeTime.TimeZone) + d.Set(mkDataSourceVirtualEnvironmentTimeUTCTime, time.Time(nodeTime.UTCTime).Format(time.RFC3339)) + + return nil +} + +func resourceVirtualEnvironmentTimeUpdate(d *schema.ResourceData, m interface{}) error { + config := m.(providerConfiguration) + veClient, err := config.GetVEClient() + + if err != nil { + return err + } + + nodeName := d.Get(mkResourceVirtualEnvironmentTimeNodeName).(string) + timeZone := d.Get(mkResourceVirtualEnvironmentTimeTimeZone).(string) + + err = veClient.UpdateNodeTime(nodeName, &proxmox.VirtualEnvironmentNodeUpdateTimeRequestBody{ + TimeZone: timeZone, + }) + + if err != nil { + return err + } + + return resourceVirtualEnvironmentTimeRead(d, m) +} + +func resourceVirtualEnvironmentTimeDelete(d *schema.ResourceData, m interface{}) error { + d.SetId("") + + return nil +} diff --git a/proxmoxtf/resource_virtual_environment_time_test.go b/proxmoxtf/resource_virtual_environment_time_test.go new file mode 100644 index 00000000..fe4d9121 --- /dev/null +++ b/proxmoxtf/resource_virtual_environment_time_test.go @@ -0,0 +1,42 @@ +/* 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 proxmoxtf + +import ( + "testing" + + "github.com/hashicorp/terraform/helper/schema" +) + +// TestResourceVirtualEnvironmentTimeInstantiation tests whether the ResourceVirtualEnvironmentTime instance can be instantiated. +func TestResourceVirtualEnvironmentTimeInstantiation(t *testing.T) { + s := resourceVirtualEnvironmentTime() + + if s == nil { + t.Fatalf("Cannot instantiate resourceVirtualEnvironmentTime") + } +} + +// TestResourceVirtualEnvironmentTimeSchema tests the resourceVirtualEnvironmentTime schema. +func TestResourceVirtualEnvironmentTimeSchema(t *testing.T) { + s := resourceVirtualEnvironmentTime() + + testRequiredArguments(t, s, []string{ + mkResourceVirtualEnvironmentTimeNodeName, + mkResourceVirtualEnvironmentTimeTimeZone, + }) + + testComputedAttributes(t, s, []string{ + mkResourceVirtualEnvironmentTimeLocalTime, + mkResourceVirtualEnvironmentTimeUTCTime, + }) + + testValueTypes(t, s, map[string]schema.ValueType{ + mkResourceVirtualEnvironmentTimeLocalTime: schema.TypeString, + mkResourceVirtualEnvironmentTimeNodeName: schema.TypeString, + mkResourceVirtualEnvironmentTimeTimeZone: schema.TypeString, + mkResourceVirtualEnvironmentTimeUTCTime: schema.TypeString, + }) +} From c7bc49a7d21bd5b5f596893bfedda2c6c0325389 Mon Sep 17 00:00:00 2001 From: Dan Petersen Date: Sat, 18 Apr 2020 20:31:56 +0200 Subject: [PATCH 2/2] Update example --- example/resource_virtual_environment_time.tf | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/example/resource_virtual_environment_time.tf b/example/resource_virtual_environment_time.tf index 2dadf379..a5d1d76e 100644 --- a/example/resource_virtual_environment_time.tf +++ b/example/resource_virtual_environment_time.tf @@ -5,8 +5,8 @@ resource "proxmox_virtual_environment_time" "example" { output "resource_proxmox_virtual_environment_time" { value = "${map( - "local_time", data.proxmox_virtual_environment_time.example.local_time, - "time_zone", data.proxmox_virtual_environment_time.example.time_zone, - "utc_time", data.proxmox_virtual_environment_time.example.utc_time, + "local_time", proxmox_virtual_environment_time.example.local_time, + "time_zone", proxmox_virtual_environment_time.example.time_zone, + "utc_time", proxmox_virtual_environment_time.example.utc_time, )}" }