Example #1
0
    $.each(["memory","cpu","vcpu"], function(i,classname){
      var attr = {};

      attr.type = $("."+classname+"_modify_type", context).val();

      attr.name = classname.toUpperCase();
      attr.mandatory = true;
      attr.description = "";

      if (classname == "vcpu" || attr.type == "fixed"){
        attr.mandatory = false;
      }

      attr.initial = $('input[wizard_field="'+attr.name+'"]', context).val();

      if (attr.type == "range" ||
          attr.type == "range-float"){

        var param_context = $("div."+classname+"_modify_opt."+attr.type, context);

        var min = $("input.user_input_params_min", param_context).val();
        var max = $("input.user_input_params_max", param_context).val();
        attr.params  = min + ".." + max;

      } else if (attr.type == "list"){
        attr.params = $("input."+classname+"_modify_opt."+attr.type, context).val();
      }

      userInputsJSON[attr.name] = UserInputs.marshall(attr);
    });
Example #2
0
  function _retrieve(context) {
    var templateJSON = WizardFields.retrieve(context);
    if (templateJSON["HYPERVISOR"] == 'vcenter') {
      templateJSON["VCENTER_TEMPLATE_REF"] = WizardFields.retrieveInput($("#vcenter_template_ref", context));
      templateJSON["VCENTER_CCR_REF"] = WizardFields.retrieveInput($("#vcenter_ccr_ref", context));
      templateJSON["VCENTER_INSTANCE_ID"] = WizardFields.retrieveInput($("#vcenter_instance_id", context));

      if (Config.isFeatureEnabled("vcenter_vm_folder")) {
        templateJSON["VCENTER_VM_FOLDER"] = WizardFields.retrieveInput($("#vcenter_vm_folder", context))
      }
    }

    if (templateJSON["HYPERVISOR"] == 'lxd') {
      templateJSON["LXD_SECURITY_PRIVILEGED"] = WizardFields.retrieveInput($("#lxd_security_privileged", context));
      templateJSON["LXD_PROFILE"] = WizardFields.retrieveInput($("#lxd_profile", context));
      templateJSON["LXD_SECURITY_NESTING"] = WizardFields.retrieveInput($("#lxd_security_nesting", context));
    }

    var sunstone_template = {};

    if ($('#sunstone_network_select:checked', context).length > 0) {
      sunstone_template["NETWORK_SELECT"] = "NO"
    }

    if (!$.isEmptyObject(sunstone_template)) {
      templateJSON['SUNSTONE'] = sunstone_template;
    }

    var userInputs = {};

    // Retrieve Resource Pool Attribute
    var rpInput = $(".vcenter_rp_input", context);
    if (rpInput.length > 0) {
      var rpModify = WizardFields.retrieveInput($('.modify_rp', rpInput));
      var rpInitial = WizardFields.retrieveInput($('.initial_rp', rpInput));
      var rpParams = WizardFields.retrieveInput($('.available_rps', rpInput));

      if (rpModify === 'fixed' && rpInitial !== '') {
        templateJSON['VCENTER_RESOURCE_POOL'] = rpInitial;
      } else if (rpModify === 'list' && rpParams !== '') {
        var rpUserInputs = UserInputs.marshall({
            type: 'list',
            description: Locale.tr("Which resource pool you want this VM to run in?"),
            initial: rpInitial,
            params: WizardFields.retrieveInput($('.available_rps', rpInput))
          });

        userInputs['VCENTER_RESOURCE_POOL'] = rpUserInputs;
      }
    }

    // Since the USER_INPUTS section is not enabled for vCenter, we can assume that there are no more user inputs defined
    if (!$.isEmptyObject(userInputs)) {
      templateJSON['USER_INPUTS'] = userInputs;
    }

    $.extend(true, templateJSON, CapacityCreate.retrieve($("div.capacityCreate", context)));

    if (templateJSON['MEMORY_COST'] && templateJSON['MEMORY_UNIT_COST'] && templateJSON['MEMORY_UNIT_COST'] == "GB") {
      templateJSON['MEMORY_COST'] = templateJSON['MEMORY_COST'] / 1024;
    }
    if (templateJSON['DISK_COST']) {
      templateJSON['DISK_COST'] = (templateJSON['DISK_COST'] / 1024).toString();
    }

    var as_uid = this.usersTable.retrieveResourceTableSelect();
    if (as_uid){
      templateJSON["AS_UID"] = as_uid;
    }

    var as_gid = this.groupTable.retrieveResourceTableSelect();
    if (as_gid){
      templateJSON["AS_GID"] = as_gid;
    }
    return templateJSON;
  }
