diff --git a/assets/styles/themes/_light.scss b/assets/styles/themes/_light.scss index 2b8d7aa07f..ae9cc5a0a7 100644 --- a/assets/styles/themes/_light.scss +++ b/assets/styles/themes/_light.scss @@ -69,7 +69,7 @@ $selected: rgba($primary, .5); --header-btn-bg : #317DB0; --header-btn-text : white; --header-height : 50px; - --nav-width : 230px; + --nav-width : 250px; --nav-bg : #{$lighter}; --nav-active : #{rgba($primary, 0.3)}; --footer-bg : transparent; diff --git a/assets/translations/en-us.yaml b/assets/translations/en-us.yaml index 5992bd2117..a802506bbf 100644 --- a/assets/translations/en-us.yaml +++ b/assets/translations/en-us.yaml @@ -58,7 +58,7 @@ nav: product: apps: Apps & Marketplace - backup: Backup Restore Operator + backup: Backup & Restore Operator cis: CIS Benchmark ecm: Cluster Manager explorer: Cluster Explorer @@ -137,7 +137,20 @@ asyncButton: backupRestoreOperator: backupFilename: Backup Filename - prune: + deployment: + rancherNamespace: Rancher ResourceSet Namespace + storage: + tip: Configure a storage location where all backups are saved by default. You will have the option to override this with each backup, but will be limited to using an S3-compatible object store. + storageClass: Storage Class + persistentVolume: Persistent Volume + label: Default Storage Location + options: + s3: Use an S3-compatible object store + defaultStorageClass: 'Use the default storage class ({name})' + pickSC: Use an existing storage class + pickPV: Use an existing persistent volume + size: Size + prune: label: Prune tip: Delete all resources that match the ResourceSet used, but are not present in the backup. (Recommended) encryption: Encryption diff --git a/chart/backup-restore-operator/S3.vue b/chart/backup-restore-operator/S3.vue new file mode 100644 index 0000000000..29a148a262 --- /dev/null +++ b/chart/backup-restore-operator/S3.vue @@ -0,0 +1,88 @@ + + + diff --git a/chart/backup-restore-operator/index.vue b/chart/backup-restore-operator/index.vue new file mode 100644 index 0000000000..341939285f --- /dev/null +++ b/chart/backup-restore-operator/index.vue @@ -0,0 +1,199 @@ + + + + + diff --git a/components/form/LabeledSelect.vue b/components/form/LabeledSelect.vue index 7daec5c016..02cd0c38ac 100644 --- a/components/form/LabeledSelect.vue +++ b/components/form/LabeledSelect.vue @@ -200,7 +200,7 @@ export default { :options="options" :placeholder="placeholder" :reduce="x => reduce(x)" - :value="value ? value : ' '" + :value="value ? value : ''" @input="e=>$emit('input', e)" @search:blur="onBlur" @search:focus="onFocus" diff --git a/components/form/RadioGroup.vue b/components/form/RadioGroup.vue index 4402ab4735..cd265a8253 100644 --- a/components/form/RadioGroup.vue +++ b/components/form/RadioGroup.vue @@ -103,7 +103,7 @@ export default { diff --git a/edit/resources.cattle.io.restore.vue b/edit/resources.cattle.io.restore.vue index f4bdd5730d..eb3c3d26c2 100644 --- a/edit/resources.cattle.io.restore.vue +++ b/edit/resources.cattle.io.restore.vue @@ -4,10 +4,10 @@ import createEditView from '@/mixins/create-edit-view'; import LabeledInput from '@/components/form/LabeledInput'; import UnitInput from '@/components/form/UnitInput'; import Checkbox from '@/components/form/Checkbox'; -import FileSelector from '@/components/form/FileSelector'; import LabeledSelect from '@/components/form/LabeledSelect'; import Loading from '@/components/Loading'; import RadioGroup from '@/components/form/RadioGroup'; +import S3 from '@/chart/backup-restore-operator/S3'; import { mapGetters } from 'vuex'; import { SECRET, BACKUP_RESTORE, CATALOG } from '@/config/types'; import { allHash } from '@/utils/promise'; @@ -19,7 +19,7 @@ export default { UnitInput, LabeledInput, Checkbox, - FileSelector, + S3, LabeledSelect, Loading, RadioGroup @@ -79,21 +79,6 @@ export default { return BRORelease ? BRORelease.spec.namespace : ''; }, - credentialSecret: { - get() { - const { credentialSecretName, credentialSecretNamespace } = this.s3; - - return { metadata: { name: credentialSecretName, namespace: credentialSecretNamespace } }; - }, - - set(neu) { - const { name, namespace } = neu.metadata; - - this.$set(this.s3, 'credentialSecretName', name); - this.$set(this.s3, 'credentialSecretNamespace', namespace); - } - }, - encryptionSecretNames() { return this.allSecrets.filter(secret => !!secret.data['encryption-provider-config.yaml'] && secret.metadata.namespace === this.chartNamespace).map(secret => secret.metadata.name); }, @@ -177,38 +162,7 @@ export default {
diff --git a/pages/c/_cluster/apps/install.vue b/pages/c/_cluster/apps/install.vue index 5f52be45c2..19a659a9aa 100644 --- a/pages/c/_cluster/apps/install.vue +++ b/pages/c/_cluster/apps/install.vue @@ -507,7 +507,6 @@ export default { return; } - const res = await this.repo.doAction((isUpgrade ? 'upgrade' : 'install'), input); this.operation = await this.$store.dispatch('cluster/find', {