+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, node_name){
+ $('#'+platform+'_pending_add').show();
+ sliver_name = $('#'+platform+'_sliver_name_'+node_name).val();
+ sliver_name = sliver_name.replace(' ','_');
+ flavor_name = $('#'+platform+'_selectFlavor_-_'+node_name).val();
+ image_name = $('#'+platform+'_selectImage_'+node_name).val();
+
+ num = $('#'+platform+'_number_'+node_name).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, node_name);
+ add_to_request_rspec(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, node_name);
+ add_to_request_rspec(node);
+ render_node(platform, node, 'pending_add');
+ added_nodes[sliver_name]=node;
+ }
+ toogle_div(platform, flavor_name, 'flavor', node_name);
+ toogle_div(platform, image_name, 'image', node_name);
+ flavor_name = $('#'+platform+'_selectFlavor_-_'+node_name).val(0);
+ image_name = $('#'+platform+'_selectImage_'+node_name).val(0);
+ $('#'+platform+'_add_'+node_name).hide();
+ $('#'+platform+'_add_button_'+node_name).hide();
+ $('#'+platform+'_div_pending').show();
+ console.log(request_rspec);
+ //jQuery('#'+platform+'_form_delete').submit();
+}
+function get_node(vm_name, flavor_name, image_name, node_name){
+ var node = {};
+ if(ad_rspec['rspec']['node'] instanceof Array) {
+ // Deep copy of the Array to avoid reference
+ var i=0;
+ jQuery.each(ad_rspec['rspec']['node'], function(x, n){
+ if(n['@component_name']==node_name){
+ i = x;
+ return;
+ }
+ });
+ node = jQuery.extend(true, {}, ad_rspec['rspec']['node'][i]);
+ }else{
+ // Deep copy of the Array to avoid reference
+ node = jQuery.extend(true, {}, ad_rspec['rspec']['node']);
+ }
+ if(node[key_sliver] instanceof Array) {
+ node[key_sliver] = node[key_sliver][0];
+ }
+ node[key_sliver][key_slivername] = vm_name;
+ node["@client_id"] = vm_name;
+ console.log(vm_name);
+
+ flavor = Array();
+
+ if('openstack:flavor' in node[key_sliver]){
+ flavor = {'@name':flavor_name,'openstack:image':{'@name':image_name}};
+ node[key_sliver]['openstack:flavor']=flavor;
+ }else{
+ if(typeof image_name === "undefined"){
+ flavor = {'@name':flavor_name};
+ }else{
+ flavor = {'@name':flavor_name,'disk_image':{'@name':image_name}};
+ }
+ node[key_sliver]=flavor;
+ }
+
+ if('openstack:security_group' in node[key_sliver]){
+ $.each(node[key_sliver]['openstack:security_group'], function(i, group){
+ if(group['@name']=='default'){
+ node[key_sliver]['openstack:security_group'] = group;
+ return false;
+ }
+ });
+ }
+ return node;
+}