diff --git a/packages/manager/modules/netapp/src/dashboard/volumes/component.js b/packages/manager/modules/netapp/src/dashboard/volumes/component.js
index 976f5ba3d0bc..21c1644b7321 100644
--- a/packages/manager/modules/netapp/src/dashboard/volumes/component.js
+++ b/packages/manager/modules/netapp/src/dashboard/volumes/component.js
@@ -19,6 +19,7 @@ export default {
canEditVolumes: '<',
isDashboardAvailable: '<',
trackClick: '<',
+ goToEditVolumeReserveSpace: '<',
totalVolumesStorage: '<',
},
template,
diff --git a/packages/manager/modules/netapp/src/dashboard/volumes/components/edit-reserve-space/component.js b/packages/manager/modules/netapp/src/dashboard/volumes/components/edit-reserve-space/component.js
new file mode 100644
index 000000000000..64df37739eaf
--- /dev/null
+++ b/packages/manager/modules/netapp/src/dashboard/volumes/components/edit-reserve-space/component.js
@@ -0,0 +1,12 @@
+import template from './template.html';
+import controller from './controller';
+
+export default {
+ bindings: {
+ storage: '<',
+ volume: '<',
+ goBack: '<',
+ },
+ template,
+ controller,
+};
diff --git a/packages/manager/modules/netapp/src/dashboard/volumes/components/edit-reserve-space/constant.js b/packages/manager/modules/netapp/src/dashboard/volumes/components/edit-reserve-space/constant.js
new file mode 100644
index 000000000000..d73140f30369
--- /dev/null
+++ b/packages/manager/modules/netapp/src/dashboard/volumes/components/edit-reserve-space/constant.js
@@ -0,0 +1,8 @@
+export const BOUNDARIES = {
+ MIN_SPACE_PERCENT: 5,
+ MAX_SPACE_PERCENT: 100,
+};
+
+export default {
+ BOUNDARIES,
+};
diff --git a/packages/manager/modules/netapp/src/dashboard/volumes/components/edit-reserve-space/controller.js b/packages/manager/modules/netapp/src/dashboard/volumes/components/edit-reserve-space/controller.js
new file mode 100644
index 000000000000..a02120076040
--- /dev/null
+++ b/packages/manager/modules/netapp/src/dashboard/volumes/components/edit-reserve-space/controller.js
@@ -0,0 +1,54 @@
+import { BOUNDARIES } from './constant';
+
+export default class VolumeEditReserveSpaceCtrl {
+ /* @ngInject */
+ constructor($translate, EditReserveSpaceService) {
+ this.$translate = $translate;
+ this.EditReserveSpaceService = EditReserveSpaceService;
+ }
+
+ $onInit() {
+ this.isLoading = true;
+ this.errorMessage = null;
+ this.model = {
+ percent: BOUNDARIES.MIN_SPACE_PERCENT,
+ };
+
+ this.boundaries = BOUNDARIES;
+ this.EditReserveSpaceService.getSnapshotReserveSpace(
+ this.storage.id,
+ this.volume,
+ ).then((data) => {
+ this.model.percent = data.percent;
+ this.isLoading = false;
+ });
+ }
+
+ cancel() {
+ this.goBack();
+ }
+
+ modifySnapshotReserveSpace() {
+ this.EditReserveSpaceService.modifySnapshotReserveSpace(
+ this.storage.id,
+ this.volume,
+ this.model.percent,
+ )
+ .then(() => {
+ this.goBack(
+ this.$translate.instant('netapp_volumes_edit_reserve_space_success', {
+ volumeName: this.volume.name || this.volume.id,
+ }),
+ );
+ })
+ .catch((error) => {
+ this.errorMessage = this.$translate.instant(
+ 'netapp_volumes_edit_reserve_space_error',
+ {
+ message: error?.data?.message || error.message,
+ requestId: error.headers('X-Ovh-Queryid'),
+ },
+ );
+ });
+ }
+}
diff --git a/packages/manager/modules/netapp/src/dashboard/volumes/components/edit-reserve-space/index.js b/packages/manager/modules/netapp/src/dashboard/volumes/components/edit-reserve-space/index.js
new file mode 100644
index 000000000000..185f3728bd6f
--- /dev/null
+++ b/packages/manager/modules/netapp/src/dashboard/volumes/components/edit-reserve-space/index.js
@@ -0,0 +1,13 @@
+import angular from 'angular';
+import component from './component';
+import service from './service';
+
+const moduleName = 'ovhManagerNetAppVolumesEditReserveSpaceModule';
+
+angular
+ .module(moduleName, ['oui', 'pascalprecht.translate'])
+ .service('EditReserveSpaceService', service)
+ .component('ovhManagerNetAppVolumesEditReserveSpaceComponent', component)
+ .run(/* @ngTranslationsInject:json ./translations */);
+
+export default moduleName;
diff --git a/packages/manager/modules/netapp/src/dashboard/volumes/components/edit-reserve-space/service.js b/packages/manager/modules/netapp/src/dashboard/volumes/components/edit-reserve-space/service.js
new file mode 100644
index 000000000000..d97cac4877eb
--- /dev/null
+++ b/packages/manager/modules/netapp/src/dashboard/volumes/components/edit-reserve-space/service.js
@@ -0,0 +1,21 @@
+export default class NetAppDashboardEditReserveSpaceService {
+ /* @ngInject */
+ constructor($http) {
+ this.$http = $http;
+ }
+
+ modifySnapshotReserveSpace(serviceName, volume, newPercent) {
+ return this.$http.put(
+ `/storage/netapp/${serviceName}/share/${volume.id}/snapshotReserve`,
+ {
+ percent: newPercent,
+ },
+ );
+ }
+
+ getSnapshotReserveSpace(serviceName, volume) {
+ return this.$http
+ .get(`/storage/netapp/${serviceName}/share/${volume.id}/snapshotReserve`)
+ .then(({ data }) => data);
+ }
+}
diff --git a/packages/manager/modules/netapp/src/dashboard/volumes/components/edit-reserve-space/template.html b/packages/manager/modules/netapp/src/dashboard/volumes/components/edit-reserve-space/template.html
new file mode 100644
index 000000000000..cf8511719927
--- /dev/null
+++ b/packages/manager/modules/netapp/src/dashboard/volumes/components/edit-reserve-space/template.html
@@ -0,0 +1,30 @@
+
+
+
+
+
+
diff --git a/packages/manager/modules/netapp/src/dashboard/volumes/components/edit-reserve-space/translations/Messages_fr_FR.json b/packages/manager/modules/netapp/src/dashboard/volumes/components/edit-reserve-space/translations/Messages_fr_FR.json
new file mode 100644
index 000000000000..e2b7e81d42d3
--- /dev/null
+++ b/packages/manager/modules/netapp/src/dashboard/volumes/components/edit-reserve-space/translations/Messages_fr_FR.json
@@ -0,0 +1,9 @@
+{
+ "netapp_volumes_edit_reserve_space_title": "Modifier la réserve des snapshots",
+ "netapp_volumes_edit_reserve_space_submit": "Modifier l'espace",
+ "netapp_volumes_edit_reserve_space_cancel": "Annuler",
+ "netapp_volumes_edit_reserve_space_label": "Espace réservé",
+ "netapp_volumes_edit_reserve_space_rules": "Taille autorisée : min {{min}}%, max {{max}}%",
+ "netapp_volumes_edit_reserve_space_success": "L'espace réservé pour les snapshots sera modifiée dans quelques instants",
+ "netapp_volumes_edit_reserve_space_error": "Une erreur est survenue
{{message}}
request_id: {{requestId}}"
+}
diff --git a/packages/manager/modules/netapp/src/dashboard/volumes/dashboard/component.js b/packages/manager/modules/netapp/src/dashboard/volumes/dashboard/component.js
index 7082e2444f85..c4146c9795e5 100644
--- a/packages/manager/modules/netapp/src/dashboard/volumes/dashboard/component.js
+++ b/packages/manager/modules/netapp/src/dashboard/volumes/dashboard/component.js
@@ -12,6 +12,8 @@ export default {
updateVolume: '<',
goToVolumeDashboard: '<',
goToEditVolumeSize: '<',
+ goToEditVolumeReserveSpace: '<',
+ volumeReserveSpacePercentage: '<',
},
controller,
template,
diff --git a/packages/manager/modules/netapp/src/dashboard/volumes/dashboard/edit-reserve-space/index.js b/packages/manager/modules/netapp/src/dashboard/volumes/dashboard/edit-reserve-space/index.js
new file mode 100644
index 000000000000..8516e88f32b9
--- /dev/null
+++ b/packages/manager/modules/netapp/src/dashboard/volumes/dashboard/edit-reserve-space/index.js
@@ -0,0 +1,26 @@
+import angular from 'angular';
+import '@uirouter/angularjs';
+import 'oclazyload';
+
+const moduleName =
+ 'ovhManagerNetAppVolumesDashboardEditReserveSpaceLazyLoading';
+
+angular.module(moduleName, ['ui.router', 'oc.lazyLoad']).config(
+ /* @ngInject */ ($stateProvider) => {
+ $stateProvider.state(
+ 'netapp.dashboard.volumes.dashboard.edit-reserve-space.**',
+ {
+ url: '/edit-reserve-space',
+ lazyLoad: ($transition$) => {
+ const $ocLazyLoad = $transition$.injector().get('$ocLazyLoad');
+
+ return import('./module').then((mod) =>
+ $ocLazyLoad.inject(mod.default || mod),
+ );
+ },
+ },
+ );
+ },
+);
+
+export default moduleName;
diff --git a/packages/manager/modules/netapp/src/dashboard/volumes/dashboard/edit-reserve-space/module.js b/packages/manager/modules/netapp/src/dashboard/volumes/dashboard/edit-reserve-space/module.js
new file mode 100644
index 000000000000..73717da12cd8
--- /dev/null
+++ b/packages/manager/modules/netapp/src/dashboard/volumes/dashboard/edit-reserve-space/module.js
@@ -0,0 +1,20 @@
+import angular from 'angular';
+import '@ovh-ux/manager-core';
+import '@uirouter/angularjs';
+import 'angular-translate';
+import routing from './routing';
+import editReserveSpace from '../../components/edit-reserve-space';
+
+const moduleName = 'ovhManagerNetAppVolumesDashboardEditReserveSpace';
+
+angular
+ .module(moduleName, [
+ 'ovhManagerCore',
+ 'pascalprecht.translate',
+ 'ui.router',
+ editReserveSpace,
+ ])
+ .config(routing)
+ .run(/* @ngTranslationsInject:json ./translations */);
+
+export default moduleName;
diff --git a/packages/manager/modules/netapp/src/dashboard/volumes/dashboard/edit-reserve-space/routing.js b/packages/manager/modules/netapp/src/dashboard/volumes/dashboard/edit-reserve-space/routing.js
new file mode 100644
index 000000000000..8b0c6b0fd69b
--- /dev/null
+++ b/packages/manager/modules/netapp/src/dashboard/volumes/dashboard/edit-reserve-space/routing.js
@@ -0,0 +1,24 @@
+export default /* @ngInject */ ($stateProvider) => {
+ $stateProvider.state(
+ 'netapp.dashboard.volumes.dashboard.edit-reserve-space',
+ {
+ url: '/edit-reserve-space',
+ views: {
+ modal: {
+ component: 'ovhManagerNetAppVolumesEditReserveSpaceComponent',
+ },
+ },
+ layout: 'modal',
+ resolve: {
+ breadcrumb: () => null,
+ volumeId: /* @ngInject */ ($transition$) =>
+ $transition$.params().volumeId,
+ volume: /* @ngInject */ (volumes, volumeId) =>
+ volumes.find(({ id }) => id === volumeId),
+ goBack: /* @ngInject */ (goToVolumeDetails, volume) => (message) => {
+ goToVolumeDetails(volume, message);
+ },
+ },
+ },
+ );
+};
diff --git a/packages/manager/modules/netapp/src/dashboard/volumes/dashboard/module.js b/packages/manager/modules/netapp/src/dashboard/volumes/dashboard/module.js
index 540410e9dffc..d755d09ab6d6 100644
--- a/packages/manager/modules/netapp/src/dashboard/volumes/dashboard/module.js
+++ b/packages/manager/modules/netapp/src/dashboard/volumes/dashboard/module.js
@@ -11,6 +11,7 @@ import routing from './routing';
import aclModule from './acl';
import snapshotsModule from './snapshots';
import editSize from './edit-size';
+import editReserveSpace from './edit-reserve-space';
const moduleName = 'ovhManagerNetAppVolumesDashboard';
@@ -23,6 +24,7 @@ angular
aclModule,
snapshotsModule,
editSize,
+ editReserveSpace,
])
.config(routing)
.component('ovhManagerNetAppVolumesDashboard', component)
diff --git a/packages/manager/modules/netapp/src/dashboard/volumes/dashboard/routing.js b/packages/manager/modules/netapp/src/dashboard/volumes/dashboard/routing.js
index bca5e43938a1..fc3a03ccdd9f 100644
--- a/packages/manager/modules/netapp/src/dashboard/volumes/dashboard/routing.js
+++ b/packages/manager/modules/netapp/src/dashboard/volumes/dashboard/routing.js
@@ -87,6 +87,26 @@ export default /* @ngInject */ ($stateProvider) => {
volumeId,
});
},
+ volumeReserveSpacePercentage: /* @ngInject */ (
+ $http,
+ serviceName,
+ volumeId,
+ ) =>
+ $http
+ .get(
+ `/storage/netapp/${serviceName}/share/${volumeId}/snapshotReserve`,
+ )
+ .then(({ data }) => data?.percent || 5)
+ .catch(() => null),
+ goToEditVolumeReserveSpace: /* @ngInject */ (
+ $state,
+ serviceName,
+ volumeId,
+ ) => () =>
+ $state.go('netapp.dashboard.volumes.dashboard.edit-reserve-space', {
+ serviceName,
+ volumeId,
+ }),
breadcrumb: /* @ngInject */ (volumeId) => volumeId,
},
});
diff --git a/packages/manager/modules/netapp/src/dashboard/volumes/dashboard/template.html b/packages/manager/modules/netapp/src/dashboard/volumes/dashboard/template.html
index d9b0132b895b..6f2ed7b773db 100644
--- a/packages/manager/modules/netapp/src/dashboard/volumes/dashboard/template.html
+++ b/packages/manager/modules/netapp/src/dashboard/volumes/dashboard/template.html
@@ -78,6 +78,20 @@
+
+
+
+
+
+
+
{
+ $stateProvider.state('netapp.dashboard.volumes.edit-reserve-space.**', {
+ url: '/edit-reserve-space',
+ lazyLoad: ($transition$) => {
+ const $ocLazyLoad = $transition$.injector().get('$ocLazyLoad');
+
+ return import('./module').then((mod) =>
+ $ocLazyLoad.inject(mod.default || mod),
+ );
+ },
+ });
+ },
+);
+
+export default moduleName;
diff --git a/packages/manager/modules/netapp/src/dashboard/volumes/edit-reserve-space/module.js b/packages/manager/modules/netapp/src/dashboard/volumes/edit-reserve-space/module.js
new file mode 100644
index 000000000000..9b9b3069a4cb
--- /dev/null
+++ b/packages/manager/modules/netapp/src/dashboard/volumes/edit-reserve-space/module.js
@@ -0,0 +1,21 @@
+import angular from 'angular';
+import '@ovh-ux/manager-core';
+import '@uirouter/angularjs';
+import 'angular-translate';
+import editSize from '../components/edit-reserve-space';
+
+import routing from './routing';
+
+const moduleName = 'ovhManagerNetAppVolumesEditReserveSpace';
+
+angular
+ .module(moduleName, [
+ 'ovhManagerCore',
+ 'pascalprecht.translate',
+ 'ui.router',
+ editSize,
+ ])
+ .config(routing)
+ .run(/* @ngTranslationsInject:json ./translations */);
+
+export default moduleName;
diff --git a/packages/manager/modules/netapp/src/dashboard/volumes/edit-reserve-space/routing.js b/packages/manager/modules/netapp/src/dashboard/volumes/edit-reserve-space/routing.js
new file mode 100644
index 000000000000..e853a1b61c68
--- /dev/null
+++ b/packages/manager/modules/netapp/src/dashboard/volumes/edit-reserve-space/routing.js
@@ -0,0 +1,21 @@
+export default /* @ngInject */ ($stateProvider) => {
+ $stateProvider.state('netapp.dashboard.volumes.edit-reserve-space', {
+ url: '/edit-reserve-space?volumeId',
+ views: {
+ modal: {
+ component: 'ovhManagerNetAppVolumesEditReserveSpaceComponent',
+ },
+ },
+ layout: 'modal',
+ resolve: {
+ breadcrumb: () => null,
+ volumeId: /* @ngInject */ ($transition$) =>
+ $transition$.params().volumeId,
+ volume: /* @ngInject */ (volumes, volumeId) =>
+ volumes.find(({ id }) => id === volumeId),
+ goBack: /* @ngInject */ (goToVolumes) => (message) => {
+ goToVolumes(message);
+ },
+ },
+ });
+};
diff --git a/packages/manager/modules/netapp/src/dashboard/volumes/module.js b/packages/manager/modules/netapp/src/dashboard/volumes/module.js
index 52a707bf6a77..1652ddefc8cc 100644
--- a/packages/manager/modules/netapp/src/dashboard/volumes/module.js
+++ b/packages/manager/modules/netapp/src/dashboard/volumes/module.js
@@ -11,6 +11,7 @@ import create from './create';
import deleteModule from './delete';
import dashboard from './dashboard';
import editSize from './edit-size';
+import editReserveSpace from './edit-reserve-space';
const moduleName = 'ovhManagerNetAppVolumes';
@@ -24,6 +25,7 @@ angular
deleteModule,
dashboard,
editSize,
+ editReserveSpace,
])
.config(routing)
.component('ovhManagerNetAppVolumes', component)
diff --git a/packages/manager/modules/netapp/src/dashboard/volumes/routing.js b/packages/manager/modules/netapp/src/dashboard/volumes/routing.js
index fe209942a463..5c50d34a6953 100644
--- a/packages/manager/modules/netapp/src/dashboard/volumes/routing.js
+++ b/packages/manager/modules/netapp/src/dashboard/volumes/routing.js
@@ -138,6 +138,14 @@ export default /* @ngInject */ ($stateProvider) => {
volumeId: volume.id,
});
},
+ goToEditVolumeReserveSpace: /* @ngInject */ ($state, serviceName) => (
+ volume,
+ ) => {
+ return $state.go('netapp.dashboard.volumes.edit-reserve-space', {
+ serviceName,
+ volumeId: volume.id,
+ });
+ },
goToDeleteVolume: /* @ngInject */ ($state, serviceName, trackClick) => (
volume,
) => {
diff --git a/packages/manager/modules/netapp/src/dashboard/volumes/template.html b/packages/manager/modules/netapp/src/dashboard/volumes/template.html
index 6d1caaef75b5..8079fc8b2549 100644
--- a/packages/manager/modules/netapp/src/dashboard/volumes/template.html
+++ b/packages/manager/modules/netapp/src/dashboard/volumes/template.html
@@ -111,6 +111,11 @@
+
+
+
diff --git a/packages/manager/modules/netapp/src/dashboard/volumes/translations/Messages_fr_FR.json b/packages/manager/modules/netapp/src/dashboard/volumes/translations/Messages_fr_FR.json
index d30cf96c2656..f4493eb9a649 100644
--- a/packages/manager/modules/netapp/src/dashboard/volumes/translations/Messages_fr_FR.json
+++ b/packages/manager/modules/netapp/src/dashboard/volumes/translations/Messages_fr_FR.json
@@ -42,5 +42,6 @@
"netapp_volumes_manage_acl": "Gérer IP Access (ACL)",
"netapp_volumes_delete_volume": "Supprimer le volume",
"netapp_volumes_edit_volume_size": "Modifier la taille",
+ "netapp_volumes_edit_reserve_space": "Modifier l'espace réservé des snapshots",
"netapp_volumes_mount_path_not_configurated": "Non configuré"
}