Пример #1
0
define(function(require) {
  var Sunstone = require('sunstone');
  var Notifier = require('utils/notifier');
  var Locale = require('utils/locale');
  var CommonActions = require('utils/common-actions');
  var OpenNebulaResource = require('opennebula/marketplace');

  var RESOURCE = "MarketPlace";
  var XML_ROOT = "MARKETPLACE";
  var TAB_ID = require('./tabId');
  var CREATE_DIALOG_ID = require('./form-panels/create/formPanelId');

  var _commonActions = new CommonActions(OpenNebulaResource, RESOURCE, TAB_ID, XML_ROOT);

  var _actions = {
    "MarketPlace.create" : _commonActions.create(CREATE_DIALOG_ID),
    "MarketPlace.create_dialog" : _commonActions.showCreate(CREATE_DIALOG_ID),
    "MarketPlace.list" : _commonActions.list(),
    "MarketPlace.show" : _commonActions.show(),
    "MarketPlace.refresh" : _commonActions.refresh(),
    "MarketPlace.delete" : _commonActions.del(),
    "MarketPlace.chown": _commonActions.multipleAction('chown'),
    "MarketPlace.chgrp": _commonActions.multipleAction('chgrp'),
    "MarketPlace.chmod": _commonActions.singleAction('chmod'),
    "MarketPlace.update" : _commonActions.update(),
    "MarketPlace.update_template" : _commonActions.updateTemplate(),
    "MarketPlace.append_template" : _commonActions.appendTemplate(),
    "MarketPlace.update_dialog" : _commonActions.checkAndShowUpdate(),
    "MarketPlace.show_to_update" : _commonActions.showUpdate(CREATE_DIALOG_ID),
    "MarketPlace.rename": _commonActions.singleAction('rename')
  }

  return _actions;
});
Пример #2
0
define(function(require) {
  var Sunstone = require('sunstone');
  var Notifier = require('utils/notifier');
  var Locale = require('utils/locale');
  var OpenNebulaResource = require('opennebula/image');
  var CommonActions = require('utils/common-actions');

  var RESOURCE = "File";
  var XML_ROOT = "IMAGE";
  var TAB_ID = require('./tabId');
  var CREATE_DIALOG_ID = require('./form-panels/create/formPanelId');

  var _commonActions = new CommonActions(OpenNebulaResource, RESOURCE, TAB_ID,
    XML_ROOT, Locale.tr("File created"));

  var _actions = {
    "File.create" : _commonActions.create(CREATE_DIALOG_ID),
    "File.create_dialog" : _commonActions.showCreate(CREATE_DIALOG_ID),
    "File.list" : _commonActions.list(),
    "File.show" : _commonActions.show(),
    "File.refresh" : _commonActions.refresh(),
    "File.delete" : _commonActions.del(),
    "File.update_template" : _commonActions.updateTemplate(),
    "File.append_template" : _commonActions.appendTemplate(),
    "File.chown": _commonActions.multipleAction('chown'),
    "File.chgrp": _commonActions.multipleAction('chgrp'),
    "File.chmod": _commonActions.singleAction('chmod'),
    "File.rename": _commonActions.singleAction('rename'),
    "File.enable": _commonActions.multipleAction('enable'),
    "File.disable": _commonActions.multipleAction('disable'),
    "File.chtype": _commonActions.singleAction('chtype')
  };

  return _actions;
});
Пример #3
0
define(function(require) {
  var Sunstone = require('sunstone');
  var Notifier = require('utils/notifier');
  var Locale = require('utils/locale');
  var DataTable = require('./datatable');
  var OpenNebulaResource = require('opennebula/securitygroup');
  var CommonActions = require('utils/common-actions');

  var RESOURCE = "SecurityGroup";
  var XML_ROOT = "SECURITY_GROUP";
  var TAB_ID = require('./tabId');
  var CREATE_DIALOG_ID = require('./form-panels/create/formPanelId');
  var CLONE_DIALOG_ID = require('./dialogs/clone/dialogId');

  var _commonActions = new CommonActions(OpenNebulaResource, RESOURCE, TAB_ID, XML_ROOT);

  var _actions = {
    "SecurityGroup.create" : _commonActions.create(CREATE_DIALOG_ID),
    "SecurityGroup.create_dialog" : _commonActions.showCreate(CREATE_DIALOG_ID),
    "SecurityGroup.list" : _commonActions.list(),
    "SecurityGroup.show" : _commonActions.show(),
    "SecurityGroup.refresh" : _commonActions.refresh(),
    "SecurityGroup.delete" : _commonActions.del(),
    "SecurityGroup.chown": _commonActions.multipleAction('chown'),
    "SecurityGroup.chgrp": _commonActions.multipleAction('chgrp'),
    "SecurityGroup.chmod": _commonActions.singleAction('chmod'),
    "SecurityGroup.rename": _commonActions.singleAction('rename'),
    "SecurityGroup.update" : _commonActions.update(),
    "SecurityGroup.update_template" : _commonActions.updateTemplate(),
    "SecurityGroup.update_dialog" : _commonActions.checkAndShowUpdate(),
    "SecurityGroup.show_to_update" : _commonActions.showUpdate(CREATE_DIALOG_ID),

    "SecurityGroup.clone_dialog" : {
      type: "custom",
      call: function(){
        Sunstone.getDialog(CLONE_DIALOG_ID).show();
      }
    },

    "SecurityGroup.clone" : {
      type: "single",
      call: OpenNebulaResource.clone,
      callback: function(request, response) {
        Sunstone.getDialog(CLONE_DIALOG_ID).hide();
        Sunstone.getDialog(CLONE_DIALOG_ID).reset();
        Sunstone.runAction('SecurityGroup.refresh');
      },
      error: Notifier.onError,
      notify: true
    }
  };

  return _actions;
})
Пример #4
0
define(function(require) {
  var Sunstone = require('sunstone');
  var Notifier = require('utils/notifier');
  var Locale = require('utils/locale');
  var DataTable = require('./datatable');
  var OpenNebulaResource = require('opennebula/zone');
  var CommonActions = require('utils/common-actions');

  var XML_ROOT = "ZONE"
  var RESOURCE = "Zone"
  var TAB_ID = require('./tabId');
  var CREATE_DIALOG_ID = require('./dialogs/create/dialogId');

  var _commonActions = new CommonActions(OpenNebulaResource, RESOURCE, TAB_ID,
    XML_ROOT, Locale.tr("Zone created"));

  var _actions = {
    "Zone.create" : {
      type: "create",
      call: OpenNebulaResource.create,
      callback: function(request, response) {
        Sunstone.getDialog(CREATE_DIALOG_ID).hide();
        Sunstone.getDialog(CREATE_DIALOG_ID).reset();
        Sunstone.runAction(RESOURCE+".refresh");
      },
      error: Notifier.onError,
      notify: true
    },
    
    "Zone.create_dialog" : {
      type: "custom",
      call: function() {
        Sunstone.getDialog(CREATE_DIALOG_ID).show();
      }
    },
    "Zone.list" : _commonActions.list(),
    "Zone.show" : _commonActions.show(),
    "Zone.refresh" : _commonActions.refresh(),
    "Zone.delete" : _commonActions.del(),
    "Zone.update_template" : _commonActions.updateTemplate(),
    "Zone.append_template" : _commonActions.appendTemplate(),
    "Zone.rename": _commonActions.singleAction('rename'),

    "Zone.show_to_update" : {
      type: "single",
      call: OpenNebulaResource.show,
      // TODO callback: fillPopPup,
      error: Notifier.onError
    }
  };

  return _actions;
})
Пример #5
0
define(function(require) {
  var Sunstone = require('sunstone');
  var Notifier = require('utils/notifier');
  var Locale = require('utils/locale');
  var DataTable = require('./datatable');
  var OpenNebulaResource = require('opennebula/virtualrouter');
  var CommonActions = require('utils/common-actions');

  var RESOURCE = "VirtualRouter";
  var XML_ROOT = "VROUTER";
  var TAB_ID = require('./tabId');
  var CREATE_DIALOG_ID = require('./form-panels/create/formPanelId');

  var _commonActions = new CommonActions(OpenNebulaResource, RESOURCE, TAB_ID,
    XML_ROOT, Locale.tr("Virtual Router created"));

  var _actions = {
    "VirtualRouter.create" : _commonActions.create(CREATE_DIALOG_ID),
    "VirtualRouter.create_dialog" : _commonActions.showCreate(CREATE_DIALOG_ID),
    "VirtualRouter.list" : _commonActions.list(),
    "VirtualRouter.show" : _commonActions.show(),
    "VirtualRouter.refresh" : _commonActions.refresh(),
    "VirtualRouter.delete" : _commonActions.del(),
    "VirtualRouter.chown": _commonActions.multipleAction('chown'),
    "VirtualRouter.chgrp": _commonActions.multipleAction('chgrp'),
    "VirtualRouter.chmod": _commonActions.singleAction('chmod'),
    "VirtualRouter.rename": _commonActions.singleAction('rename'),
    "VirtualRouter.attachnic": _commonActions.singleAction('attachnic'),
    "VirtualRouter.detachnic": _commonActions.singleAction('detachnic'),
    "VirtualRouter.update" : _commonActions.update(),
    "VirtualRouter.update_template" : _commonActions.updateTemplate(),
    "VirtualRouter.update_dialog" : _commonActions.checkAndShowUpdate(),
    "VirtualRouter.show_to_update" : _commonActions.showUpdate(CREATE_DIALOG_ID),
  };

  return _actions;
});
Пример #6
0
define(function(require) {
  var Sunstone = require('sunstone');
  var Notifier = require('utils/notifier');
  var Locale = require('utils/locale');
  var DataTable = require('./datatable');
  var OpenNebulaResource = require('opennebula/vmgroup');
  var CommonActions = require('utils/common-actions');
  var TemplateUtils = require('utils/template-utils');

  var CREATE_DIALOG_ID = require('tabs/vmgroup-tab/form-panels/create/formPanelId');
  var TAB_ID = require('./tabId');

  var RESOURCE = "VMGroup";
  var XML_ROOT = "VM_GROUP";

  var _commonActions = new CommonActions(OpenNebulaResource, RESOURCE, TAB_ID,
    XML_ROOT, Locale.tr("VM groups"));

  var _actions = {
    "VMGroup.create" : _commonActions.create(CREATE_DIALOG_ID),
    "VMGroup.update" : _commonActions.update(),
    "VMGroup.create_dialog" : _commonActions.showCreate(CREATE_DIALOG_ID),
    "VMGroup.update_dialog" : _commonActions.checkAndShowUpdate(),
    "VMGroup.list" : _commonActions.list(),
    "VMGroup.show" : _commonActions.show(),
    "VMGroup.delete" : _commonActions.del(),
    "VMGroup.refresh" : _commonActions.refresh(),
    "VMGroup.update_template" : _commonActions.updateTemplate(),
    "VMGroup.show_to_update" : _commonActions.showUpdate(CREATE_DIALOG_ID),
    "VMGroup.append_template" : _commonActions.appendTemplate(),
    "VMGroup.chown": _commonActions.multipleAction('chown'),
    "VMGroup.chgrp": _commonActions.multipleAction('chgrp'),
    "VMGroup.chmod": _commonActions.singleAction('chmod')
  };

  return _actions;
});
Пример #7
0
  function Actions(tabId, resource, ids){

    var RESOURCE = resource;

    var TAB_ID  = ids.TAB_ID;
    var CREATE_DIALOG_ID  = ids.CREATE_DIALOG_ID;
    var CLONE_DIALOG_ID   = ids.CLONE_DIALOG_ID;
    var INSTANTIATE_DIALOG_ID   = ids.INSTANTIATE_DIALOG_ID;
    var IMPORT_DIALOG_ID  = ids.IMPORT_DIALOG_ID;
    var CONFIRM_DIALOG_ID   = ids.CONFIRM_DIALOG_ID;

    var _commonActions = new CommonActions(OpenNebulaResource, RESOURCE, TAB_ID,
      XML_ROOT, Locale.tr("VM Template created"));

    var _actions = {};

      _actions[resource+".list"] =  _commonActions.list(),
      _actions[resource+".show"] =  _commonActions.show(),
      _actions[resource+".refresh"] =  _commonActions.refresh(),
      _actions[resource+".delete"] =  _commonActions.del(),
      
      _actions[resource+".delete_dialog"] =
        {
          type: "custom",
          call: function() {
            Sunstone.getDialog(CONFIRM_DIALOG_ID).setParams({
              //header :
              headerTabId: TAB_ID,
              body : Locale.tr("This will delete the Template.<br/>You can also delete any Image referenced inside this Template"),
              //question :
              buttons : [
                Locale.tr("Delete all images"),
                Locale.tr("Delete"),
              ],
              submit : [
                function(){
                  Sunstone.runAction(RESOURCE+'.delete_recursive', Sunstone.getDataTable(TAB_ID).elements());
                  return false;
                },
                function(){
                  Sunstone.runAction(RESOURCE+'.delete', Sunstone.getDataTable(TAB_ID).elements());
                  return false;
                }
              ]
            });

            Sunstone.getDialog(CONFIRM_DIALOG_ID).reset();
            Sunstone.getDialog(CONFIRM_DIALOG_ID).show();
          }
        },

      _actions[resource+".delete_recursive"] =
        {
          type: "multiple",
          call: OpenNebulaResource.delete_recursive,
          callback : function(request, response) {
            if (Sunstone.getTab() == TAB_ID) {
              Sunstone.showTab(TAB_ID);
            }
          },
          elements: function(opts) {
            return Sunstone.getDataTable(TAB_ID).elements(opts);
          },
          error: Notifier.onError,
          notify: true
        },

      _actions[resource+".chown"] = _commonActions.multipleAction('chown'),
      _actions[resource+".chgrp"] = _commonActions.multipleAction('chgrp'),
      _actions[resource+".chmod"] = _commonActions.singleAction('chmod'),
      _actions[resource+".share"] =
        {
          type: "multiple",
          call: function(params){
            var permissions = {
              'group_u' : 1,
              'recursive' : true
            };

            Sunstone.runAction(RESOURCE+".chmod", params.data.id, permissions);
          },
          callback : function(request, response) {
            Sunstone.runAction(RESOURCE+".show", req.request.data[0]);
          },
          elements: function(opts) {
            return Sunstone.getDataTable(TAB_ID).elements(opts);
          },
          error: Notifier.onError,
          notify: false
        },

      _actions[resource+".unshare"] =
        {
          type: "multiple",
          call: function(params){
            var permissions = {
              'group_u' : 0,
              'recursive' : true
            };

            Sunstone.runAction(RESOURCE+".chmod", params.data.id, permissions);
          },
          callback : function(request, response) {
            Sunstone.runAction(RESOURCE+".show", req.request.data[0]);
          },
          elements: function(opts) {
            return Sunstone.getDataTable(TAB_ID).elements(opts);
          },
          error: Notifier.onError,
          notify: false
        },

      _actions[resource+".rename"] = _commonActions.singleAction('rename'),
      _actions[resource+".create"] =  _commonActions.create(CREATE_DIALOG_ID),
      _actions[resource+".create_dialog"] =  _commonActions.showCreate(CREATE_DIALOG_ID),
      _actions[resource+".import_dialog"] =  {
        type: "custom",
        call: function() {
          Sunstone.showFormPanel(TAB_ID, IMPORT_DIALOG_ID, "import");
        }
      },
      _actions[resource+".append_template"] =  _commonActions.appendTemplate(),
      _actions[resource+".update"] =  _commonActions.update(),
      _actions[resource+".update_dialog"] =  _commonActions.checkAndShowUpdate(),
      _actions[resource+".update_template"] =  _commonActions.updateTemplate(),
      _actions[resource+".show_to_update"] =  _commonActions.showUpdate(CREATE_DIALOG_ID),
      _actions[resource+".instantiate"] =  {
        type: "multiple",
        call: OpenNebulaResource.instantiate,
        callback: function(request, response) {
          Sunstone.hideFormPanel();
          OpenNebulaAction.clear_cache("VM");

          Notifier.notifyCustom(Locale.tr("VM created"), " ID: " + response, false);
        },
        elements: function(opts) {
          return Sunstone.getDataTable(TAB_ID).elements(opts);
        },
        error: function(request, response){
          // without tab id param to work for both templates and vms tab
          Sunstone.hideFormPanelLoading();
          Notifier.onError(request, response);
        },
        notify: false
      },
      _actions[resource+".instantiate_quiet"] =  {
        type: "single",
        call: OpenNebulaResource.instantiate,
        callback: function(request, response) {
          Sunstone.hideFormPanel();
          OpenNebulaAction.clear_cache("VM");
        },
        error: function(request, response){
          // without tab id param to work for both templates and vms tab
          Sunstone.hideFormPanelLoading();
          Notifier.onError(request, response);
        }
      },
      _actions[resource+".instantiate_vms"] =  {
        type: "custom",
        call: function(){
          //Sunstone.resetFormPanel(TAB_ID, INSTANTIATE_DIALOG_ID);
          var selected_nodes = Sunstone.getDataTable(TAB_ID).elements();

          Sunstone.showFormPanel(TAB_ID, INSTANTIATE_DIALOG_ID, "instantiate",
            function(formPanelInstance, context) {
              formPanelInstance.setTemplateIds(context, selected_nodes);
            });
        }
      },
      _actions[resource+".instantiate_persistent"] =
      {
        type: "single",
        call: OpenNebulaResource.instantiate_persistent,
        callback: function(request, response) {
          Sunstone.hideFormPanel();
          OpenNebulaAction.clear_cache("VM");

          Notifier.notifyCustom(Locale.tr("VM created"), " ID: " + response, false);
        },
        error: function(request, response){
          // without tab id param to work for both templates and vms tab
          Sunstone.hideFormPanelLoading();
          Notifier.onError(request, response);
        }
      },
      _actions[resource+".clone_dialog"] =  {
        type: "custom",
        call: function(){
          Sunstone.getDialog(CLONE_DIALOG_ID).setParams(
            { tabId : TAB_ID,
              resource : resource
            });
          Sunstone.getDialog(CLONE_DIALOG_ID).reset();
          Sunstone.getDialog(CLONE_DIALOG_ID).show();
        }
      },
      _actions[resource+".clone"] =  {
        type: "single",
        call: OpenNebulaResource.clone,
        callback: function(request, response) {
          OpenNebulaAction.clear_cache("VMTEMPLATE");
          Notifier.notifyCustom(Locale.tr("VM Template created"), " ID: " + response.VMTEMPLATE.ID, false);
        },
        error: Notifier.onError,
        notify: true
      },
      _actions[resource+".clone_recursive"] =
      {
        type: "single",
        call: OpenNebulaResource.clone_recursive,
        callback : function(request, response) {
          OpenNebulaAction.clear_cache("VMTEMPLATE");
          Notifier.notifyCustom(Locale.tr("VM Template created"), " ID: " + response.VMTEMPLATE.ID, false);
        },
        error: Notifier.onError,
        notify: true
      }

  
    return _actions;
  }
