diff --git a/src/cloud/ec2/etc/templates/m1.small.erb b/src/cloud/ec2/etc/templates/m1.small.erb
index f651f1752b..cbd2622364 100644
--- a/src/cloud/ec2/etc/templates/m1.small.erb
+++ b/src/cloud/ec2/etc/templates/m1.small.erb
@@ -26,4 +26,4 @@ CONTEXT = [ EC2_USER_DATA="<%= erb_vm_info[:user_data] %>" ]
<% elsif erb_vm_info[:public_key] %>
CONTEXT = [ EC2_PUBLIC_KEY="<%= erb_vm_info[:public_key] %>", EC2_KEYNAME ="<%= erb_vm_info[:key_name] %>" ]
<% end %>
-
+
diff --git a/src/cloud/ec2/lib/instance.rb b/src/cloud/ec2/lib/instance.rb
index 34203df714..bdc63b25af 100644
--- a/src/cloud/ec2/lib/instance.rb
+++ b/src/cloud/ec2/lib/instance.rb
@@ -61,6 +61,33 @@ module Instance
TERMINATED_INSTANCES_EXPIRATION_TIME = 900
def run_instances(params)
+ erb_user_name = params['AWSAccessKeyId']
+ erb_version = params['Version']
+ erb_vms = Array.new
+
+ if params['ClientToken']
+ user_flag = OpenNebula::Pool::INFO_ALL
+ vm_pool = VirtualMachinePool.new(@client, user_flag)
+ rc = vm_pool.info
+ if OpenNebula::is_error?(rc)
+ return rc
+ end
+
+ vm_id = vm_pool["VM/USER_TEMPLATE[EC2_CLIENT_TOKEN=\'#{params['ClientToken']}\']/../ID"]
+ if vm_id
+ instance = VirtualMachine.new(VirtualMachine.build_xml(vm_id), @client)
+ rc = instance.info
+ if OpenNebula::is_error?(rc)
+ return rc
+ end
+
+ erb_vms << instance
+
+ response = ERB.new(File.read(@config[:views]+"/run_instances.erb"))
+ return response.result(binding), 200
+ end
+ end
+
# Get the image
img = nil
if params['ImageId'] =~ /ami\-(.+)/
@@ -82,11 +109,13 @@ module Instance
# Get the instance type and path
if params['InstanceType'] != nil
instance_type_name = params['InstanceType']
- instance_type = @config[:instance_types][instance_type_name.to_sym]
+ else
+ instance_type_name = "m1.small"
+ end
- if instance_type != nil
- path = @config[:template_location] + "/#{instance_type[:template]}"
- end
+ instance_type = @config[:instance_types][instance_type_name.to_sym]
+ if instance_type != nil
+ path = @config[:template_location] + "/#{instance_type[:template]}"
end
# Build the VM
@@ -102,8 +131,9 @@ module Instance
template = ERB.new(File.read(erb_vm_info[:template]))
template_text = template.result(binding)
-
- erb_vms = Array.new
+ if params["ClientToken"]
+ template_text += "\nEC2_CLIENT_TOKEN=\"#{params['ClientToken']}\""
+ end
min_count = params['MinCount'] || 1
max_count = params['MaxCount'] || min_count
@@ -174,10 +204,11 @@ module Instance
merge_info.delete("CONTEXT")
end
- template_str = template_to_str(merge_info)
- vm_id =
+ if params['ClientToken']
+ merge_info['EC2_CLIENT_TOKEN'] = params['ClientToken']
+ end
- erb_vms = Array.new
+ template_str = template_to_str(merge_info)
min_count = params['MinCount'] || 1
max_count = params['MaxCount'] || min_count
@@ -202,9 +233,6 @@ module Instance
}
end
- erb_user_name = params['AWSAccessKeyId']
- erb_version = params['Version']
-
response = ERB.new(File.read(@config[:views]+"/run_instances.erb"))
return response.result(binding), 200
end
diff --git a/src/cloud/ec2/lib/views/describe_instances.erb b/src/cloud/ec2/lib/views/describe_instances.erb
index ef5d59cc20..c4a5ebe63d 100644
--- a/src/cloud/ec2/lib/views/describe_instances.erb
+++ b/src/cloud/ec2/lib/views/describe_instances.erb
@@ -37,13 +37,12 @@
default
<%= vm.id %>
-
eki-EA801065
eri-1FEE1144
- false
+ disabled
-
+ <%= vm['USER_TEMPLATE/EC2_CLIENT_TOKEN'] %>
<% end %>
<% end %>
diff --git a/src/cloud/ec2/lib/views/run_instances.erb b/src/cloud/ec2/lib/views/run_instances.erb
index e80e5a108a..0b4875415d 100644
--- a/src/cloud/ec2/lib/views/run_instances.erb
+++ b/src/cloud/ec2/lib/views/run_instances.erb
@@ -1,6 +1,6 @@
<%= @request_id %>
-
+ default
<%= erb_user_name %>
-
@@ -11,7 +11,7 @@
<% erb_vms.each { |vm| %>
-
<%= render_instance_id(vm) %>
- <%= params['ImageId'] %>
+ <%= vm['USER_TEMPLATE/IMAGE_ID'] %>
<%= render_state(vm) %>
<% if vm.has_elements?("TEMPLATE/NIC/IP") %>
<% ips_str = vm.retrieve_elements("TEMPLATE/NIC/IP").join(', ') %>
@@ -24,15 +24,18 @@
<% else %>
<%= vm['TEMPLATE/CONTEXT/EC2_KEYNAME'] %>
<% end %>
- <%= vm.id %>
- <%= params['InstanceType'] %>
+ <%= vm['USER_TEMPLATE/INSTANCE_TYPE'] %>
<%= render_launch_time(vm) %>
default
+ <%= vm.id %>
+ eki-EA801065
+ eri-1FEE1144
- true
+ disabled
+ <%= vm['USER_TEMPLATE/EC2_CLIENT_TOKEN'] %>
<% } %>