Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix Replicant Delete #76

Closed
wants to merge 3 commits into from
Closed
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
82 changes: 41 additions & 41 deletions ibm/service/power/ibm_pi_constants.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,21 +14,21 @@ const (
Arg_PlacementGroupName = "pi_placement_group_name"
Arg_SAP = "sap"
Arg_SAPProfileID = "pi_sap_profile_id"
Arg_SPPPlacementGroupID = "pi_spp_placement_group_id"
Arg_SPPPlacementGroupName = "pi_spp_placement_group_name"
Arg_SPPPlacementGroupPolicy = "pi_spp_placement_group_policy"
Arg_SharedProcessorPoolHostGroup = "pi_shared_processor_pool_host_group"
Arg_SharedProcessorPoolID = "pi_shared_processor_pool_id"
Arg_SharedProcessorPoolName = "pi_shared_processor_pool_name"
Arg_SharedProcessorPoolPlacementGroupID = "pi_shared_processor_pool_placement_group_id"
Arg_SharedProcessorPoolReservedCores = "pi_shared_processor_pool_reserved_cores"
Arg_SnapshotID = "pi_snapshot_id"
Arg_SPPPlacementGroupID = "pi_spp_placement_group_id"
Arg_SPPPlacementGroupName = "pi_spp_placement_group_name"
Arg_SPPPlacementGroupPolicy = "pi_spp_placement_group_policy"
Arg_StoragePool = "pi_storage_pool"
Arg_StorageType = "pi_storage_type"
Arg_VTL = "vtl"
Arg_VolumeGroupID = "pi_volume_group_id"
Arg_VolumeID = "pi_volume_id"
Arg_VolumeOnboardingID = "pi_volume_onboarding_id"
Arg_VTL = "vtl"

// Attributes
Attr_AccessConfig = "access_config"
Expand All @@ -42,14 +42,12 @@ const (
Attr_AvailabilityZone = "availability_zone"
Attr_AvailableCores = "available_cores"
Attr_AvailableIPCount = "available_ip_count"
Attr_BootVolumeID = "boot_volume_id"
Attr_Bootable = "bootable"
Attr_CIDR = "cidr"
Attr_CPUs = "cpus"
Attr_CRN = "crn"
Attr_BootVolumeID = "boot_volume_id"
Attr_Capabilities = "capabilities"
Attr_Capacity = "capacity"
Attr_Certified = "certified"
Attr_CIDR = "cidr"
Attr_ClassicEnabled = "classic_enabled"
Attr_CloudConnectionID = "cloud_connection_id"
Attr_CloudInstanceID = "cloud_instance_id"
Expand All @@ -64,18 +62,20 @@ const (
Attr_CopyType = "copy_type"
Attr_CoreMemoryRatio = "core_memory_ratio"
Attr_Cores = "cores"
Attr_CPUs = "cpus"
Attr_CreateTime = "create_time"
Attr_CreationDate = "creation_date"
Attr_CRN = "crn"
Attr_CyclePeriodSeconds = "cycle_period_seconds"
Attr_CyclingMode = "cycling_mode"
Attr_DNS = "dns"
Attr_Datacenters = "datacenters"
Attr_Default = "default"
Attr_DeploymentType = "deployment_type"
Attr_Description = "description"
Attr_DisasterRecoveryLocations = "disaster_recovery_locations"
Attr_DiskFormat = "disk_format"
Attr_DiskType = "disk_type"
Attr_DNS = "dns"
Attr_Enabled = "enabled"
Attr_Endianness = "endianness"
Attr_ExternalIP = "external_ip"
Expand All @@ -95,17 +95,17 @@ const (
Attr_HypervisorType = "hypervisor_type"
Attr_IBMIPAddress = "ibm_ip_address"
Attr_ID = "id"
Attr_IP = "ip"
Attr_IPAddress = "ipaddress"
Attr_IPOctet = "ipoctet"
Attr_ImageID = "image_id"
Attr_ImageInfo = "image_info"
Attr_ImageType = "image_type"
Attr_Images = "images"
Attr_ImageType = "image_type"
Attr_InputVolumes = "input_volumes"
Attr_Instances = "instances"
Attr_InstanceSnapshots = "instance_snapshots"
Attr_InstanceVolumes = "instance_volumes"
Attr_Instances = "instances"
Attr_IP = "ip"
Attr_IPAddress = "ipaddress"
Attr_IPOctet = "ipoctet"
Attr_IsActive = "is_active"
Attr_Jumbo = "jumbo"
Attr_Key = "key"
Expand All @@ -119,19 +119,18 @@ const (
Attr_Leases = "leases"
Attr_LicenseRepositoryCapacity = "license_repository_capacity"
Attr_Location = "location"
Attr_MTU = "mtu"
Attr_MacAddress = "macaddress"
Attr_MasterChangedVolumeName = "master_changed_volume_name"
Attr_MasterVolumeName = "master_volume_name"
Attr_Max = "max"
Attr_MaxAllocationSize = "max_allocation_size"
Attr_MaxAvailable = "max_available"
Attr_MaxCoresAvailable = "max_cores_available"
Attr_MaximumStorageAllocation = "max_storage_allocation"
Attr_MaxMem = "maxmem"
Attr_MaxMemoryAvailable = "max_memory_available"
Attr_MaxProc = "maxproc"
Attr_MaxVirtualCores = "max_virtual_cores"
Attr_MaximumStorageAllocation = "max_storage_allocation"
Attr_Members = "members"
Attr_Memory = "memory"
Attr_Message = "message"
Expand All @@ -141,6 +140,7 @@ const (
Attr_MinProc = "minproc"
Attr_MinVirtualCores = "min_virtual_cores"
Attr_MirroringState = "mirroring_state"
Attr_MTU = "mtu"
Attr_Name = "name"
Attr_NetworkID = "network_id"
Attr_NetworkName = "network_name"
Expand All @@ -149,9 +149,6 @@ const (
Attr_NumberOfVolumes = "number_of_volumes"
Attr_Onboardings = "onboardings"
Attr_OperatingSystem = "operating_system"
Attr_PVMInstanceID = "pvm_instance_id"
Attr_PVMInstances = "pvm_instances"
Attr_PVMSnapshots = "pvm_snapshots"
Attr_PercentComplete = "percent_complete"
Attr_PinPolicy = "pin_policy"
Attr_PlacementGroupID = "placement_group_id"
Expand All @@ -162,12 +159,15 @@ const (
Attr_Port = "port"
Attr_PortID = "portid"
Attr_PrimaryRole = "primary_role"
Attr_ProcType = "proctype"
Attr_Processors = "processors"
Attr_ProcType = "proctype"
Attr_ProfileID = "profile_id"
Attr_Profiles = "profiles"
Attr_Progress = "progress"
Attr_PublicIP = "public_ip"
Attr_PVMInstanceID = "pvm_instance_id"
Attr_PVMInstances = "pvm_instances"
Attr_PVMSnapshots = "pvm_snapshots"
Attr_Region = "region"
Attr_RemoteCopyID = "remote_copy_id"
Attr_RemoteCopyRelationshipNames = "remote_copy_relationship_names"
Expand All @@ -179,33 +179,33 @@ const (
Attr_ReservedCores = "reserved_cores"
Attr_ResultsOnboardedVolumes = "results_onboarded_volumes"
Attr_ResultsVolumeOnboardingFailures = "results_volume_onboarding_failures"
Attr_SPPPlacementGroups = "spp_placement_groups"
Attr_SSHKey = "ssh_key"
Attr_Shareable = "shreable"
Attr_SharedCoreRatio = "shared_core_ratio"
Attr_SharedProcessorPool = "shared_processor_pool"
Attr_SharedProcessorPoolID = "shared_processor_pool_id"
Attr_SharedProcessorPoolPlacementGroups = "spp_placement_groups"
Attr_SharedProcessorPoolStatus = "status"
Attr_SharedProcessorPools = "shared_processor_pools"
Attr_SharedProcessorPoolName = "name"
Attr_SharedProcessorPoolHostID = "host_id"
Attr_SharedProcessorPoolReservedCores = "reserved_cores"
Attr_SharedProcessorPoolAvailableCores = "available_cores"
Attr_SharedProcessorPoolAllocatedCores = "allocated_cores"
Attr_SharedProcessorPoolStatusDetail = "status_detail"
Attr_SharedProcessorPoolInstances = "instances"
Attr_SharedProcessorPoolInstanceCpus = "cpus"
Attr_SharedProcessorPoolInstanceUncapped = "uncapped"
Attr_SharedProcessorPoolAvailableCores = "available_cores"
Attr_SharedProcessorPoolHostID = "host_id"
Attr_SharedProcessorPoolID = "shared_processor_pool_id"
Attr_SharedProcessorPoolInstanceAvailabilityZone = "availability_zone"
Attr_SharedProcessorPoolInstanceCpus = "cpus"
Attr_SharedProcessorPoolInstanceId = "id"
Attr_SharedProcessorPoolInstanceMemory = "memory"
Attr_SharedProcessorPoolInstanceName = "name"
Attr_SharedProcessorPoolInstances = "instances"
Attr_SharedProcessorPoolInstanceStatus = "status"
Attr_SharedProcessorPoolInstanceUncapped = "uncapped"
Attr_SharedProcessorPoolInstanceVcpus = "vcpus"
Attr_SharedProcessorPoolName = "name"
Attr_SharedProcessorPoolPlacementGroups = "spp_placement_groups"
Attr_SharedProcessorPoolReservedCores = "reserved_cores"
Attr_SharedProcessorPools = "shared_processor_pools"
Attr_SharedProcessorPoolStatus = "status"
Attr_SharedProcessorPoolStatusDetail = "status_detail"
Attr_Size = "size"
Attr_SourceVolumeName = "source_volume_name"
Attr_Speed = "speed"
Attr_SPPPlacementGroups = "spp_placement_groups"
Attr_SSHKey = "ssh_key"
Attr_StartTime = "start_time"
Attr_State = "state"
Attr_Status = "status"
Expand All @@ -217,10 +217,10 @@ const (
Attr_StorageType = "storage_type"
Attr_StorageTypesCapacity = "storage_types_capacity"
Attr_Synchronized = "synchronized"
Attr_SysType = "systype"
Attr_SystemPoolName = "system_pool_name"
Attr_SystemPools = "system_pools"
Attr_Systems = "systems"
Attr_SysType = "systype"
Attr_TargetVolumeName = "target_volume_name"
Attr_TenantID = "tenant_id"
Attr_TenantName = "tenant_name"
Expand All @@ -231,24 +231,24 @@ const (
Attr_TotalSSDStorageConsumed = "total_ssd_storage_consumed"
Attr_TotalStandardStorageConsumed = "total_standard_storage_consumed"
Attr_Type = "type"
Attr_URL = "url"
Attr_Uncapped = "uncapped"
Attr_URL = "url"
Attr_UsedIPCount = "used_ip_count"
Attr_UsedIPPercent = "used_ip_percent"
Attr_UserIPAddress = "user_ip_address"
Attr_VCPUs = "vcpus"
Attr_VLanID = "vlan_id"
Attr_VPCCRNs = "vpc_crns"
Attr_VPCEnabled = "vpc_enabled"
Attr_VirtualCoresAssigned = "virtual_cores_assigned"
Attr_VLanID = "vlan_id"
Attr_VolumeGroupName = "volume_group_name"
Attr_VolumeGroups = "volume_groups"
Attr_VolumeIDs = "volume_ids"
Attr_VolumePool = "volume_pool"
Attr_VolumeSnapshots = "volume_snapshots"
Attr_Volumes = "volumes"
Attr_WWN = "wwn"
Attr_VolumeSnapshots = "volume_snapshots"
Attr_VPCCRNs = "vpc_crns"
Attr_VPCEnabled = "vpc_enabled"
Attr_Workspaces = "workspaces"
Attr_WWN = "wwn"

// TODO: Second Half Cleanup, remove extra variables

Expand Down
42 changes: 22 additions & 20 deletions ibm/service/power/resource_ibm_pi_instance.go
Original file line number Diff line number Diff line change
Expand Up @@ -405,7 +405,13 @@ func resourceIBMPIInstanceCreate(ctx context.Context, d *schema.ResourceData, me
instanceReadyStatus = r.(string)
}

d.SetId(fmt.Sprintf("%s/%s", cloudInstanceID, *(*pvmList)[0].PvmInstanceID))
// id is a combination of the cloud instance id and all of the pvm instance ids
id := cloudInstanceID
for _, pvm := range *pvmList {
id += "/" + *pvm.PvmInstanceID
}

d.SetId(id)

for _, s := range *pvmList {
if dt, ok := d.GetOk(PIInstanceDeploymentType); ok && dt.(string) == "VMNoStorage" {
Expand All @@ -419,7 +425,6 @@ func resourceIBMPIInstanceCreate(ctx context.Context, d *schema.ResourceData, me
return diag.FromErr(err)
}
}

}

// If Storage Pool Affinity is given as false we need to update the vm instance.
Expand Down Expand Up @@ -454,7 +459,6 @@ func resourceIBMPIInstanceCreate(ctx context.Context, d *schema.ResourceData, me
}

return resourceIBMPIInstanceRead(ctx, d, meta)

}

func resourceIBMPIInstanceRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
Expand All @@ -463,10 +467,9 @@ func resourceIBMPIInstanceRead(ctx context.Context, d *schema.ResourceData, meta
return diag.FromErr(err)
}

cloudInstanceID, instanceID, err := splitID(d.Id())
if err != nil {
return diag.FromErr(err)
}
idArr := strings.Split(d.Id(), "/")
ismirlia marked this conversation as resolved.
Show resolved Hide resolved
cloudInstanceID := idArr[0]
instanceID := idArr[1]

client := st.NewIBMPIInstanceClient(ctx, sess, cloudInstanceID)
powervmdata, err := client.Get(instanceID)
Expand Down Expand Up @@ -840,20 +843,19 @@ func resourceIBMPIInstanceDelete(ctx context.Context, d *schema.ResourceData, me
return diag.FromErr(err)
}

cloudInstanceID, instanceID, err := splitID(d.Id())
if err != nil {
return diag.FromErr(err)
}

client := st.NewIBMPIInstanceClient(ctx, sess, cloudInstanceID)
err = client.Delete(instanceID)
if err != nil {
return diag.FromErr(err)
}
idArr := strings.Split(d.Id(), "/")
cloudInstanceID := idArr[0]
for _, instanceID := range idArr[1:] {
client := st.NewIBMPIInstanceClient(ctx, sess, cloudInstanceID)
err = client.Delete(instanceID)
if err != nil {
return diag.FromErr(err)
}

_, err = isWaitForPIInstanceDeleted(ctx, client, instanceID)
if err != nil {
return diag.FromErr(err)
_, err = isWaitForPIInstanceDeleted(ctx, client, instanceID)
if err != nil {
return diag.FromErr(err)
}
}

d.SetId("")
Expand Down
4 changes: 2 additions & 2 deletions website/docs/r/pi_instance.html.markdown
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,7 @@ In addition to all argument reference list, you can access the following attribu

- `health_status` - (String) The health status of the VM.
- `ibmi_rds` - (Boolean) IBM i Rational Dev Studio.
- `id` - (String) The unique identifier of the instance. The ID is composed of `<power_instance_id>/<instance_id>`.
- `id` - (String) The unique identifier of the instance. The ID is composed of `<cloud_instance_id>/<instance_id_1>/.../<instance_id_n>`.
- `instance_id` - (String) The unique identifier of the instance.
- `max_processors`- (Float) The maximum number of processors that can be allocated to the instance with shutting down or rebooting the `LPAR`.
- `max_virtual_cores` - (Integer) The maximum number of virtual cores.
Expand All @@ -135,7 +135,7 @@ In addition to all argument reference list, you can access the following attribu
- `status` - (String) The status of the instance.
## Import

The `ibm_pi_instance` can be imported using `power_instance_id` and `instance_id`.
The `ibm_pi_instance` can be imported using `cloud_instance_id` and `instance_id`.

**Example**

Expand Down
Loading