diff --git a/src/sunstone/models/SunstoneServer.rb b/src/sunstone/models/SunstoneServer.rb index 0f6f7d50131..d558cfc12e6 100644 --- a/src/sunstone/models/SunstoneServer.rb +++ b/src/sunstone/models/SunstoneServer.rb @@ -152,6 +152,26 @@ def create_resource(kind, template) end end + + ############################################################################ + # + ############################################################################ + def createMarketApp(type, template) + action_hash = JSONUtils.parse_json(template, 'action') + if OpenNebula.is_error?(action_hash) + return [500, image_hash.to_json] + end + marketplaceapp = MarketPlaceAppJSON.new(MarketPlaceApp.build_xml, @client) + + rc = case type + when "service" then marketplaceapp.app_service_import(action_hash['params']) + else + marketplaceapp.app_vm_import(action_hash['params']) #VM / VM_TEMPLATE + end + + return [201, rc.to_json] + end + ############################################################################ # ############################################################################ diff --git a/src/sunstone/public/app/opennebula/action.js b/src/sunstone/public/app/opennebula/action.js index 82cc95188ea..0ae5b919a09 100644 --- a/src/sunstone/public/app/opennebula/action.js +++ b/src/sunstone/public/app/opennebula/action.js @@ -464,7 +464,31 @@ define(function(require) { return ""+id; }, + "importMarketApp": function(params, resource, method, action_obj) { + var callback = params.success; + var callbackError = params.error; + var id = params.data.id; + var action = OpenNebulaHelper.action(method, action_obj); + var request = OpenNebulaHelper.request(resource, method, [id, action_obj]); + var reqPath = resource.toLowerCase(); + var cache_name = params.cache_name ? params.cache_name : resource; + $.ajax({ + url: reqPath + "/" + id + "/create", + type: "POST", + contentType: "application/json; charset=utf-8", + data: JSON.stringify(action), + success: function(response) { + _clearCache(cache_name); + + return callback ? callback(request, response) : null; + }, + error: function(response) { + return callbackError ? + callbackError(request, OpenNebulaError(response)) : null; + } + }); + }, "getAppTags": function(params, resource){ var callback = params.success; var callbackError = params.error; diff --git a/src/sunstone/public/app/opennebula/marketplaceapp.js b/src/sunstone/public/app/opennebula/marketplaceapp.js index 62581855b0a..b964f403feb 100644 --- a/src/sunstone/public/app/opennebula/marketplaceapp.js +++ b/src/sunstone/public/app/opennebula/marketplaceapp.js @@ -127,11 +127,11 @@ define(function(require) { }, "import_vm_template" : function(params){ var action_obj = params.data.extra_param; - OpenNebulaAction.simple_action(params, RESOURCE, "vm-template.import", action_obj); + OpenNebulaAction.importMarketApp(params, RESOURCE, "vm-template.import", action_obj); }, "import_service_template" : function(params){ var action_obj = params.data.extra_param; - OpenNebulaAction.simple_action(params, RESOURCE, "service_template.import", action_obj); + OpenNebulaAction.importMarketApp(params, RESOURCE, "service_template.import", action_obj); }, } diff --git a/src/sunstone/public/app/tabs/marketplaceapps-tab/form-panels/create.js b/src/sunstone/public/app/tabs/marketplaceapps-tab/form-panels/create.js index b6bcb79b870..d45b78f267a 100644 --- a/src/sunstone/public/app/tabs/marketplaceapps-tab/form-panels/create.js +++ b/src/sunstone/public/app/tabs/marketplaceapps-tab/form-panels/create.js @@ -436,7 +436,7 @@ define(function(require) { var newTemplate = $.extend(marketPlaceJSON, { ORIGIN_ID: String(templateId) }); - Sunstone.runAction("MarketPlaceApp.import_vm_template", 0, newTemplate); + Sunstone.runAction("MarketPlaceApp.import_vm_template", 'vm', newTemplate); }, error: function(request, response) { Sunstone.hideFormPanelLoading(TAB_ID); @@ -460,7 +460,7 @@ define(function(require) { marketPlaceJSON['IMPORT_ALL'] = marketPlaceJSON['IMPORT_ALL'] === 'on' marketPlaceJSON['MARKETPLACE_ID'] = marketplaceIdSelected; - Sunstone.runAction("MarketPlaceApp.import_vm_template", 0, marketPlaceJSON); + Sunstone.runAction("MarketPlaceApp.import_vm_template", 'vmtemplate', marketPlaceJSON); break; @@ -471,7 +471,7 @@ define(function(require) { marketPlaceJSON['MARKETPLACE_ID'] = marketplaceIdSelected; marketPlaceJSON['MARKETPLACE_SERVICE_ID'] = this.marketPlacesServiceTable.idInput().val(); - Sunstone.runAction("MarketPlaceApp.import_service_template", 0, marketPlaceJSON); + Sunstone.runAction("MarketPlaceApp.import_service_template", 'service', marketPlaceJSON); break; diff --git a/src/sunstone/public/app/tabs/templates-tab/form-panels/create/wizard-tabs/backup.js b/src/sunstone/public/app/tabs/templates-tab/form-panels/create/wizard-tabs/backup.js index 6334a002ac8..d3d1c3368f8 100644 --- a/src/sunstone/public/app/tabs/templates-tab/form-panels/create/wizard-tabs/backup.js +++ b/src/sunstone/public/app/tabs/templates-tab/form-panels/create/wizard-tabs/backup.js @@ -135,7 +135,6 @@ define(function(require) { function _fill(context, templateJSON) { if(templateJSON && templateJSON.BACKUP_CONFIG){ var configs = templateJSON.BACKUP_CONFIG - console.log("dsadas", configs) if(configs && configs.BACKUP_VOLATILE && configs.BACKUP_VOLATILE === 'YES'){ $(idsElements.backup_volatile, context).click(); } diff --git a/src/sunstone/sunstone-server.rb b/src/sunstone/sunstone-server.rb index 9b18e93a0e9..e0039717ce4 100755 --- a/src/sunstone/sunstone-server.rb +++ b/src/sunstone/sunstone-server.rb @@ -1191,6 +1191,13 @@ def destroy_session @SunstoneServer.get_docker_tags(params[:id]) end +############################################################################## +# Create a marketPlacetApp +############################################################################## +post '/marketplaceapp/:type/create' do + @SunstoneServer.createMarketApp(params[:type], @request_body) +end + ############################################################################## # Create a new Resource ##############################################################################