diff --git a/ui/src/config/section/compute.js b/ui/src/config/section/compute.js
index f5547d8effd..cbc57d51c80 100644
--- a/ui/src/config/section/compute.js
+++ b/ui/src/config/section/compute.js
@@ -162,8 +162,9 @@ export default {
icon: 'schedule',
label: 'Configure Backup Schedule',
dataView: true,
- args: ['virtualmachineid', 'intervaltype', 'schedule', 'timezone'],
+ popup: true,
show: (record) => { return record.backupofferingid },
+ component: () => import('@/views/compute/BackupScheduleWizard.vue'),
mapping: {
virtualmachineid: {
value: (record, params) => { return record.id }
diff --git a/ui/src/config/section/offering.js b/ui/src/config/section/offering.js
index 263b467dbb9..be706c3bdfb 100644
--- a/ui/src/config/section/offering.js
+++ b/ui/src/config/section/offering.js
@@ -144,7 +144,8 @@ export default {
icon: 'plus',
label: 'Import Offering',
listView: true,
- args: ['name', 'description', 'zoneid', 'externalid']
+ popup: true,
+ component: () => import('@/views/offering/ImportBackupOffering.vue')
}, {
api: 'deleteBackupOffering',
icon: 'delete',
diff --git a/ui/src/config/section/storage.js b/ui/src/config/section/storage.js
index 91fc7bbb483..0e2466ef5af 100644
--- a/ui/src/config/section/storage.js
+++ b/ui/src/config/section/storage.js
@@ -271,15 +271,8 @@ export default {
icon: 'paper-clip',
label: 'Restore Volume and Attach',
dataView: true,
- args: ['backupid', 'virtualmachineid', 'volumeid'],
- mapping: {
- backupid: {
- value: (record) => { return record.id }
- },
- volumeid: {
- options: ['todo: handle custom volume ID']
- }
- }
+ popup: true,
+ component: () => import('@/views/storage/RestoreAttachBackupVolume.vue')
},
{
api: 'removeVirtualMachineFromBackupOffering',
diff --git a/ui/src/locales/en.json b/ui/src/locales/en.json
index ee44080bdc2..fad21462280 100644
--- a/ui/src/locales/en.json
+++ b/ui/src/locales/en.json
@@ -84,6 +84,7 @@
"all": "All",
"allocatediops": "IOPS Allocated",
"allocationstate": "Allocation State",
+"allowuserdrivenbackups": "Allow User Driven Backups",
"annotation": "Annotation",
"apikey": "API Key",
"associatednetwork": "Associated Network",
@@ -218,7 +219,7 @@
"fingerprint": "FingerPrint",
"firewall": "Firewall",
"firstname": "First Name",
-"forced": "Force Stop",
+"forced": "Force",
"forceencap": "Force UDP Encapsulation of ESP Packets",
"forgedtransmits": "Forged Transmits",
"format": "Format",
@@ -588,7 +589,9 @@
"label.ha.configure": "Configure HA",
"label.ha.disable": "Disable HA",
"label.ha.enable": "Enable HA",
+"label.scheduled.backups": "Scheduled Backups",
"label.scheduled.snapshots": "Scheduled Snapshots",
+"label.header.backup.schedule": "You can set up recurring backup schedules by selecting from the available options below and applying your policy preference",
"label.header.volume.snapshot": "You can set up recurring snapshot schedules by selecting from the available options below and applying your policy preference",
"label.header.volume.take.snapshot": "Please confirm that you want to take a snapshot of this volume.",
"label.instanciate.template.associate.profile.blade": "Instanciate Template and Associate Profile to Blade",
@@ -1263,6 +1266,5 @@
"label.launch.zone": "Launch Zone",
"label.done": "Done",
"label.fix.errors": "Fix errors",
-"label.zone": "Zone",
"error.something.went.wrong.please.correct.the.following": "Something went wrong; please correct the following"
}
diff --git a/ui/src/views/compute/BackupScheduleWizard.vue b/ui/src/views/compute/BackupScheduleWizard.vue
new file mode 100644
index 00000000000..6bb566c84ae
--- /dev/null
+++ b/ui/src/views/compute/BackupScheduleWizard.vue
@@ -0,0 +1,95 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The ASF licenses this file
+// to you 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.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ui/src/views/compute/backup/BackupSchedule.vue b/ui/src/views/compute/backup/BackupSchedule.vue
new file mode 100644
index 00000000000..a74d89a2d6e
--- /dev/null
+++ b/ui/src/views/compute/backup/BackupSchedule.vue
@@ -0,0 +1,220 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The ASF licenses this file
+// to you 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.
+
+
+
+
+
+
+
+
diff --git a/ui/src/views/compute/backup/FormSchedule.vue b/ui/src/views/compute/backup/FormSchedule.vue
new file mode 100644
index 00000000000..bbc288317ed
--- /dev/null
+++ b/ui/src/views/compute/backup/FormSchedule.vue
@@ -0,0 +1,330 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The ASF licenses this file
+// to you 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.
+
+
+
+
+
+
+
+
+
+
diff --git a/ui/src/views/infra/zone/ZoneWizardAddResources.vue b/ui/src/views/infra/zone/ZoneWizardAddResources.vue
index 117c3792641..b00fc01b769 100644
--- a/ui/src/views/infra/zone/ZoneWizardAddResources.vue
+++ b/ui/src/views/infra/zone/ZoneWizardAddResources.vue
@@ -748,7 +748,7 @@ export default {
if (['KVM', 'VMware', 'Hyperv'].includes(hypervisor)) {
scope.push({
id: 'zone',
- description: this.$t('label.zone')
+ description: this.$t('zone')
})
scope.push({
id: 'cluster',
diff --git a/ui/src/views/offering/ImportBackupOffering.vue b/ui/src/views/offering/ImportBackupOffering.vue
new file mode 100644
index 00000000000..0ed963a1bb4
--- /dev/null
+++ b/ui/src/views/offering/ImportBackupOffering.vue
@@ -0,0 +1,214 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The ASF licenses this file
+// to you 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.
+
+
+