Example #3
0
      $.each($(".check_item:checked", this), function() {
        var template_context = $(this).closest(".vcenter_row");

        $(".vcenter_template_result:not(.success)", template_context).html(
            '<span class="fa-stack" style="color: #dfdfdf">' +
              '<i class="fa fa-cloud fa-stack-2x"></i>' +
              '<i class="fa  fa-spinner fa-spin fa-stack-1x fa-inverse"></i>' +
            '</span>');


        var attrs = [];
        var userInputs = [];

        // Retrieve Datastore Attribute
        var dsInput = $(".vcenter_datastore_input", template_context);
        if (dsInput.length > 0) {
          var dsModify = $('.modify_datastore', dsInput).val();
          var dsInitial = $('.initial_datastore', dsInput).val();
          var dsParams = $('.available_datastores', dsInput).val();

          if (dsModify === 'fixed' && dsInitial !== '') {
            attrs.push('VCENTER_DATASTORE="' + dsInitial + '"')
          } else if (dsModify === 'list' && dsParams !== '') {
            var dsUserInputsStr = UserInputs.marshall({
                type: 'list',
                description: Locale.tr("Which datastore you want this VM to run on?"),
                initial: dsInitial,
                params: dsParams
              });

            userInputs.push('VCENTER_DATASTORE="' + dsUserInputsStr + '"');
          }
        }

        // Retrieve Resource Pool Attribute
        var rpInput = $(".vcenter_rp_input", template_context);
        if (rpInput.length > 0) {
          var rpModify = $('.modify_rp', rpInput).val();
          var rpInitial = $('.initial_rp', rpInput).val();
          var rpParams = $('.available_rps', rpInput).val();

          if (rpModify === 'fixed' && rpInitial !== '') {
            attrs.push('RESOURCE_POOL="' + rpInitial + '"');
          } else if (rpModify === 'list' && rpParams !== '') {
            var rpUserInputs = UserInputs.marshall({
                type: 'list',
                description: Locale.tr("Which resource pool you want this VM to run in?"),
                initial: rpInitial,
                params: $('.available_rps', rpInput).val()
              });

            userInputs.push('RESOURCE_POOL="' + rpUserInputs + '"');
          }
        }
        
        // Append new attrs and user inputs if necessary
        var template = $(this).data("one_template");

        if (attrs.length > 0) {
          template += "\n" + attrs.join("\n");
        }

        if (userInputs.length > 0) {
          template += "\nUSER_INPUTS=[\n" + userInputs.join(",\n") + "]";
        }

        var template_json = {
          "vmtemplate": {
            "template_raw": template
          }
        };

        OpenNebulaTemplate.create({
          timeout: true,
          data: template_json,
          success: function(request, response) {
            $(".vcenter_template_result", template_context).addClass("success").html(
                '<span class="fa-stack" style="color: #dfdfdf">' +
                  '<i class="fa fa-cloud fa-stack-2x"></i>' +
                  '<i class="fa  fa-check fa-stack-1x fa-inverse"></i>' +
                '</span>');

            $(".vcenter_template_response", template_context).html('<p style="font-size:12px" class="running-color">' +
                  Locale.tr("Template created successfully") + ' ID:' + response.VMTEMPLATE.ID +
                '</p>');
          },
          error: function (request, error_json) {
            $(".vcenter_template_result", template_context).html('<span class="fa-stack" style="color: #dfdfdf">' +
                  '<i class="fa fa-cloud fa-stack-2x"></i>' +
                  '<i class="fa  fa-warning fa-stack-1x fa-inverse"></i>' +
                '</span>');

            $(".vcenter_template_response", template_context).html('<p style="font-size:12px" class="error-color">' +
                  (error_json.error.message || Locale.tr("Cannot contact server: is it running and reachable?")) +
                '</p>');
          }
        });
      });
