diff --git a/packages/manager/modules/billing-components/src/components/cancellation-form/billing-confirmTerminate.service.js b/packages/manager/modules/billing-components/src/components/cancellation-form/billing-confirmTerminate.service.js
index 364301571359..8c0ccb692623 100644
--- a/packages/manager/modules/billing-components/src/components/cancellation-form/billing-confirmTerminate.service.js
+++ b/packages/manager/modules/billing-components/src/components/cancellation-form/billing-confirmTerminate.service.js
@@ -55,6 +55,10 @@ export default class BillingTerminate {
return this.$http.post(`/services/${serviceId}/terminate`);
}
+ serviceTerminationForVrack(serviceId) {
+ return this.$http.post(`/vrack/${serviceId}/terminate`);
+ }
+
getTerminationForm(serviceId) {
return this.OvhApiServices.Form()
.v6()
diff --git a/packages/manager/modules/billing-components/src/components/services-actions/services-actions.component.js b/packages/manager/modules/billing-components/src/components/services-actions/services-actions.component.js
index 4b087722c065..dfddbd2c8712 100644
--- a/packages/manager/modules/billing-components/src/components/services-actions/services-actions.component.js
+++ b/packages/manager/modules/billing-components/src/components/services-actions/services-actions.component.js
@@ -4,6 +4,7 @@ import template from './services-actions.html';
export default {
bindings: {
billingManagementAvailability: '<',
+ deleteVrackAvailability: '<',
service: '<',
trackingPrefix: '@?',
trackingPage: '@?',
diff --git a/packages/manager/modules/billing-components/src/components/services-actions/services-actions.controller.js b/packages/manager/modules/billing-components/src/components/services-actions/services-actions.controller.js
index 94666b26f406..5d8f5affb4b3 100644
--- a/packages/manager/modules/billing-components/src/components/services-actions/services-actions.controller.js
+++ b/packages/manager/modules/billing-components/src/components/services-actions/services-actions.controller.js
@@ -65,9 +65,12 @@ export default class ServicesActionsCtrl {
}
canResiliate() {
+ if (this.service.serviceType === this.SERVICE_TYPE.VRACK) {
+ return this.deleteVrackAvailability && !!this.resiliateLink;
+ }
+
return ![
SERVICE_TYPE.PACK_XDSL,
- SERVICE_TYPE.VRACK,
SERVICE_TYPE.VMWARE_CLOUD_DIRECTOR_ORGANIZATION,
].includes(this.service.serviceType);
}
diff --git a/packages/manager/modules/billing-components/src/components/utils/billing.links.service.js b/packages/manager/modules/billing-components/src/components/utils/billing.links.service.js
index 9804f418856c..f291ceeb3471 100644
--- a/packages/manager/modules/billing-components/src/components/utils/billing.links.service.js
+++ b/packages/manager/modules/billing-components/src/components/utils/billing.links.service.js
@@ -1,4 +1,4 @@
-import { SERVICE_TYPE } from './constants';
+import { SERVICE_TYPE, SUSPENDED_SERVICE } from './constants';
export default class BillingLinksService {
/* @ngInject */
@@ -103,6 +103,11 @@ export default class BillingLinksService {
? resiliationByEndRuleLink
: `${autorenewLink}/delete-all-dom?serviceId=${service.serviceId}&serviceType=${service.serviceType}`;
break;
+ case SERVICE_TYPE.VRACK:
+ if (service.status !== SUSPENDED_SERVICE) {
+ links.resiliateLink = `${autorenewLink}/terminate-vrack?service=${service.serviceId}${serviceTypeParam}`;
+ }
+ break;
case SERVICE_TYPE.OKMS:
case SERVICE_TYPE.VRACK_SERVICES:
case SERVICE_TYPE.LICENSE_HYCU:
diff --git a/packages/manager/modules/billing-components/src/components/utils/constants.js b/packages/manager/modules/billing-components/src/components/utils/constants.js
index 96e2a1351e85..b87efe64540e 100644
--- a/packages/manager/modules/billing-components/src/components/utils/constants.js
+++ b/packages/manager/modules/billing-components/src/components/utils/constants.js
@@ -1,5 +1,6 @@
export const DEFAULT_DURATION = 'P1M';
export const DEFAULT_TYPE = 'periodic';
+export const SUSPENDED_SERVICE = 'suspended';
export const SERVICE_TYPE = {
EMAIL_DOMAIN: 'EMAIL_DOMAIN',
diff --git a/packages/manager/modules/billing/src/autoRenew/actions/terminate-vrack/component.js b/packages/manager/modules/billing/src/autoRenew/actions/terminate-vrack/component.js
new file mode 100644
index 000000000000..dabe2a119f69
--- /dev/null
+++ b/packages/manager/modules/billing/src/autoRenew/actions/terminate-vrack/component.js
@@ -0,0 +1,14 @@
+import template from './template.html';
+import controller from './controller';
+
+export default {
+ bindings: {
+ goBack: '<',
+ service: '<',
+ serviceType: '<',
+ isEmpty: '<',
+ },
+ controller,
+ template,
+ name: 'billingAutorenewTerminateVrack',
+};
diff --git a/packages/manager/modules/billing/src/autoRenew/actions/terminate-vrack/constants.js b/packages/manager/modules/billing/src/autoRenew/actions/terminate-vrack/constants.js
new file mode 100644
index 000000000000..203add1344d7
--- /dev/null
+++ b/packages/manager/modules/billing/src/autoRenew/actions/terminate-vrack/constants.js
@@ -0,0 +1,5 @@
+export const TERMINATE_PATTERN = /^TERMINATE$/;
+
+export default {
+ TERMINATE_PATTERN,
+};
diff --git a/packages/manager/modules/billing/src/autoRenew/actions/terminate-vrack/controller.js b/packages/manager/modules/billing/src/autoRenew/actions/terminate-vrack/controller.js
new file mode 100644
index 000000000000..c8e2d14f4a6a
--- /dev/null
+++ b/packages/manager/modules/billing/src/autoRenew/actions/terminate-vrack/controller.js
@@ -0,0 +1,34 @@
+import { TERMINATE_PATTERN } from './constants';
+
+export default class TerminateVrackController {
+ /* @ngInject */
+ constructor($translate, BillingTerminate) {
+ this.TERMINATE_PATTERN = TERMINATE_PATTERN;
+ this.$translate = $translate;
+ this.BillingTerminate = BillingTerminate;
+ }
+
+ terminate() {
+ this.BillingTerminate.serviceTerminationForVrack(this.service)
+ .then(() => this.onSuccess())
+ .catch((error) => this.onError({ error }));
+ }
+
+ onSuccess() {
+ this.goBack(
+ this.$translate.instant(
+ `autorenew_agora_terminate_service_success_VRACK`,
+ ),
+ 'success',
+ );
+ }
+
+ onError(error) {
+ this.goBack(
+ this.$translate.instant(`autorenew_agora_terminate_service_error_VRACK`, {
+ error: error?.data?.message,
+ }),
+ 'danger',
+ );
+ }
+}
diff --git a/packages/manager/modules/billing/src/autoRenew/actions/terminate-vrack/index.js b/packages/manager/modules/billing/src/autoRenew/actions/terminate-vrack/index.js
new file mode 100644
index 000000000000..d04d0f812cc1
--- /dev/null
+++ b/packages/manager/modules/billing/src/autoRenew/actions/terminate-vrack/index.js
@@ -0,0 +1,25 @@
+import angular from 'angular';
+import angularTranslate from 'angular-translate';
+import ngAtInternet from '@ovh-ux/ng-at-internet';
+import ngTranslateAsyncLoader from '@ovh-ux/ng-translate-async-loader';
+import '@ovh-ux/ui-kit';
+import uiRouter from '@uirouter/angularjs';
+
+import component from './component';
+import routing from './routing';
+
+const moduleName = 'ovhManagerBillingAutorenewTerminateVrack';
+
+angular
+ .module(moduleName, [
+ angularTranslate,
+ ngAtInternet,
+ ngTranslateAsyncLoader,
+ 'oui',
+ uiRouter,
+ ])
+ .config(routing)
+ .component(component.name, component)
+ .run(/* @ngTranslationsInject:json ./translations */);
+
+export default moduleName;
diff --git a/packages/manager/modules/billing/src/autoRenew/actions/terminate-vrack/routing.js b/packages/manager/modules/billing/src/autoRenew/actions/terminate-vrack/routing.js
new file mode 100644
index 000000000000..7da55d0aff4c
--- /dev/null
+++ b/packages/manager/modules/billing/src/autoRenew/actions/terminate-vrack/routing.js
@@ -0,0 +1,35 @@
+export default /* @ngInject */ ($stateProvider) => {
+ $stateProvider.state('app.account.billing.autorenew.terminateVrack', {
+ url: '/terminate-vrack?service&serviceType',
+ views: {
+ modal: {
+ component: 'billingAutorenewTerminateVrack',
+ },
+ },
+ layout: 'modal',
+ resolve: {
+ goBack: /* @ngInject */ (goToAutorenew) => goToAutorenew,
+ service: /* @ngInject */ ($transition$) => $transition$.params().service,
+ serviceType: /* @ngInject */ ($transition$) =>
+ $transition$.params().serviceType,
+ isEmpty: /* @ngInject */ (OvhApiVrack, service) =>
+ OvhApiVrack.Aapi()
+ .services({ serviceName: service })
+ .$promise.then((allServicesParam) => {
+ const services = Object.entries(allServicesParam).filter(
+ ([, value]) => {
+ return Array.isArray(value) && value.length;
+ },
+ );
+ return !services.length;
+ })
+ .catch(() => {
+ return false;
+ }),
+ breadcrumb: () => null,
+ },
+ atInternet: {
+ ignore: true,
+ },
+ });
+};
diff --git a/packages/manager/modules/billing/src/autoRenew/actions/terminate-vrack/template.html b/packages/manager/modules/billing/src/autoRenew/actions/terminate-vrack/template.html
new file mode 100644
index 000000000000..ec65d14fcc52
--- /dev/null
+++ b/packages/manager/modules/billing/src/autoRenew/actions/terminate-vrack/template.html
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/packages/manager/modules/billing/src/autoRenew/actions/terminate-vrack/translations/Messages_de_DE.json b/packages/manager/modules/billing/src/autoRenew/actions/terminate-vrack/translations/Messages_de_DE.json
new file mode 100644
index 000000000000..456d8265f3d0
--- /dev/null
+++ b/packages/manager/modules/billing/src/autoRenew/actions/terminate-vrack/translations/Messages_de_DE.json
@@ -0,0 +1,9 @@
+{
+ "autorenew_agora_terminate_vrack_blocked_title": "Mein vRack löschen",
+ "autorenew_agora_terminate_vrack_blocked_description": "Um Ihr vRack zu löschen, müssen Sie zuerst alle damit verbundenen Dienste trennen.",
+ "autorenew_agora_terminate_vrack_blocked_close": "Schließen",
+ "autorenew_agora_terminate_service_VRACK": "vRack löschen",
+ "autorenew_agora_terminate_service_warning_VRACK": "Bitte bestätigen Sie die Löschung des vRack.",
+ "autorenew_agora_terminate_service_success_VRACK": "Ihre Anfrage zur Löschung Ihres vRack wurde registriert. Eine E-Mail mit weiteren Informationen zur Vorgehensweise wurde soeben an Sie versandt.",
+ "autorenew_agora_terminate_service_error_VRACK": "Bei der Anfrage zur Löschung Ihres vRacks ist ein Fehler aufgetreten. {{error}}"
+}
diff --git a/packages/manager/modules/billing/src/autoRenew/actions/terminate-vrack/translations/Messages_en_GB.json b/packages/manager/modules/billing/src/autoRenew/actions/terminate-vrack/translations/Messages_en_GB.json
new file mode 100644
index 000000000000..ae90c542c41a
--- /dev/null
+++ b/packages/manager/modules/billing/src/autoRenew/actions/terminate-vrack/translations/Messages_en_GB.json
@@ -0,0 +1,9 @@
+{
+ "autorenew_agora_terminate_vrack_blocked_title": "Delete my vRack",
+ "autorenew_agora_terminate_vrack_blocked_description": "To delete your vRack, you have to first disconnect all of the services linked to it",
+ "autorenew_agora_terminate_vrack_blocked_close": "Close",
+ "autorenew_agora_terminate_service_VRACK": "Delete vRack",
+ "autorenew_agora_terminate_service_warning_VRACK": "Please confirm that you want to delete vRack",
+ "autorenew_agora_terminate_service_success_VRACK": "Your vRack deletion request has been submitted. You have been sent an email detailing the steps to follow.",
+ "autorenew_agora_terminate_service_error_VRACK": "An error has occurred submitting your vRack deletion request. {{error}}"
+}
diff --git a/packages/manager/modules/billing/src/autoRenew/actions/terminate-vrack/translations/Messages_es_ES.json b/packages/manager/modules/billing/src/autoRenew/actions/terminate-vrack/translations/Messages_es_ES.json
new file mode 100644
index 000000000000..f5c9a1c5e34f
--- /dev/null
+++ b/packages/manager/modules/billing/src/autoRenew/actions/terminate-vrack/translations/Messages_es_ES.json
@@ -0,0 +1,9 @@
+{
+ "autorenew_agora_terminate_vrack_blocked_title": "Eliminar mi vRack",
+ "autorenew_agora_terminate_vrack_blocked_description": "Para eliminar el vRack, deberá desconectar previamente todos los servicios asociados.",
+ "autorenew_agora_terminate_vrack_blocked_close": "Cerrar",
+ "autorenew_agora_terminate_service_VRACK": "Eliminar vRack",
+ "autorenew_agora_terminate_service_warning_VRACK": "Por favor, confirme la eliminación del Vrack",
+ "autorenew_agora_terminate_service_success_VRACK": "La solicitud de eliminación del vRack se ha enviado correctamente. Le hemos enviado un mensaje de correo electrónico con el procedimiento que debe seguir.",
+ "autorenew_agora_terminate_service_error_VRACK": "Se ha producido un error al solicitar la eliminación del vRack. {{error}}"
+}
diff --git a/packages/manager/modules/billing/src/autoRenew/actions/terminate-vrack/translations/Messages_fr_CA.json b/packages/manager/modules/billing/src/autoRenew/actions/terminate-vrack/translations/Messages_fr_CA.json
new file mode 100644
index 000000000000..07714c8520d5
--- /dev/null
+++ b/packages/manager/modules/billing/src/autoRenew/actions/terminate-vrack/translations/Messages_fr_CA.json
@@ -0,0 +1,9 @@
+{
+ "autorenew_agora_terminate_vrack_blocked_title": "Supprimer mon Vrack",
+ "autorenew_agora_terminate_vrack_blocked_description": "Afin de supprimer votre Vrack vous devez au préalable deconnecter tous les services qui y sont ratachés",
+ "autorenew_agora_terminate_vrack_blocked_close": "Fermer",
+ "autorenew_agora_terminate_service_VRACK": "Supprimer Vrack",
+ "autorenew_agora_terminate_service_warning_VRACK": "Veuillez confirmer la suppression de Vrack",
+ "autorenew_agora_terminate_service_success_VRACK": "Votre demande de suppression de votre Vrack a été prise en compte. Un e-mail contenant la procédure vous a été envoyé.",
+ "autorenew_agora_terminate_service_error_VRACK": "Une erreur est survenue lors de la demande de suppression de votre Vrack. {{error}}"
+}
diff --git a/packages/manager/modules/billing/src/autoRenew/actions/terminate-vrack/translations/Messages_fr_FR.json b/packages/manager/modules/billing/src/autoRenew/actions/terminate-vrack/translations/Messages_fr_FR.json
new file mode 100644
index 000000000000..07714c8520d5
--- /dev/null
+++ b/packages/manager/modules/billing/src/autoRenew/actions/terminate-vrack/translations/Messages_fr_FR.json
@@ -0,0 +1,9 @@
+{
+ "autorenew_agora_terminate_vrack_blocked_title": "Supprimer mon Vrack",
+ "autorenew_agora_terminate_vrack_blocked_description": "Afin de supprimer votre Vrack vous devez au préalable deconnecter tous les services qui y sont ratachés",
+ "autorenew_agora_terminate_vrack_blocked_close": "Fermer",
+ "autorenew_agora_terminate_service_VRACK": "Supprimer Vrack",
+ "autorenew_agora_terminate_service_warning_VRACK": "Veuillez confirmer la suppression de Vrack",
+ "autorenew_agora_terminate_service_success_VRACK": "Votre demande de suppression de votre Vrack a été prise en compte. Un e-mail contenant la procédure vous a été envoyé.",
+ "autorenew_agora_terminate_service_error_VRACK": "Une erreur est survenue lors de la demande de suppression de votre Vrack. {{error}}"
+}
diff --git a/packages/manager/modules/billing/src/autoRenew/actions/terminate-vrack/translations/Messages_it_IT.json b/packages/manager/modules/billing/src/autoRenew/actions/terminate-vrack/translations/Messages_it_IT.json
new file mode 100644
index 000000000000..c0536a7975f0
--- /dev/null
+++ b/packages/manager/modules/billing/src/autoRenew/actions/terminate-vrack/translations/Messages_it_IT.json
@@ -0,0 +1,9 @@
+{
+ "autorenew_agora_terminate_vrack_blocked_title": "Eliminare la tua vRack",
+ "autorenew_agora_terminate_vrack_blocked_description": "Per eliminare la tua vRrack è prima necessario disconnettere tutti i servizi ad essa associati.",
+ "autorenew_agora_terminate_vrack_blocked_close": "Chiudere",
+ "autorenew_agora_terminate_service_VRACK": "Eliminare la vRack",
+ "autorenew_agora_terminate_service_warning_VRACK": "Conferma l'eliminazione della vRack",
+ "autorenew_agora_terminate_service_success_VRACK": "La tua richiesta di eliminazione della vRack è stata presa in carico. Ti abbiamo inviato un’email con la procedura da seguire.",
+ "autorenew_agora_terminate_service_error_VRACK": "Si è verificato un errore durante la richiesta di eliminazione della tua vRack: {{error}}"
+}
diff --git a/packages/manager/modules/billing/src/autoRenew/actions/terminate-vrack/translations/Messages_pl_PL.json b/packages/manager/modules/billing/src/autoRenew/actions/terminate-vrack/translations/Messages_pl_PL.json
new file mode 100644
index 000000000000..1c377d3ae378
--- /dev/null
+++ b/packages/manager/modules/billing/src/autoRenew/actions/terminate-vrack/translations/Messages_pl_PL.json
@@ -0,0 +1,9 @@
+{
+ "autorenew_agora_terminate_vrack_blocked_title": "Usuń vRack",
+ "autorenew_agora_terminate_vrack_blocked_description": "Aby usunąć vRack, najpierw należy odłączyć wszystkie przypisane do niego usługi",
+ "autorenew_agora_terminate_vrack_blocked_close": "Zamknij",
+ "autorenew_agora_terminate_service_VRACK": "Usuń vRack",
+ "autorenew_agora_terminate_service_warning_VRACK": "Potwierdź usunięcie vRacka",
+ "autorenew_agora_terminate_service_success_VRACK": "Dyspozycja usunięcia vRacka została przyjęta. Otrzymasz e-mail z opisem dalszej procedury.",
+ "autorenew_agora_terminate_service_error_VRACK": "Wystąpił błąd podczas usuwania vRacka. {{error}}"
+}
diff --git a/packages/manager/modules/billing/src/autoRenew/actions/terminate-vrack/translations/Messages_pt_PT.json b/packages/manager/modules/billing/src/autoRenew/actions/terminate-vrack/translations/Messages_pt_PT.json
new file mode 100644
index 000000000000..d446112257e6
--- /dev/null
+++ b/packages/manager/modules/billing/src/autoRenew/actions/terminate-vrack/translations/Messages_pt_PT.json
@@ -0,0 +1,9 @@
+{
+ "autorenew_agora_terminate_vrack_blocked_title": "Eliminar o meu vRack",
+ "autorenew_agora_terminate_vrack_blocked_description": "Para eliminar o seu vRack, deve desligar previamente todos os serviços que estão associados ao mesmo.",
+ "autorenew_agora_terminate_vrack_blocked_close": "Fechar",
+ "autorenew_agora_terminate_service_VRACK": "Eliminar o vRack",
+ "autorenew_agora_terminate_service_warning_VRACK": "Confirme a eliminação do vRack",
+ "autorenew_agora_terminate_service_success_VRACK": "O seu pedido de eliminação do seu vRack foi registado. Um e-mail com o procedimento foi-lhe enviado.",
+ "autorenew_agora_terminate_service_error_VRACK": "Ocorreu um erro aquando do pedido de eliminação do seu vRack. {{error}}"
+}
diff --git a/packages/manager/modules/billing/src/autoRenew/autorenew.component.js b/packages/manager/modules/billing/src/autoRenew/autorenew.component.js
index b19e0bd6e6dd..5658eee2263c 100644
--- a/packages/manager/modules/billing/src/autoRenew/autorenew.component.js
+++ b/packages/manager/modules/billing/src/autoRenew/autorenew.component.js
@@ -19,6 +19,7 @@ export default {
hasAutoRenew: '<',
homeLink: '<',
isAutorenewManagementAvailable: '<',
+ canDeleteVrack: '<',
isAutorenew2016DeploymentBannerAvailable: '<',
isEnterpriseCustomer: '<',
nicBilling: '<',
diff --git a/packages/manager/modules/billing/src/autoRenew/autorenew.html b/packages/manager/modules/billing/src/autoRenew/autorenew.html
index bcd8b6868ebc..0b3e7528869f 100644
--- a/packages/manager/modules/billing/src/autoRenew/autorenew.html
+++ b/packages/manager/modules/billing/src/autoRenew/autorenew.html
@@ -244,6 +244,7 @@
tracking-page="{{ $ctrl.trackingPage }}"
user="$ctrl.currentUser"
billing-management-availability="$ctrl.isAutorenewManagementAvailable"
+ delete-vrack-availability="$ctrl.canDeleteVrack"
>
diff --git a/packages/manager/modules/billing/src/autoRenew/autorenew.module.js b/packages/manager/modules/billing/src/autoRenew/autorenew.module.js
index 20a7e9b9688a..4608d16eb06f 100644
--- a/packages/manager/modules/billing/src/autoRenew/autorenew.module.js
+++ b/packages/manager/modules/billing/src/autoRenew/autorenew.module.js
@@ -31,6 +31,7 @@ import terminateHostingWeb from './actions/terminateHostingWeb/hosting-web.modul
import terminatePrivateDatabase from './actions/terminatePrivateDatabase/private-database.module';
import terminateWebCoach from './actions/terminate-webcoach/terminate-webcoach.module';
import terminateAllDOm from './actions/terminate-all-dom/module';
+import terminateVrack from './actions/terminate-vrack';
import update from './actions/update/update.module';
import warnNicBilling from './actions/warnNicBilling/warnNicBilling.module';
import warnPendingDebt from './actions/warnPendingDebt/pending-debt.module';
@@ -72,6 +73,7 @@ angular
terminatePrivateDatabase,
terminateWebCoach,
terminateAllDOm,
+ terminateVrack,
uiRouter,
update,
warnNicBilling,
diff --git a/packages/manager/modules/billing/src/autoRenew/autorenew.routing.js b/packages/manager/modules/billing/src/autoRenew/autorenew.routing.js
index 5a58546718ac..67a6b14c92a9 100644
--- a/packages/manager/modules/billing/src/autoRenew/autorenew.routing.js
+++ b/packages/manager/modules/billing/src/autoRenew/autorenew.routing.js
@@ -95,6 +95,7 @@ export default /* @ngInject */ ($stateProvider, coreConfigProvider) => {
},
featureAvailability: /* @ngInject */ (ovhFeatureFlipping) =>
ovhFeatureFlipping.checkFeatureAvailability([
+ 'vrack:delete',
'billing:management',
'billing:autorenew2016Deployment',
]),
@@ -107,6 +108,8 @@ export default /* @ngInject */ ($stateProvider, coreConfigProvider) => {
featureAvailability?.isFeatureAvailable(
'billing:autorenew2016Deployment',
) || false,
+ canDeleteVrack: /* @ngInject */ (featureAvailability) =>
+ featureAvailability?.isFeatureAvailable('vrack:delete') || false,
hideBreadcrumb: /* @ngInject */ () => true,
trackingPrefix: () => 'dedicated::account::billing::autorenew',
},
diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-vrack/component.js b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-vrack/component.js
new file mode 100644
index 000000000000..dabe2a119f69
--- /dev/null
+++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-vrack/component.js
@@ -0,0 +1,14 @@
+import template from './template.html';
+import controller from './controller';
+
+export default {
+ bindings: {
+ goBack: '<',
+ service: '<',
+ serviceType: '<',
+ isEmpty: '<',
+ },
+ controller,
+ template,
+ name: 'billingAutorenewTerminateVrack',
+};
diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-vrack/constants.js b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-vrack/constants.js
new file mode 100644
index 000000000000..203add1344d7
--- /dev/null
+++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-vrack/constants.js
@@ -0,0 +1,5 @@
+export const TERMINATE_PATTERN = /^TERMINATE$/;
+
+export default {
+ TERMINATE_PATTERN,
+};
diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-vrack/controller.js b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-vrack/controller.js
new file mode 100644
index 000000000000..c8e2d14f4a6a
--- /dev/null
+++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-vrack/controller.js
@@ -0,0 +1,34 @@
+import { TERMINATE_PATTERN } from './constants';
+
+export default class TerminateVrackController {
+ /* @ngInject */
+ constructor($translate, BillingTerminate) {
+ this.TERMINATE_PATTERN = TERMINATE_PATTERN;
+ this.$translate = $translate;
+ this.BillingTerminate = BillingTerminate;
+ }
+
+ terminate() {
+ this.BillingTerminate.serviceTerminationForVrack(this.service)
+ .then(() => this.onSuccess())
+ .catch((error) => this.onError({ error }));
+ }
+
+ onSuccess() {
+ this.goBack(
+ this.$translate.instant(
+ `autorenew_agora_terminate_service_success_VRACK`,
+ ),
+ 'success',
+ );
+ }
+
+ onError(error) {
+ this.goBack(
+ this.$translate.instant(`autorenew_agora_terminate_service_error_VRACK`, {
+ error: error?.data?.message,
+ }),
+ 'danger',
+ );
+ }
+}
diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-vrack/index.js b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-vrack/index.js
new file mode 100644
index 000000000000..d04d0f812cc1
--- /dev/null
+++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-vrack/index.js
@@ -0,0 +1,25 @@
+import angular from 'angular';
+import angularTranslate from 'angular-translate';
+import ngAtInternet from '@ovh-ux/ng-at-internet';
+import ngTranslateAsyncLoader from '@ovh-ux/ng-translate-async-loader';
+import '@ovh-ux/ui-kit';
+import uiRouter from '@uirouter/angularjs';
+
+import component from './component';
+import routing from './routing';
+
+const moduleName = 'ovhManagerBillingAutorenewTerminateVrack';
+
+angular
+ .module(moduleName, [
+ angularTranslate,
+ ngAtInternet,
+ ngTranslateAsyncLoader,
+ 'oui',
+ uiRouter,
+ ])
+ .config(routing)
+ .component(component.name, component)
+ .run(/* @ngTranslationsInject:json ./translations */);
+
+export default moduleName;
diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-vrack/routing.js b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-vrack/routing.js
new file mode 100644
index 000000000000..59622a480459
--- /dev/null
+++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-vrack/routing.js
@@ -0,0 +1,35 @@
+export default /* @ngInject */ ($stateProvider) => {
+ $stateProvider.state('billing.autorenew.terminateVrack', {
+ url: '/terminate-vrack?service&serviceType',
+ views: {
+ modal: {
+ component: 'billingAutorenewTerminateVrack',
+ },
+ },
+ layout: 'modal',
+ resolve: {
+ goBack: /* @ngInject */ (goToAutorenew) => goToAutorenew,
+ service: /* @ngInject */ ($transition$) => $transition$.params().service,
+ serviceType: /* @ngInject */ ($transition$) =>
+ $transition$.params().serviceType,
+ isEmpty: /* @ngInject */ (OvhApiVrack, service) =>
+ OvhApiVrack.Aapi()
+ .services({ serviceName: service })
+ .$promise.then((allServicesParam) => {
+ const services = Object.entries(allServicesParam).filter(
+ ([, value]) => {
+ return Array.isArray(value) && value.length;
+ },
+ );
+ return !services.length;
+ })
+ .catch(() => {
+ return false;
+ }),
+ breadcrumb: () => null,
+ },
+ atInternet: {
+ ignore: true,
+ },
+ });
+};
diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-vrack/template.html b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-vrack/template.html
new file mode 100644
index 000000000000..ec65d14fcc52
--- /dev/null
+++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-vrack/template.html
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-vrack/translations/Messages_de_DE.json b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-vrack/translations/Messages_de_DE.json
new file mode 100644
index 000000000000..456d8265f3d0
--- /dev/null
+++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-vrack/translations/Messages_de_DE.json
@@ -0,0 +1,9 @@
+{
+ "autorenew_agora_terminate_vrack_blocked_title": "Mein vRack löschen",
+ "autorenew_agora_terminate_vrack_blocked_description": "Um Ihr vRack zu löschen, müssen Sie zuerst alle damit verbundenen Dienste trennen.",
+ "autorenew_agora_terminate_vrack_blocked_close": "Schließen",
+ "autorenew_agora_terminate_service_VRACK": "vRack löschen",
+ "autorenew_agora_terminate_service_warning_VRACK": "Bitte bestätigen Sie die Löschung des vRack.",
+ "autorenew_agora_terminate_service_success_VRACK": "Ihre Anfrage zur Löschung Ihres vRack wurde registriert. Eine E-Mail mit weiteren Informationen zur Vorgehensweise wurde soeben an Sie versandt.",
+ "autorenew_agora_terminate_service_error_VRACK": "Bei der Anfrage zur Löschung Ihres vRacks ist ein Fehler aufgetreten. {{error}}"
+}
diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-vrack/translations/Messages_en_GB.json b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-vrack/translations/Messages_en_GB.json
new file mode 100644
index 000000000000..ae90c542c41a
--- /dev/null
+++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-vrack/translations/Messages_en_GB.json
@@ -0,0 +1,9 @@
+{
+ "autorenew_agora_terminate_vrack_blocked_title": "Delete my vRack",
+ "autorenew_agora_terminate_vrack_blocked_description": "To delete your vRack, you have to first disconnect all of the services linked to it",
+ "autorenew_agora_terminate_vrack_blocked_close": "Close",
+ "autorenew_agora_terminate_service_VRACK": "Delete vRack",
+ "autorenew_agora_terminate_service_warning_VRACK": "Please confirm that you want to delete vRack",
+ "autorenew_agora_terminate_service_success_VRACK": "Your vRack deletion request has been submitted. You have been sent an email detailing the steps to follow.",
+ "autorenew_agora_terminate_service_error_VRACK": "An error has occurred submitting your vRack deletion request. {{error}}"
+}
diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-vrack/translations/Messages_es_ES.json b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-vrack/translations/Messages_es_ES.json
new file mode 100644
index 000000000000..f5c9a1c5e34f
--- /dev/null
+++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-vrack/translations/Messages_es_ES.json
@@ -0,0 +1,9 @@
+{
+ "autorenew_agora_terminate_vrack_blocked_title": "Eliminar mi vRack",
+ "autorenew_agora_terminate_vrack_blocked_description": "Para eliminar el vRack, deberá desconectar previamente todos los servicios asociados.",
+ "autorenew_agora_terminate_vrack_blocked_close": "Cerrar",
+ "autorenew_agora_terminate_service_VRACK": "Eliminar vRack",
+ "autorenew_agora_terminate_service_warning_VRACK": "Por favor, confirme la eliminación del Vrack",
+ "autorenew_agora_terminate_service_success_VRACK": "La solicitud de eliminación del vRack se ha enviado correctamente. Le hemos enviado un mensaje de correo electrónico con el procedimiento que debe seguir.",
+ "autorenew_agora_terminate_service_error_VRACK": "Se ha producido un error al solicitar la eliminación del vRack. {{error}}"
+}
diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-vrack/translations/Messages_fr_CA.json b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-vrack/translations/Messages_fr_CA.json
new file mode 100644
index 000000000000..07714c8520d5
--- /dev/null
+++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-vrack/translations/Messages_fr_CA.json
@@ -0,0 +1,9 @@
+{
+ "autorenew_agora_terminate_vrack_blocked_title": "Supprimer mon Vrack",
+ "autorenew_agora_terminate_vrack_blocked_description": "Afin de supprimer votre Vrack vous devez au préalable deconnecter tous les services qui y sont ratachés",
+ "autorenew_agora_terminate_vrack_blocked_close": "Fermer",
+ "autorenew_agora_terminate_service_VRACK": "Supprimer Vrack",
+ "autorenew_agora_terminate_service_warning_VRACK": "Veuillez confirmer la suppression de Vrack",
+ "autorenew_agora_terminate_service_success_VRACK": "Votre demande de suppression de votre Vrack a été prise en compte. Un e-mail contenant la procédure vous a été envoyé.",
+ "autorenew_agora_terminate_service_error_VRACK": "Une erreur est survenue lors de la demande de suppression de votre Vrack. {{error}}"
+}
diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-vrack/translations/Messages_fr_FR.json b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-vrack/translations/Messages_fr_FR.json
new file mode 100644
index 000000000000..07714c8520d5
--- /dev/null
+++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-vrack/translations/Messages_fr_FR.json
@@ -0,0 +1,9 @@
+{
+ "autorenew_agora_terminate_vrack_blocked_title": "Supprimer mon Vrack",
+ "autorenew_agora_terminate_vrack_blocked_description": "Afin de supprimer votre Vrack vous devez au préalable deconnecter tous les services qui y sont ratachés",
+ "autorenew_agora_terminate_vrack_blocked_close": "Fermer",
+ "autorenew_agora_terminate_service_VRACK": "Supprimer Vrack",
+ "autorenew_agora_terminate_service_warning_VRACK": "Veuillez confirmer la suppression de Vrack",
+ "autorenew_agora_terminate_service_success_VRACK": "Votre demande de suppression de votre Vrack a été prise en compte. Un e-mail contenant la procédure vous a été envoyé.",
+ "autorenew_agora_terminate_service_error_VRACK": "Une erreur est survenue lors de la demande de suppression de votre Vrack. {{error}}"
+}
diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-vrack/translations/Messages_it_IT.json b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-vrack/translations/Messages_it_IT.json
new file mode 100644
index 000000000000..c0536a7975f0
--- /dev/null
+++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-vrack/translations/Messages_it_IT.json
@@ -0,0 +1,9 @@
+{
+ "autorenew_agora_terminate_vrack_blocked_title": "Eliminare la tua vRack",
+ "autorenew_agora_terminate_vrack_blocked_description": "Per eliminare la tua vRrack è prima necessario disconnettere tutti i servizi ad essa associati.",
+ "autorenew_agora_terminate_vrack_blocked_close": "Chiudere",
+ "autorenew_agora_terminate_service_VRACK": "Eliminare la vRack",
+ "autorenew_agora_terminate_service_warning_VRACK": "Conferma l'eliminazione della vRack",
+ "autorenew_agora_terminate_service_success_VRACK": "La tua richiesta di eliminazione della vRack è stata presa in carico. Ti abbiamo inviato un’email con la procedura da seguire.",
+ "autorenew_agora_terminate_service_error_VRACK": "Si è verificato un errore durante la richiesta di eliminazione della tua vRack: {{error}}"
+}
diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-vrack/translations/Messages_pl_PL.json b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-vrack/translations/Messages_pl_PL.json
new file mode 100644
index 000000000000..1c377d3ae378
--- /dev/null
+++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-vrack/translations/Messages_pl_PL.json
@@ -0,0 +1,9 @@
+{
+ "autorenew_agora_terminate_vrack_blocked_title": "Usuń vRack",
+ "autorenew_agora_terminate_vrack_blocked_description": "Aby usunąć vRack, najpierw należy odłączyć wszystkie przypisane do niego usługi",
+ "autorenew_agora_terminate_vrack_blocked_close": "Zamknij",
+ "autorenew_agora_terminate_service_VRACK": "Usuń vRack",
+ "autorenew_agora_terminate_service_warning_VRACK": "Potwierdź usunięcie vRacka",
+ "autorenew_agora_terminate_service_success_VRACK": "Dyspozycja usunięcia vRacka została przyjęta. Otrzymasz e-mail z opisem dalszej procedury.",
+ "autorenew_agora_terminate_service_error_VRACK": "Wystąpił błąd podczas usuwania vRacka. {{error}}"
+}
diff --git a/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-vrack/translations/Messages_pt_PT.json b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-vrack/translations/Messages_pt_PT.json
new file mode 100644
index 000000000000..d446112257e6
--- /dev/null
+++ b/packages/manager/modules/new-billing/src/autoRenew/actions/terminate-vrack/translations/Messages_pt_PT.json
@@ -0,0 +1,9 @@
+{
+ "autorenew_agora_terminate_vrack_blocked_title": "Eliminar o meu vRack",
+ "autorenew_agora_terminate_vrack_blocked_description": "Para eliminar o seu vRack, deve desligar previamente todos os serviços que estão associados ao mesmo.",
+ "autorenew_agora_terminate_vrack_blocked_close": "Fechar",
+ "autorenew_agora_terminate_service_VRACK": "Eliminar o vRack",
+ "autorenew_agora_terminate_service_warning_VRACK": "Confirme a eliminação do vRack",
+ "autorenew_agora_terminate_service_success_VRACK": "O seu pedido de eliminação do seu vRack foi registado. Um e-mail com o procedimento foi-lhe enviado.",
+ "autorenew_agora_terminate_service_error_VRACK": "Ocorreu um erro aquando do pedido de eliminação do seu vRack. {{error}}"
+}
diff --git a/packages/manager/modules/new-billing/src/autoRenew/autorenew.component.js b/packages/manager/modules/new-billing/src/autoRenew/autorenew.component.js
index b19e0bd6e6dd..e61c87df5466 100644
--- a/packages/manager/modules/new-billing/src/autoRenew/autorenew.component.js
+++ b/packages/manager/modules/new-billing/src/autoRenew/autorenew.component.js
@@ -18,6 +18,7 @@ export default {
goToAutorenew: '<',
hasAutoRenew: '<',
homeLink: '<',
+ canDeleteVrack: '<',
isAutorenewManagementAvailable: '<',
isAutorenew2016DeploymentBannerAvailable: '<',
isEnterpriseCustomer: '<',
diff --git a/packages/manager/modules/new-billing/src/autoRenew/autorenew.html b/packages/manager/modules/new-billing/src/autoRenew/autorenew.html
index 4033dc73cf30..7e99e3ee2d96 100644
--- a/packages/manager/modules/new-billing/src/autoRenew/autorenew.html
+++ b/packages/manager/modules/new-billing/src/autoRenew/autorenew.html
@@ -243,6 +243,7 @@
tracking-page="{{ $ctrl.trackingPage }}"
user="$ctrl.currentUser"
billing-management-availability="$ctrl.isAutorenewManagementAvailable"
+ delete-vrack-availability="$ctrl.canDeleteVrack"
>
diff --git a/packages/manager/modules/new-billing/src/autoRenew/autorenew.module.js b/packages/manager/modules/new-billing/src/autoRenew/autorenew.module.js
index 20a7e9b9688a..8019ef353a75 100644
--- a/packages/manager/modules/new-billing/src/autoRenew/autorenew.module.js
+++ b/packages/manager/modules/new-billing/src/autoRenew/autorenew.module.js
@@ -32,6 +32,7 @@ import terminatePrivateDatabase from './actions/terminatePrivateDatabase/private
import terminateWebCoach from './actions/terminate-webcoach/terminate-webcoach.module';
import terminateAllDOm from './actions/terminate-all-dom/module';
import update from './actions/update/update.module';
+import terminateVrack from './actions/terminate-vrack';
import warnNicBilling from './actions/warnNicBilling/warnNicBilling.module';
import warnPendingDebt from './actions/warnPendingDebt/pending-debt.module';
@@ -73,6 +74,7 @@ angular
terminateWebCoach,
terminateAllDOm,
uiRouter,
+ terminateVrack,
update,
warnNicBilling,
warnPendingDebt,
diff --git a/packages/manager/modules/new-billing/src/autoRenew/autorenew.routing.js b/packages/manager/modules/new-billing/src/autoRenew/autorenew.routing.js
index 99e22e2379c4..a01b1fbaf94e 100644
--- a/packages/manager/modules/new-billing/src/autoRenew/autorenew.routing.js
+++ b/packages/manager/modules/new-billing/src/autoRenew/autorenew.routing.js
@@ -91,6 +91,7 @@ export default /* @ngInject */ ($stateProvider, coreConfigProvider) => {
},
featureAvailability: /* @ngInject */ (ovhFeatureFlipping) =>
ovhFeatureFlipping.checkFeatureAvailability([
+ 'vrack:delete',
'billing:management',
'billing:autorenew2016Deployment',
]),
@@ -103,6 +104,8 @@ export default /* @ngInject */ ($stateProvider, coreConfigProvider) => {
featureAvailability?.isFeatureAvailable(
'billing:autorenew2016Deployment',
) || false,
+ canDeleteVrack: /* @ngInject */ (featureAvailability) =>
+ featureAvailability?.isFeatureAvailable('vrack:delete') || false,
hideBreadcrumb: /* @ngInject */ () => true,
trackingPrefix: () => 'dedicated::account::billing::autorenew',
},