CID-471: add mappings for ephemeral storages
This commit is contained in:
parent
ac540e6f9c
commit
7fb5862f85
@ -101,7 +101,8 @@ module Provider
|
|||||||
# "Placement.AvailabilityZone" => s.options[:availability_zone],
|
# "Placement.AvailabilityZone" => s.options[:availability_zone],
|
||||||
"KeyName" => self.ssh_key,
|
"KeyName" => self.ssh_key,
|
||||||
"PrivateIpAddress" => s.private_ip,
|
"PrivateIpAddress" => s.private_ip,
|
||||||
"EbsOptimized" => ebs_optimized?(flavor)
|
"EbsOptimized" => ebs_optimized?(flavor),
|
||||||
|
"BlockDeviceMapping" => ephemeral_storages_mappings(flavor)
|
||||||
}
|
}
|
||||||
vpcId = nil
|
vpcId = nil
|
||||||
unless subnets.empty?
|
unless subnets.empty?
|
||||||
@ -413,9 +414,28 @@ module Provider
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def ebs_optimized?(instance_type)
|
# When you create an instance with one of these flavors within AWS console,
|
||||||
|
# EbsOptimized is automatically set to true. But in case of creating within API we should set it manually.
|
||||||
|
def ebs_optimized?(flavor)
|
||||||
always_ebs_optimized = ['c4.large', 'c4.xlarge', 'c4.2xlarge', 'c4.4xlarge', 'c4.8xlarge', 'd2.xlarge', 'd2.2xlarge', 'd2.4xlarge', 'd2.8xlarge', 'm4.large', 'm4.xlarge', 'm4.2xlarge', 'm4.4xlarge', 'm4.10xlarge']
|
always_ebs_optimized = ['c4.large', 'c4.xlarge', 'c4.2xlarge', 'c4.4xlarge', 'c4.8xlarge', 'd2.xlarge', 'd2.2xlarge', 'd2.4xlarge', 'd2.8xlarge', 'm4.large', 'm4.xlarge', 'm4.2xlarge', 'm4.4xlarge', 'm4.10xlarge']
|
||||||
always_ebs_optimized.include?(instance_type)
|
always_ebs_optimized.include?(flavor)
|
||||||
|
end
|
||||||
|
|
||||||
|
# When you create an instance with with ephemeral storages available within AWS console,
|
||||||
|
# they are mapped automatically. But in case of creating within API we should map them manually.
|
||||||
|
def ephemeral_storages_mappings(flavor)
|
||||||
|
require 'fog/aws/models/compute/flavors'
|
||||||
|
details = Fog::Compute::AWS::FLAVORS.detect {|f| f[:id] == flavor}
|
||||||
|
return [] unless details
|
||||||
|
|
||||||
|
mappings = []
|
||||||
|
details[:instance_store_volumes].times do |i|
|
||||||
|
mappings << {
|
||||||
|
'VirtualName' => "ephemeral#{i}",
|
||||||
|
'DeviceName' => "/dev/xvd#{('b'.ord + i).chr}"
|
||||||
|
}
|
||||||
|
end
|
||||||
|
mappings
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user