+function sliver_name_exists(sliver_name){
+ if(sliver_name in added_nodes){
+ return true;
+ }
+ /*
+ if (sliver_name in deleted_nodes){
+ return true;
+ }
+ */
+ return false;
+}
+function find_sliver_name(sliver_name, num){
+ for (j=Object.keys(added_nodes).length; j<Object.keys(added_nodes).length+num; i++){
+ vm_name = sliver_name+'_'+j;
+ if(!sliver_name_exists(vm_name)){
+ return vm_name
+ }
+ }
+}
+
+function send_add(platform){
+ $('#'+platform+'_pending_add').show();
+ sliver_name = $('#'+platform+'_sliver_name').val();
+ sliver_name = sliver_name.replace(' ','_');
+ flavor_name = $('#'+platform+'_selectFlavor').val();
+ image_name = $('#'+platform+'_selectImage').val();
+
+ num = $('#'+platform+'_number').val();
+ if (num > 1){
+ for (i = 0; i < num; i++){
+ // XXX Check if the name already exist in existing VMs and added_nodes
+ vm_name = sliver_name+"_"+i;
+ if (sliver_name_exists(vm_name)){
+ vm_name = find_sliver_name(sliver_name, num);
+ }
+ node = get_node(vm_name, flavor_name, image_name);
+ request_rspec['rspec']['node'].push(node);
+ render_node(platform, node, 'pending_add');
+ added_nodes[vm_name]=node;
+ }
+ }else{
+ if (sliver_name_exists(sliver_name)){
+ sliver_name = find_sliver_name(sliver_name, num);
+ }
+ node = get_node(sliver_name, flavor_name, image_name);
+ request_rspec['rspec']['node'].push(node);
+ render_node(platform, node, 'pending_add');
+ added_nodes[sliver_name]=node;
+ }
+ toogle_div(platform, flavor_name, 'flavor');
+ toogle_div(platform, image_name, 'image');
+ flavor_name = $('#'+platform+'_selectFlavor').val(0);
+ image_name = $('#'+platform+'_selectImage').val(0);
+ $('#'+platform+'_add').hide();
+ $('#'+platform+'_add_button').hide();
+ $('#'+platform+'_div_pending').show();
+ console.log(request_rspec);
+ //jQuery('#'+platform+'_form_delete').submit();
+}
+function get_node(vm_name, flavor_name, image_name){
+ var node = {};
+ if(ad_rspec['rspec']['node'] instanceof Array) {
+ // Deep copy of the Array to avoid reference
+ node = jQuery.extend(true, {}, ad_rspec['rspec']['node'][0]);
+ }else{
+ // Deep copy of the Array to avoid reference
+ node = jQuery.extend(true, {}, ad_rspec['rspec']['node']);
+ }
+ if(node['openstack:sliver'] instanceof Array) {
+ node['openstack:sliver'] = node['openstack:sliver'][0];
+ }
+ node['openstack:sliver']['@sliver_name'] = vm_name;
+ console.log(vm_name);
+
+ if(node['openstack:sliver']['openstack:flavor'] instanceof Array) {
+ node['openstack:sliver']['openstack:flavor'] = node['openstack:sliver']['openstack:flavor'][0];
+ }
+ node['openstack:sliver']['openstack:flavor'] = Array();
+ node['openstack:sliver']['openstack:flavor'] = {'@name':flavor_name,'openstack:image':{'@name':image_name}};
+
+ $.each(node['openstack:sliver']['openstack:security_group'], function(i, group){
+ if(group['@name']=='default'){
+ node['openstack:sliver']['openstack:security_group'] = group;
+ return false;
+ }
+ });
+ return node;
+
+}