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 @@
+
{ code: 404, }, to: { - state: 'nutanix.dashboard.nodes.all', + state: 'nutanix.index', }, }, }; } - return 'nutanix.dashboard.nodes.node.general-info'; + return 'nutanix.dashboard.nodes.all'; }, ); },