diff --git a/go.mod b/go.mod index fa539f9a5e9..b1ee8ef5826 100644 --- a/go.mod +++ b/go.mod @@ -7,7 +7,7 @@ toolchain go1.23.4 require ( github.com/IBM-Cloud/bluemix-go v0.0.0-20241117121028-a3be206688b3 github.com/IBM-Cloud/container-services-go-sdk v0.0.0-20240725064144-454a2ae23113 - github.com/IBM-Cloud/power-go-client v1.9.0 + github.com/IBM-Cloud/power-go-client v1.10.0 github.com/IBM/apigateway-go-sdk v0.0.0-20210714141226-a5d5d49caaca github.com/IBM/appconfiguration-go-admin-sdk v0.4.4 github.com/IBM/appid-management-go-sdk v0.0.0-20210908164609-dd0e0eaf732f diff --git a/go.sum b/go.sum index 509116fb9dd..a7c74d138cb 100644 --- a/go.sum +++ b/go.sum @@ -95,8 +95,14 @@ github.com/IBM-Cloud/bluemix-go v0.0.0-20241117121028-a3be206688b3/go.mod h1:/7h github.com/IBM-Cloud/container-services-go-sdk v0.0.0-20240725064144-454a2ae23113 h1:f2Erqfea1dKpaTFagTJM6W/wnD3JGq/Vn9URh8nuRwk= github.com/IBM-Cloud/container-services-go-sdk v0.0.0-20240725064144-454a2ae23113/go.mod h1:xUQL9SGAjoZFd4GNjrjjtEpjpkgU7RFXRyHesbKTjiY= github.com/IBM-Cloud/ibm-cloud-cli-sdk v0.5.3/go.mod h1:RiUvKuHKTBmBApDMUQzBL14pQUGKcx/IioKQPIcRQjs= +github.com/IBM-Cloud/power-go-client v1.9.0-beta7 h1:ePYmNBoRsPBojv1mLRPLMgzRruExuop0twNx0UIwg+I= +github.com/IBM-Cloud/power-go-client v1.9.0-beta7/go.mod h1:UDyXeIKEp6r7yWUXYu3r0ZnFSlNZ2YeQTHwM2Tmlgv0= github.com/IBM-Cloud/power-go-client v1.9.0 h1:nnErpb/7TJQe8P7OfIlJPhSJVq5oyuCJlMje9Ry6XEY= github.com/IBM-Cloud/power-go-client v1.9.0/go.mod h1:UDyXeIKEp6r7yWUXYu3r0ZnFSlNZ2YeQTHwM2Tmlgv0= +github.com/IBM-Cloud/power-go-client v1.10.0-beta7 h1:nxAuY/0axYwOq2jb2jVZqu3nmPP/7/sFC6HCi8RhMUA= +github.com/IBM-Cloud/power-go-client v1.10.0-beta7/go.mod h1:UDyXeIKEp6r7yWUXYu3r0ZnFSlNZ2YeQTHwM2Tmlgv0= +github.com/IBM-Cloud/power-go-client v1.10.0 h1:yBUHWwvNBmLkWpbZJQJEXoxBa1Dm+eJgMSbk9ljmXUU= +github.com/IBM-Cloud/power-go-client v1.10.0/go.mod h1:UDyXeIKEp6r7yWUXYu3r0ZnFSlNZ2YeQTHwM2Tmlgv0= github.com/IBM-Cloud/softlayer-go v1.0.5-tf h1:koUAyF9b6X78lLLruGYPSOmrfY2YcGYKOj/Ug9nbKNw= github.com/IBM-Cloud/softlayer-go v1.0.5-tf/go.mod h1:6HepcfAXROz0Rf63krk5hPZyHT6qyx2MNvYyHof7ik4= github.com/IBM/apigateway-go-sdk v0.0.0-20210714141226-a5d5d49caaca h1:crniVcf+YcmgF03NmmfonXwSQ73oJF+IohFYBwknMxs= diff --git a/ibm/service/power/data_source_ibm_pi_instance.go b/ibm/service/power/data_source_ibm_pi_instance.go index bb2f9b4e788..2fd3a6c8e44 100644 --- a/ibm/service/power/data_source_ibm_pi_instance.go +++ b/ibm/service/power/data_source_ibm_pi_instance.go @@ -135,15 +135,14 @@ func DataSourceIBMPIInstance() *schema.Resource { Description: "The MAC address of the instance.", Type: schema.TypeString, }, - Attr_Macaddress: { + Attr_NetworkID: { Computed: true, - Deprecated: "Deprecated, use mac_address instead", - Description: "The MAC address of the instance.", + Description: "The network ID of the instance.", Type: schema.TypeString, }, - Attr_NetworkID: { + Attr_NetworkInterfaceID: { Computed: true, - Description: "The network ID of the instance.", + Description: "ID of the network interface.", Type: schema.TypeString, }, Attr_NetworkName: { @@ -151,6 +150,18 @@ func DataSourceIBMPIInstance() *schema.Resource { Description: "The network name of the instance.", Type: schema.TypeString, }, + Attr_NetworkSecurityGroupIDs: { + Computed: true, + Description: "IDs of the network necurity groups that the network interface is a member of.", + Elem: &schema.Schema{Type: schema.TypeString}, + Type: schema.TypeSet, + }, + Attr_NetworkSecurityGroupsHref: { + Computed: true, + Description: "Links to the network security groups that the network interface is a member of.", + Elem: &schema.Schema{Type: schema.TypeString}, + Type: schema.TypeList, + }, Attr_Type: { Computed: true, Description: "The type of the network.", diff --git a/ibm/service/power/data_source_ibm_pi_instance_ip.go b/ibm/service/power/data_source_ibm_pi_instance_ip.go index d32c38730d6..a37aa57456f 100644 --- a/ibm/service/power/data_source_ibm_pi_instance_ip.go +++ b/ibm/service/power/data_source_ibm_pi_instance_ip.go @@ -5,7 +5,6 @@ package power import ( "context" - "log" "net" "strconv" @@ -56,14 +55,14 @@ func DataSourceIBMPIInstanceIP() *schema.Resource { Description: "The IP octet of the network that is attached to this instance.", Type: schema.TypeString, }, - Attr_Macaddress: { + Attr_MacAddress: { Computed: true, - Deprecated: "Deprecated, use mac_address instead", Description: "The MAC address of the network that is attached to this instance.", Type: schema.TypeString, }, - Attr_MacAddress: { + Attr_Macaddress: { Computed: true, + Deprecated: "Deprecated, use mac_address instead", Description: "The MAC address of the network that is attached to this instance.", Type: schema.TypeString, }, @@ -72,6 +71,23 @@ func DataSourceIBMPIInstanceIP() *schema.Resource { Description: "ID of the network.", Type: schema.TypeString, }, + Attr_NetworkInterfaceID: { + Computed: true, + Description: "ID of the network interface.", + Type: schema.TypeString, + }, + Attr_NetworkSecurityGroupIDs: { + Computed: true, + Description: "IDs of the network necurity groups that the network interface is a member of.", + Elem: &schema.Schema{Type: schema.TypeString}, + Type: schema.TypeSet, + }, + Attr_NetworkSecurityGroupsHref: { + Computed: true, + Description: "Links to the network security groups that the network interface is a member of.", + Elem: &schema.Schema{Type: schema.TypeString}, + Type: schema.TypeList, + }, Attr_Type: { Computed: true, Description: "The type of the network that is attached to this instance.", @@ -98,19 +114,25 @@ func dataSourceIBMPIInstancesIPRead(ctx context.Context, d *schema.ResourceData, for _, network := range powervmdata.Networks { if network.NetworkName == networkName { - log.Printf("Printing the ip %s", network.IPAddress) d.SetId(network.NetworkID) d.Set(Attr_ExternalIP, network.ExternalIP) d.Set(Attr_IP, network.IPAddress) - d.Set(Attr_Macaddress, network.MacAddress) d.Set(Attr_MacAddress, network.MacAddress) + d.Set(Attr_Macaddress, network.MacAddress) d.Set(Attr_NetworkID, network.NetworkID) + d.Set(Attr_NetworkInterfaceID, network.NetworkInterfaceID) d.Set(Attr_Type, network.Type) IPObject := net.ParseIP(network.IPAddress).To4() if len(IPObject) > 0 { d.Set(Attr_IPOctet, strconv.Itoa(int(IPObject[3]))) } + if len(network.NetworkSecurityGroupIDs) > 0 { + d.Set(Attr_NetworkSecurityGroupIDs, network.NetworkSecurityGroupIDs) + } + if len(network.NetworkSecurityGroupsHref) > 0 { + d.Set(Attr_NetworkSecurityGroupsHref, network.NetworkSecurityGroupsHref) + } return nil } } diff --git a/ibm/service/power/data_source_ibm_pi_instances.go b/ibm/service/power/data_source_ibm_pi_instances.go index 3eaf0534464..235ce106909 100644 --- a/ibm/service/power/data_source_ibm_pi_instances.go +++ b/ibm/service/power/data_source_ibm_pi_instances.go @@ -111,15 +111,14 @@ func DataSourceIBMPIInstances() *schema.Resource { Description: "The MAC address of the instance.", Type: schema.TypeString, }, - Attr_Macaddress: { + Attr_NetworkID: { Computed: true, - Deprecated: "Deprecated, use mac_address instead", - Description: "The MAC address of the instance.", + Description: "The network ID of the instance.", Type: schema.TypeString, }, - Attr_NetworkID: { + Attr_NetworkInterfaceID: { Computed: true, - Description: "The network ID of the instance.", + Description: "ID of the network interface.", Type: schema.TypeString, }, Attr_NetworkName: { @@ -127,6 +126,18 @@ func DataSourceIBMPIInstances() *schema.Resource { Description: "The network name of the instance.", Type: schema.TypeString, }, + Attr_NetworkSecurityGroupIDs: { + Computed: true, + Description: "IDs of the network necurity groups that the network interface is a member of.", + Elem: &schema.Schema{Type: schema.TypeString}, + Type: schema.TypeSet, + }, + Attr_NetworkSecurityGroupsHref: { + Computed: true, + Description: "Links to the network security groups that the network interface is a member of.", + Elem: &schema.Schema{Type: schema.TypeString}, + Type: schema.TypeList, + }, Attr_Type: { Computed: true, Description: "The type of the network.", @@ -325,11 +336,18 @@ func flattenPvmInstanceNetworks(list []*models.PVMInstanceNetwork) (networks []m p := make(map[string]interface{}) p[Attr_ExternalIP] = pvmip.ExternalIP p[Attr_IP] = pvmip.IPAddress - p[Attr_Macaddress] = pvmip.MacAddress p[Attr_MacAddress] = pvmip.MacAddress p[Attr_NetworkID] = pvmip.NetworkID + p[Attr_NetworkInterfaceID] = pvmip.NetworkInterfaceID p[Attr_NetworkName] = pvmip.NetworkName p[Attr_Type] = pvmip.Type + if len(pvmip.NetworkSecurityGroupIDs) > 0 { + p[Attr_NetworkSecurityGroupIDs] = pvmip.NetworkSecurityGroupIDs + } + if len(pvmip.NetworkSecurityGroupsHref) > 0 { + p[Attr_NetworkSecurityGroupsHref] = pvmip.NetworkSecurityGroupsHref + } + networks[i] = p } return networks diff --git a/ibm/service/power/ibm_pi_constants.go b/ibm/service/power/ibm_pi_constants.go index 3a02e40395f..e356321d49e 100644 --- a/ibm/service/power/ibm_pi_constants.go +++ b/ibm/service/power/ibm_pi_constants.go @@ -344,12 +344,14 @@ const ( Attr_NetworkInterfaceID = "network_interface_id" Attr_NetworkName = "network_name" Attr_NetworkPeers = "network_peers" - Attr_NetworkPorts = "network_ports" Attr_NetworkPortID = "network_port_id" + Attr_NetworkPorts = "network_ports" Attr_Networks = "networks" Attr_NetworkSecurityGroupID = "network_security_group_id" + Attr_NetworkSecurityGroupIDs = "network_security_group_ids" Attr_NetworkSecurityGroupMemberID = "network_security_group_member_id" Attr_NetworkSecurityGroups = "network_security_groups" + Attr_NetworkSecurityGroupsHref = "network_security_groups_href" Attr_NumberOfVolumes = "number_of_volumes" Attr_OnboardingID = "onboarding_id" Attr_Onboardings = "onboardings" diff --git a/ibm/service/power/resource_ibm_pi_instance.go b/ibm/service/power/resource_ibm_pi_instance.go index ffacde57a42..13eb911eea4 100644 --- a/ibm/service/power/resource_ibm_pi_instance.go +++ b/ibm/service/power/resource_ibm_pi_instance.go @@ -177,29 +177,47 @@ func ResourceIBMPIInstance() *schema.Resource { Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ Attr_IPAddress: { - Type: schema.TypeString, - Optional: true, Computed: true, + Optional: true, + Type: schema.TypeString, }, Attr_MacAddress: { - Type: schema.TypeString, Computed: true, + Type: schema.TypeString, }, Attr_NetworkID: { - Type: schema.TypeString, Required: true, + Type: schema.TypeString, + }, + Attr_NetworkInterfaceID: { + Computed: true, + Description: "ID of the network interface.", + Type: schema.TypeString, }, Attr_NetworkName: { - Type: schema.TypeString, Computed: true, + Type: schema.TypeString, + }, + Attr_NetworkSecurityGroupIDs: { + Computed: true, + Description: "Network security groups that the network interface is a member of. There is a limit of 1 network security group in the array. If not specified, default network security group is used.", + Elem: &schema.Schema{Type: schema.TypeString}, + Optional: true, + Type: schema.TypeSet, + }, + Attr_NetworkSecurityGroupsHref: { + Computed: true, + Description: "Links to the network security groups that the network interface is a member of.", + Elem: &schema.Schema{Type: schema.TypeString}, + Type: schema.TypeList, }, Attr_Type: { - Type: schema.TypeString, Computed: true, + Type: schema.TypeString, }, Attr_ExternalIP: { - Type: schema.TypeString, Computed: true, + Type: schema.TypeString, }, }, }, @@ -622,12 +640,19 @@ func resourceIBMPIInstanceRead(ctx context.Context, d *schema.ResourceData, meta for _, n := range powervmdata.Networks { if n != nil { v := map[string]interface{}{ - Attr_IPAddress: n.IPAddress, - Attr_MacAddress: n.MacAddress, - Attr_NetworkID: n.NetworkID, - Attr_NetworkName: n.NetworkName, - Attr_Type: n.Type, - Attr_ExternalIP: n.ExternalIP, + Attr_ExternalIP: n.ExternalIP, + Attr_IPAddress: n.IPAddress, + Attr_MacAddress: n.MacAddress, + Attr_NetworkID: n.NetworkID, + Attr_NetworkInterfaceID: n.NetworkInterfaceID, + Attr_NetworkName: n.NetworkName, + Attr_Type: n.Type, + } + if len(n.NetworkSecurityGroupIDs) > 0 { + v[Attr_NetworkSecurityGroupIDs] = n.NetworkSecurityGroupIDs + } + if len(n.NetworkSecurityGroupsHref) > 0 { + v[Attr_NetworkSecurityGroupsHref] = n.NetworkSecurityGroupsHref } networksMap = append(networksMap, v) } @@ -1512,8 +1537,9 @@ func expandPVMNetworks(networks []interface{}) []*models.PVMInstanceAddNetwork { for _, v := range networks { network := v.(map[string]interface{}) pvmInstanceNetwork := &models.PVMInstanceAddNetwork{ - IPAddress: network[Attr_IPAddress].(string), - NetworkID: flex.PtrToString(network[Attr_NetworkID].(string)), + IPAddress: network[Attr_IPAddress].(string), + NetworkID: flex.PtrToString(network[Attr_NetworkID].(string)), + NetworkSecurityGroupIDs: flex.ExpandStringList((network[Attr_NetworkSecurityGroupIDs].(*schema.Set)).List()), } pvmNetworks = append(pvmNetworks, pvmInstanceNetwork) } @@ -1728,7 +1754,7 @@ func createPVMInstance(d *schema.ResourceData, client *instance.IBMPIInstanceCli SysType: systype, ImageID: flex.PtrToString(imageid), ProcType: flex.PtrToString(processortype), - Replicants: replicants, + Replicants: &replicants, UserData: encodeBase64(userData), ReplicantNamingScheme: flex.PtrToString(replicationNamingScheme), ReplicantAffinityPolicy: flex.PtrToString(replicationpolicy), diff --git a/ibm/service/power/resource_ibm_pi_instance_test.go b/ibm/service/power/resource_ibm_pi_instance_test.go index 73a65937c71..4ff0ee5cd67 100644 --- a/ibm/service/power/resource_ibm_pi_instance_test.go +++ b/ibm/service/power/resource_ibm_pi_instance_test.go @@ -301,9 +301,9 @@ func testAccCheckIBMPIInstanceUserTagsConfig(name, instanceHealthStatus string, func testAccCheckIBMPIInstanceStorageConnectionConfig(name, instanceHealthStatus string) string { return fmt.Sprintf(` resource "ibm_pi_volume" "power_volume" { - pi_cloud_instance_id = "%[1]s" - pi_volume_size = 1 - pi_volume_name = "%[2]s" + pi_cloud_instance_id = "%[1]s" + pi_volume_size = 1 + pi_volume_name = "%[2]s" pi_volume_type = "tier3" } resource "ibm_pi_instance" "power_instance" { @@ -323,6 +323,50 @@ func testAccCheckIBMPIInstanceStorageConnectionConfig(name, instanceHealthStatus } `, acc.Pi_cloud_instance_id, name, acc.Pi_image, acc.Pi_network_name, acc.Pi_storage_connection, instanceHealthStatus) } +func testAccCheckIBMPIInstanceNetworkSecurityGroupConfig(name, instanceHealthStatus string) string { + return fmt.Sprintf(` + resource "ibm_pi_volume" "power_volume" { + pi_cloud_instance_id = "%[1]s" + pi_volume_size = 1 + pi_volume_name = "%[2]s" + pi_volume_type = "tier3" + } + resource "ibm_pi_instance" "power_instance" { + pi_cloud_instance_id = "%[1]s" + pi_memory = "2" + pi_processors = "0.25" + pi_instance_name = "%[2]s" + pi_proc_type = "shared" + pi_image_id = "%[3]s" + pi_sys_type = "s922" + pi_network { + network_id = "%[4]s" + network_security_group_ids = ["%[6]s"] + } + pi_health_status = "%[5]s" + pi_volume_ids = [ibm_pi_volume.power_volume.volume_id] + } + `, acc.Pi_cloud_instance_id, name, acc.Pi_image, acc.Pi_network_name, instanceHealthStatus, acc.Pi_network_security_group_id) +} +func TestAccIBMPIInstanceNetworkSecurityGroup(t *testing.T) { + instanceRes := "ibm_pi_instance.power_instance" + name := fmt.Sprintf("tf-pi-instance-%d", acctest.RandIntRange(10, 100)) + resource.Test(t, resource.TestCase{ + PreCheck: func() { acc.TestAccPreCheck(t) }, + Providers: acc.TestAccProviders, + CheckDestroy: testAccCheckIBMPIInstanceDestroy, + Steps: []resource.TestStep{ + { + Config: testAccCheckIBMPIInstanceNetworkSecurityGroupConfig(name, power.OK), + Check: resource.ComposeTestCheckFunc( + testAccCheckIBMPIInstanceExists(instanceRes), + resource.TestCheckResourceAttr(instanceRes, "pi_instance_name", name), + resource.TestCheckResourceAttr(instanceRes, "pi_network.0.network_security_group_ids.0", acc.Pi_network_security_group_id), + ), + }, + }, + }) +} func testAccCheckIBMPIInstanceDestroy(s *terraform.State) error { sess, err := acc.TestAccProvider.Meta().(conns.ClientSession).IBMPISession() if err != nil { diff --git a/website/docs/d/pi_instance.html.markdown b/website/docs/d/pi_instance.html.markdown index 2d25bae4d01..89cdfcb5e13 100644 --- a/website/docs/d/pi_instance.html.markdown +++ b/website/docs/d/pi_instance.html.markdown @@ -78,10 +78,12 @@ In addition to all argument reference list, you can access the following attribu Nested scheme for `networks`: - `external_ip` - (String) The external IP address of the instance. - `ip` - (String) The IP address of the instance. - - `macaddress` - (String) The MAC address of the instance. Deprecated please use `mac_address` instead. - `mac_address` - (String) The MAC address of the instance. - `network_id` - (String) The network ID of the instance. + - `network_interface_id` - (String) ID of the network interface. - `network_name` - (String) The network name of the instance. + - `network_security_group_ids` - (List) IDs of the network necurity groups that the network interface is a member of. + - `network_security_groups_href` - (List) Links to the network security groups that the network interface is a member of. - `type` - (String) The type of the network. - `pin_policy` - (String) The pinning policy of the instance. diff --git a/website/docs/d/pi_instance_ip.html.markdown b/website/docs/d/pi_instance_ip.html.markdown index adb3e4f3fb9..4e965aa7935 100644 --- a/website/docs/d/pi_instance_ip.html.markdown +++ b/website/docs/d/pi_instance_ip.html.markdown @@ -55,4 +55,7 @@ In addition to all argument reference list, you can access the following attribu - `mac_address` - (String) The MAC address of the network that is attached to this instance. - `macaddress` - (String) The MAC address of the network that is attached to this instance. Deprecated please use `mac_address` instead. - `network_id` - (String) ID of the network. +- `network_interface_id` - (String) ID of the network interface. +- `network_security_group_ids` - (List) IDs of the network necurity groups that the network interface is a member of. +- `network_security_groups_href` - (List) Links to the network security groups that the network interface is a member of. - `type` - (String) The type of the network that is attached to this instance. diff --git a/website/docs/d/pi_instances.html.markdown b/website/docs/d/pi_instances.html.markdown index d3914c0102a..b0fa2fa7f21 100644 --- a/website/docs/d/pi_instances.html.markdown +++ b/website/docs/d/pi_instances.html.markdown @@ -70,10 +70,12 @@ In addition to all argument reference list, you can access the following attribu Nested scheme for `networks`: - `external_ip` - (String) The external IP address of the instance. - `ip` - (String) The IP address of the instance. - - `macaddress` - (String) The MAC address of the instance. Deprecated please use `mac_address` instead. - `mac_address` - (String) The MAC address of the instance. - `network_id` - (String) The network ID of the instance. + - `network_interface_id` - (String) ID of the network interface. - `network_name` - (String) The network name of the instance. + - `network_security_group_ids` - (List) IDs of the network necurity groups that the network interface is a member of. + - `network_security_groups_href` - (List) Links to the network security groups that the network interface is a member of. - `type` - (String) The type of the network. - `pin_policy` - (String) The pinning policy of the instance. @@ -96,4 +98,3 @@ In addition to all argument reference list, you can access the following attribu Nested scheme for `virtual_serial_number`: - `description` - (String) Description for virtual serial number. - `serial` - (String) Virtual serial number. - diff --git a/website/docs/r/pi_instance.html.markdown b/website/docs/r/pi_instance.html.markdown index 22dc544e37a..726bad93d2f 100644 --- a/website/docs/r/pi_instance.html.markdown +++ b/website/docs/r/pi_instance.html.markdown @@ -96,8 +96,9 @@ Review the argument references that you can specify for your resource. - `pi_network` - (Required, List of Map) List of one or more networks to attach to the instance. The `pi_network` block supports: - - `network_id` - (String) The network ID to assign to the instance. - - `ip_address` - (String) The ip address to be used of this network. + - `ip_address` - (Optional, String) The ip address to be used of this network. + - `network_id` - (Required, String) The network ID to assign to the instance. + - `network_security_group_ids` - (Optional, List) The Network security groups that the network interface is a member of. There is a limit of 1 network security group in the array. If not specified, default network security group is used. - `pi_pin_policy` - (Optional, String) Select the pinning policy for your Power Systems Virtual Server instance. Supported values are `soft`, `hard`, and `none`. **Note** You can choose to soft pin (`soft`) or hard pin (`hard`) a virtual server to the physical host where it runs. When you soft pin an instance for high availability, the instance automatically migrates back to the original host once the host is back to its operating state. If the instance has a licensing restriction with the host, the hard pin option restricts the movement of the instance during remote restart, automated remote restart, DRO, and live partition migration. The default pinning policy is `none`. - `pi_placement_group_id` - (Optional, String) The ID of the placement group that the instance is in or empty quotes `""` to indicate it is not in a placement group. The meta-argument `count` and a `pi_replicants` cannot be used when specifying a placement group ID. Instances provisioning in the same placement group must be provisioned one at a time; however, to provision multiple instances on the same host or different hosts then use `pi_replicants` and `pi_replication_policy` instead of `pi_placement_group_id`. - `pi_processors` - (Optional, Float) The number of vCPUs to assign to the VM as visible within the guest Operating System. @@ -158,12 +159,15 @@ In addition to all argument reference list, you can access the following attribu - `pin_policy` - (String) The pinning policy of the instance. - `pi_network` - (List of Map) - A list of networks that are assigned to the instance. Nested scheme for `pi_network`: + - `external_ip` - (String) The external IP address of the network. - `ip_address` - (String) The IP address of the network. - `mac_address` - (String) The MAC address of the network. - `network_id` - (String) The ID of the network. + - `network_interface_id` - (String) ID of the network interface. - `network_name` - (String) The name of the network. + - `network_security_group_ids` - (List) IDs of the network necurity groups that the network interface is a member of. + - `network_security_groups_href` - (List) Links to the network security groups that the network interface is a member of. - `type` - (String) The type of network. - - `external_ip` - (String) The external IP address of the network. - `progress` - (Float) - Specifies the overall progress of the instance deployment process in percentage. - `shared_processor_pool_id` - (String) The ID of the shared processor pool for the instance. - `status` - (String) The status of the instance.