Example #4
0
      $.each($(this).DataTable().$(".check_item:checked"), function() {
        var row_context = $(this).closest("tr");

        VCenterCommon.importLoading({context : row_context});

        var attrs = [];
        var userInputs = [];

        // Retrieve Datastore Attribute
        var dsInput = $(".vcenter_datastore_input", row_context);
        if (dsInput.length > 0) {
          var dsModify = $('.modify_datastore', dsInput).val();
          var dsInitial = $('.initial_datastore', dsInput).val();
          var dsParams = $('.available_datastores', dsInput).val();

          if (dsModify === 'fixed' && dsInitial !== '') {
            attrs.push('VCENTER_DATASTORE="' + dsInitial + '"')
          } else if (dsModify === 'list' && dsParams !== '') {
            var dsUserInputsStr = UserInputs.marshall({
                type: 'list',
                description: Locale.tr("Which datastore you want this VM to run on?"),
                initial: dsInitial,
                params: dsParams
              });

            userInputs.push('VCENTER_DATASTORE="' + dsUserInputsStr + '"');
          }
        }

        // Retrieve Resource Pool Attribute
        var rpInput = $(".vcenter_rp_input", row_context);
        if (rpInput.length > 0) {
          var rpModify = $('.modify_rp', rpInput).val();
          var rpInitial = $('.initial_rp', rpInput).val();
          var rpParams = $('.available_rps', rpInput).val();

          if (rpModify === 'fixed' && rpInitial !== '') {
            attrs.push('RESOURCE_POOL="' + rpInitial + '"');
          } else if (rpModify === 'list' && rpParams !== '') {
            var rpUserInputs = UserInputs.marshall({
                type: 'list',
                description: Locale.tr("Which resource pool you want this VM to run in?"),
                initial: rpInitial,
                params: $('.available_rps', rpInput).val()
              });

            userInputs.push('RESOURCE_POOL="' + rpUserInputs + '"');
          }
        }

        // Append new attrs and user inputs if necessary
        var template = $(this).data("import_data").one;

        if (attrs.length > 0) {
          template += "\n" + attrs.join("\n");
        }

        if (userInputs.length > 0) {
          template += "\nUSER_INPUTS=[\n" + userInputs.join(",\n") + "]";
        }

        var template_json = {
          "vmtemplate": {
            "template_raw": template
          }
        };

        OpenNebulaTemplate.create({
          timeout: true,
          data: template_json,
          success: function(request, response) {
            VCenterCommon.importSuccess({
              context : row_context,
              message : Locale.tr("Template created successfully. ID: %1$s", response.VMTEMPLATE.ID)
            });
          },
          error: function (request, error_json) {
            VCenterCommon.importFailure({
              context : row_context,
              message : (error_json.error.message || Locale.tr("Cannot contact server: is it running and reachable?"))
            });
          }
        });
      });
