1
0
mirror of https://github.com/OpenNebula/one.git synced 2025-03-21 14:50:08 +03:00

F #4506: Adapt instantiate flow form in cloudview (#4565)

This commit is contained in:
Sergio Betanzos 2020-04-22 14:53:20 +02:00 committed by GitHub
parent f98233f8ab
commit 60ed847cc3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 81 additions and 61 deletions

View File

@ -150,6 +150,7 @@ tabs:
- 11 # #VMs
#- 12 # Target
vnets-tab:
# Allows to instantiate a service with vnets
table_columns:
- 0 # Checkbox
- 1 # ID
@ -161,6 +162,15 @@ tabs:
#- 7 # Bridge
#- 8 # Leases
#- 9 # VLAN ID
vnets-templates-tab:
# Allows to instantiate a service with vnets templates
table_columns:
- 0 # Checkbox
- 1 # ID
- 2 # Name
#- 3 # Owner
- 4 # Group
#- 6 # Cluster
secgroups-tab:
table_columns:
- 0 # Checkbox

View File

@ -99,12 +99,9 @@ define(function(require) {
function _setup(context) {
this.networksType = [
//Template id the una VN Template
{value: 'template_id', text: 'Create', select: 'vntemplates', extra: true },
//ID de una vnet que ya existe para reservar de ella
{value: 'reserve_from', text: 'Reserve', select: 'networks', extra: true },
//ID de una vnet que ya existe para usarla directamente
{value: 'id', text: 'Existing', select: 'networks', extra: false },
{ value: 'template_id', text: 'Create', select: 'vntemplates', extra: true },
{ value: 'reserve_from', text: 'Reserve', select: 'networks', extra: true },
{ value: 'id', text: 'Existing', select: 'networks', extra: false },
]
this.roleTabObjects = {};
this.numberOfNetworks = 0;

View File

@ -31,6 +31,7 @@ define(function(require) {
var UserInputs = require("utils/user-inputs");
var Config = require("sunstone-config");
var TemplateUtils = require("utils/template-utils");
var ServiceUtils = require("utils/service-utils");
/*
TEMPLATES
@ -202,38 +203,8 @@ define(function(require) {
if (n_times.length){
n_times_int=parseInt(n_times,10);
}
var extra_msg = "";
if (n_times_int > 1) {
extra_msg = n_times_int+" times";
}
var custom_attrs_json = WizardFields.retrieve($(".custom_attr_class", context));
var networks_json = WizardFields.retrieve($(".network_attrs_class", context));
var typePrefix = "type_";
var network_values = Object.keys(networks_json).filter(function(key) {
return key.indexOf(typePrefix) == 0; // get all networks names with prefix 'type_'
}).reduce(function(newData, typeKey) {
var type = networks_json[typeKey];
var name = typeKey.replace(typePrefix, '');
var id = networks_json[name]
var extra = networks_json['extra_' + name];
newData.push($.extend(true, {},{
[name]: {
[type]: id, // type configuration: id network/template
extra: (extra && extra !== "") ? extra : undefined,
},
}));
return newData;
}, []);
var extra_info = { "merge_template": {
custom_attrs_values: custom_attrs_json,
networks_values: network_values,
roles: []
}};
var extra_info = ServiceUtils.getExtraInfo(context);
$.each(that.service_template_json.DOCUMENT.TEMPLATE.BODY.roles, function(index, role){
var div_id = "user_input_role_"+index;
@ -249,6 +220,7 @@ define(function(require) {
}
extra_info.merge_template.roles.push(role);
});
if (!service_name.length){ //empty name
for (var i=0; i< n_times_int; i++){
Sunstone.runAction("ServiceTemplate.instantiate", that.templateId, extra_info);

View File

@ -33,6 +33,7 @@ define(function(require) {
var NicsSection = require("utils/nics-section");
var VMGroupSection = require("utils/vmgroup-section");
var TemplateUtils = require("utils/template-utils");
var ServiceUtils = require("utils/service-utils");
var WizardFields = require("utils/wizard-fields");
var UserInputs = require("utils/user-inputs");
var CapacityInputs = require("tabs/templates-tab/form-panels/create/wizard-tabs/general/capacity-inputs");
@ -1186,7 +1187,7 @@ define(function(require) {
var context = $("#provision_create_flow");
if (body.custom_attrs) {
if (body.custom_attrs || body.networks) {
UserInputs.serviceTemplateInsert(
$(".provision_network_selector", context), data);
} else {
@ -1261,7 +1262,6 @@ define(function(require) {
$("#provision_create_flow").submit(function(){
var context = $(this);
var flow_name = $("#flow_name", context).val();
var template_id = $(".provision_select_flow_template .selected", context).attr("opennebula_id");
@ -1270,9 +1270,7 @@ define(function(require) {
return false;
}
var custom_attrs = WizardFields.retrieve($(".provision_network_selector", context));
var roles = [];
var extra_info = ServiceUtils.getExtraInfo(context);
$(".provision_create_flow_role", context).each(function(){
var user_inputs_values = WizardFields.retrieve($(".provision_custom_attributes_selector", $(this)));
@ -1281,19 +1279,12 @@ define(function(require) {
var cardinality = WizardFields.retrieve( $(".provision_cardinality_selector", $(this)) )["cardinality"];
roles.push($.extend(role_template, {
extra_info.merge_template.roles.push($.extend(role_template, {
"cardinality": cardinality,
"user_inputs_values": user_inputs_values
}));
});
var extra_info = {
"merge_template": {
"roles" : roles,
"custom_attrs_values": custom_attrs
}
};
if (flow_name){
extra_info["merge_template"]["name"] = flow_name;
}

View File

@ -0,0 +1,53 @@
/* -------------------------------------------------------------------------- */
/* Copyright 2002-2020, OpenNebula Project, OpenNebula Systems */
/* */
/* Licensed under the Apache License, Version 2.0 (the "License"); you may */
/* not use this file except in compliance with the License. You may obtain */
/* a copy of the License at */
/* */
/* http://www.apache.org/licenses/LICENSE-2.0 */
/* */
/* Unless required by applicable law or agreed to in writing, software */
/* distributed under the License is distributed on an "AS IS" BASIS, */
/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. */
/* See the License for the specific language governing permissions and */
/* limitations under the License. */
/* -------------------------------------------------------------------------- */
define(function(require) {
var WizardFields = require("utils/wizard-fields");
return {
"getExtraInfo": _getExtraInfo
};
function _getExtraInfo(context) {
var custom_attrs_json = WizardFields.retrieve($(".custom_attr_class", context));
var networks_json = WizardFields.retrieve($(".network_attrs_class", context));
var typePrefix = "type_";
var network_values = Object.keys(networks_json).filter(function(key) {
return key.indexOf(typePrefix) == 0; // get all networks names with prefix 'type_'
}).reduce(function(networks, typeKey) {
var type = networks_json[typeKey];
var name = typeKey.replace(typePrefix, '');
var id = networks_json[name]
var extra = networks_json['extra_' + name];
networks.push($.extend(true, {},{
[name]: {
[type]: id, // type configuration: id network/template
extra: (extra && extra !== "") ? extra : undefined,
},
}));
return networks;
}, []);
return { "merge_template": {
"custom_attrs_values": custom_attrs_json,
"networks_values": network_values,
"roles": []
}};
}
});

View File

@ -18,7 +18,7 @@ define(function(require) {
var Locale = require("utils/locale");
var TemplateUtils = require("utils/template-utils");
var VNetsTable = require("tabs/vnets-tab/datatable");
var VNetsTemplateTable = require("../tabs/vnets-templates-tab/datatable");
var VNetsTemplateTable = require("tabs/vnets-templates-tab/datatable");
var RangeSlider = require("utils/range-slider");
var UniqueId = require("utils/unique-id");
@ -347,15 +347,6 @@ define(function(require) {
addInVar(networks, network_attrs);
addInVar(customs, custom_attrs);
this.networksType = [
//Template id the una VN Template
{value: 'template_id', text: 'Create', select: 'vntemplates', extra: true },
//ID de una vnet que ya existe para reservar de ella
{value: 'reserve_from', text: 'Reserve', select: 'networks', extra: true },
//ID de una vnet que ya existe para usarla directamente
{value: 'id', text: 'Existing', select: 'networks', extra: false },
]
// Render networks
if (network_attrs.length > 0) {
html += "<fieldset>";
@ -471,7 +462,13 @@ define(function(require) {
$("<div/>",{class:"row addExtra_"+id}).append(
$("<div/>",{class:"columns small-12"}).append(
$("<label/>").text(Locale.tr("Extra")).add(
$("<input/>",{wizard_field: "extra_"+nametable ,type:"text", name: "extra", id: "extra", placeholder: Locale.tr("Extra") })
$("<input/>",{
"wizard_field": "extra_"+nametable,
"type": "text",
"name": "extra",
"id": "extra",
"placeholder": Locale.tr("Extra")
})
)
)
)