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

F #1428: Backup interface (#852)

Signed-off-by: Frederick Borges <fborges@opennebula.io>
This commit is contained in:
Frederick Borges 2021-02-22 15:13:44 +01:00 committed by GitHub
parent 63d600c515
commit 53278e3d67
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 135 additions and 3 deletions

View File

@ -31,6 +31,8 @@ define(function(require) {
var GroupTable = require("tabs/groups-tab/datatable");
var OpenNebulaHost = require("opennebula/host");
var CoresPerSocket = require("tabs/templates-tab/form-panels/create/wizard-tabs/utils/cores-per-socket");
var OpenNebulaMarketplace = require('opennebula/marketplace');
var Notifier = require('utils/notifier');
/*
TEMPLATES
@ -328,6 +330,34 @@ define(function(require) {
}
fillLXDProfiles(context)
fillMarketplaces();
}
function fillMarketplaces(){
var fillMP = function(_, marketplaces){
// EMPTY
$('#MARKETPLACE_ID').empty();
$('#MARKETPLACE_ID').append('<option value="">-</option>');
$.each(marketplaces, function(index, marketplace){
var id = marketplace.MARKETPLACE.ID;
var text = id + ' - ' + marketplace.MARKETPLACE.NAME;
var type = marketplace.MARKETPLACE.MARKET_MAD;
if (type == "http" || type == "s3"){
$('#MARKETPLACE_ID').append('<option value="' + id + '">'+ text + "</option>")
}
});
}
OpenNebulaMarketplace.list({
success: fillMP,
error: Notifier.onError,
options: {force: true} // Do not use cache
});
}
function fillLXDProfiles(context){
@ -437,6 +467,13 @@ define(function(require) {
delete templateJSON.CPU_HOT_ADD_ENABLED;
delete templateJSON.MEMORY_HOT_ADD_ENABLED;
templateJSON.BACKUP = {
'FREQUENCY_SECONDS': templateJSON['FREQUENCY_SECONDS'],
'MARKETPLACE_ID': templateJSON['MARKETPLACE_ID'],
}
delete templateJSON.FREQUENCY_SECONDS;
delete templateJSON.MARKETPLACE_ID;
return templateJSON;
}
@ -563,6 +600,17 @@ define(function(require) {
delete templateJSON['HOT_RESIZE'];
}
// Fill backup attributes
if (templateJSON['BACKUP']){
if (templateJSON.BACKUP['FREQUENCY_SECONDS']){
WizardFields.fillInput($('#FREQUENCY_SECONDS',context), templateJSON.BACKUP['FREQUENCY_SECONDS']);
}
if (templateJSON.BACKUP['MARKETPLACE_ID']){
WizardFields.fillInput($('#MARKETPLACE_ID',context), templateJSON.BACKUP['MARKETPLACE_ID']);
}
delete templateJSON['BACKUP'];
}
WizardFields.fill(context, templateJSON);
}

View File

@ -213,6 +213,27 @@
</fieldset>
</div>
</div>
<div class="row">
<div class="medium-12 columns">
<fieldset>
<legend>
{{tr "Backups"}}
</legend>
<div class="medium-6 columns">
<label for="FREQUENCY_SECONDS">
{{tr "Backup Frequency in Seconds"}}
</label>
<input type="number" step="any" min="0" wizard_field="FREQUENCY_SECONDS" id="FREQUENCY_SECONDS"/>
</div>
<div class="medium-6 columns">
<label for="MARKETPLACE_ID">
{{tr "Marketplace ID"}}
</label>
<select wizard_field="MARKETPLACE_ID" id="MARKETPLACE_ID"/>
</div>
</fieldset>
</div>
</div>
{{/isFeatureEnabled}}
<div class="row">
<div class="large-6 columns">

View File

@ -96,7 +96,7 @@ define(function(require) {
var unshownValues = {};
$.each(that.element.USER_TEMPLATE, function(key, value) {
if (key.match(/^SCHED_*/) || key.match(/^ERROR/) || key == "USER_INPUTS") {
if (key.match(/^SCHED_*/) || key.match(/^ERROR/) || key == "USER_INPUTS" || key == "BACKUP") {
unshownValues[key] = value;
}
else if (key.match(/^VCENTER_*/)){

View File

@ -24,7 +24,9 @@ define(function(require) {
var TemplatePermissions = require('hbs!./permissions-table/permissions');
var TemplateOwner = require('hbs!./permissions-table/owner');
var TemplateGroup = require('hbs!./permissions-table/group');
var TemplateBackup = require('hbs!./permissions-table/backup');
var ResourceSelect = require('utils/resource-select');
var Humanize = require("utils/humanize");
var Sunstone = require('sunstone');
var Config = require('sunstone-config');
@ -53,11 +55,28 @@ define(function(require) {
'element': element
})
var backupHTML = '';
// The backup information is only available for VMs
// but it could be extended to another resources
if (resourceType == "VM") {
var last_backup;
if (element.USER_TEMPLATE &&
element.USER_TEMPLATE.BACKUP &&
element.USER_TEMPLATE.BACKUP.LAST_BACKUP_TIME){
last_backup = Humanize.prettyTime(element.USER_TEMPLATE.BACKUP.LAST_BACKUP_TIME);
}
backupHTML = TemplateBackup({
'element': element,
'last_backup': last_backup
})
}
var permissionsTableHTML = TemplatePermissionsTable({
'resourceType': resourceType.toLowerCase(),
'permissionsHTML': permissionsHTML,
'ownerHTML': ownerHTML,
'groupHTML': groupHTML
'groupHTML': groupHTML,
'backupHTML': backupHTML
})
return permissionsTableHTML;

View File

@ -0,0 +1,43 @@
{{! -------------------------------------------------------------------------- }}
{{! Copyright 2002-2021, 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. }}
{{! -------------------------------------------------------------------------- }}
<thead>
<tr>
<th colspan="4" style="width:130px">{{tr "Backups"}}</th>
</tr>
</thead>
<tr>
<td class="key_td">{{tr "Frequency"}}</td>
<td colspan="3" id="value_td_backup_frequency">{{valOrDefault element.USER_TEMPLATE.BACKUP.FREQUENCY_SECONDS "-"}}</td>
</tr>
<tr>
<td class="key_td">{{tr "Marketplace ID"}}</td>
<td colspan="3" id="value_td_backup_frequency">
{{#if element.USER_TEMPLATE.BACKUP.MARKETPLACE_ID}}
{{navigate element.USER_TEMPLATE.BACKUP.MARKETPLACE_ID 'marketplaces-tab' element.USER_TEMPLATE.BACKUP.MARKETPLACE_ID}}
{{else}}
-
{{/if}}
</td>
</tr>
<tr>
<td class="key_td">{{tr "Backup last copy time"}}</td>
<td colspan="3" id="value_td_backup_last">{{valOrDefault last_backup "-"}}</td>
</tr>
<tr>
<td class="key_td">{{tr "Backup marketplace app IDs"}}</td>
<td colspan="3" id="value_td_backup_mpapp">{{valOrDefault element.USER_TEMPLATE.BACKUP.MARKETPLACE_APP_IDS "-"}}</td>
</tr>

View File

@ -14,7 +14,7 @@
{{! limitations under the License. }}
{{! -------------------------------------------------------------------------- }}
<table class="{{resourceType}}_permissions_table dataTable">
<table class="{{resourceType}}_permissions_table dataTable test">
{{{permissionsHTML}}}
<thead>
<tr>
@ -23,4 +23,5 @@
</thead>
{{{ownerHTML}}}
{{{groupHTML}}}
{{{backupHTML}}}
</table>