Example #5
0
  function _retrieve(context) {
    var templateJSON = WizardFields.retrieve(context);

    if (templateJSON["HYPERVISOR"] == 'vcenter') {
      templateJSON["VCENTER_PUBLIC_CLOUD"] = {
        'TYPE': 'vcenter',
        'VM_TEMPLATE': WizardFields.retrieveInput($("#vcenter_template_uuid", context))
      };

      templateJSON["KEEP_DISKS_ON_DONE"] = $("#KEEP_DISKS", context).is(':checked')?"YES":"NO"
    }

    var sunstone_template = {};

    if ($('#sunstone_network_select:checked', context).length > 0) {
      sunstone_template["NETWORK_SELECT"] = "NO"
    }

    if (!$.isEmptyObject(sunstone_template)) {
      templateJSON['SUNSTONE'] = sunstone_template;
    }

    var userInputs = {};
    
    // Retrieve Datastore Attribute
    var dsInput = $(".vcenter_datastore_input", context);
    if (dsInput.length > 0) {
      var dsModify = WizardFields.retrieveInput($('.modify_datastore', dsInput));
      var dsInitial = WizardFields.retrieveInput($('.initial_datastore', dsInput));
      var dsParams = WizardFields.retrieveInput($('.available_datastores', dsInput));

      if (dsModify === 'fixed' && dsInitial !== '') {
        templateJSON['VCENTER_DATASTORE'] = dsInitial;
      } else if (dsModify === 'list' && dsParams !== '') {
        var dsUserInputsStr = UserInputs.marshall({
            type: 'list',
            description: Locale.tr("Which datastore you want this VM to run on?"),
            initial: dsInitial,
            params: dsParams
          });

        userInputs['VCENTER_DATASTORE'] = dsUserInputsStr;
      }
    }

    // Retrieve Resource Pool Attribute
    var rpInput = $(".vcenter_rp_input", context);
    if (rpInput.length > 0) {
      var rpModify = WizardFields.retrieveInput($('.modify_rp', rpInput));
      var rpInitial = WizardFields.retrieveInput($('.initial_rp', rpInput));
      var rpParams = WizardFields.retrieveInput($('.available_rps', rpInput));

      if (rpModify === 'fixed' && rpInitial !== '') {
        templateJSON['RESOURCE_POOL'] = rpInitial;
      } else if (rpModify === 'list' && rpParams !== '') {
        var rpUserInputs = UserInputs.marshall({
            type: 'list',
            description: Locale.tr("Which resource pool you want this VM to run in?"),
            initial: rpInitial,
            params: WizardFields.retrieveInput($('.available_rps', rpInput))
          });

        userInputs['RESOURCE_POOL'] = rpUserInputs;
      }
    }

    // Since the USER_INPUTS section is not enabled for vCenter, we can assume that there are no more user inputs defined
    if (!$.isEmptyObject(userInputs)) {
      templateJSON['USER_INPUTS'] = userInputs;
    }

    $.extend(true, templateJSON, CapacityCreate.retrieve($("div.capacityCreate", context)));

    return templateJSON;
  }
