1
0
mirror of https://github.com/OpenNebula/one.git synced 2025-03-23 22:50:09 +03:00

F #4545: make vCenter connection details required inputs

This commit is contained in:
Carlos Martín 2016-09-12 12:41:15 +02:00
parent 6cb9635bdb
commit 32afd27e18
13 changed files with 299 additions and 262 deletions

View File

@ -82,25 +82,32 @@ define(function(require) {
function _setup(context) {
var that = this;
Sunstone.disableFormPanelSubmit(TAB_ID);
$("form.vcenter_credentials", context)
.off('forminvalid.zf.abide').off('formvalid.zf.abide').off("submit");
$("#get_vcenter_datastores", context).on("click", function(){
Sunstone.enableFormPanelSubmit(TAB_ID);
Foundation.reInit($("form.vcenter_credentials", context));
var vcenter_user = $("#vcenter_user", context).val();
var vcenter_password = $("#vcenter_password", context).val();
var vcenter_host = $("#vcenter_host", context).val();
$("form.vcenter_credentials", context)
.on('forminvalid.zf.abide', function(ev, frm) {
})
.on('formvalid.zf.abide', function(ev, frm) {
Sunstone.enableFormPanelSubmit(TAB_ID);
that.vCenterDatastores.insert({
container: context,
vcenter_user: vcenter_user,
vcenter_password: vcenter_password,
vcenter_host: vcenter_host
var vcenter_user = $("#vcenter_user", context).val();
var vcenter_password = $("#vcenter_password", context).val();
var vcenter_host = $("#vcenter_host", context).val();
that.vCenterDatastores.insert({
container: context,
vcenter_user: vcenter_user,
vcenter_password: vcenter_password,
vcenter_host: vcenter_host
});
})
.on("submit", function(ev) {
ev.preventDefault();
});
return false;
});
return false;
}
@ -109,7 +116,7 @@ define(function(require) {
Sunstone.hideFormPanelLoading(TAB_ID);
this.vCenterDatastores.import(context);
this.vCenterDatastores.import(context.closest("#import_datastores_form_wrapper"));
return false;
}

View File

@ -14,28 +14,32 @@
{{! limitations under the License. }}
{{! -------------------------------------------------------------------------- }}
<form data-abide novalidate id="{{formPanelId}}Wizard" class="custom creation">
<div class="row vcenter_credentials">
<div class="large-3 medium-6 columns">
<label for="vcenter_host">{{tr "Hostname"}}</label>
<input type="text" name="vcenter_host" id="vcenter_host" />
<div id="import_datastores_form_wrapper">
<form data-abide novalidate id="{{formPanelId}}Wizard" class="custom creation">
</form>
<form data-abide novalidate class="vcenter_credentials" action="">
<div class="row">
<div class="large-3 medium-6 columns">
<label for="vcenter_host">{{tr "Hostname"}}</label>
<input type="text" name="vcenter_host" id="vcenter_host" required />
</div>
<div class="large-3 medium-6 columns">
<label for="vcenter_user">{{tr "User"}}</label>
<input type="text" name="vcenter_user" id="vcenter_user" required />
</div>
<div class="large-3 medium-6 columns">
<label for="vcenter_password">{{tr "Password"}}</label>
<input type="password" name="vcenter_password" id="vcenter_password" required />
</div>
<div class="large-3 medium-6 columns">
<label>&nbsp;</label>
<button type="submit" class="button radius">
{{tr "Get Datastores"}}
</button>
</div>
</div>
<div class="large-3 medium-6 columns">
<label for="vcenter_user">{{tr "User"}}</label>
<input type="text" name="vcenter_user" id="vcenter_user" />
</div>
<div class="large-3 medium-6 columns">
<label for="vcenter_password">{{tr "Password"}}</label>
<input type="password" name="vcenter_password" id="vcenter_password" />
</div>
<div class="large-3 medium-6 columns">
<br>
<a class="button" id="get_vcenter_datastores">
{{tr "Get Datastores"}}
</a>
</div>
</div>
</form>
<div class="row collapse">
{{{vCenterDatastoresHTML}}}
</div>
</form>
</div>

View File

@ -140,33 +140,38 @@ define(function(require) {
$("#host_type_mad", context).change();
$("#get_vcenter_clusters", context).on("click", function() {
// TODO notify if credentials empty
$("form.vcenter_credentials", context)
.off('forminvalid.zf.abide').off('formvalid.zf.abide').off("submit");
var vcenter_user = $("#vcenter_user", context).val();
var vcenter_password = $("#vcenter_password", context).val();
var vcenter_host = $("#vcenter_host", context).val();
Foundation.reInit($("form.vcenter_credentials", context));
that.vCenterClusters.insert({
container: context,
vcenter_user: vcenter_user,
vcenter_password: vcenter_password,
vcenter_host: vcenter_host,
success: function(){
$("#vcenter_user", context).attr("disabled", "disabled");
$("#vcenter_password", context).attr("disabled", "disabled");
$("#vcenter_host", context).attr("disabled", "disabled");
$("#get_vcenter_clusters", context).hide();
$(".import_vcenter_clusters_div", context).show();
}
$("form.vcenter_credentials", context)
.on('forminvalid.zf.abide', function(ev, frm) {
})
.on('formvalid.zf.abide', function(ev, frm) {
var vcenter_user = $("#vcenter_user", context).val();
var vcenter_password = $("#vcenter_password", context).val();
var vcenter_host = $("#vcenter_host", context).val();
that.vCenterClusters.insert({
container: context,
vcenter_user: vcenter_user,
vcenter_password: vcenter_password,
vcenter_host: vcenter_host,
success: function(){
$("#vcenter_user", context).attr("disabled", "disabled");
$("#vcenter_password", context).attr("disabled", "disabled");
$("#vcenter_host", context).attr("disabled", "disabled");
$("#get_vcenter_clusters", context).hide();
$(".import_vcenter_clusters_div", context).show();
}
})
})
.on("submit", function(ev) {
ev.preventDefault();
});
return false;
});
$("#import_vcenter_clusters", context).on("click", function() {
$(this).hide();
var cluster_id = $('#host_cluster_id .resource_list_select', context).val();
if (!cluster_id) cluster_id = "-1";
@ -193,14 +198,6 @@ define(function(require) {
$('input[name="custom_im_mad"]').parent().hide();
});
$('#create_host_form').on("keyup keypress", function(e) {
var code = e.keyCode || e.which;
if (code == 13) {
e.preventDefault();
return false;
}
});
Tips.setup();
return false;
}

View File

@ -14,92 +14,94 @@
{{! limitations under the License. }}
{{! -------------------------------------------------------------------------- }}
<form data-abide novalidate id="{{formPanelId}}Wizard" class="custom creation">
<div class="row">
<div class="medium-6 columns">
<label for="host_type">{{tr "Type"}}</label>
<select id="host_type_mad" name="host_type">
{{#each vmMadNameList}}
<option value="{{this.driverName}}">{{this.displayName}}</option>
{{/each}}
<option value="custom">{{tr "Custom"}}</option>
</select>
</div>
<div class="medium-6 columns" id="cluster_select">
<label for="host_cluster_id">{{tr "Cluster"}}</label>
<div id="host_cluster_id" name="host_cluster_id"></div>
</div>
</div>
<div class="row">
<div class="medium-6 columns" id="name_container">
<label for="name">{{tr "Hostname"}}</label>
<input type="text" name="name" id="name" required/>
</div>
<div class="medium-6 columns">
</div>
</div>
<div class="drivers">
<fieldset>
<legend>{{tr "Drivers"}}</legend>
<div class="row">
<div class="medium-6 columns">
<div class="manager clear row" id="vmm_mads">
<div class="large-12 columns">
<label for="vmm">{{tr "Virtualization"}}</label>
<select id="vmm_mad" name="vmm">
{{#each vmMadNameList}}
<option value="{{this.driverName}}">{{this.displayName}}</option>
{{/each}}
<option value="custom">{{tr "Custom"}}</option>
</select>
</div>
<div class="large-12 columns">
<label>{{tr "Custom VMM_MAD"}}</label>
<input type="text" name="custom_vmm_mad" />
</div>
</div>
</div>
<div class="medium-6 columns">
<div class="manager clear row" id="im_mads">
<div class="large-12 columns">
<label for="im">{{tr "Information"}}</label>
<select id="im_mad" name="im">
{{#each imMadNameList}}
<option value="{{this.driverName}}">{{this.displayName}}</option>
{{/each}}
<option value="custom">{{tr "Custom"}}</option>
</select>
</div>
<div class="large-12 columns">
<label>{{tr "Custom IM_MAD"}}</label>
<input type="text" name="custom_im_mad" />
</div>
</div>
</div>
<div>
<form data-abide novalidate id="{{formPanelId}}Wizard" class="custom creation">
<div class="row">
<div class="medium-6 columns">
<label for="host_type">{{tr "Type"}}</label>
<select id="host_type_mad" name="host_type">
{{#each vmMadNameList}}
<option value="{{this.driverName}}">{{this.displayName}}</option>
{{/each}}
<option value="custom">{{tr "Custom"}}</option>
</select>
</div>
</fieldset>
</div>
<div class="vcenter_credentials" hidden>
<div class="medium-6 columns" id="cluster_select">
<label for="host_cluster_id">{{tr "Cluster"}}</label>
<div id="host_cluster_id" name="host_cluster_id"></div>
</div>
</div>
<div class="row">
<div class="medium-6 columns" id="name_container">
<label for="name">{{tr "Hostname"}}</label>
<input type="text" name="name" id="name" required />
</div>
<div class="medium-6 columns">
</div>
</div>
<div class="drivers">
<fieldset>
<legend>{{tr "Drivers"}}</legend>
<div class="row">
<div class="medium-6 columns">
<div class="manager clear row" id="vmm_mads">
<div class="large-12 columns">
<label for="vmm">{{tr "Virtualization"}}</label>
<select id="vmm_mad" name="vmm">
{{#each vmMadNameList}}
<option value="{{this.driverName}}">{{this.displayName}}</option>
{{/each}}
<option value="custom">{{tr "Custom"}}</option>
</select>
</div>
<div class="large-12 columns">
<label>{{tr "Custom VMM_MAD"}}</label>
<input type="text" name="custom_vmm_mad" />
</div>
</div>
</div>
<div class="medium-6 columns">
<div class="manager clear row" id="im_mads">
<div class="large-12 columns">
<label for="im">{{tr "Information"}}</label>
<select id="im_mad" name="im">
{{#each imMadNameList}}
<option value="{{this.driverName}}">{{this.displayName}}</option>
{{/each}}
<option value="custom">{{tr "Custom"}}</option>
</select>
</div>
<div class="large-12 columns">
<label>{{tr "Custom IM_MAD"}}</label>
<input type="text" name="custom_im_mad" />
</div>
</div>
</div>
</div>
</fieldset>
</div>
</form>
<form data-abide novalidate class="vcenter_credentials" action="">
<fieldset>
<legend>{{tr "vCenter"}}</legend>
<div class="row">
<div class="large-3 medium-6 columns">
<label for="vcenter_host">{{tr "Hostname"}}</label>
<input type="text" name="vcenter_host" id="vcenter_host" />
<input type="text" name="vcenter_host" id="vcenter_host" required />
</div>
<div class="large-3 medium-6 columns">
<label for="vcenter_user">{{tr "User"}}</label>
<input type="text" name="vcenter_user" id="vcenter_user" />
<input type="text" name="vcenter_user" id="vcenter_user" required />
</div>
<div class="large-3 medium-6 columns">
<label for="vcenter_password">{{tr "Password"}}</label>
<input type="password" name="vcenter_password" id="vcenter_password" />
<input type="password" name="vcenter_password" id="vcenter_password" required />
</div>
<div class="large-3 medium-6 columns">
<br>
<a class="button" id="get_vcenter_clusters">
<label>&nbsp;</label>
<button type="submit" id="get_vcenter_clusters" class="button radius">
{{tr "Get vCenter Clusters"}}
</a>
</button>
</div>
</div>
<div class="row collapse">
@ -112,5 +114,5 @@
</div>
</div>
</fieldset>
</div>
</form>
</form>
</div>

View File

@ -82,27 +82,35 @@ define(function(require) {
function _setup(context) {
var that = this;
Sunstone.disableFormPanelSubmit(TAB_ID);
$("form.vcenter_credentials", context)
.off('forminvalid.zf.abide').off('formvalid.zf.abide').off("submit");
$("#get_vcenter_images", context).on("click", function(){
Sunstone.enableFormPanelSubmit(TAB_ID);
Foundation.reInit($("form.vcenter_credentials", context));
var vcenter_user = $("#vcenter_user", context).val();
var vcenter_password = $("#vcenter_password", context).val();
var vcenter_host = $("#vcenter_host", context).val();
var vcenter_datastore = $("#vcenter_datastore", context).val();
$("form.vcenter_credentials", context)
.on('forminvalid.zf.abide', function(ev, frm) {
})
.on('formvalid.zf.abide', function(ev, frm) {
Sunstone.enableFormPanelSubmit(TAB_ID);
that.vCenterImages.insert({
container: context,
vcenter_user: vcenter_user,
vcenter_password: vcenter_password,
vcenter_host: vcenter_host,
vcenter_datastore: vcenter_datastore
var vcenter_user = $("#vcenter_user", context).val();
var vcenter_password = $("#vcenter_password", context).val();
var vcenter_host = $("#vcenter_host", context).val();
var vcenter_datastore = $("#vcenter_datastore", context).val();
that.vCenterImages.insert({
container: context,
vcenter_user: vcenter_user,
vcenter_password: vcenter_password,
vcenter_host: vcenter_host,
vcenter_datastore: vcenter_datastore
});
})
.on("submit", function(ev) {
ev.preventDefault();
});
return false;
});
return false;
}
@ -110,9 +118,8 @@ define(function(require) {
var that = this;
Sunstone.hideFormPanelLoading(TAB_ID);
Sunstone.disableFormPanelSubmit(TAB_ID);
this.vCenterImages.import();
this.vCenterImages.import(context.closest("#import_images_form_wrapper"));
return false;
}

View File

@ -14,32 +14,36 @@
{{! limitations under the License. }}
{{! -------------------------------------------------------------------------- }}
<form data-abide novalidate id="{{formPanelId}}Wizard" class="custom creation">
<div class="row vcenter_credentials">
<div class="large-3 medium-6 columns">
<label for="vcenter_host">{{tr "Hostname"}}</label>
<input type="text" name="vcenter_host" id="vcenter_host" />
<div id="import_images_form_wrapper">
<form data-abide novalidate id="{{formPanelId}}Wizard" class="custom creation">
</form>
<form data-abide novalidate class="vcenter_credentials" action="">
<div class="row">
<div class="large-3 medium-6 columns">
<label for="vcenter_host">{{tr "Hostname"}}</label>
<input type="text" name="vcenter_host" id="vcenter_host" required />
</div>
<div class="large-2 medium-3 columns">
<label for="vcenter_user">{{tr "User"}}</label>
<input type="text" name="vcenter_user" id="vcenter_user" required />
</div>
<div class="large-2 medium-3 columns">
<label for="vcenter_password">{{tr "Password"}}</label>
<input type="password" name="vcenter_password" id="vcenter_password" required />
</div>
<div class="large-2 medium-6 columns">
<label for="vcenter_datastore">{{tr "Datastore"}}</label>
<input type="text" name="vcenter_datastore" id="vcenter_datastore" required />
</div>
<div class="large-3 medium-6 columns">
<label>&nbsp;</label>
<button type="submit" class="button radius">
{{tr "Get Images"}}
</button>
</div>
</div>
<div class="large-2 medium-3 columns">
<label for="vcenter_user">{{tr "User"}}</label>
<input type="text" name="vcenter_user" id="vcenter_user" />
</div>
<div class="large-2 medium-3 columns">
<label for="vcenter_password">{{tr "Password"}}</label>
<input type="password" name="vcenter_password" id="vcenter_password" />
</div>
<div class="large-2 medium-6 columns">
<label for="vcenter_datastore">{{tr "Datastore"}}</label>
<input type="text" name="vcenter_datastore" id="vcenter_datastore" />
</div>
<div class="large-3 medium-6 columns">
<br>
<a class="button" id="get_vcenter_images">
{{tr "Get Images"}}
</a>
</div>
</div>
</form>
<div class="row collapse">
{{{vCenterImagesHTML}}}
</div>
</form>
</div>

View File

@ -83,7 +83,7 @@
</select>
</div>
<div class="medium-4 columns end security_group_rule_range">
<label>&nbsp</label>
<label>&nbsp;</label>
<input type="text" placeholder="22,53,80:90,110,1024:65535"/>
</div>
</div>

View File

@ -82,25 +82,32 @@ define(function(require) {
function _setup(context) {
var that = this;
Sunstone.disableFormPanelSubmit(TAB_ID);
$("form.vcenter_credentials", context)
.off('forminvalid.zf.abide').off('formvalid.zf.abide').off("submit");
$("#get_vcenter_templates", context).on("click", function(){
Sunstone.enableFormPanelSubmit(TAB_ID);
Foundation.reInit($("form.vcenter_credentials", context));
var vcenter_user = $("#vcenter_user", context).val();
var vcenter_password = $("#vcenter_password", context).val();
var vcenter_host = $("#vcenter_host", context).val();
$("form.vcenter_credentials", context)
.on('forminvalid.zf.abide', function(ev, frm) {
})
.on('formvalid.zf.abide', function(ev, frm) {
Sunstone.enableFormPanelSubmit(TAB_ID);
that.vCenterTemplates.insert({
container: context,
vcenter_user: vcenter_user,
vcenter_password: vcenter_password,
vcenter_host: vcenter_host
var vcenter_user = $("#vcenter_user", context).val();
var vcenter_password = $("#vcenter_password", context).val();
var vcenter_host = $("#vcenter_host", context).val();
that.vCenterTemplates.insert({
container: context,
vcenter_user: vcenter_user,
vcenter_password: vcenter_password,
vcenter_host: vcenter_host
});
})
.on("submit", function(ev) {
ev.preventDefault();
});
return false;
});
return false;
}
@ -108,9 +115,8 @@ define(function(require) {
var that = this;
Sunstone.hideFormPanelLoading(TAB_ID);
Sunstone.disableFormPanelSubmit(TAB_ID);
this.vCenterTemplates.import();
this.vCenterTemplates.import(context.closest("#import_templates_form_wrapper"));
return false;
}

View File

@ -14,28 +14,32 @@
{{! limitations under the License. }}
{{! -------------------------------------------------------------------------- }}
<form data-abide novalidate id="{{formPanelId}}Wizard" class="custom creation">
<div class="row vcenter_credentials">
<div class="large-3 medium-6 columns">
<label for="vcenter_host">{{tr "Hostname"}}</label>
<input type="text" name="vcenter_host" id="vcenter_host" />
<div id="import_templates_form_wrapper">
<form data-abide novalidate id="{{formPanelId}}Wizard" class="custom creation">
</form>
<form data-abide novalidate class="vcenter_credentials" action="">
<div class="row">
<div class="large-3 medium-6 columns">
<label for="vcenter_host">{{tr "Hostname"}}</label>
<input type="text" name="vcenter_host" id="vcenter_host" required />
</div>
<div class="large-3 medium-6 columns">
<label for="vcenter_user">{{tr "User"}}</label>
<input type="text" name="vcenter_user" id="vcenter_user" required />
</div>
<div class="large-3 medium-6 columns">
<label for="vcenter_password">{{tr "Password"}}</label>
<input type="password" name="vcenter_password" id="vcenter_password" required />
</div>
<div class="large-3 medium-6 columns">
<label>&nbsp;</label>
<button type="submit" class="button radius">
{{tr "Get VM Templates"}}
</button>
</div>
</div>
<div class="large-3 medium-6 columns">
<label for="vcenter_user">{{tr "User"}}</label>
<input type="text" name="vcenter_user" id="vcenter_user" />
</div>
<div class="large-3 medium-6 columns">
<label for="vcenter_password">{{tr "Password"}}</label>
<input type="password" name="vcenter_password" id="vcenter_password" />
</div>
<div class="large-3 medium-6 columns">
<br>
<a class="button" id="get_vcenter_templates">
{{tr "Get VM Templates"}}
</a>
</div>
</div>
</form>
<div class="row collapse">
{{{vCenterTemplatesHTML}}}
</div>
</form>
</div>

View File

@ -82,25 +82,32 @@ define(function(require) {
function _setup(context) {
var that = this;
Sunstone.disableFormPanelSubmit(TAB_ID);
$("form.vcenter_credentials", context)
.off('forminvalid.zf.abide').off('formvalid.zf.abide').off("submit");
$("#get_vcenter_networks", context).on("click", function(){
Sunstone.enableFormPanelSubmit(TAB_ID);
Foundation.reInit($("form.vcenter_credentials", context));
var vcenter_user = $("#vcenter_user", context).val();
var vcenter_password = $("#vcenter_password", context).val();
var vcenter_host = $("#vcenter_host", context).val();
$("form.vcenter_credentials", context)
.on('forminvalid.zf.abide', function(ev, frm) {
})
.on('formvalid.zf.abide', function(ev, frm) {
Sunstone.enableFormPanelSubmit(TAB_ID);
that.vCenterNetworks.insert({
container: context,
vcenter_user: vcenter_user,
vcenter_password: vcenter_password,
vcenter_host: vcenter_host
var vcenter_user = $("#vcenter_user", context).val();
var vcenter_password = $("#vcenter_password", context).val();
var vcenter_host = $("#vcenter_host", context).val();
that.vCenterNetworks.insert({
container: context,
vcenter_user: vcenter_user,
vcenter_password: vcenter_password,
vcenter_host: vcenter_host
});
})
.on("submit", function(ev) {
ev.preventDefault();
});
return false;
});
return false;
}
@ -108,9 +115,8 @@ define(function(require) {
var that = this;
Sunstone.hideFormPanelLoading(TAB_ID);
Sunstone.disableFormPanelSubmit(TAB_ID);
this.vCenterNetworks.import();
this.vCenterNetworks.import(context.closest("#import_networks_form_wrapper"));
return false;
}

View File

@ -14,28 +14,32 @@
{{! limitations under the License. }}
{{! -------------------------------------------------------------------------- }}
<form data-abide novalidate id="{{formPanelId}}Wizard" class="custom creation">
<div class="row vcenter_credentials">
<div class="large-3 medium-6 columns">
<label for="vcenter_host">{{tr "Hostname"}}</label>
<input type="text" name="vcenter_host" id="vcenter_host" />
<div id="import_networks_form_wrapper">
<form data-abide novalidate id="{{formPanelId}}Wizard" class="custom creation">
</form>
<form data-abide novalidate class="vcenter_credentials" action="">
<div class="row">
<div class="large-3 medium-6 columns">
<label for="vcenter_host">{{tr "Hostname"}}</label>
<input type="text" name="vcenter_host" id="vcenter_host" required />
</div>
<div class="large-3 medium-6 columns">
<label for="vcenter_user">{{tr "User"}}</label>
<input type="text" name="vcenter_user" id="vcenter_user" required />
</div>
<div class="large-3 medium-6 columns">
<label for="vcenter_password">{{tr "Password"}}</label>
<input type="password" name="vcenter_password" id="vcenter_password" required />
</div>
<div class="large-3 medium-6 columns">
<label>&nbsp;</label>
<button type="submit" class="button radius">
{{tr "Get Networks"}}
</button>
</div>
</div>
<div class="large-3 medium-6 columns">
<label for="vcenter_user">{{tr "User"}}</label>
<input type="text" name="vcenter_user" id="vcenter_user" />
</div>
<div class="large-3 medium-6 columns">
<label for="vcenter_password">{{tr "Password"}}</label>
<input type="password" name="vcenter_password" id="vcenter_password" />
</div>
<div class="large-3 medium-6 columns">
<br>
<a class="button" id="get_vcenter_networks">
{{tr "Get Networks"}}
</a>
</div>
</div>
</form>
<div class="row collapse">
{{{vCenterNetworksHTML}}}
</div>
</form>
</div>

View File

@ -70,7 +70,7 @@ define(function(require) {
$('#' + that.formPanelId + 'Wizard, #' + that.formPanelId + 'Advanced', context)
.off('forminvalid.zf.abide').off('formvalid.zf.abide').off("submit");
Foundation.reInit($("form", context));
Foundation.reInit($('#' + that.formPanelId + 'Wizard, #' + that.formPanelId + 'Advanced', context));
$('#' + that.formPanelId + 'Wizard, #' + that.formPanelId + 'Advanced', context)
.on('forminvalid.zf.abide', function(ev, frm) {

View File

@ -1,9 +1,5 @@
.vcenter_credentials {
margin-bottom: 1rem;
.button {
margin-top: 0.5rem;
}
}
.vcenter_row {