Пример #8
0
define(function(require) {
  var Sunstone = require('sunstone');
  var Notifier = require('utils/notifier');
  var Locale = require('utils/locale');
  var CommonActions = require('utils/common-actions');
  var OpenNebulaResource = require('opennebula/marketplaceapp');
  var OpenNebula = require('opennebula');
  var OpenNebulaAction = require('opennebula/action');

  var RESOURCE = "MarketPlaceApp";
  var XML_ROOT = "MARKETPLACEAPP";
  var TAB_ID = require('./tabId');
  var CREATE_DIALOG_ID = require('./form-panels/create/formPanelId');
  var EXPORT_DIALOG_ID = require('./form-panels/export/formPanelId');
  var CONFIRM_DIALOG_ID = require('utils/dialogs/generic-confirm/dialogId');

  var _commonActions = new CommonActions(OpenNebulaResource, RESOURCE, TAB_ID,
    XML_ROOT, Locale.tr("MarketPlace App created"));

  var _actions = {
    "MarketPlaceApp.create" : _commonActions.create(CREATE_DIALOG_ID),
    "MarketPlaceApp.create_dialog" : _commonActions.showCreate(CREATE_DIALOG_ID),
    "MarketPlaceApp.download_opennebula_dialog" : {
      type: "custom",
      call: function() {
        var selected_nodes = Sunstone.getDataTable(TAB_ID).elements();
        if (selected_nodes.length != 1) {
          Notifier.notifyMessage("Please select one (and just one) app to export.");
          return false;
        }

        var resourceId = "" + selected_nodes[0];

        Sunstone.resetFormPanel(TAB_ID, EXPORT_DIALOG_ID);
        Sunstone.showFormPanel(TAB_ID, EXPORT_DIALOG_ID, "export",
          function(formPanelInstance, context) {
            formPanelInstance.setResourceId(context, resourceId);
          });
      }
    },
    "MarketPlaceApp.export" : {
      type: "multiple",
      call: OpenNebulaResource.export,
      callback: function(req, response) {
        if (response['IMAGE'] !== undefined) {
          $.each(response['IMAGE'], function(i, image) {
            if (image.error != undefined){
              Notifier.notifyError(image.error.message);
            } else {
              Notifier.notifyCustom(Locale.tr("Image created"), " ID: " + image.ID, false);
            }
          });
        };

        if (response['VMTEMPLATE'] !== undefined) {
          $.each(response['VMTEMPLATE'], function(i, vmTemplate) {
            if (vmTemplate.error != undefined) {
              Notifier.notifyError(vmTemplate.error.message);
            } else if (vmTemplate.ID != -1) {
              Notifier.notifyCustom(Locale.tr("VM Template created"), " ID: " + vmTemplate.ID, false);
            }
          });
        };

        Sunstone.hideFormPanel(TAB_ID);
        OpenNebulaAction.clear_cache("IMAGE");
        OpenNebulaAction.clear_cache("VMTEMPLATE");
      },
      elements: function(opts) {
        return Sunstone.getDataTable(TAB_ID).elements(opts);
      },
      error: function(request, response){
        // without tab id param to work for both templates and vms tab
        Sunstone.hideFormPanelLoading();
        Notifier.onError(request, response);
      },
      notify: true
    },
    "MarketPlaceApp.download_local": {
      type: "multiple",
      call: function(params) {
        var selected_nodes = Sunstone.getDataTable(TAB_ID).elements();

        $.each(selected_nodes, function() {
          window.open("/marketplaceapp/"+this+"/download?csrftoken="+csrftoken, "_blank");
        });
      },
      elements: function(opts) {
        return Sunstone.getDataTable(TAB_ID).elements(opts);
      },
      error: Notifier.onError
    },
    "MarketPlaceApp.list" : _commonActions.list(),
    "MarketPlaceApp.show" : _commonActions.show(),
    "MarketPlaceApp.refresh" : _commonActions.refresh(),

    "MarketPlaceApp.delete" : {
      type: "multiple",
      call : function(params){
        OpenNebulaResource.show({
          data : {
              id: params.data.id
          },
          success: function(request,app_json){
            var zone = app_json[XML_ROOT].ZONE_ID;

            if (zone != config.zone_id){
              Sunstone.getDialog(CONFIRM_DIALOG_ID).setParams({
                header : Locale.tr("Error"),
                headerTabId: TAB_ID,
                body : Locale.tr(
                  "This MarketPlace App resides in Zone ") +
                  zone + " (" + OpenNebula.Zone.getName(zone) + ")" +
                  Locale.tr(". To delete it you need to switch to that Zone from the zone selector in the top-right corner." ),
                question : "",
                buttons : [
                  Locale.tr("Ok"),
                ],
                submit : [
                  function(){
                    $("a#zonelector").focus().click();
                    return false;
                  }
                ]
              });

              Sunstone.getDialog(CONFIRM_DIALOG_ID).reset();
              Sunstone.getDialog(CONFIRM_DIALOG_ID).show();
            } else {
              _commonActions.del().call(params);
            }
          },
          error: Notifier.onError
        });
      },
      callback : _commonActions.del().callback,
      elements: _commonActions.del().elements,
      error: _commonActions.del().error,
      notify: _commonActions.del().notify
    },

    "MarketPlaceApp.chown": _commonActions.multipleAction('chown'),
    "MarketPlaceApp.chgrp": _commonActions.multipleAction('chgrp'),
    "MarketPlaceApp.chmod": _commonActions.singleAction('chmod'),
    "MarketPlaceApp.enable": _commonActions.multipleAction('enable'),
    "MarketPlaceApp.disable": _commonActions.multipleAction('disable'),
    //"MarketPlaceApp.update" : _commonActions.updateTemplate(),
    "MarketPlaceApp.update_template" : _commonActions.updateTemplate(),
    "MarketPlaceApp.append_template" : _commonActions.appendTemplate(),
    "MarketPlaceApp.rename": _commonActions.singleAction('rename')
  }

  return _actions;
});
Пример #9
0
define(function(require) {
  var Sunstone = require('sunstone');
  var Notifier = require('utils/notifier');
  var Locale = require('utils/locale');
  var OpenNebulaResource = require('opennebula/service');
  var OpenNebulaRole = require('opennebula/role');
  var OpenNebulaVM = require('opennebula/vm');
  var CommonActions = require('utils/common-actions');

  var TAB_ID = require('./tabId');
  var XML_ROOT = "DOCUMENT";
  var RESOURCE = "Service";

  var ROLES_PANEL_ID = require('./panels/roles/panelId');
  var SCALE_DIALOG_ID = require('./dialogs/scale/dialogId');

  var _commonActions = new CommonActions(OpenNebulaResource, RESOURCE, TAB_ID, XML_ROOT);

  function roleElements() {
    var selected_nodes = [];

    var dataTable = $('table[id^=datatable_roles]', '#'+TAB_ID+' #'+ROLES_PANEL_ID);
    var nodes = $('tbody input.check_item:checked', dataTable);
    $.each(nodes, function() {
      selected_nodes.push($(this).val());
    });

    return selected_nodes;
  }

  function roleVMElements() {
    var selected_nodes = [];

    var dataTable = $('table[id^=datatable_vms]', '#'+TAB_ID+' #'+ROLES_PANEL_ID);
    var nodes = $('tbody input.check_item:checked', dataTable);
    $.each(nodes, function() {
      selected_nodes.push($(this).val());
    });

    return selected_nodes;
  }

  function roleCallback() {
    return Sunstone.runAction('Service.refresh');
  }

  var _actions = {
    "Service.show" : _commonActions.show(),
    "Service.refresh" : _commonActions.refresh(),
    "Service.delete" : _commonActions.del(),
    "Service.chown": _commonActions.multipleAction('chown'),
    "Service.chgrp": _commonActions.multipleAction('chgrp'),
    "Service.chmod": _commonActions.singleAction('chmod'),
    "Service.rename": _commonActions.singleAction('rename'),
    "Service.shutdown":    _commonActions.multipleAction('shutdown'),
    "Service.recover":    _commonActions.multipleAction('recover'),

    "Service.list" : {
      type: "list",
      call: OpenNebulaResource.list,
      callback: function(request, response) {
        $(".oneflow_services_error_message").hide();
        Sunstone.getDataTable(TAB_ID).updateView(request, response);
      },
      error: function(request, error_json) {
        Notifier.onError(request, error_json, $(".oneflow_services_error_message"));
      }
    },

    //--------------------------------------------------------------------------

    "Role.scale_dialog" : {
      type: "custom",
      call: function(){
        selected = roleElements();

        if(selected.lenght == 0){
          return;
        }

        Sunstone.getDialog(SCALE_DIALOG_ID).setParams({roleIds: selected});
        Sunstone.getDialog(SCALE_DIALOG_ID).reset();
        Sunstone.getDialog(SCALE_DIALOG_ID).show();
      }
    },

    "Role.update" : {
      type: "multiple",
      call: OpenNebulaRole.update,
      callback: function() {
        Sunstone.getDialog(SCALE_DIALOG_ID).hide();
        roleCallback();
      },
      elements: roleElements,
      error: Notifier.onError,
      notify: true
    },

    "Role.hold" : {
      type: "multiple",
      call: OpenNebulaRole.hold,
      callback: roleCallback,
      elements: roleElements,
      error: Notifier.onError,
      notify: true
    },

    "Role.release" : {
      type: "multiple",
      call: OpenNebulaRole.release,
      callback: roleCallback,
      elements: roleElements,
      error: Notifier.onError,
      notify: true
    },

    "Role.suspend" : {
      type: "multiple",
      call: OpenNebulaRole.suspend,
      callback: roleCallback,
      elements: roleElements,
      error: Notifier.onError,
      notify: true
    },

    "Role.resume" : {
      type: "multiple",
      call: OpenNebulaRole.resume,
      callback: roleCallback,
      elements: roleElements,
      error: Notifier.onError,
      notify: true
    },

    "Role.stop" : {
      type: "multiple",
      call: OpenNebulaRole.stop,
      callback: roleCallback,
      elements: roleElements,
      error: Notifier.onError,
      notify: true
    },

    "Role.reboot" : {
      type: "multiple",
      call: OpenNebulaRole.reboot,
      callback: roleCallback,
      elements: roleElements,
      error: Notifier.onError,
      notify: true
    },

    "Role.reboot_hard" : {
      type: "multiple",
      call: OpenNebulaRole.reboot_hard,
      callback: roleCallback,
      elements: roleElements,
      error: Notifier.onError,
      notify: true
    },

    "Role.poweroff" : {
      type: "multiple",
      call: OpenNebulaRole.poweroff,
      callback: roleCallback,
      elements: roleElements,
      error: Notifier.onError,
      notify: true
    },

    "Role.poweroff_hard" : {
      type: "multiple",
      call: OpenNebulaRole.poweroff_hard,
      callback: roleCallback,
      elements: roleElements,
      error: Notifier.onError,
      notify: true
    },

    "Role.undeploy" : {
      type: "multiple",
      call: OpenNebulaRole.undeploy,
      callback: roleCallback,
      elements: roleElements,
      error: Notifier.onError,
      notify: true
    },

    "Role.undeploy_hard" : {
      type: "multiple",
      call: OpenNebulaRole.undeploy_hard,
      callback: roleCallback,
      elements: roleElements,
      error: Notifier.onError,
      notify: true
    },

    "Role.snapshot_create" : {
      type: "single",
      call: OpenNebulaRole.snapshot_create,
      callback: roleCallback,
      error: Notifier.onError,
      notify: true
    },

    "Role.terminate" : {
      type: "multiple",
      call: OpenNebulaRole.terminate,
      callback: roleCallback,
      elements: roleElements,
      error: Notifier.onError,
      notify: true
    },

    "Role.terminate_hard" : {
      type: "multiple",
      call: OpenNebulaRole.terminate_hard,
      callback: roleCallback,
      elements: roleElements,
      error: Notifier.onError,
      notify: true
    },

    "Role.delete" : {
      type: "multiple",
      call: OpenNebulaRole.del,
      callback: roleCallback,
      elements: roleElements,
      error: Notifier.onError,
      notify: true
    },

    "Role.recover" : {
      type: "multiple",
      call: OpenNebulaRole.recover,
      callback: roleCallback,
      elements: roleElements,
      error: Notifier.onError,
      notify: true
    },

    //--------------------------------------------------------------------------

    "RoleVM.deploy" : {
      type: "multiple",
      call: OpenNebulaVM.deploy,
      callback: roleCallback,
      elements: roleVMElements,
      error: Notifier.onError,
      notify: true
    },

    "RoleVM.migrate" : {
      type: "multiple",
      call: OpenNebulaVM.migrate,
      callback: roleCallback,
      elements: roleVMElements,
      error: Notifier.onError,
      notify: true
    },

    "RoleVM.migrate_live" : {
      type: "multiple",
      call: OpenNebulaVM.livemigrate,
      callback: roleCallback,
      elements: roleVMElements,
      error: Notifier.onError,
      notify: true
    },

    "RoleVM.hold" : {
      type: "multiple",
      call: OpenNebulaVM.hold,
      callback: roleCallback,
      elements: roleVMElements,
      error: Notifier.onError,
      notify: true
    },

    "RoleVM.release" : {
      type: "multiple",
      call: OpenNebulaVM.release,
      callback: roleCallback,
      elements: roleVMElements,
      error: Notifier.onError,
      notify: true
    },

    "RoleVM.suspend" : {
      type: "multiple",
      call: OpenNebulaVM.suspend,
      callback: roleCallback,
      elements: roleVMElements,
      error: Notifier.onError,
      notify: true
    },

    "RoleVM.resume" : {
      type: "multiple",
      call: OpenNebulaVM.resume,
      callback: roleCallback,
      elements: roleVMElements,
      error: Notifier.onError,
      notify: true
    },

    "RoleVM.stop" : {
      type: "multiple",
      call: OpenNebulaVM.stop,
      callback: roleCallback,
      elements: roleVMElements,
      error: Notifier.onError,
      notify: true
    },

    "RoleVM.reboot_hard" : {
      type: "multiple",
      call: OpenNebulaVM.reboot_hard,
      callback: roleCallback,
      elements: roleVMElements,
      error: Notifier.onError,
      notify: true
    },

    "RoleVM.reboot" : {
      type: "multiple",
      call: OpenNebulaVM.reboot,
      callback: roleCallback,
      elements: roleVMElements,
      error: Notifier.onError,
      notify: true
    },

    "RoleVM.poweroff" : {
      type: "multiple",
      call: OpenNebulaVM.poweroff,
      callback: roleCallback,
      elements: roleVMElements,
      error: Notifier.onError,
      notify: true
    },

    "RoleVM.poweroff_hard" : {
      type: "multiple",
      call: OpenNebulaVM.poweroff_hard,
      callback: roleCallback,
      elements: roleVMElements,
      error: Notifier.onError,
      notify: true
    },

    "RoleVM.undeploy" : {
      type: "multiple",
      call: OpenNebulaVM.undeploy,
      callback: roleCallback,
      elements: roleVMElements,
      error: Notifier.onError,
      notify: true
    },

    "RoleVM.undeploy_hard" : {
      type: "multiple",
      call: OpenNebulaVM.undeploy_hard,
      callback: roleCallback,
      elements: roleVMElements,
      error: Notifier.onError,
      notify: true
    },

    "RoleVM.terminate" : {
      type: "multiple",
      call: OpenNebulaVM.terminate,
      callback: roleCallback,
      elements: roleVMElements,
      error: Notifier.onError,
      notify: true
    },

    "RoleVM.terminate_hard" : {
      type: "multiple",
      call: OpenNebulaVM.terminate_hard,
      callback: roleCallback,
      elements: roleVMElements,
      error: Notifier.onError,
      notify: true
    },

    "RoleVM.recover" : {
      type: "multiple",
      call: OpenNebulaVM.recover,
      callback: roleCallback,
      elements: roleVMElements,
      error: Notifier.onError,
      notify: true
    },

    "RoleVM.resched" : {
      type: "multiple",
      call: OpenNebulaVM.resched,
      callback: roleCallback,
      elements: roleVMElements,
      error: Notifier.onError,
      notify: true
    },

    "RoleVM.unresched" : {
      type: "multiple",
      call: OpenNebulaVM.unresched,
      callback: roleCallback,
      elements: roleVMElements,
      error: Notifier.onError,
      notify: true
    },

    "RoleVM.chown" : {
      type: "multiple",
      call: OpenNebulaVM.chown,
      callback: roleCallback,
      elements: roleVMElements,
      error: Notifier.onError,
      notify: true
    },
    "RoleVM.chgrp" : {
      type: "multiple",
      call: OpenNebulaVM.chgrp,
      callback: roleCallback,
      elements: roleVMElements,
      error: Notifier.onError,
      notify: true
    }


  };

  return _actions;
});
Пример #10
0
define(function(require) {
  var Sunstone = require('sunstone');
  var Notifier = require('utils/notifier');
  var Locale = require('utils/locale');
  var OpenNebulaResource = require('opennebula/image');
  var OpenNebula = require('opennebula');
  var OpenNebulaAction = require('opennebula/action');
  var CommonActions = require('utils/common-actions');

  var RESOURCE = "Image";
  var XML_ROOT = "IMAGE";
  var TAB_ID = require('./tabId');
  var MARKETPLACEAPPS_TAB_ID = require('tabs/marketplaceapps-tab/tabId');
  var CREATE_DIALOG_ID = require('./form-panels/create/formPanelId');
  var CLONE_DIALOG_ID = require('./dialogs/clone/dialogId');
  var CREATE_APP_DIALOG_ID = require('tabs/marketplaceapps-tab/form-panels/create/formPanelId');
  var IMPORT_DIALOG_ID = require('./form-panels/import/formPanelId');
  var CONFIRM_DIALOG_ID = require('utils/dialogs/generic-confirm/dialogId');

  var _commonActions = new CommonActions(OpenNebulaResource, RESOURCE, TAB_ID, XML_ROOT);

  var _actions = {
    "Image.create" : _commonActions.create(CREATE_DIALOG_ID),
    "Image.create_dialog" : _commonActions.showCreate(CREATE_DIALOG_ID),
    "Image.import_dialog" : {
      type: "custom",
      call: function() {
        Sunstone.showFormPanel(TAB_ID, IMPORT_DIALOG_ID, "import");
      }
    },
    "Image.list" : _commonActions.list(),
    "Image.show" : _commonActions.show(),
    "Image.refresh" : _commonActions.refresh(),
    "Image.delete" : _commonActions.del(),
    "Image.append_template" : _commonActions.appendTemplate(),
    "Image.update_template" : _commonActions.updateTemplate(),
    "Image.chown": _commonActions.multipleAction('chown'),
    "Image.chgrp": _commonActions.multipleAction('chgrp'),
    "Image.chmod": _commonActions.singleAction('chmod'),
    "Image.rename": _commonActions.singleAction('rename'),
    "Image.enable": _commonActions.multipleAction('enable'),
    "Image.disable": _commonActions.multipleAction('disable'),
    "Image.persistent": _commonActions.multipleAction('persistent'),
    "Image.nonpersistent": _commonActions.multipleAction('nonpersistent'),
    "Image.chtype": _commonActions.singleAction('chtype'),
    "Image.snapshot_flatten": _commonActions.singleAction("snapshot_flatten"),
    "Image.snapshot_revert": _commonActions.singleAction("snapshot_revert"),
    "Image.snapshot_delete": _commonActions.singleAction("snapshot_delete"),
    "Image.export_dialog" : {
      type: "custom",
      call: function(params) {
        var selectedNodes = Sunstone.getDataTable(TAB_ID).elements();

        if (selectedNodes.length !== 1) {
          Notifier.notifyMessage(Locale.tr("Please select one (and just one) Image to export."));
          return false;
        }

        var resourceId = '' + selectedNodes[0];

        OpenNebulaResource.show({
          data : {
              id: resourceId
          },
          success: function(request, img_json){
            var img = img_json[XML_ROOT];

            if (OpenNebula.Datastore.isMarketExportSupported(img.DATASTORE_ID)){
              Sunstone.showTab(MARKETPLACEAPPS_TAB_ID);
              Sunstone.showFormPanel(MARKETPLACEAPPS_TAB_ID, CREATE_APP_DIALOG_ID, "export",
                function(formPanelInstance, context) {
                  formPanelInstance.setImageId(resourceId);
                });
            } else {
              Sunstone.getDialog(CONFIRM_DIALOG_ID).setParams({
                header : Locale.tr("Error"),
                body : Locale.tr("This Image resides in Datastore ") +
                  img.DATASTORE_ID + " (" + img.DATASTORE + ")" +
                  Locale.tr(". The export action is not supported for that Datastore DS_MAD driver."),
                question : "",
                buttons : [
                  Locale.tr("Ok"),
                ],
                submit : [
                  function(){
                    return false;
                  }
                ]
              });

              Sunstone.getDialog(CONFIRM_DIALOG_ID).reset();
              Sunstone.getDialog(CONFIRM_DIALOG_ID).show();
            }
          },
          error: Notifier.onError
        });
      }
    },

    "Image.clone_dialog" : {
      type: "custom",
      call: function(){
        Sunstone.getDialog(CLONE_DIALOG_ID).show();
      }
    },
    "Image.clone" : {
      type: "single",
      call: OpenNebulaResource.clone,
      callback: function(request, response) {
        OpenNebulaAction.clear_cache("IMAGE");
        Notifier.notifyCustom(Locale.tr("Image created"), " ID: " + response.IMAGE.ID, false);
      },
      error: Notifier.onError,
      notify: true
    }
  };

  return _actions;
});
Пример #11
0
define(function(require) {
  var Sunstone = require('sunstone');
  var Notifier = require('utils/notifier');
  var Locale = require('utils/locale');
  var DataTable = require('./datatable');
  var OpenNebulaResource = require('opennebula/vntemplate');
  var OpenNebulaCluster = require('opennebula/cluster');
  var OpenNebulaAction = require('opennebula/action');
  var CommonActions = require('utils/common-actions');

  var RESOURCE = "VNTemplate";
  var XML_ROOT = "VNTEMPLATE";
  var TAB_ID = require('./tabId');
  var CREATE_DIALOG_ID = require('./form-panels/create/formPanelId');
  var ADD_AR_DIALOG_ID = require('tabs/vnets-tab/dialogs/add-ar/dialogId');
  var UPDATE_AR_DIALOG_ID = require('tabs/vnets-tab/dialogs/update-ar/dialogId');
  var RESERVE_DIALOG_ID = require('tabs/vnets-tab/dialogs/reserve/dialogId');
  var CLUSTERS_DIALOG_ID = require('utils/dialogs/clusters/dialogId');
  var INSTANTIATE_DIALOG_ID = require('./form-panels/instantiate/formPanelId');

  var _commonActions = new CommonActions(OpenNebulaResource, RESOURCE, TAB_ID,
    XML_ROOT, Locale.tr("Virtual Network Template created"));

  var _actions = {
    "VNTemplate.create" : _commonActions.create(CREATE_DIALOG_ID),
    "VNTemplate.create_dialog" : _commonActions.showCreate(CREATE_DIALOG_ID),
    "VNTemplate.list" : _commonActions.list(),
    "VNTemplate.show" : _commonActions.show(),
    "VNTemplate.refresh" : _commonActions.refresh(),
    "VNTemplate.delete" : _commonActions.del(),
    "VNTemplate.hold": _commonActions.singleAction('hold'),
    "VNTemplate.release": _commonActions.singleAction('release'),
    "VNTemplate.chown": _commonActions.multipleAction('chown'),
    "VNTemplate.chgrp": _commonActions.multipleAction('chgrp'),
    "VNTemplate.chmod": _commonActions.singleAction('chmod'),
    "VNTemplate.rename": _commonActions.singleAction('rename'),
    "VNTemplate.update" : _commonActions.update(),
    "VNTemplate.update_template" : _commonActions.updateTemplate(),
    "VNTemplate.append_template" : _commonActions.appendTemplate(),
    "VNTemplate.update_dialog" : _commonActions.checkAndShowUpdate(),
    "VNTemplate.show_to_update" : _commonActions.showUpdate(CREATE_DIALOG_ID),
    "VNTemplate.lockM": _commonActions.multipleAction('lock', false),
    "VNTemplate.lockU": _commonActions.multipleAction('lock', false),
    "VNTemplate.lockA": _commonActions.multipleAction('lock', false),
    "VNTemplate.unlock": _commonActions.multipleAction('unlock', false),
    "VNTemplate.add_ar" : {
      type: "single",
      call: OpenNebulaResource.update,
      callback: function(req) {
        // Reset the wizard
        Sunstone.getDialog(ADD_AR_DIALOG_ID).hide();
        Sunstone.getDialog(ADD_AR_DIALOG_ID).reset();

        Sunstone.runAction("VNTemplate.show",req.request.data[0]);
      },
      error: Notifier.onError
    },

    "VNTemplate.update_ar" : {
      type: "single",
      call: OpenNebulaResource.update,
      callback: function(req) {
        // Reset the wizard
        Sunstone.getDialog(UPDATE_AR_DIALOG_ID).hide();
        Sunstone.getDialog(UPDATE_AR_DIALOG_ID).reset();

        Sunstone.runAction("VNTemplate.show",req.request.data[0]);
      },
      error: Notifier.onError
    },

    "VNTemplate.remove_ar" : {
      type: "single",
      call: OpenNebulaResource.update,
      callback: function(req) {
        OpenNebulaAction.clear_cache("VNTEMPLATE");
        Sunstone.runAction("VNTemplate.show",req.request.data[0]);
      },
      error: Notifier.onError
    },

    "VNTemplate.addtocluster" : _commonActions.checkAndShow("clusters"),

    "VNTemplate.clusters" : {
      type: "single",
      call: OpenNebulaResource.show,
      callback: function(request, response) {
        Sunstone.getDialog(CLUSTERS_DIALOG_ID).setParams({
          element: response[XML_ROOT],
          resource:"vntemplate",
          resource_name: RESOURCE,
          only_update_template: true
        });

        Sunstone.getDialog(CLUSTERS_DIALOG_ID).reset();
        Sunstone.getDialog(CLUSTERS_DIALOG_ID).show();
      },
      error: Notifier.onError
    },
    "VNTemplate.instantiate" : {
      type: "multiple",
      call: OpenNebulaResource.instantiate,
      callback: function(request, response) {
        Sunstone.hideFormPanel();
        OpenNebulaAction.clear_cache("VNET");

        Notifier.notifyCustom(Locale.tr("VNet created"),
          Navigation.link(" ID: " + response, "vnets-tab", response),
          false);
      },
      elements: function(opts) {
        return Sunstone.getDataTable(TAB_ID).elements(opts);
      },
      error: function(request, response){
        Sunstone.hideFormPanelLoading();
        Notifier.onError(request, response);
      },
      notify: false
    },
    "VNTemplate.instantiate_vnets" : {
      type: "custom",
      call: function(){
        //Sunstone.resetFormPanel(TAB_ID, INSTANTIATE_DIALOG_ID);
        var selected_nodes = Sunstone.getDataTable(TAB_ID).elements();

        if (selected_nodes.length != 1) {
          Notifier.notifyMessage("Please select one (and just one) Virtual Network Template.");
          return false;
        }

        Sunstone.showFormPanel(TAB_ID, INSTANTIATE_DIALOG_ID, "instantiate",
          function(formPanelInstance, context) {
            formPanelInstance.setTemplateIds(context, selected_nodes);
          });
      }
    },
  };

  return _actions;
});
Пример #12
0
define(function(require) {
  var Sunstone = require('sunstone');
  var Notifier = require('utils/notifier');
  var Locale = require('utils/locale');
  var OpenNebulaResource = require('opennebula/template');
  var CommonActions = require('utils/common-actions');
  var OpenNebulaAction = require('opennebula/action');

  var TAB_ID = require('./tabId');
  var CREATE_DIALOG_ID = require('./form-panels/create/formPanelId');
  var CLONE_DIALOG_ID = require('./dialogs/clone/dialogId');
  var INSTANTIATE_DIALOG_ID = require('./form-panels/instantiate/formPanelId');
  var IMPORT_DIALOG_ID = require('./form-panels/import/formPanelId');
  var CONFIRM_DIALOG_ID = require('utils/dialogs/generic-confirm/dialogId');

  var XML_ROOT = "VMTEMPLATE"
  var RESOURCE = "Template"

  var _commonActions = new CommonActions(OpenNebulaResource, RESOURCE, TAB_ID, XML_ROOT);

  var _actions = {
    "Template.list" : _commonActions.list(),
    "Template.show" : _commonActions.show(),
    "Template.refresh" : _commonActions.refresh(),
    "Template.delete" : _commonActions.del(),
    
    "Template.delete_dialog":
      {
        type: "custom",
        call: function() {
          Sunstone.getDialog(CONFIRM_DIALOG_ID).setParams({
            //header :
            body : Locale.tr("This will delete the Template.<br/>You can also delete any Image referenced inside this Template"),
            //question :
            buttons : [
              Locale.tr("Delete all images"),
              Locale.tr("Delete"),
            ],
            submit : [
              function(){
                Sunstone.runAction('Template.delete_recursive', Sunstone.getDataTable(TAB_ID).elements());
                return false;
              },
              function(){
                Sunstone.runAction('Template.delete', Sunstone.getDataTable(TAB_ID).elements());
                return false;
              }
            ]
          });

          Sunstone.getDialog(CONFIRM_DIALOG_ID).reset();
          Sunstone.getDialog(CONFIRM_DIALOG_ID).show();
        }
      },

    "Template.delete_recursive":
      {
        type: "multiple",
        call: OpenNebulaResource.delete_recursive,
        callback : function(request, response) {
          var elementId = request.request.data[0][0].toString();
          Sunstone.getDataTable(TAB_ID).deleteElement(elementId);
        },
        elements: function() {
          return Sunstone.getDataTable(TAB_ID).elements();
        },
        error: Notifier.onError,
        notify: true
      },

    "Template.chown": _commonActions.multipleAction('chown'),
    "Template.chgrp": _commonActions.multipleAction('chgrp'),
    "Template.chmod": _commonActions.singleAction('chmod'),
    "Template.share":
      {
        type: "multiple",
        call: function(params){
          var permissions = {
            'group_u' : 1,
            'recursive' : true
          };

          Sunstone.runAction(RESOURCE+".chmod", params.data.id, permissions);
        },
        callback : function(request, response) {
          Sunstone.runAction(RESOURCE+".show", req.request.data[0][0]);
        },
        elements: function() {
          return Sunstone.getDataTable(TAB_ID).elements();
        },
        error: Notifier.onError,
        notify: false
      },

    "Template.unshare":
      {
        type: "multiple",
        call: function(params){
          var permissions = {
            'group_u' : 0,
            'recursive' : true
          };

          Sunstone.runAction(RESOURCE+".chmod", params.data.id, permissions);
        },
        callback : function(request, response) {
          Sunstone.runAction(RESOURCE+".show", req.request.data[0][0]);
        },
        elements: function() {
          return Sunstone.getDataTable(TAB_ID).elements();
        },
        error: Notifier.onError,
        notify: false
      },

    "Template.rename": _commonActions.singleAction('rename'),
    "Template.create" : _commonActions.create(CREATE_DIALOG_ID),
    "Template.create_dialog" : _commonActions.showCreate(CREATE_DIALOG_ID),
    "Template.import_dialog" : {
      type: "custom",
      call: function() {
        Sunstone.showFormPanel(TAB_ID, IMPORT_DIALOG_ID, "import");
      }
    },
    "Template.append_template" : _commonActions.appendTemplate(),
    "Template.update" : _commonActions.update(),
    "Template.update_dialog" : _commonActions.checkAndShowUpdate(),
    "Template.update_template" : _commonActions.updateTemplate(),
    "Template.show_to_update" : _commonActions.showUpdate(CREATE_DIALOG_ID),
    "Template.instantiate" : {
      type: "multiple",
      call: OpenNebulaResource.instantiate,
      callback: function(req) {
        Sunstone.hideFormPanel(TAB_ID);
        OpenNebulaAction.clear_cache("VM");
      },
      elements: function() {
        return Sunstone.getDataTable(TAB_ID).elements();
      },
      error: function(request, response){
        // without tab id param to work for both templates and vms tab
        Sunstone.hideFormPanelLoading();
        Notifier.onError(request, response);
      },
      notify: true
    },
    "Template.instantiate_quiet" : {
      type: "single",
      call: OpenNebulaResource.instantiate,
      callback: function(req) {
        Sunstone.hideFormPanel(TAB_ID);
        OpenNebulaAction.clear_cache("VM");
      },
      error: function(request, response){
        // without tab id param to work for both templates and vms tab
        Sunstone.hideFormPanelLoading();
        Notifier.onError(request, response);
      }
    },
    "Template.instantiate_vms" : {
      type: "custom",
      call: function(){
        //Sunstone.resetFormPanel(TAB_ID, INSTANTIATE_DIALOG_ID);
        var selected_nodes = Sunstone.getDataTable(TAB_ID).elements();

        Sunstone.showFormPanel(TAB_ID, INSTANTIATE_DIALOG_ID, "instantiate",
          function(formPanelInstance, context) {
            formPanelInstance.setTemplateIds(context, selected_nodes);
          });
      }
    },
    "Template.clone_dialog" : {
      type: "custom",
      call: function(){
        Sunstone.getDialog(CLONE_DIALOG_ID).show();
      }
    },
    "Template.clone" : {
      type: "single",
      call: OpenNebulaResource.clone,
      callback: function(request, response) {
        OpenNebulaAction.clear_cache("VMTEMPLATE");
        Notifier.notifyCustom(Locale.tr("VM Template created"), " ID: " + response.VMTEMPLATE.ID, false);
      },
      error: Notifier.onError,
      notify: true
    }
  };

  return _actions;
})
Пример #13
0
define(function(require) {
  var Config = require('sunstone-config');
  var Sunstone = require('sunstone');
  var Notifier = require('utils/notifier');
  var Locale = require('utils/locale');
  var OpenNebulaVM = require('opennebula/vm');
  var CommonActions = require('utils/common-actions');
  var Vnc = require('utils/vnc');
  var Spice = require('utils/spice');

  var TAB_ID = require('./tabId');
  var CREATE_DIALOG_ID           = require('./form-panels/create/formPanelId');
  var DEPLOY_DIALOG_ID           = require('./dialogs/deploy/dialogId');
  var MIGRATE_DIALOG_ID          = require('./dialogs/migrate/dialogId');
  var VNC_DIALOG_ID              = require('./dialogs/vnc/dialogId');
  var SPICE_DIALOG_ID            = require('./dialogs/spice/dialogId');
  var SAVE_AS_TEMPLATE_DIALOG_ID = require('./dialogs/saveas-template/dialogId');
  var UPDATECONF_FORM_ID         = require('./form-panels/updateconf/formPanelId');

  var XML_ROOT = "VM";
  var RESOURCE = "VM";

  var _commonActions = new CommonActions(OpenNebulaVM, RESOURCE, TAB_ID,
    XML_ROOT, Locale.tr("VM created"));

  var _actions = {
    "VM.list":    _commonActions.list(),
    "VM.show": {
      type: "single",
      call: OpenNebulaVM.show,
      callback: function(request, response) {
        if (Config.isTabEnabled("provision-tab")) {
          $(".provision_refresh_info", ".provision_list_vms").click();
        } else {
          Sunstone.getDataTable(TAB_ID).updateElement(request, response);
          if (Sunstone.rightInfoVisible($('#' + TAB_ID))) {
            Sunstone.insertPanels(TAB_ID, response);
          }
        }
      },
      error: Notifier.onError
    },
    "VM.refresh": _commonActions.refresh(),
    "VM.chown": _commonActions.multipleAction('chown'),
    "VM.chgrp": _commonActions.multipleAction('chgrp'),
    "VM.hold":    _commonActions.multipleAction('hold'),
    "VM.release": _commonActions.multipleAction('release'),
    "VM.suspend": _commonActions.multipleAction('suspend'),
    "VM.resume": _commonActions.multipleAction('resume'),
    "VM.stop": _commonActions.multipleAction('stop'),
    "VM.reboot": _commonActions.multipleAction('reboot'),
    "VM.reboot_hard": _commonActions.multipleAction('reboot_hard'),
    "VM.poweroff": _commonActions.multipleAction('poweroff'),
    "VM.poweroff_hard": _commonActions.multipleAction('poweroff_hard'),
    "VM.undeploy": _commonActions.multipleAction('undeploy'),
    "VM.undeploy_hard": _commonActions.multipleAction('undeploy_hard'),
    "VM.terminate": _commonActions.multipleAction('terminate'),
    "VM.terminate_hard": _commonActions.multipleAction('terminate_hard'),
    "VM.recover": _commonActions.multipleAction('recover'),
    "VM.resched": _commonActions.multipleAction('resched'),
    "VM.unresched": _commonActions.multipleAction('unresched'),

    "VM.chmod": _commonActions.singleAction('chmod'),
    "VM.rename": _commonActions.singleAction('rename'),
    "VM.update_template": _commonActions.updateTemplate(),
    "VM.append_template": _commonActions.appendTemplate(),
    "VM.deploy_action": _commonActions.singleAction('deploy'),
    "VM.migrate_action": _commonActions.singleAction('migrate'),
    "VM.migrate_live_action": _commonActions.singleAction('livemigrate'),
    "VM.attachdisk": _commonActions.singleAction('attachdisk'),
    "VM.detachdisk": _commonActions.singleAction('detachdisk'),
    "VM.attachnic": _commonActions.singleAction('attachnic'),
    "VM.detachnic": _commonActions.singleAction('detachnic'),
    "VM.resize": _commonActions.singleAction('resize'),
    "VM.disk_resize": _commonActions.singleAction('disk_resize'),
    "VM.snapshot_create": _commonActions.singleAction('snapshot_create'),
    "VM.snapshot_revert": _commonActions.singleAction('snapshot_revert'),
    "VM.snapshot_delete": _commonActions.singleAction('snapshot_delete'),
    "VM.disk_snapshot_create": _commonActions.singleAction('disk_snapshot_create'),
    "VM.disk_snapshot_revert": _commonActions.singleAction('disk_snapshot_revert'),
    "VM.disk_snapshot_delete": _commonActions.singleAction('disk_snapshot_delete'),
    "VM.disk_saveas" : _commonActions.singleAction('disk_saveas'),

    "VM.create_dialog" : {
      type: "custom",
      call: function() {
        Sunstone.showFormPanel(TAB_ID, CREATE_DIALOG_ID, "create");
      }
    },
    "VM.create" : {
      type: "custom",
      call: function(id, name) {
        Sunstone.runAction("Template.instantiate", [id], name);
      },
      callback: function(request, response) {
        Sunstone.runAction("VM.refresh");
      },
      error: Notifier.onError
    },
    "VM.deploy" : {
      type: "custom",
      call: function() {
        Sunstone.getDialog(DEPLOY_DIALOG_ID).show();
      }
    },
    "VM.silent_deploy_action" : {
      type: "single",
      call: OpenNebulaVM.deploy,
      error: Notifier.onError
    },
    "VM.migrate" : {
      type: "custom",
      call: function() {
       var dialog = Sunstone.getDialog(MIGRATE_DIALOG_ID);
       dialog.reset();
       dialog.setLive(false);
       dialog.show();
     }
    },
    "VM.migrate_live" : {
      type: "custom",
      call: function() {
       var dialog = Sunstone.getDialog(MIGRATE_DIALOG_ID);
       dialog.reset();
       dialog.setLive(true);
       dialog.show();
     }
    },
    "VM.startvnc" : {
      type: "custom",
      call: function() {
        $.each(Sunstone.getDataTable(TAB_ID).elements(), function(index, elem) {
          if (!Vnc.lockStatus()) {
            Vnc.lock();
            Sunstone.runAction("VM.startvnc_action", elem);
          } else {
            Notifier.notifyError(Locale.tr("VNC Connection in progress"))
            return false;
          }
        });
      }
    },
    "VM.startvnc_action" : {
      type: "single",
      call: OpenNebulaVM.vnc,
      callback: function(request, response) {
       var dialog = Sunstone.getDialog(VNC_DIALOG_ID);
       dialog.setElement(response);
       dialog.show();
      },
      error: function(req, resp) {
        Notifier.onError(req, resp);
        Vnc.unlock();
      },
      notify: true
    },
    "VM.startspice" : {
      type: "custom",
      call: function() {
        $.each(Sunstone.getDataTable(TAB_ID).elements(), function(index, elem) {
          if (!Spice.lockStatus()) {
            Spice.lock();
            Sunstone.runAction("VM.startspice_action", elem);
          } else {
            Notifier.notifyError(Locale.tr("SPICE Connection in progress"))
            return false;
          }
        });
      }
    },
    "VM.startspice_action" : {
      type: "single",
      call: OpenNebulaVM.vnc,
      callback: function(request, response) {
       var dialog = Sunstone.getDialog(SPICE_DIALOG_ID);
       dialog.setElement(response);
       dialog.show();
      },
      error: function(req, resp) {
        Notifier.onError(req, resp);
        Spice.unlock();
      },
      notify: true
    },
    "VM.save_as_template" : {
      type: "single",
      call: function() {
       var dialog = Sunstone.getDialog(SAVE_AS_TEMPLATE_DIALOG_ID);
       dialog.show();
       },
      error: function(req, resp) {
        Notifier.onError(req, resp);
      },
      notify: false
    },
    "VM.updateconf": {
      type: "single",
      call: OpenNebulaVM.updateconf,
      callback: function (req) {
        Sunstone.resetFormPanel(TAB_ID, UPDATECONF_FORM_ID);
        Sunstone.hideFormPanel(TAB_ID);

        Sunstone.runAction("VM.refresh");
      },
      elements: function(opts) {
        return Sunstone.getDataTable(TAB_ID).elements(opts);
      },
      error: function(request, response) {
        Sunstone.hideFormPanelLoading(TAB_ID);
        Notifier.onError(request, response);
      },
      notify: false
    }
  };

  return _actions;
});
Пример #14
0
define(function(require) {
  var Sunstone = require('sunstone');
  var Notifier = require('utils/notifier');
  var Locale = require('utils/locale');
  var DataTable = require('./datatable');
  var OpenNebulaResource = require('opennebula/host');
  var OpenNebulaCluster = require('opennebula/cluster');
  var OpenNebulaAction = require('opennebula/action');
  var CommonActions = require('utils/common-actions');

  var TAB_ID = require('./tabId');
  var XML_ROOT = "HOST"
  var RESOURCE = "Host"
  var CREATE_DIALOG_ID = require('./form-panels/create/formPanelId');

  var _commonActions = new CommonActions(OpenNebulaResource, RESOURCE, TAB_ID, XML_ROOT);

  var _actions = {
    "Host.create" : _commonActions.create(CREATE_DIALOG_ID),
    "Host.create_dialog" : _commonActions.showCreate(CREATE_DIALOG_ID),
    "Host.list" : _commonActions.list(),
    "Host.show" : _commonActions.show(),
    "Host.refresh" : _commonActions.refresh(),
    "Host.delete" : _commonActions.del(),
    "Host.update_template" : _commonActions.updateTemplate(),
    "Host.enable": _commonActions.multipleAction('enable'),
    "Host.disable": _commonActions.multipleAction('disable'),
    "Host.rename": _commonActions.singleAction('rename'),

    "Host.addtocluster" : {
      type: "multiple",
      call: function(params){
        var cluster = params.data.extra_param;
        var host = params.data.id;

        if (cluster == -1){
          OpenNebulaResource.show({
            data : {
              id: host
            },
            success: function (request, info){
              var element = info.HOST;

              var current_cluster = element.CLUSTER_ID;

              if(current_cluster != -1){
                OpenNebulaCluster.delhost({
                  data: {
                    id: current_cluster,
                    extra_param: host
                  },
                  success: function(){
                    OpenNebulaAction.clear_cache("HOST");
                    Sunstone.runAction('Host.show',host);
                  },
                  error: Notifier.onError
                });
              } else {
                OpenNebulaAction.clear_cache("HOST");
                Sunstone.runAction('Host.show',host);
              }
            },
            error: Notifier.onError
          });
        } else {
          OpenNebulaCluster.addhost({
            data: {
              id: cluster,
              extra_param: host
            },
            success: function(){
              OpenNebulaAction.clear_cache("HOST");
              Sunstone.runAction('Host.show',host);
            },
            error: Notifier.onError
          });
        }
      },
      elements: function() {
        return Sunstone.getDataTable(TAB_ID).elements();
      }
    }
  };

  return _actions;
})
Пример #15
0
define(function(require) {
  var Sunstone = require('sunstone');
  var Notifier = require('utils/notifier');
  var Locale = require('utils/locale');
  var DataTable = require('./datatable');
  var OpenNebulaResource = require('opennebula/vdc');
  var CommonActions = require('utils/common-actions');
  var Navigation = require('utils/navigation');

  var TAB_ID = require('./tabId');
  var CREATE_DIALOG_ID = require('./form-panels/create/formPanelId');

  var RESOURCE = "Vdc";
  var XML_ROOT = "VDC";

  var _commonActions = new CommonActions(OpenNebulaResource, RESOURCE, TAB_ID,
    XML_ROOT, Locale.tr("VDC created"));

  var _actions = {
    "Vdc.create_dialog" : _commonActions.showCreate(CREATE_DIALOG_ID),
    "Vdc.list" : _commonActions.list(),
    "Vdc.show" : _commonActions.show(),
    "Vdc.refresh" : _commonActions.refresh(),
    "Vdc.delete" : _commonActions.del(),
    "Vdc.update" : _commonActions.update(),
    "Vdc.update_template" : _commonActions.updateTemplate(),
    "Vdc.append_template" : _commonActions.appendTemplate(),
    "Vdc.update_dialog" : _commonActions.checkAndShowUpdate(),
    "Vdc.show_to_update" : _commonActions.showUpdate(CREATE_DIALOG_ID),
    "Vdc.rename": _commonActions.singleAction('rename'),

    "Vdc.create" : {
      type: "create",
      call: OpenNebulaResource.create,
      callback: function(request, response) {
        var group_ids = request.request.data[0].group_ids;
        if(group_ids !=undefined){
          $.each(group_ids,function(){
            Sunstone.runAction(RESOURCE+".add_group",
              response.VDC.ID,
              { group_id : parseInt(this)});
          });
        }

        var clusters = request.request.data[0].clusters;
        if(clusters !=undefined){
          $.each(clusters,function(){
            Sunstone.runAction(RESOURCE+".add_cluster",
              response.VDC.ID,
              this);
          });
        }

        var hosts = request.request.data[0].hosts;
        if(hosts !=undefined){
          $.each(hosts,function(){
            Sunstone.runAction(RESOURCE+".add_host",
              response.VDC.ID,
              this);
          });
        }

        var vnets = request.request.data[0].vnets;
        if(vnets !=undefined){
          $.each(vnets,function(){
            Sunstone.runAction(RESOURCE+".add_vnet",
              response.VDC.ID,
              this);
          });
        }

        var datastores = request.request.data[0].datastores;
        if(datastores !=undefined){
          $.each(datastores,function(){
            Sunstone.runAction(RESOURCE+".add_datastore",
              response.VDC.ID,
              this);
          });
        }

        Sunstone.resetFormPanel(TAB_ID, CREATE_DIALOG_ID);
        Sunstone.hideFormPanel(TAB_ID);

        // TODO: this vdc.show may get the information before the add/del
        // actions end, showing "outdated" information

        Sunstone.runAction(RESOURCE+'.refresh');
        Notifier.notifyCustom(Locale.tr("VDC created"),
          Navigation.link(" ID: " + response.VDC.ID, "vdcs-tab", response.VDC.ID),
          false);
      },
      error: function(request, response){
        Sunstone.hideFormPanelLoading(TAB_ID);
        Notifier.onError(request, response);
      }
    },

    "Vdc.add_group" : {
      type: "single",
      call : OpenNebulaResource.add_group,
      error : Notifier.onError
    },

    "Vdc.del_group" : {
      type: "single",
      call : OpenNebulaResource.del_group,
      error : Notifier.onError
    },

    "Vdc.add_cluster" : {
      type: "single",
      call : OpenNebulaResource.add_cluster,
      error : Notifier.onError
    },

    "Vdc.del_cluster" : {
      type: "single",
      call : OpenNebulaResource.del_cluster,
      error : Notifier.onError
    },

    "Vdc.add_host" : {
      type: "single",
      call : OpenNebulaResource.add_host,
      error : Notifier.onError
    },

    "Vdc.del_host" : {
      type: "single",
      call : OpenNebulaResource.del_host,
      error : Notifier.onError
    },

    "Vdc.add_vnet" : {
      type: "single",
      call : OpenNebulaResource.add_vnet,
      error : Notifier.onError
    },

    "Vdc.del_vnet" : {
      type: "single",
      call : OpenNebulaResource.del_vnet,
      error : Notifier.onError
    },

    "Vdc.add_datastore" : {
      type: "single",
      call : OpenNebulaResource.add_datastore,
      error : Notifier.onError
    },

    "Vdc.del_datastore" : {
      type: "single",
      call : OpenNebulaResource.del_datastore,
      error : Notifier.onError
    }
  };

  return _actions;
})
Пример #16
0
define(function(require) {
  var Sunstone = require('sunstone');
  var Notifier = require('utils/notifier');
  var Locale = require('utils/locale');
  var OpenNebulaResource = require('opennebula/datastore');
  var OpenNebulaCluster = require('opennebula/cluster');
  var OpenNebulaAction = require('opennebula/action');
  var CommonActions = require('utils/common-actions');

  var RESOURCE = "Datastore";
  var XML_ROOT = "DATASTORE";
  var TAB_ID = require('./tabId');
  var CREATE_DIALOG_ID = require('./form-panels/create/formPanelId');
  var IMPORT_DIALOG_ID = require('./form-panels/import/formPanelId');
  var CLUSTERS_DIALOG_ID = require('utils/dialogs/clusters/dialogId');

  var _commonActions = new CommonActions(OpenNebulaResource, RESOURCE, TAB_ID, XML_ROOT);

  var _actions = {
    "Datastore.create" : _commonActions.create(CREATE_DIALOG_ID),
    "Datastore.create_dialog" : _commonActions.showCreate(CREATE_DIALOG_ID),
    "Datastore.import_dialog" : {
      type: "custom",
      call: function() {
        Sunstone.showFormPanel(TAB_ID, IMPORT_DIALOG_ID, "import");
      }
    },
    "Datastore.list" : _commonActions.list(),
    "Datastore.show" : _commonActions.show(),
    "Datastore.refresh" : _commonActions.refresh(),
    "Datastore.delete" : _commonActions.del(),
    "Datastore.chown": _commonActions.multipleAction('chown'),
    "Datastore.chgrp": _commonActions.multipleAction('chgrp'),
    "Datastore.chmod": _commonActions.singleAction('chmod'),
    "Datastore.update" : _commonActions.updateTemplate(),
    "Datastore.update_template" : _commonActions.updateTemplate(),
    "Datastore.append_template" : _commonActions.appendTemplate(),
    "Datastore.rename": _commonActions.singleAction('rename'),
    "Datastore.enable": _commonActions.multipleAction('enable'),
    "Datastore.disable": _commonActions.multipleAction('disable'),

    "Datastore.addtocluster" : _commonActions.checkAndShow("clusters"),

    "Datastore.clusters" : {
      type: "single",
      call: OpenNebulaResource.show,
      callback: function(request, response) {
        Sunstone.getDialog(CLUSTERS_DIALOG_ID).setParams({
          element: response[XML_ROOT],
          resource:"datastore"
        });

        Sunstone.getDialog(CLUSTERS_DIALOG_ID).reset();
        Sunstone.getDialog(CLUSTERS_DIALOG_ID).show();
      },
      error: Notifier.onError
    }
  };

  return _actions;
});
Пример #17
0
define(function(require) {
  var Sunstone = require('sunstone');
  var Notifier = require('utils/notifier');
  var Locale = require('utils/locale');
  var DataTable = require('./datatable');
  var OpenNebulaResource = require('opennebula/network');
  var OpenNebulaCluster = require('opennebula/cluster');
  var OpenNebulaAction = require('opennebula/action');
  var CommonActions = require('utils/common-actions');

  var RESOURCE = "Network";
  var XML_ROOT = "VNET";
  var TAB_ID = require('./tabId');
  var CREATE_DIALOG_ID = require('./form-panels/create/formPanelId');
  var ADD_AR_DIALOG_ID = require('./dialogs/add-ar/dialogId');
  var UPDATE_AR_DIALOG_ID = require('./dialogs/update-ar/dialogId');
  var RESERVE_DIALOG_ID = require('./dialogs/reserve/dialogId');
  var IMPORT_DIALOG_ID = require('./form-panels/import/formPanelId');
  var CLUSTERS_DIALOG_ID = require('utils/dialogs/clusters/dialogId');

  var _commonActions = new CommonActions(OpenNebulaResource, RESOURCE, TAB_ID,
    XML_ROOT, Locale.tr("Virtual Network created"));

  var _actions = {
    "Network.create" : _commonActions.create(CREATE_DIALOG_ID),
    "Network.create_dialog" : _commonActions.showCreate(CREATE_DIALOG_ID),
    "Network.list" : _commonActions.list(),
    "Network.show" : _commonActions.show(),
    "Network.refresh" : _commonActions.refresh(),
    "Network.delete" : _commonActions.del(),
    "Network.hold": _commonActions.singleAction('hold'),
    "Network.release": _commonActions.singleAction('release'),
    "Network.chown": _commonActions.multipleAction('chown'),
    "Network.chgrp": _commonActions.multipleAction('chgrp'),
    "Network.chmod": _commonActions.singleAction('chmod'),
    "Network.rename": _commonActions.singleAction('rename'),
    "Network.update" : _commonActions.update(),
    "Network.update_template" : _commonActions.updateTemplate(),
    "Network.append_template" : _commonActions.appendTemplate(),
    "Network.update_dialog" : _commonActions.checkAndShowUpdate(),
    "Network.show_to_update" : _commonActions.showUpdate(CREATE_DIALOG_ID),
    "Network.lockM": _commonActions.multipleAction('lock', false),
    "Network.lockU": _commonActions.multipleAction('lock', false),
    "Network.lockA": _commonActions.multipleAction('lock', false),
    "Network.unlock": _commonActions.multipleAction('unlock', false),

    "Network.import_dialog" : {
      type: "custom",
      call: function() {
        Sunstone.showFormPanel(TAB_ID, IMPORT_DIALOG_ID, "import");
      }
    },

    "Network.add_ar" : {
      type: "single",
      call: OpenNebulaResource.add_ar,
      callback: function(req) {
        // Reset the wizard
        Sunstone.getDialog(ADD_AR_DIALOG_ID).hide();
        Sunstone.getDialog(ADD_AR_DIALOG_ID).reset();

        Sunstone.runAction("Network.show",req.request.data[0]);
      },
      error: Notifier.onError
    },

    "Network.rm_ar" : {
      type: "single",
      call: OpenNebulaResource.rm_ar,
      callback: function(req) {
        OpenNebulaAction.clear_cache("VNET");
        Sunstone.runAction("Network.show",req.request.data[0]);
      },
      error: Notifier.onError
    },

    "Network.update_ar" : {
      type: "single",
      call: OpenNebulaResource.update_ar,
      callback: function(req) {
        // Reset the wizard
        Sunstone.getDialog(UPDATE_AR_DIALOG_ID).hide();
        Sunstone.getDialog(UPDATE_AR_DIALOG_ID).reset();

        Sunstone.runAction("Network.show",req.request.data[0]);
      },
      error: Notifier.onError
    },

    "Network.reserve_dialog" : {
      type: "custom",
      call: function() {
        var selected_nodes = Sunstone.getDataTable(TAB_ID).elements();
        if (selected_nodes.length != 1) {
          Notifier.notifyMessage("Please select one (and just one) Virtual Network.");
          return false;
        }

        var resource_id = "" + selected_nodes[0];

        Sunstone.getDialog(RESERVE_DIALOG_ID).setParams({vnetId: resource_id});
        Sunstone.getDialog(RESERVE_DIALOG_ID).reset();
        Sunstone.getDialog(RESERVE_DIALOG_ID).show();
      }
    },

    "Network.reserve" : {
      type: "single",
      call: OpenNebulaResource.reserve,
      callback: function(req) {
        // Reset the wizard
        Sunstone.getDialog(RESERVE_DIALOG_ID).hide();
        Sunstone.getDialog(RESERVE_DIALOG_ID).reset();

        OpenNebulaAction.clear_cache("VNET");
        Sunstone.runAction("Network.show",req.request.data[0]);
      },
      error: Notifier.onError
    },

    "Network.addtocluster" : _commonActions.checkAndShow("clusters"),

    "Network.clusters" : {
      type: "single",
      call: OpenNebulaResource.show,
      callback: function(request, response) {
        Sunstone.getDialog(CLUSTERS_DIALOG_ID).setParams({
          element: response[XML_ROOT],
          resource:"vnet"
        });

        Sunstone.getDialog(CLUSTERS_DIALOG_ID).reset();
        Sunstone.getDialog(CLUSTERS_DIALOG_ID).show();
      },
      error: Notifier.onError
    }
  };

  return _actions;
});
Пример #18
0
define(function(require) {
  var Sunstone = require('sunstone');
  var Notifier = require('utils/notifier');
  var Locale = require('utils/locale');
  var DataTable = require('./datatable');
  var OpenNebulaResource = require('opennebula/virtualrouter');
  var CommonActions = require('utils/common-actions');

  var RESOURCE = "VirtualRouter";
  var XML_ROOT = "VROUTER";
  var TAB_ID = require('./tabId');
  var CREATE_DIALOG_ID = require('./form-panels/create/formPanelId');
  var INSTANTIATE_DIALOG_ID = require('./form-panels/instantiate/formPanelId');

  var _commonActions = new CommonActions(OpenNebulaResource, RESOURCE, TAB_ID,
    XML_ROOT, Locale.tr("Virtual Router created"));

  var _actions = {
    "VirtualRouter.create" : _commonActions.create(CREATE_DIALOG_ID),
    "VirtualRouter.create_dialog" : _commonActions.showCreate(CREATE_DIALOG_ID),
    "VirtualRouter.lockM": _commonActions.multipleAction('lock', false),
    "VirtualRouter.lockU": _commonActions.multipleAction('lock', false),
    "VirtualRouter.lockA": _commonActions.multipleAction('lock', false),
    "VirtualRouter.unlock": _commonActions.multipleAction('unlock', false),
    "VirtualRouter.instantiate_vms" : {
      type: "custom",
      call: function() {
        var selected_nodes = Sunstone.getDataTable(TAB_ID).elements();
        if (selected_nodes.length != 1) {
          Notifier.notifyMessage("Please select one (and just one) Virtual Router.");
          return false;
        }

        var vrId = "" + selected_nodes[0];

        OpenNebulaResource.show({
          data:{
            id: vrId
          },
          success: function(request, response){
            Sunstone.resetFormPanel(TAB_ID, INSTANTIATE_DIALOG_ID);
            Sunstone.showFormPanel(TAB_ID, INSTANTIATE_DIALOG_ID, "instantiate",
              function(formPanelInstance, context) {
                formPanelInstance.fill(context, response[XML_ROOT]);
              });
          },
          error: Notifier.onError
        });
      }
    },
    "VirtualRouter.list" : _commonActions.list(),
    "VirtualRouter.show" : _commonActions.show(),
    "VirtualRouter.refresh" : _commonActions.refresh(),
    "VirtualRouter.delete" : _commonActions.del(),
    "VirtualRouter.chown": _commonActions.multipleAction('chown'),
    "VirtualRouter.chgrp": _commonActions.multipleAction('chgrp'),
    "VirtualRouter.chmod": _commonActions.singleAction('chmod'),
    "VirtualRouter.rename": _commonActions.singleAction('rename'),
    "VirtualRouter.attachnic": _commonActions.singleAction('attachnic'),
    "VirtualRouter.detachnic": _commonActions.singleAction('detachnic'),
    "VirtualRouter.update" : _commonActions.update(),
    "VirtualRouter.update_template" : _commonActions.updateTemplate(),
    "VirtualRouter.update_dialog" : _commonActions.checkAndShowUpdate(),
    "VirtualRouter.show_to_update" : _commonActions.showUpdate(CREATE_DIALOG_ID),
  };

  return _actions;
});
Пример #19
0
define(function(require) {
  var Sunstone = require('sunstone');
  var Notifier = require('utils/notifier');
  var Locale = require('utils/locale');
  var OpenNebulaResource = require('opennebula/servicetemplate');
  var CommonActions = require('utils/common-actions');
  var OpenNebulaAction = require('opennebula/action');

  var TAB_ID = require('./tabId');
  var CREATE_DIALOG_ID = require('./form-panels/create/formPanelId');
  var INSTANTIATE_DIALOG_ID = require('./form-panels/instantiate/formPanelId');
  var CLONE_DIALOG_ID = require('./dialogs/clone/dialogId');
  var XML_ROOT = "DOCUMENT";
  var RESOURCE = "ServiceTemplate";

  var _commonActions = new CommonActions(OpenNebulaResource, RESOURCE, TAB_ID, XML_ROOT);

  var _actions = {
    "ServiceTemplate.create" : _commonActions.create(CREATE_DIALOG_ID),
    "ServiceTemplate.create_dialog" : _commonActions.showCreate(CREATE_DIALOG_ID),
    "ServiceTemplate.show" : _commonActions.show(),
    "ServiceTemplate.refresh" : _commonActions.refresh(),
    "ServiceTemplate.delete" : _commonActions.del(),
    "ServiceTemplate.chown": _commonActions.multipleAction('chown'),
    "ServiceTemplate.chgrp": _commonActions.multipleAction('chgrp'),
    "ServiceTemplate.chmod": _commonActions.singleAction('chmod'),
    "ServiceTemplate.rename": _commonActions.singleAction('rename'),
    "ServiceTemplate.update" : _commonActions.update(),
    "ServiceTemplate.update_dialog" : _commonActions.checkAndShowUpdate(),
    "ServiceTemplate.show_to_update" : _commonActions.showUpdate(CREATE_DIALOG_ID),

    "ServiceTemplate.list" : {
      type: "list",
      call: OpenNebulaResource.list,
      callback: function(request, response) {
        $(".oneflow_templates_error_message").hide();
        Sunstone.getDataTable(TAB_ID).updateView(request, response);
      },
      error: function(request, error_json) {
        Notifier.onError(request, error_json, $(".oneflow_templates_error_message"));
      }
    },


    "ServiceTemplate.instantiate" : {
      type: "single",
      call: OpenNebulaResource.instantiate,
      callback: function(request, response){
        Sunstone.hideFormPanel(TAB_ID);
        OpenNebulaAction.clear_cache("SERVICE");
      },
      elements: function() {
        return Sunstone.getDataTable(TAB_ID).elements();
      },
      error: function(request, response){
        Sunstone.hideFormPanelLoading(TAB_ID);
        Notifier.onError(request, response);
      },
      notify: true
    },

    "ServiceTemplate.instantiate_dialog" : {
      type: "custom",
      call: function() {
        var selected_nodes = Sunstone.getDataTable(TAB_ID).elements();
        if (selected_nodes.length != 1) {
          Notifier.notifyMessage("Please select one (and just one) template to instantiate.");
          return false;
        }

        var templateId = "" + selected_nodes[0];

        Sunstone.resetFormPanel(TAB_ID, INSTANTIATE_DIALOG_ID);
        Sunstone.showFormPanel(TAB_ID, INSTANTIATE_DIALOG_ID, "instantiate",
          function(formPanelInstance, context) {
            formPanelInstance.setTemplateId(context, templateId);
          });
      }
    },

    "ServiceTemplate.clone_dialog" : {
      type: "custom",
      call: function(){
        Sunstone.getDialog(CLONE_DIALOG_ID).show();
      }
    },
    
    "ServiceTemplate.clone" : {
      type: "single",
      call: OpenNebulaResource.clone,
      error: Notifier.onError,
      notify: true
    }
  };

  return _actions;
});
Пример #20
0
define(function(require) {
  var Sunstone = require('sunstone');
  var Notifier = require('utils/notifier');
  var Locale = require('utils/locale');
  var DataTable = require('./datatable');
  var OpenNebulaResource = require('opennebula/securitygroup');
  var CommonActions = require('utils/common-actions');

  var RESOURCE = "SecurityGroup";
  var XML_ROOT = "SECURITY_GROUP";
  var TAB_ID = require('./tabId');
  var CREATE_DIALOG_ID = require('./form-panels/create/formPanelId');
  var CLONE_DIALOG_ID = require('./dialogs/clone/dialogId');
  var CONFIRM_DIALOG_ID = require('utils/dialogs/generic-confirm/dialogId');

  var _commonActions = new CommonActions(OpenNebulaResource, RESOURCE, TAB_ID,
    XML_ROOT, Locale.tr("Security Group created"));

  var _actions = {
    "SecurityGroup.create" : _commonActions.create(CREATE_DIALOG_ID),
    "SecurityGroup.create_dialog" : _commonActions.showCreate(CREATE_DIALOG_ID),
    "SecurityGroup.list" : _commonActions.list(),
    "SecurityGroup.show" : _commonActions.show(),
    "SecurityGroup.refresh" : _commonActions.refresh(),
    "SecurityGroup.delete" : _commonActions.del(),
    "SecurityGroup.chown": _commonActions.multipleAction('chown'),
    "SecurityGroup.chgrp": _commonActions.multipleAction('chgrp'),
    "SecurityGroup.chmod": _commonActions.singleAction('chmod'),
    "SecurityGroup.rename": _commonActions.singleAction('rename'),
    "SecurityGroup.update" : _commonActions.update(),
    "SecurityGroup.update_template" : _commonActions.updateTemplate(),
    "SecurityGroup.append_template" : _commonActions.appendTemplate(),
    "SecurityGroup.update_dialog" : _commonActions.checkAndShowUpdate(),
    "SecurityGroup.show_to_update" : _commonActions.showUpdate(CREATE_DIALOG_ID),
    "SecurityGroup.commit": _commonActions.multipleAction('commit'),

    "SecurityGroup.clone_dialog" : {
      type: "custom",
      call: function(){
        Sunstone.getDialog(CLONE_DIALOG_ID).show();
      }
    },

    "SecurityGroup.clone" : {
      type: "single",
      call: OpenNebulaResource.clone,
      callback: function(request, response) {
        Sunstone.getDialog(CLONE_DIALOG_ID).hide();
        Sunstone.getDialog(CLONE_DIALOG_ID).reset();
        Sunstone.runAction('SecurityGroup.refresh');
      },
      error: Notifier.onError,
      notify: true
    },

    "SecurityGroup.commit_dialog":
      {
        type: "custom",
        call: function() {
          Sunstone.getDialog(CONFIRM_DIALOG_ID).setParams({
            //header :
            headerTabId: TAB_ID,
            body : Locale.tr(
              "Please note: each time the rules are edited, the commit operation is done automatically. "+
              "<br/><br/>"+
              "This action will force the propagation of security group changes to VMs. "+
              "The operation takes time to iterate over all VMs in the security group, "+
              "the progress can be checked in the \"VMs\" panel."),
            //question :
            buttons : [
              Locale.tr("Commit"),
            ],
            submit : [
              function(){
                Sunstone.runAction('SecurityGroup.commit', Sunstone.getDataTable(TAB_ID).elements(), false);
                return false;
              }
            ]
          });

          Sunstone.getDialog(CONFIRM_DIALOG_ID).reset();
          Sunstone.getDialog(CONFIRM_DIALOG_ID).show();
        }
      },
  };

  return _actions;
})
Пример #21
0
define(function(require) {
  var Sunstone = require('sunstone');
  var Notifier = require('utils/notifier');
  var Locale = require('utils/locale');
  var OpenNebulaResource = require('opennebula/datastore');
  var OpenNebulaCluster = require('opennebula/cluster');
  var OpenNebulaAction = require('opennebula/action');
  var CommonActions = require('utils/common-actions');

  var RESOURCE = "Datastore";
  var XML_ROOT = "DATASTORE";
  var TAB_ID = require('./tabId');
  var CREATE_DIALOG_ID = require('./form-panels/create/formPanelId');

  var _commonActions = new CommonActions(OpenNebulaResource, RESOURCE, TAB_ID, XML_ROOT);

  var _actions = {
    "Datastore.create" : _commonActions.create(CREATE_DIALOG_ID),
    "Datastore.create_dialog" : _commonActions.showCreate(CREATE_DIALOG_ID),
    "Datastore.list" : _commonActions.list(),
    "Datastore.show" : _commonActions.show(),
    "Datastore.refresh" : _commonActions.refresh(),
    "Datastore.delete" : _commonActions.del(),
    "Datastore.chown": _commonActions.multipleAction('chown'),
    "Datastore.chgrp": _commonActions.multipleAction('chgrp'),
    "Datastore.chmod": _commonActions.singleAction('chmod'),
    "Datastore.update" : _commonActions.updateTemplate(),
    "Datastore.update_template" : _commonActions.updateTemplate(),
    "Datastore.rename": _commonActions.singleAction('rename'),
    "Datastore.enable": _commonActions.multipleAction('enable'),
    "Datastore.disable": _commonActions.multipleAction('disable'),

    "Datastore.addtocluster" : {
      type: "multiple",
      call: function(params, success) {
        var cluster = params.data.extra_param;
        var ds = params.data.id;

        if (cluster == -1) {
          OpenNebulaResource.show({
            data : {
              id: ds
            },
            success: function (request, ds_info) {
              var current_cluster = ds_info.DATASTORE.CLUSTER_ID;

              if (current_cluster != -1) {
                OpenNebulaCluster.deldatastore({
                  data: {
                    id: current_cluster,
                    extra_param: ds
                  },
                  success: function() {
                    OpenNebulaAction.clear_cache("DATASTORE");
                    Sunstone.runAction('Datastore.show', ds);
                  },
                  error: Notifier.onError
                });
              } else {
                OpenNebulaAction.clear_cache("DATASTORE");
                Sunstone.runAction('Datastore.show', ds);
              }
            },
            error: Notifier.onError
          });
        } else {
          OpenNebulaCluster.adddatastore({
            data: {
              id: cluster,
              extra_param: ds
            },
            success: function() {
              OpenNebulaAction.clear_cache("DATASTORE");
              Sunstone.runAction('Datastore.show', ds);
            },
            error: Notifier.onError
          });
        }
      },
      elements: function() {
        return Sunstone.getDataTable(TAB_ID).elements();
      }
    }
  };

  return _actions;
});
Пример #22
0
define(function(require) {
  var Sunstone = require('sunstone');
  var Notifier = require('utils/notifier');
  var Locale = require('utils/locale');
  var DataTable = require('./datatable');
  var OpenNebulaResource = require('opennebula/cluster');
  var OpenNebulaAction = require('opennebula/action');
  var CommonActions = require('utils/common-actions');
  var Navigation = require('utils/navigation');

  var RESOURCE = "Cluster";
  var XML_ROOT = "CLUSTER";
  var TAB_ID = require('./tabId');
  var CREATE_DIALOG_ID = require('./form-panels/create/formPanelId');

  var _commonActions = new CommonActions(OpenNebulaResource, RESOURCE, TAB_ID,
    XML_ROOT, Locale.tr("Cluster created"));

  var _actions = {
    "Cluster.create_dialog" : _commonActions.showCreate(CREATE_DIALOG_ID),
    "Cluster.list" : _commonActions.list(),
    "Cluster.show" : _commonActions.show(),
    "Cluster.refresh" : _commonActions.refresh(),
    "Cluster.delete" : _commonActions.del(),
    "Cluster.update_template" : _commonActions.updateTemplate(),
    "Cluster.append_template" : _commonActions.appendTemplate(),
    "Cluster.update_dialog" : _commonActions.checkAndShowUpdate(),
    "Cluster.show_to_update" : _commonActions.showUpdate(CREATE_DIALOG_ID),
    "Cluster.rename": _commonActions.singleAction('rename'),

    "Cluster.create" : {
      type: "create",
      call: OpenNebulaResource.create,
      callback: function(request, response){
        for (var host in request.request.data[0].cluster.hosts)
          if (request.request.data[0].cluster.hosts[host])
            Sunstone.runAction("Cluster.addhost",response[XML_ROOT].ID,host);
        for (var vnet in request.request.data[0].cluster.vnets)
          if (request.request.data[0].cluster.vnets[vnet])
            Sunstone.runAction("Cluster.addvnet",response[XML_ROOT].ID,vnet);
        for (var datastore in request.request.data[0].cluster.datastores)
          if (request.request.data[0].cluster.datastores[datastore])
            Sunstone.runAction("Cluster.adddatastore",response[XML_ROOT].ID,datastore);

        Sunstone.resetFormPanel(TAB_ID, CREATE_DIALOG_ID);
        Sunstone.hideFormPanel(TAB_ID);
        Sunstone.runAction("Cluster.refresh");

        Notifier.notifyCustom(Locale.tr("Cluster created"),
          Navigation.link(" ID: " + response[XML_ROOT].ID, TAB_ID, response[XML_ROOT].ID),
          false);
      },
      error: function(request, response){
        Sunstone.hideFormPanelLoading(TAB_ID);
        Notifier.onError(request, response);
      }
    },

    "Cluster.addhost" : {
      type: "single",
      call : OpenNebulaResource.addhost,
      callback : function (req) {
        OpenNebulaAction.clear_cache("HOST");
        Sunstone.runAction('Cluster.show',req.request.data[0]);
      },
      error : Notifier.onError
    },

    "Cluster.delhost" : {
      type: "single",
      call : OpenNebulaResource.delhost,
      callback : function (req) {
        OpenNebulaAction.clear_cache("HOST");
        Sunstone.runAction('Cluster.show',req.request.data[0]);
      },
      error : Notifier.onError
    },

    "Cluster.adddatastore" : {
      type: "single",
      call : OpenNebulaResource.adddatastore,
      callback : function (req) {
        OpenNebulaAction.clear_cache("DATASTORE");
        Sunstone.runAction('Cluster.show',req.request.data[0]);
      },
      error : Notifier.onError
    },

    "Cluster.deldatastore" : {
      type: "single",
      call : OpenNebulaResource.deldatastore,
      callback : function (req) {
        OpenNebulaAction.clear_cache("DATASTORE");
        Sunstone.runAction('Cluster.show',req.request.data[0]);
      },
      error : Notifier.onError
    },

    "Cluster.addvnet" : {
      type: "single",
      call : OpenNebulaResource.addvnet,
      callback : function (req) {
        OpenNebulaAction.clear_cache("VNET");
        Sunstone.runAction('Cluster.show',req.request.data[0]);
      },
      error : Notifier.onError
    },

    "Cluster.delvnet" : {
      type: "single",
      call : OpenNebulaResource.delvnet,
      callback : function (req) {
        OpenNebulaAction.clear_cache("VNET");
        Sunstone.runAction('Cluster.show',req.request.data[0]);
      },
      error : Notifier.onError
    }
  };

  return _actions;
});