Example #6
0
      $.each($(this).DataTable().$(".check_item:checked"), function() {
        var row_context = $(this).closest("tr");

        VCenterCommon.importLoading({context : row_context});

        var attrs = [];
        var userInputs = [];

        // Retrieve Resource Pool Attribute
        var rpInput = $(".vcenter_rp_input", row_context);
        if (rpInput.length > 0) {
          var rpModify = $('.modify_rp', rpInput).val();
          var rpParams = "";
          var linkedClone = $('.linked_clone', rpInput).prop("checked");
          var createCopy = $('.create_copy', rpInput).prop("checked");
          var templateName = $('.template_name', rpInput).val();

          var vcenter_ref = $(this).data("import_data").vcenter_ref;
          if (linkedClone) {
            var linked = true;

            if (createCopy && templateName != "") {
              var copy = true;
              var template_name  = templateName;
            } else {
              var copy = false;
              var template_name = "";
            }
          } else {
            var template_name  = "";
            var linked = false;
            var copy = false;
          }

          $.each($('.available_rps option:selected', rpInput), function(){
            rpParams += $(this).val() + ",";
          });
          var rpParams = rpParams.slice(0,-1);

          if (rpModify === 'fixed' && rpParams!== '') {
            attrs.push('VCENTER_RESOURCE_POOL="' + rpParams + '"');
          } else if (rpModify === 'list' && rpParams !== '') {
            var rpUserInputs = UserInputs.marshall({
                type: 'list',
                description: Locale.tr("Which resource pool you want this VM to run in?"),
                initial: "",
                params: rpParams
              });

            userInputs.push('VCENTER_RESOURCE_POOL="' + rpUserInputs + '"');
          }
        }

        // Append new attrs and user inputs if necessary
        var template = $(this).data("import_data").one;

        if (attrs.length > 0) {
          template += "\n" + attrs.join("\n");
        }

        if (userInputs.length > 0) {
          template += "\nUSER_INPUTS=[\n" + userInputs.join(",\n") + "]";
        }

        if (linked) {
          template += "\nVCENTER_LINKED_CLONES=\"YES\"";
        }

        if($(this).data("import_data").import_disks_and_nics){
              var template_json = {
                "vmtemplate": { "template_raw": template }
              };
              OpenNebulaTemplate.create({
                timeout: false,
                data: template_json,
                success: function(request, response) {
                   VCenterCommon.importLoading({
                      context : row_context,
                      message : Locale.tr("Importing images and vnets associated to template disks and nics...")
                   });
                   var template_id = response.VMTEMPLATE.ID;
                   var path = '/vcenter/template/' + vcenter_ref + '/' + template_id;

                   $.ajax({
                    url: path,
                    type: "GET",
                    data: {
                      timeout: false,
                      use_linked_clones: linked,
                      create_copy: copy,
                      template_name: template_name
                    },
                    headers: {
                      "X-VCENTER-USER": that.opts.vcenter_user,
                      "X-VCENTER-PASSWORD": that.opts.vcenter_password,
                      "X-VCENTER-HOST": that.opts.vcenter_host
                    },
                    dataType: "json",
                    success: function(response){
                      var disks_and_nets = response.disks.concat(response.nics);

                      var template_json = {
                        "vmtemplate": { "template_raw": response.one }
                      };

                      if(response.create_copy){
                        OpenNebulaTemplate.del({
                          timeout: true,
                          data : {
                            id : template_id
                          },
                          success: function(){
                            OpenNebulaTemplate.create({
                              timeout: false,
                              data: template_json,
                              success: function(request, response){
                                import_images_and_nets(disks_and_nets, row_context, response.VMTEMPLATE.ID);
                              }
                            });
                          }
                        });
                      } else {
                        import_images_and_nets(disks_and_nets, row_context, template_id);
                      }
                    },
                    error: function(response){
                      VCenterCommon.importFailure({
                          context : row_context,
                          message : OpenNebulaError(response).error.message
                      });
                      Notifier.onError({}, OpenNebulaError(response));

                      // Remove template - Rollback
                      var path = '/vcenter/template_rollback/' + template_id;
                      $.ajax({
                        url: path,
                        type: "POST",
                        data: {timeout: false},
                        dataType: "json",
                        success: function(response){
                          // Do nothing
                        },
                        error: function(response){
                          VCenterCommon.importFailure({
                              context : row_context,
                              message : Locale.tr("Could not delete the template " + template_id + " due to " + OpenNebulaError(response).error.message + ". Please remote it manually before importing this template again.")
                          });
                        }
                      });
                    }
                  });
                },
                error: function (request, error_json) {
                  VCenterCommon.importFailure({
                    context : row_context,
                    message : (error_json.error.message || Locale.tr("Cannot contact server: is it running and reachable?"))
                  });
                }
            });
        }
        else {
          var template_json = {
            "vmtemplate": {
              "template_raw": template
            }
          };

          OpenNebulaTemplate.create({
            timeout: true,
            data: template_json,
            success: function(request, response) {
              VCenterCommon.importSuccess({
                context : row_context,
                message : Locale.tr("Template created successfully. ID: %1$s", response.VMTEMPLATE.ID)
              });
            },
            error: function (request, error_json) {
              VCenterCommon.importFailure({
                context : row_context,
                message : (error_json.error.message || Locale.tr("Cannot contact server: is it running and reachable?"))
              });
            }
          });
        }
      });