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. + + + + + + diff --git a/ui/src/views/storage/RecurringSnapshotVolume.vue b/ui/src/views/storage/RecurringSnapshotVolume.vue index 44267352096..29ce0140fa6 100644 --- a/ui/src/views/storage/RecurringSnapshotVolume.vue +++ b/ui/src/views/storage/RecurringSnapshotVolume.vue @@ -17,7 +17,7 @@ + + + +