diff --git a/packages/manager/apps/dedicated/client/app/dedicated/dedicated-server/servers/server/dashboard/dashboard.constants.js b/packages/manager/apps/dedicated/client/app/dedicated/dedicated-server/servers/server/dashboard/dashboard.constants.js index 3dfcdd138fcc..26a0bfcbdebf 100644 --- a/packages/manager/apps/dedicated/client/app/dedicated/dedicated-server/servers/server/dashboard/dashboard.constants.js +++ b/packages/manager/apps/dedicated/client/app/dedicated/dedicated-server/servers/server/dashboard/dashboard.constants.js @@ -26,9 +26,14 @@ export const UPGRADE_TYPE = { STORAGE: 'storage', }; +export const RBX1_DATACENTER = 'RBX_1'; +export const RBX1_CONTAINER_START_WITH = 'CT'; + export default { ELIGIBLE_FOR_UPGRADE, COMMIT_IMPRESSION_TRACKING_DATA, RECOMMIT_IMPRESSION_TRACKING_DATA, UPGRADE_TYPE, + RBX1_DATACENTER, + RBX1_CONTAINER_START_WITH, }; diff --git a/packages/manager/apps/dedicated/client/app/dedicated/dedicated-server/servers/server/dashboard/dashboard.routing.js b/packages/manager/apps/dedicated/client/app/dedicated/dedicated-server/servers/server/dashboard/dashboard.routing.js index 5c231674d063..427771c7d402 100644 --- a/packages/manager/apps/dedicated/client/app/dedicated/dedicated-server/servers/server/dashboard/dashboard.routing.js +++ b/packages/manager/apps/dedicated/client/app/dedicated/dedicated-server/servers/server/dashboard/dashboard.routing.js @@ -2,7 +2,11 @@ import includes from 'lodash/includes'; import isEmpty from 'lodash/isEmpty'; import UpgradeTask from './upgrade/upgrade-task.class'; -import { ELIGIBLE_FOR_UPGRADE } from './dashboard.constants'; +import { + ELIGIBLE_FOR_UPGRADE, + RBX1_CONTAINER_START_WITH, + RBX1_DATACENTER, +} from './dashboard.constants'; import { UPGRADE_MODE } from './upgrade/upgrade.constants'; export default /* @ngInject */ ($stateProvider) => { @@ -334,6 +338,13 @@ export default /* @ngInject */ ($stateProvider) => { }) : null, ), + displayRbxEolBanner: /* @ngInject */ (features, server) => { + return ( + features.isFeatureAvailable('dedicated-server:rbx1-eol-banner') && + server.datacenter === RBX1_DATACENTER && + !server.rack.toUpperCase().startsWith(RBX1_CONTAINER_START_WITH) + ); + }, }, }); }; diff --git a/packages/manager/apps/dedicated/client/app/dedicated/dedicated-server/servers/server/server.routing.js b/packages/manager/apps/dedicated/client/app/dedicated/dedicated-server/servers/server/server.routing.js index acb2bae342c4..b261a366cc2a 100644 --- a/packages/manager/apps/dedicated/client/app/dedicated/dedicated-server/servers/server/server.routing.js +++ b/packages/manager/apps/dedicated/client/app/dedicated/dedicated-server/servers/server/server.routing.js @@ -28,6 +28,7 @@ export default /* @ngInject */ ($stateProvider) => { 'dedicated-server:dns', 'dedicated-server:upgradeWithTicket', 'dedicated-server:vmac-unavailable-banner', + 'dedicated-server:rbx1-eol-banner', ]), ola: /* @ngInject */ ( $stateParams, diff --git a/packages/manager/apps/dedicated/client/app/ip/components/list/export-csv/ip-ip-export-csv.controller.js b/packages/manager/apps/dedicated/client/app/ip/components/list/export-csv/ip-ip-export-csv.controller.js index fb9cd34a2bd9..6fcd6d698a5e 100644 --- a/packages/manager/apps/dedicated/client/app/ip/components/list/export-csv/ip-ip-export-csv.controller.js +++ b/packages/manager/apps/dedicated/client/app/ip/components/list/export-csv/ip-ip-export-csv.controller.js @@ -4,6 +4,7 @@ import { CSV_DATA_ENCODING, CSV_DATA_SCHEME, CSV_SEPARATOR, + FETCH_PAGE_SIZE, } from './ip-ip-export.constants'; import { TRACKING_PREFIX } from '../list.constant'; @@ -14,6 +15,7 @@ export default /* @ngInject */ ( Alerter, atInternet, Ip, + $q, ) => { let cancelFetch = null; @@ -23,15 +25,45 @@ export default /* @ngInject */ ( function fetchIps() { const { serviceType, otherParams } = $scope.currentActionData; - const { cancel, request } = Ip.fetchIps({ - serviceType, - otherParams, - pageNumber: 1, - pageSize: 5000, - }); + let pageNumber = 1; + const defered = $q.defer(); + let allIps = []; + + const cancel = () => { + defered.resolve(allIps); + }; + + try { + const { request: firstRequest } = Ip.fetchIps({ + serviceType, + otherParams, + pageNumber, + pageSize: FETCH_PAGE_SIZE, + }); + + firstRequest.then(async ({ ips: firstIps }) => { + let ips = firstIps; + while (ips.length > 0) { + allIps = allIps.concat(ips); + pageNumber += 1; + const { request } = Ip.fetchIps({ + serviceType, + otherParams, + pageNumber, + pageSize: FETCH_PAGE_SIZE, + }); + /* eslint-disable no-await-in-loop */ + ({ ips } = await request); + } + defered.resolve(allIps); + }); + } catch (error) { + defered.reject(error); + } + return { cancel, - request: request.then(({ ips }) => ips), + request: defered.promise, }; } diff --git a/packages/manager/apps/dedicated/client/app/ip/components/list/export-csv/ip-ip-export.constants.js b/packages/manager/apps/dedicated/client/app/ip/components/list/export-csv/ip-ip-export.constants.js index 6a532a73a71c..579e13cb69ac 100644 --- a/packages/manager/apps/dedicated/client/app/ip/components/list/export-csv/ip-ip-export.constants.js +++ b/packages/manager/apps/dedicated/client/app/ip/components/list/export-csv/ip-ip-export.constants.js @@ -25,6 +25,7 @@ export const CSV_HEADERS = [ }, ]; +export const FETCH_PAGE_SIZE = 100; export const CSV_FILENAME = 'export_ips.csv'; export const CSV_DATA_ENCODING = 'base64'; export const CSV_DATA_SCHEME = `data:text/csv;charset=ISO-8859-1;${CSV_DATA_ENCODING}`; @@ -36,4 +37,5 @@ export default { CSV_DATA_ENCODING, CSV_DATA_SCHEME, CSV_SEPARATOR, + FETCH_PAGE_SIZE, }; diff --git a/packages/manager/modules/bm-server-components/src/index.js b/packages/manager/modules/bm-server-components/src/index.js index 9fc8e1294820..f3483c5d8529 100644 --- a/packages/manager/modules/bm-server-components/src/index.js +++ b/packages/manager/modules/bm-server-components/src/index.js @@ -27,3 +27,4 @@ export { default as serverSecondaryDns } from './secondary-dns'; export { default as serverMainPage } from './server'; export { default as serverDashboard } from './server-dashboard'; export { default as vmacUnavailableBanner } from './vmac-unavailable-banner'; +export { default as rbx1EolBanner } from './rbx1-eol-banner'; diff --git a/packages/manager/modules/bm-server-components/src/rbx1-eol-banner/component.js b/packages/manager/modules/bm-server-components/src/rbx1-eol-banner/component.js new file mode 100644 index 000000000000..f3dc97ea080c --- /dev/null +++ b/packages/manager/modules/bm-server-components/src/rbx1-eol-banner/component.js @@ -0,0 +1,8 @@ +import controller from './controller'; +import template from './template.html'; + +export default { + controller, + name: 'ovhManagerBmServerComponentsRbx1EolBanner', + template, +}; diff --git a/packages/manager/modules/bm-server-components/src/rbx1-eol-banner/constants.js b/packages/manager/modules/bm-server-components/src/rbx1-eol-banner/constants.js new file mode 100644 index 000000000000..5d54b0ee342e --- /dev/null +++ b/packages/manager/modules/bm-server-components/src/rbx1-eol-banner/constants.js @@ -0,0 +1,24 @@ +export const GUIDE_LINKS = { + DEFAULT: 'https://www.ovhcloud.com/en-ie/lp/end-service-rbx-1/', + ASIA: 'https://www.ovhcloud.com/asia/lp/end-service-rbx-1/', + AU: 'https://www.ovhcloud.com/en-au/lp/end-service-rbx-1/', + CA: 'https://www.ovhcloud.com/en-ca/lp/end-service-rbx-1/', + DE: 'https://www.ovhcloud.com/de/lp/end-service-rbx-1/', + ES: 'https://www.ovhcloud.com/es-es/lp/end-service-rbx-1/', + FR: 'https://www.ovhcloud.com/fr/lp/end-service-rbx-1/', + GB: 'https://www.ovhcloud.com/en-gb/lp/end-service-rbx-1/', + IE: 'https://www.ovhcloud.com/en-ie/lp/end-service-rbx-1/', + IN: 'https://www.ovhcloud.com/en-in/lp/end-service-rbx-1/', + IT: 'https://www.ovhcloud.com/it/lp/end-service-rbx-1/', + MA: 'https://www.ovhcloud.com/fr-ma/lp/end-service-rbx-1/', + NL: 'https://www.ovhcloud.com/nl/lp/end-service-rbx-1/', + PL: 'https://www.ovhcloud.com/pl/lp/end-service-rbx-1/', + PT: 'https://www.ovhcloud.com/pt/lp/end-service-rbx-1/', + QC: 'https://www.ovhcloud.com/fr-ca/lp/end-service-rbx-1/', + SN: 'https://www.ovhcloud.com/fr-sn/lp/end-service-rbx-1/', + SG: 'https://www.ovhcloud.com/en-sg/lp/end-service-rbx-1/', + TN: 'https://www.ovhcloud.com/fr-tn/lp/end-service-rbx-1/', + US: 'https://www.ovhcloud.com/en/lp/end-service-rbx-1/', + WE: 'https://www.ovhcloud.com/en-ie/lp/end-service-rbx-1/', + WS: 'https://www.ovhcloud.com/es/lp/end-service-rbx-1/', +}; diff --git a/packages/manager/modules/bm-server-components/src/rbx1-eol-banner/controller.js b/packages/manager/modules/bm-server-components/src/rbx1-eol-banner/controller.js new file mode 100644 index 000000000000..ec87b7b1c6b5 --- /dev/null +++ b/packages/manager/modules/bm-server-components/src/rbx1-eol-banner/controller.js @@ -0,0 +1,9 @@ +import { GUIDE_LINKS } from './constants'; + +export default class RbxEolBannerController { + /* @ngInject */ + constructor(coreConfig) { + this.guideLink = + GUIDE_LINKS[coreConfig.getUser().ovhSubsidiary] || GUIDE_LINKS.DEFAULT; + } +} diff --git a/packages/manager/modules/bm-server-components/src/rbx1-eol-banner/index.js b/packages/manager/modules/bm-server-components/src/rbx1-eol-banner/index.js new file mode 100644 index 000000000000..7cd2321c9f83 --- /dev/null +++ b/packages/manager/modules/bm-server-components/src/rbx1-eol-banner/index.js @@ -0,0 +1,19 @@ +import angular from 'angular'; +import '@ovh-ux/ng-translate-async-loader'; +import 'angular-translate'; +import '@ovh-ux/ui-kit'; + +import component from './component'; + +const moduleName = 'ovhManagerRbx1EolBanner'; + +angular + .module(moduleName, [ + 'oui', + 'ngTranslateAsyncLoader', + 'pascalprecht.translate', + ]) + .component(component.name, component) + .run(/* @ngTranslationsInject:json ./translations */); + +export default moduleName; diff --git a/packages/manager/modules/bm-server-components/src/rbx1-eol-banner/template.html b/packages/manager/modules/bm-server-components/src/rbx1-eol-banner/template.html new file mode 100644 index 000000000000..d4491672b910 --- /dev/null +++ b/packages/manager/modules/bm-server-components/src/rbx1-eol-banner/template.html @@ -0,0 +1,6 @@ + +

+
diff --git a/packages/manager/modules/bm-server-components/src/rbx1-eol-banner/translations/Messages_de_DE.json b/packages/manager/modules/bm-server-components/src/rbx1-eol-banner/translations/Messages_de_DE.json new file mode 100644 index 000000000000..e0dc3ffba70a --- /dev/null +++ b/packages/manager/modules/bm-server-components/src/rbx1-eol-banner/translations/Messages_de_DE.json @@ -0,0 +1,3 @@ +{ + "rbx1_eol_banner_title": "BITTE BEACHTEN SIE: Um Ihnen die Migration Ihrer Dienste von RBX1 zu ermöglichen, das in diesem Jahr modernisiert werden soll, wird der Zeitraum für die Migration der Server bis zum 30. Juni 2025 verlängert. Weitere Informationen finden Sie in der E-Mail, die Sie erhalten haben, sowie in unserer Migrationsanleitung." +} diff --git a/packages/manager/modules/bm-server-components/src/rbx1-eol-banner/translations/Messages_en_GB.json b/packages/manager/modules/bm-server-components/src/rbx1-eol-banner/translations/Messages_en_GB.json new file mode 100644 index 000000000000..26c0a75d4283 --- /dev/null +++ b/packages/manager/modules/bm-server-components/src/rbx1-eol-banner/translations/Messages_en_GB.json @@ -0,0 +1,3 @@ +{ + "rbx1_eol_banner_title": "IMPORTANT! To enable you to migrate your RBX1 services, which are scheduled to be modernized this year, the server migration period is extended until June 30, 2025. For further details, please refer to the email you have received and refer to our migration guide." +} diff --git a/packages/manager/modules/bm-server-components/src/rbx1-eol-banner/translations/Messages_es_ES.json b/packages/manager/modules/bm-server-components/src/rbx1-eol-banner/translations/Messages_es_ES.json new file mode 100644 index 000000000000..29454fef25f7 --- /dev/null +++ b/packages/manager/modules/bm-server-components/src/rbx1-eol-banner/translations/Messages_es_ES.json @@ -0,0 +1,3 @@ +{ + "rbx1_eol_banner_title": "ATENCIÓN: Para asegurarnos de que puede migrar correctamente los servicios de RBX1, cuya modernización está prevista para este año, el período de migración de servidores se amplía hasta el 30 de junio de 2025. Para más información, consulte el correo electrónico recibido y nuestra guía de migración." +} diff --git a/packages/manager/modules/bm-server-components/src/rbx1-eol-banner/translations/Messages_fr_CA.json b/packages/manager/modules/bm-server-components/src/rbx1-eol-banner/translations/Messages_fr_CA.json new file mode 100644 index 000000000000..767176c6904d --- /dev/null +++ b/packages/manager/modules/bm-server-components/src/rbx1-eol-banner/translations/Messages_fr_CA.json @@ -0,0 +1,3 @@ +{ + "rbx1_eol_banner_title": "ATTENTION: Pour vous permettre de migrer vos services de RBX1 dont la modernisation est prévue cette année, la période de migration des serveurs est étendue jusqu'au 30 juin 2025. Pour plus de détail, merci de vous référer au mail reçu et de consulter notre guide de migration." +} diff --git a/packages/manager/modules/bm-server-components/src/rbx1-eol-banner/translations/Messages_fr_FR.json b/packages/manager/modules/bm-server-components/src/rbx1-eol-banner/translations/Messages_fr_FR.json new file mode 100644 index 000000000000..767176c6904d --- /dev/null +++ b/packages/manager/modules/bm-server-components/src/rbx1-eol-banner/translations/Messages_fr_FR.json @@ -0,0 +1,3 @@ +{ + "rbx1_eol_banner_title": "ATTENTION: Pour vous permettre de migrer vos services de RBX1 dont la modernisation est prévue cette année, la période de migration des serveurs est étendue jusqu'au 30 juin 2025. Pour plus de détail, merci de vous référer au mail reçu et de consulter notre guide de migration." +} diff --git a/packages/manager/modules/bm-server-components/src/rbx1-eol-banner/translations/Messages_it_IT.json b/packages/manager/modules/bm-server-components/src/rbx1-eol-banner/translations/Messages_it_IT.json new file mode 100644 index 000000000000..e1281d0374b3 --- /dev/null +++ b/packages/manager/modules/bm-server-components/src/rbx1-eol-banner/translations/Messages_it_IT.json @@ -0,0 +1,3 @@ +{ + "rbx1_eol_banner_title": "ATTENZIONE: Per consentirti di trasferire i tuoi servizi da RBX1, la cui modernizzazione è prevista quest'anno, il periodo di migrazione dei server sarà esteso fino al 30 giugno 2025. Per maggiori dettagli, consulta l'email ricevuta e la nostra guida alla migrazione." +} diff --git a/packages/manager/modules/bm-server-components/src/rbx1-eol-banner/translations/Messages_pl_PL.json b/packages/manager/modules/bm-server-components/src/rbx1-eol-banner/translations/Messages_pl_PL.json new file mode 100644 index 000000000000..c0f898e9b265 --- /dev/null +++ b/packages/manager/modules/bm-server-components/src/rbx1-eol-banner/translations/Messages_pl_PL.json @@ -0,0 +1,3 @@ +{ + "rbx1_eol_banner_title": "UWAGA! Aby umożliwić migrację usług RBX1, które mają zostać zmodernizowane w tym roku, okres migracji serwerów został przedłużony do 30 czerwca 2025 r. Więcej informacji znajdziesz w e-mailu, który do Ciebie wysłaliśmy oraz w przewodniku dotyczącym migracji." +} diff --git a/packages/manager/modules/bm-server-components/src/rbx1-eol-banner/translations/Messages_pt_PT.json b/packages/manager/modules/bm-server-components/src/rbx1-eol-banner/translations/Messages_pt_PT.json new file mode 100644 index 000000000000..fa655befb68a --- /dev/null +++ b/packages/manager/modules/bm-server-components/src/rbx1-eol-banner/translations/Messages_pt_PT.json @@ -0,0 +1,3 @@ +{ + "rbx1_eol_banner_title": "ATENÇÃO: Para lhe permitir migrar os seus serviços de RBX1 cuja modernização está prevista para este ano, o período de migração dos servidores foi alargado até 30 de junho de 2025. Para mais informações, consulte o e-mail recebido e o nosso guia de migração." +} diff --git a/packages/manager/modules/bm-server-components/src/server-dashboard/dashboard.component.js b/packages/manager/modules/bm-server-components/src/server-dashboard/dashboard.component.js index 995c3c77e7c5..83ee1d513d2f 100644 --- a/packages/manager/modules/bm-server-components/src/server-dashboard/dashboard.component.js +++ b/packages/manager/modules/bm-server-components/src/server-dashboard/dashboard.component.js @@ -51,6 +51,7 @@ export default { goToTrafficOrder: '<', goToTrafficCancel: '<', serverType: ' + + > /> data-translate="nutanix_redeploy_prism_element_vip_description" >

/> +
+
+

+ + +

+
+

{ code: 404, }, to: { - state: 'nutanix.dashboard.nodes.all', + state: 'nutanix.index', }, }, }; } - return 'nutanix.dashboard.nodes.node.general-info'; + return 'nutanix.dashboard.nodes.all'; }, ); },