mirror of
https://github.com/OpenNebula/one.git
synced 2025-03-27 10:50:10 +03:00
feature #378: Minor fixes in attach and detach
This commit is contained in:
parent
c46f87101b
commit
0e5aac62d5
@ -10,20 +10,33 @@ module EBS
|
||||
# @option params [String] Device The TARGET (unsupported)
|
||||
# @option params [String] Force The TARGET (unsupported)
|
||||
def detach_volume(params)
|
||||
image_id = params['VolumeId']
|
||||
target = params['Device']
|
||||
image_id = params['VolumeId']
|
||||
vm_id_ec2 = params['InstanceId']
|
||||
|
||||
image_id = image_id.split('-')[1] if image_id[0]==?v
|
||||
|
||||
vm_id = params['InstanceId']
|
||||
vm_id = vm_id.split('-')[1] if vm_id[0]==?i
|
||||
image = Image.new(Image.build_xml(image_id), @client)
|
||||
rc = image.info
|
||||
return rc if OpenNebula::is_error?(rc)
|
||||
|
||||
target = params['Device']
|
||||
if !vm_id_ec2
|
||||
vm_id_ec2 = image["TEMPLATE/EBS/INSTANCE_ID"]
|
||||
end
|
||||
|
||||
vm_id = vm_id_ec2.split('-')[1] if vm_id_ec2[0]==?i
|
||||
|
||||
if vm_id.nil?
|
||||
rc = OpenNebula::Error.new("The volume #{params['VolumeId']} is\
|
||||
not attached to any instance")
|
||||
logger.error {rc.message}
|
||||
return rc
|
||||
end
|
||||
|
||||
# Detach
|
||||
|
||||
vm = VirtualMachine.new(VirtualMachine.build_xml(vm_id), @client)
|
||||
rc = vm.info
|
||||
|
||||
return rc if OpenNebula::is_error?(rc)
|
||||
|
||||
disk_id = vm["TEMPLATE/DISK[IMAGE_ID=#{image_id.to_i}]/DISK_ID"]
|
||||
@ -40,15 +53,10 @@ module EBS
|
||||
|
||||
return rc if OpenNebula::is_error?(rc)
|
||||
|
||||
attach_time = image["TEMPLATE/EBS[INSTANCE_ID=\"#{vm_id_ec2}\"]/ATTACH_TIME"]
|
||||
|
||||
# Update IMAGE metadata
|
||||
|
||||
image = Image.new(Image.build_xml(image_id), @client)
|
||||
rc = image.info
|
||||
|
||||
return rc if OpenNebula::is_error?(rc)
|
||||
|
||||
image.delete_element("TEMPLATE/EBS[INSTANCE_ID=\"#{params['InstanceId']}\"]")
|
||||
image.delete_element("TEMPLATE/EBS[INSTANCE_ID=\"#{vm_id_ec2}\"]")
|
||||
rc = image.update
|
||||
if OpenNebula::is_error?(rc)
|
||||
logger.error {rc.message}
|
||||
@ -94,7 +102,7 @@ module EBS
|
||||
return rc if OpenNebula::is_error?(rc)
|
||||
|
||||
template = "DISK = [ IMAGE_ID = #{image_id}, TARGET = #{target} ]"
|
||||
vm.attachdisk(template)
|
||||
rc = vm.attachdisk(template)
|
||||
|
||||
return rc if OpenNebula::is_error?(rc)
|
||||
|
||||
@ -106,9 +114,12 @@ module EBS
|
||||
|
||||
return rc if OpenNebula::is_error?(rc)
|
||||
|
||||
attach_time = Time.now.to_i
|
||||
|
||||
xml_hash = {'EBS' => {
|
||||
'INSTANCE_ID' => params['InstanceId'],
|
||||
"DEVICE" => params['Device']}
|
||||
"DEVICE" => params['Device'],
|
||||
"ATTACH_TIME" => attach_time}
|
||||
}
|
||||
|
||||
image.add_element('TEMPLATE', xml_hash)
|
||||
@ -192,7 +203,9 @@ module EBS
|
||||
def describe_volumes(params)
|
||||
user_flag = OpenNebula::Pool::INFO_ALL
|
||||
impool = ImageEC2Pool.new(@client, user_flag)
|
||||
impool.info
|
||||
rc = impool.info
|
||||
|
||||
return rc if OpenNebula::is_error?(rc)
|
||||
|
||||
erb_version = params['Version']
|
||||
|
||||
|
@ -79,7 +79,9 @@ module Instance
|
||||
def describe_instances(params)
|
||||
user_flag = OpenNebula::Pool::INFO_ALL
|
||||
vmpool = VirtualMachinePool.new(@client, user_flag)
|
||||
vmpool.info
|
||||
|
||||
rc = vmpool.info
|
||||
return rc if OpenNebula::is_error?(rc)
|
||||
|
||||
erb_version = params['Version']
|
||||
erb_user_name = params['AWSAccessKeyId']
|
||||
|
@ -5,5 +5,5 @@
|
||||
<instanceId>i-<%= sprintf('%08i', vm_id) %></instanceId>
|
||||
<device>/dev/<%= vm["TEMPLATE/DISK[IMAGE_ID=#{image_id.to_i}]/TARGET"] %></device>
|
||||
<status>attaching</status>
|
||||
<attachTime/>
|
||||
<attachTime><%= Time.at(attach_time).xmlschema %></attachTime>
|
||||
</AttachVolumeResponse>
|
||||
|
@ -18,6 +18,8 @@
|
||||
<instanceId><%= ebs['INSTANCE_ID'] %></instanceId>
|
||||
<device><%= ebs['DEVICE'] %></device>
|
||||
<status>attached</status>
|
||||
<attachTime><%= Time.at(ebs['ATTACH_TIME'].to_i).xmlschema %></attachTime>
|
||||
<deleteOnTermination>false</deleteOnTermination>
|
||||
</item>
|
||||
<% end %>
|
||||
</attachmentSet>
|
||||
|
Loading…
x
Reference in New Issue
Block a user