Skip to content

Commit

Permalink
Adding processor pool setup and validation with VM
Browse files Browse the repository at this point in the history
Signed-off-by: Hiro Miyamoto <miyamotoh@us.ibm.com>
  • Loading branch information
miyamotoh committed Jan 31, 2023
1 parent 868d892 commit a6230b1
Show file tree
Hide file tree
Showing 3 changed files with 291 additions and 218 deletions.
87 changes: 76 additions & 11 deletions lib/tasks_private/power_virtual_servers.rake
Expand Up @@ -19,6 +19,19 @@ namespace :vcr do
"policy" => "anti-affinity"
)
],
:spp_placement_groups => [
IbmCloudPower::SPPPlacementGroupCreate.new(
"name" => "test_spppg",
"policy" => "affinity"
)
],
:resource_pools => [
IbmCloudPower::SharedProcessorPoolCreate.new(
"host_group" => "s922",
"name" => "test_pool",
"reserved_cores" => 1
)
],
:volumes => [
IbmCloudPower::CreateDataVolume.new(
"name" => "test-volume-1GB-tier3-sharable",
Expand Down Expand Up @@ -137,17 +150,18 @@ namespace :vcr do
]
),
IbmCloudPower::PVMInstanceCreate.new(
"server_name" => "test-instance-rhel-s922-shared-tier3",
"image_id" => "RHEL8-SP6",
"sys_type" => "s922",
"proc_type" => "shared",
"storage_type" => "tier3",
"processors" => 0.50,
"memory" => 2,
"key_pair_name" => "test-ssh-key-no-comment",
"migratable" => true,
"pin_policy" => "none",
"networks" => [
"server_name" => "test-instance-rhel-s922-shared-tier3",
"image_id" => "RHEL8-SP6",
"sys_type" => "s922",
"proc_type" => "shared",
"storage_type" => "tier3",
"processors" => 0.50,
"memory" => 2,
"key_pair_name" => "test-ssh-key-no-comment",
"migratable" => true,
"pin_policy" => "none",
"shared_processor_pool" => "test_pool",
"networks" => [
IbmCloudPower::PVMInstanceAddNetwork.new(
"network_id" => "test-network-pub-vlan-dns"
)
Expand Down Expand Up @@ -274,6 +288,53 @@ namespace :vcr do
end
end

## Shared Processor Pool Placement Groups
spp_pgs_api = IbmCloudPower::PCloudSPPPlacementGroupsApi.new(connection)

spp_pgs = {}

spp_pgs_api.pcloud_sppplacementgroups_getall(cloud_instance_id).spp_placement_groups.each do |spppg|
spp_pgs[spppg.name] = spppg
end

resources[:spp_placement_groups].each do |placement_group|
if spp_pgs.include?(placement_group.name)
puts "SPP Placement group '#{placement_group.name}' already exists"
else
puts "Creating SPP placement group '#{placement_group.name}'"
created_placement_group = spp_pgs_api.pcloud_sppplacementgroups_post(
cloud_instance_id,
placement_group
)
spp_pgs[placement_group.name] = created_placement_group
end
end

## Shared Processor Pools
proc_pools_api = IbmCloudPower::PCloudSharedProcessorPoolsApi.new(connection)

proc_pools = {}

proc_pools_api.pcloud_sharedprocessorpools_getall(cloud_instance_id).shared_processor_pools.each do |proc_pool|
proc_pools[proc_pool.name] = proc_pool
end

resources[:resource_pools].each do |resource_pool|
if proc_pools.include?(resource_pool.name)
puts "Shared processor pool '#{resource_pool.name}' already exists"
else
puts "Creating Shared processor pool '#{resource_pool.name}'"

resource_pool.placement_group_id = spp_pgs[resources[:spp_placement_groups].first.name].id

created_proc_pool = proc_pools_api.pcloud_sharedprocessorpools_post(
cloud_instance_id,
resource_pool
)
proc_pools[resource_pool.name] = created_proc_pool
end
end

## Volumes
volumes_api = IbmCloudPower::PCloudVolumesApi.new(connection)

Expand Down Expand Up @@ -362,6 +423,10 @@ namespace :vcr do
instance.placement_group = placement_groups[instance.placement_group].id
end

unless instance.shared_processor_pool.nil?
instance.shared_processor_pool = proc_pools[instance.shared_processor_pool].id
end

created_instance = pvm_instances_api.pcloud_pvminstances_post(
cloud_instance_id,
instance
Expand Down
Expand Up @@ -158,6 +158,10 @@ def assert_specific_vm
)

expect(vm.snapshots.first.total_size).to be > 0

instance_name = "test-instance-rhel-s922-shared-tier3"
vm2 = ems.vms.find_by(:name => instance_name)
expect(vm2.parent_resource_pool&.name).to eq("test_pool")
end

def assert_specific_template
Expand Down

0 comments on commit a6230b1

Please sign in to comment.