diff --git a/src/components/bannerMessages/__tests__/bannerMessagesContext.test.js b/src/components/bannerMessages/__tests__/bannerMessagesContext.test.js index 563ccb19b..a9045c1cc 100644 --- a/src/components/bannerMessages/__tests__/bannerMessagesContext.test.js +++ b/src/components/bannerMessages/__tests__/bannerMessagesContext.test.js @@ -47,7 +47,7 @@ describe('BannerMessagesContext', () => { data: { data: [ { - [rhsmConstants.RHSM_API_RESPONSE_TALLY_META_TYPES.HAS_CLOUDIGRADE_MISMATCH]: true + [rhsmConstants.RHSM_API_RESPONSE_TALLY_CAPACITY_META_TYPES.HAS_CLOUDIGRADE_MISMATCH]: true } ] } diff --git a/src/components/bannerMessages/bannerMessagesContext.js b/src/components/bannerMessages/bannerMessagesContext.js index 15b709860..edb617559 100644 --- a/src/components/bannerMessages/bannerMessagesContext.js +++ b/src/components/bannerMessages/bannerMessagesContext.js @@ -64,7 +64,7 @@ const useGetAppMessages = ({ messages?.data ?.reverse() ?.find( - ({ [rhsmConstants.RHSM_API_RESPONSE_TALLY_META_TYPES.HAS_CLOUDIGRADE_MISMATCH]: mismatch }) => + ({ [rhsmConstants.RHSM_API_RESPONSE_TALLY_CAPACITY_META_TYPES.HAS_CLOUDIGRADE_MISMATCH]: mismatch }) => mismatch === true ) !== undefined; } diff --git a/src/redux/actions/__tests__/rhsmActions.test.js b/src/redux/actions/__tests__/rhsmActions.test.js index 949604be4..d1c6a3d9c 100644 --- a/src/redux/actions/__tests__/rhsmActions.test.js +++ b/src/redux/actions/__tests__/rhsmActions.test.js @@ -37,17 +37,6 @@ describe('RhsmActions', () => { moxios.uninstall(); }); - it('Should return response content for getGraphReportsCapacity method', done => { - const store = generateStore(); - const dispatcher = rhsmActions.getGraphReportsCapacity(); - - dispatcher(store.dispatch).then(() => { - const response = store.getState().graph; - expect(response.reportCapacity.fulfilled).toBe(true); - done(); - }); - }); - it('Should return response content for getGraphMetrics method', done => { const store = generateStore(); const dispatcher = rhsmActions.getGraphMetrics([ @@ -70,22 +59,6 @@ describe('RhsmActions', () => { }); }); - it('Should return response content for getGraphTally method', done => { - const store = generateStore(); - const dispatcher = rhsmActions.getGraphTally([ - { id: 'lorem', metric: 'ipsum' }, - { id: 'dolor', metric: 'sit' } - ]); - - dispatcher(store.dispatch).then(() => { - const response = store.getState().graph; - expect(response.tally.lorem_ipsum.fulfilled).toBe(true); - expect(response.tally.dolor_sit.fulfilled).toBe(true); - expect(Object.entries(response.tally).length).toBe(2); - done(); - }); - }); - it('Should return response content for getHostsInventory method', done => { const store = generateStore(); const dispatcher = rhsmActions.getHostsInventory(); diff --git a/src/redux/actions/rhsmActions.js b/src/redux/actions/rhsmActions.js index b2f27be12..7cc70e8c7 100644 --- a/src/redux/actions/rhsmActions.js +++ b/src/redux/actions/rhsmActions.js @@ -2,68 +2,6 @@ import { rhsmTypes } from '../types'; import { rhsmServices } from '../../services/rhsm/rhsmServices'; import { generateChartIds } from '../../components/graphCard/graphCardHelpers'; -/** - * Get a combined RHSM response from reporting and capacity. - * - * @param {string} id - * @param {object} query - * @param {object} options - * @param {string} options.cancelId - * @returns {Function} - */ -const getGraphReportsCapacity = - (id = null, query = {}, options = {}) => - dispatch => { - const { cancelId = 'graphReportsCapacity' } = options; - - return dispatch({ - type: rhsmTypes.GET_GRAPH_REPORT_CAPACITY_RHSM, - payload: Promise.all([ - rhsmServices.getGraphReports(id, query, { cancelId }), - rhsmServices.getGraphCapacityDeprecated(id, query, { cancelId }) - ]), - meta: { - id, - query, - notifications: {} - } - }); - }; - -/** - * Get a RHSM response from multiple Tally IDs and metrics. - * - * @param {object|Array} idMetric An object, or an Array of objects, in the form of { id: PRODUCT_ID, metric: METRIC_ID } - * @param {object} query - * @param {object} options - * @param {string} options.cancelId - * @returns {Function} - */ -const getGraphTally = - (idMetric = {}, query = {}, options = {}) => - dispatch => { - const { cancelId = 'graphTally' } = options; - const multiMetric = (Array.isArray(idMetric) && idMetric) || [idMetric]; - const multiDispatch = []; - - multiMetric.forEach(({ id, metric }) => { - multiDispatch.push({ - type: rhsmTypes.GET_GRAPH_TALLY_RHSM, - payload: rhsmServices.getGraphTally([id, metric], query, { - cancelId: `${cancelId}_${id}_${metric}` - }), - meta: { - id: `${id}_${metric}`, - idMetric: { id, metric }, - query, - notifications: {} - } - }); - }); - - return Promise.all(dispatch(multiDispatch)); - }; - /** * Get a RHSM response from multiple Tally, or Capacity, IDs and metrics. * @@ -208,8 +146,6 @@ const getSubscriptionsInventory = const rhsmActions = { getGraphMetrics, - getGraphReportsCapacity, - getGraphTally, getHostsInventory, getHostsInventoryGuests, getInstancesInventory, @@ -221,8 +157,6 @@ export { rhsmActions as default, rhsmActions, getGraphMetrics, - getGraphReportsCapacity, - getGraphTally, getHostsInventory, getHostsInventoryGuests, getInstancesInventory, diff --git a/src/services/rhsm/__tests__/__snapshots__/rhsmConstants.test.js.snap b/src/services/rhsm/__tests__/__snapshots__/rhsmConstants.test.js.snap index 90fcd9e87..c6d445e16 100644 --- a/src/services/rhsm/__tests__/__snapshots__/rhsmConstants.test.js.snap +++ b/src/services/rhsm/__tests__/__snapshots__/rhsmConstants.test.js.snap @@ -159,17 +159,6 @@ exports[`RHSM Constants should have specific properties: all exported constants "AWS": "aws", "RED_HAT": "red hat", }, - "RHSM_API_RESPONSE_CAPACITY_DATA_TYPES": { - "CORES": "cores", - "DATE": "date", - "HAS_INFINITE_QUANTITY": "has_infinite_quantity", - "SOCKETS": "sockets", - }, - "RHSM_API_RESPONSE_CAPACITY_META_TYPES": { - "COUNT": "count", - "METRIC_ID": "metric_id", - "PRODUCT": "product", - }, "RHSM_API_RESPONSE_DATA": "data", "RHSM_API_RESPONSE_ERRORS": "errors", "RHSM_API_RESPONSE_ERRORS_CODE_TYPES": { @@ -255,12 +244,13 @@ exports[`RHSM Constants should have specific properties: all exported constants "ANNUAL": "Annual", "ON_DEMAND": "On-demand", }, - "RHSM_API_RESPONSE_TALLY_DATA_TYPES": { + "RHSM_API_RESPONSE_TALLY_CAPACITY_DATA_TYPES": { "DATE": "date", "HAS_DATA": "has_data", + "HAS_INFINITE_QUANTITY": "has_infinite_quantity", "VALUE": "value", }, - "RHSM_API_RESPONSE_TALLY_META_TYPES": { + "RHSM_API_RESPONSE_TALLY_CAPACITY_META_TYPES": { "COUNT": "count", "DATE": "date", "HAS_CLOUDIGRADE_DATA": "has_cloudigrade_data", @@ -445,17 +435,6 @@ exports[`RHSM Constants should have specific properties: all exported constants "AWS": "aws", "RED_HAT": "red hat", }, - "RHSM_API_RESPONSE_CAPACITY_DATA_TYPES": { - "CORES": "cores", - "DATE": "date", - "HAS_INFINITE_QUANTITY": "has_infinite_quantity", - "SOCKETS": "sockets", - }, - "RHSM_API_RESPONSE_CAPACITY_META_TYPES": { - "COUNT": "count", - "METRIC_ID": "metric_id", - "PRODUCT": "product", - }, "RHSM_API_RESPONSE_DATA": "data", "RHSM_API_RESPONSE_ERRORS": "errors", "RHSM_API_RESPONSE_ERRORS_CODE_TYPES": { @@ -541,12 +520,13 @@ exports[`RHSM Constants should have specific properties: all exported constants "ANNUAL": "Annual", "ON_DEMAND": "On-demand", }, - "RHSM_API_RESPONSE_TALLY_DATA_TYPES": { + "RHSM_API_RESPONSE_TALLY_CAPACITY_DATA_TYPES": { "DATE": "date", "HAS_DATA": "has_data", + "HAS_INFINITE_QUANTITY": "has_infinite_quantity", "VALUE": "value", }, - "RHSM_API_RESPONSE_TALLY_META_TYPES": { + "RHSM_API_RESPONSE_TALLY_CAPACITY_META_TYPES": { "COUNT": "count", "DATE": "date", "HAS_CLOUDIGRADE_DATA": "has_cloudigrade_data", @@ -732,17 +712,6 @@ exports[`RHSM Constants should have specific properties: all exported constants "AWS": "aws", "RED_HAT": "red hat", }, - "RHSM_API_RESPONSE_CAPACITY_DATA_TYPES": { - "CORES": "cores", - "DATE": "date", - "HAS_INFINITE_QUANTITY": "has_infinite_quantity", - "SOCKETS": "sockets", - }, - "RHSM_API_RESPONSE_CAPACITY_META_TYPES": { - "COUNT": "count", - "METRIC_ID": "metric_id", - "PRODUCT": "product", - }, "RHSM_API_RESPONSE_DATA": "data", "RHSM_API_RESPONSE_ERRORS": "errors", "RHSM_API_RESPONSE_ERRORS_CODE_TYPES": { @@ -828,12 +797,13 @@ exports[`RHSM Constants should have specific properties: all exported constants "ANNUAL": "Annual", "ON_DEMAND": "On-demand", }, - "RHSM_API_RESPONSE_TALLY_DATA_TYPES": { + "RHSM_API_RESPONSE_TALLY_CAPACITY_DATA_TYPES": { "DATE": "date", "HAS_DATA": "has_data", + "HAS_INFINITE_QUANTITY": "has_infinite_quantity", "VALUE": "value", }, - "RHSM_API_RESPONSE_TALLY_META_TYPES": { + "RHSM_API_RESPONSE_TALLY_CAPACITY_META_TYPES": { "COUNT": "count", "DATE": "date", "HAS_CLOUDIGRADE_DATA": "has_cloudigrade_data", @@ -1023,17 +993,6 @@ exports[`RHSM Constants should have specific properties: specific constants 1`] "AWS": "aws", "RED_HAT": "red hat", }, - "RHSM_API_RESPONSE_CAPACITY_DATA_TYPES": { - "CORES": "cores", - "DATE": "date", - "HAS_INFINITE_QUANTITY": "has_infinite_quantity", - "SOCKETS": "sockets", - }, - "RHSM_API_RESPONSE_CAPACITY_META_TYPES": { - "COUNT": "count", - "METRIC_ID": "metric_id", - "PRODUCT": "product", - }, "RHSM_API_RESPONSE_DATA": "data", "RHSM_API_RESPONSE_ERRORS": "errors", "RHSM_API_RESPONSE_ERRORS_CODE_TYPES": { @@ -1119,12 +1078,13 @@ exports[`RHSM Constants should have specific properties: specific constants 1`] "ANNUAL": "Annual", "ON_DEMAND": "On-demand", }, - "RHSM_API_RESPONSE_TALLY_DATA_TYPES": { + "RHSM_API_RESPONSE_TALLY_CAPACITY_DATA_TYPES": { "DATE": "date", "HAS_DATA": "has_data", + "HAS_INFINITE_QUANTITY": "has_infinite_quantity", "VALUE": "value", }, - "RHSM_API_RESPONSE_TALLY_META_TYPES": { + "RHSM_API_RESPONSE_TALLY_CAPACITY_META_TYPES": { "COUNT": "count", "DATE": "date", "HAS_CLOUDIGRADE_DATA": "has_cloudigrade_data", diff --git a/src/services/rhsm/__tests__/__snapshots__/rhsmTransformers.test.js.snap b/src/services/rhsm/__tests__/__snapshots__/rhsmTransformers.test.js.snap index 15ff25cb7..da1a2c787 100644 --- a/src/services/rhsm/__tests__/__snapshots__/rhsmTransformers.test.js.snap +++ b/src/services/rhsm/__tests__/__snapshots__/rhsmTransformers.test.js.snap @@ -21,6 +21,7 @@ exports[`RHSM Transformers should attempt to parse a capacity response: capacity "data": [ { "date": "2019-07-20T00:00:00Z", + "hasData": undefined, "hasInfiniteQuantity": true, "isCurrentDate": false, "isFutureDate": false, @@ -29,6 +30,7 @@ exports[`RHSM Transformers should attempt to parse a capacity response: capacity }, { "date": "2019-07-20T00:00:00Z", + "hasData": undefined, "hasInfiniteQuantity": true, "isCurrentDate": true, "isFutureDate": false, @@ -37,98 +39,113 @@ exports[`RHSM Transformers should attempt to parse a capacity response: capacity }, { "date": "2019-07-21T00:00:00Z", + "hasData": undefined, "hasInfiniteQuantity": false, "isCurrentDate": false, "isFutureDate": true, "x": 2, - "y": null, + "y": 0, }, { "date": "2019-07-22T00:00:00Z", + "hasData": undefined, "hasInfiniteQuantity": false, "isCurrentDate": false, "isFutureDate": true, "x": 3, - "y": null, + "y": 0, }, { "date": "2019-07-23T00:00:00Z", + "hasData": undefined, "hasInfiniteQuantity": false, "isCurrentDate": false, "isFutureDate": true, "x": 4, - "y": null, + "y": 0, }, { "date": "2019-07-24T00:00:00Z", + "hasData": undefined, "hasInfiniteQuantity": false, "isCurrentDate": false, "isFutureDate": true, "x": 5, - "y": null, + "y": 0, }, { "date": "2019-07-25T00:00:00Z", + "hasData": undefined, "hasInfiniteQuantity": false, "isCurrentDate": false, "isFutureDate": true, "x": 6, - "y": null, + "y": 0, }, { "date": "2019-07-26T00:00:00Z", + "hasData": undefined, "hasInfiniteQuantity": false, "isCurrentDate": false, "isFutureDate": true, "x": 7, - "y": null, + "y": 0, }, { "date": "2019-07-27T00:00:00Z", + "hasData": undefined, "hasInfiniteQuantity": false, "isCurrentDate": false, "isFutureDate": true, "x": 8, - "y": null, + "y": 0, }, { "date": "2019-07-28T00:00:00Z", + "hasData": undefined, "hasInfiniteQuantity": false, "isCurrentDate": false, "isFutureDate": true, "x": 9, - "y": null, + "y": 0, }, { "date": "2019-07-29T00:00:00Z", + "hasData": undefined, "hasInfiniteQuantity": false, "isCurrentDate": false, "isFutureDate": true, "x": 10, - "y": null, + "y": 0, }, { "date": "2019-07-30T00:00:00Z", + "hasData": undefined, "hasInfiniteQuantity": false, "isCurrentDate": false, "isFutureDate": true, "x": 11, - "y": null, + "y": 0, }, { "date": "2019-07-31T00:00:00Z", + "hasData": undefined, "hasInfiniteQuantity": false, "isCurrentDate": false, "isFutureDate": true, "x": 12, - "y": null, + "y": 0, }, ], "meta": { "category": undefined, + "cloudigradeHasMismatch": undefined, "count": undefined, "metricId": undefined, "productId": undefined, + "totalMonthlyDate": undefined, + "totalMonthlyHasData": undefined, + "totalMonthlyValue": undefined, }, } `; @@ -138,22 +155,25 @@ exports[`RHSM Transformers should attempt to parse a capacity response: capacity "data": [ { "date": "2019-07-14T00:00:00Z", + "hasData": undefined, "hasInfiniteQuantity": false, "isCurrentDate": false, "isFutureDate": false, "x": 0, - "y": undefined, + "y": 0, }, { "date": "2019-07-15T00:00:00Z", + "hasData": undefined, "hasInfiniteQuantity": false, "isCurrentDate": false, "isFutureDate": false, "x": 1, - "y": undefined, + "y": 0, }, { "date": "2019-07-16T00:00:00Z", + "hasData": undefined, "hasInfiniteQuantity": true, "isCurrentDate": false, "isFutureDate": false, @@ -162,6 +182,7 @@ exports[`RHSM Transformers should attempt to parse a capacity response: capacity }, { "date": "2019-07-17T00:00:00Z", + "hasData": undefined, "hasInfiniteQuantity": true, "isCurrentDate": false, "isFutureDate": false, @@ -170,6 +191,7 @@ exports[`RHSM Transformers should attempt to parse a capacity response: capacity }, { "date": "2019-07-18T00:00:00Z", + "hasData": undefined, "hasInfiniteQuantity": true, "isCurrentDate": false, "isFutureDate": false, @@ -178,6 +200,7 @@ exports[`RHSM Transformers should attempt to parse a capacity response: capacity }, { "date": "2019-07-19T00:00:00Z", + "hasData": undefined, "hasInfiniteQuantity": true, "isCurrentDate": false, "isFutureDate": false, @@ -186,58 +209,68 @@ exports[`RHSM Transformers should attempt to parse a capacity response: capacity }, { "date": "2019-07-20T00:00:00Z", + "hasData": undefined, "hasInfiniteQuantity": false, "isCurrentDate": true, "isFutureDate": false, "x": 6, - "y": undefined, + "y": 0, }, { "date": "2019-07-21T00:00:00Z", + "hasData": undefined, "hasInfiniteQuantity": false, "isCurrentDate": false, "isFutureDate": true, "x": 7, - "y": null, + "y": 0, }, { "date": "2019-07-22T00:00:00Z", + "hasData": undefined, "hasInfiniteQuantity": false, "isCurrentDate": false, "isFutureDate": true, "x": 8, - "y": null, + "y": 0, }, { "date": "2019-07-23T00:00:00Z", + "hasData": undefined, "hasInfiniteQuantity": false, "isCurrentDate": false, "isFutureDate": true, "x": 9, - "y": null, + "y": 0, }, { "date": "2019-07-24T00:00:00Z", + "hasData": undefined, "hasInfiniteQuantity": false, "isCurrentDate": false, "isFutureDate": true, "x": 10, - "y": null, + "y": 0, }, { "date": "2019-07-25T00:00:00Z", + "hasData": undefined, "hasInfiniteQuantity": false, "isCurrentDate": false, "isFutureDate": true, "x": 11, - "y": null, + "y": 0, }, ], "meta": { "category": undefined, + "cloudigradeHasMismatch": undefined, "count": undefined, "metricId": undefined, "productId": undefined, + "totalMonthlyDate": undefined, + "totalMonthlyHasData": undefined, + "totalMonthlyValue": undefined, }, } `; @@ -247,38 +280,43 @@ exports[`RHSM Transformers should attempt to parse a capacity response: capacity "data": [ { "date": "2019-01-01T00:00:00Z", + "hasData": undefined, "hasInfiniteQuantity": false, "isCurrentDate": false, "isFutureDate": false, "x": 0, - "y": undefined, + "y": 0, }, { "date": "2019-02-01T00:00:00Z", + "hasData": undefined, "hasInfiniteQuantity": false, "isCurrentDate": false, "isFutureDate": false, "x": 1, - "y": undefined, + "y": 0, }, { "date": "2019-03-01T00:00:00Z", + "hasData": undefined, "hasInfiniteQuantity": false, "isCurrentDate": false, "isFutureDate": false, "x": 2, - "y": undefined, + "y": 0, }, { "date": "2019-04-01T00:00:00Z", + "hasData": undefined, "hasInfiniteQuantity": false, "isCurrentDate": false, "isFutureDate": false, "x": 3, - "y": undefined, + "y": 0, }, { "date": "2019-05-01T00:00:00Z", + "hasData": undefined, "hasInfiniteQuantity": true, "isCurrentDate": false, "isFutureDate": false, @@ -287,6 +325,7 @@ exports[`RHSM Transformers should attempt to parse a capacity response: capacity }, { "date": "2019-06-01T00:00:00Z", + "hasData": undefined, "hasInfiniteQuantity": true, "isCurrentDate": false, "isFutureDate": false, @@ -295,26 +334,32 @@ exports[`RHSM Transformers should attempt to parse a capacity response: capacity }, { "date": "2019-07-01T00:00:00Z", + "hasData": undefined, "hasInfiniteQuantity": false, "isCurrentDate": false, "isFutureDate": false, "x": 6, - "y": undefined, + "y": 0, }, { "date": "2019-08-01T00:00:00Z", + "hasData": undefined, "hasInfiniteQuantity": false, "isCurrentDate": false, "isFutureDate": true, "x": 7, - "y": null, + "y": 0, }, ], "meta": { "category": undefined, + "cloudigradeHasMismatch": undefined, "count": undefined, "metricId": undefined, "productId": undefined, + "totalMonthlyDate": undefined, + "totalMonthlyHasData": undefined, + "totalMonthlyValue": undefined, }, } `; @@ -341,6 +386,7 @@ exports[`RHSM Transformers should attempt to parse a tally response: tally, dail { "date": "2019-07-20T00:00:00Z", "hasData": true, + "hasInfiniteQuantity": undefined, "isCurrentDate": false, "isFutureDate": false, "x": 0, @@ -349,6 +395,7 @@ exports[`RHSM Transformers should attempt to parse a tally response: tally, dail { "date": "2019-07-20T00:00:00Z", "hasData": true, + "hasInfiniteQuantity": undefined, "isCurrentDate": true, "isFutureDate": false, "x": 1, @@ -357,6 +404,7 @@ exports[`RHSM Transformers should attempt to parse a tally response: tally, dail { "date": "2019-07-21T00:00:00Z", "hasData": false, + "hasInfiniteQuantity": undefined, "isCurrentDate": false, "isFutureDate": true, "x": 2, @@ -365,6 +413,7 @@ exports[`RHSM Transformers should attempt to parse a tally response: tally, dail { "date": "2019-07-22T00:00:00Z", "hasData": false, + "hasInfiniteQuantity": undefined, "isCurrentDate": false, "isFutureDate": true, "x": 3, @@ -373,6 +422,7 @@ exports[`RHSM Transformers should attempt to parse a tally response: tally, dail { "date": "2019-07-23T00:00:00Z", "hasData": false, + "hasInfiniteQuantity": undefined, "isCurrentDate": false, "isFutureDate": true, "x": 4, @@ -381,6 +431,7 @@ exports[`RHSM Transformers should attempt to parse a tally response: tally, dail { "date": "2019-07-24T00:00:00Z", "hasData": false, + "hasInfiniteQuantity": undefined, "isCurrentDate": false, "isFutureDate": true, "x": 5, @@ -389,6 +440,7 @@ exports[`RHSM Transformers should attempt to parse a tally response: tally, dail { "date": "2019-07-25T00:00:00Z", "hasData": false, + "hasInfiniteQuantity": undefined, "isCurrentDate": false, "isFutureDate": true, "x": 6, @@ -397,6 +449,7 @@ exports[`RHSM Transformers should attempt to parse a tally response: tally, dail { "date": "2019-07-26T00:00:00Z", "hasData": false, + "hasInfiniteQuantity": undefined, "isCurrentDate": false, "isFutureDate": true, "x": 7, @@ -405,6 +458,7 @@ exports[`RHSM Transformers should attempt to parse a tally response: tally, dail { "date": "2019-07-27T00:00:00Z", "hasData": false, + "hasInfiniteQuantity": undefined, "isCurrentDate": false, "isFutureDate": true, "x": 8, @@ -413,6 +467,7 @@ exports[`RHSM Transformers should attempt to parse a tally response: tally, dail { "date": "2019-07-28T00:00:00Z", "hasData": false, + "hasInfiniteQuantity": undefined, "isCurrentDate": false, "isFutureDate": true, "x": 9, @@ -421,6 +476,7 @@ exports[`RHSM Transformers should attempt to parse a tally response: tally, dail { "date": "2019-07-29T00:00:00Z", "hasData": false, + "hasInfiniteQuantity": undefined, "isCurrentDate": false, "isFutureDate": true, "x": 10, @@ -429,6 +485,7 @@ exports[`RHSM Transformers should attempt to parse a tally response: tally, dail { "date": "2019-07-30T00:00:00Z", "hasData": false, + "hasInfiniteQuantity": undefined, "isCurrentDate": false, "isFutureDate": true, "x": 11, @@ -437,6 +494,7 @@ exports[`RHSM Transformers should attempt to parse a tally response: tally, dail { "date": "2019-07-31T00:00:00Z", "hasData": false, + "hasInfiniteQuantity": undefined, "isCurrentDate": false, "isFutureDate": true, "x": 12, @@ -462,6 +520,7 @@ exports[`RHSM Transformers should attempt to parse a tally response: tally, dail { "date": "2019-07-14T00:00:00Z", "hasData": false, + "hasInfiniteQuantity": undefined, "isCurrentDate": false, "isFutureDate": false, "x": 0, @@ -470,6 +529,7 @@ exports[`RHSM Transformers should attempt to parse a tally response: tally, dail { "date": "2019-07-15T00:00:00Z", "hasData": false, + "hasInfiniteQuantity": undefined, "isCurrentDate": false, "isFutureDate": false, "x": 1, @@ -478,6 +538,7 @@ exports[`RHSM Transformers should attempt to parse a tally response: tally, dail { "date": "2019-07-16T00:00:00Z", "hasData": true, + "hasInfiniteQuantity": undefined, "isCurrentDate": false, "isFutureDate": false, "x": 2, @@ -486,6 +547,7 @@ exports[`RHSM Transformers should attempt to parse a tally response: tally, dail { "date": "2019-07-17T00:00:00Z", "hasData": true, + "hasInfiniteQuantity": undefined, "isCurrentDate": false, "isFutureDate": false, "x": 3, @@ -494,6 +556,7 @@ exports[`RHSM Transformers should attempt to parse a tally response: tally, dail { "date": "2019-07-18T00:00:00Z", "hasData": true, + "hasInfiniteQuantity": undefined, "isCurrentDate": false, "isFutureDate": false, "x": 4, @@ -502,6 +565,7 @@ exports[`RHSM Transformers should attempt to parse a tally response: tally, dail { "date": "2019-07-19T00:00:00Z", "hasData": true, + "hasInfiniteQuantity": undefined, "isCurrentDate": false, "isFutureDate": false, "x": 5, @@ -510,6 +574,7 @@ exports[`RHSM Transformers should attempt to parse a tally response: tally, dail { "date": "2019-07-20T00:00:00Z", "hasData": false, + "hasInfiniteQuantity": undefined, "isCurrentDate": true, "isFutureDate": false, "x": 6, @@ -518,6 +583,7 @@ exports[`RHSM Transformers should attempt to parse a tally response: tally, dail { "date": "2019-07-21T00:00:00Z", "hasData": false, + "hasInfiniteQuantity": undefined, "isCurrentDate": false, "isFutureDate": true, "x": 7, @@ -526,6 +592,7 @@ exports[`RHSM Transformers should attempt to parse a tally response: tally, dail { "date": "2019-07-22T00:00:00Z", "hasData": false, + "hasInfiniteQuantity": undefined, "isCurrentDate": false, "isFutureDate": true, "x": 8, @@ -534,6 +601,7 @@ exports[`RHSM Transformers should attempt to parse a tally response: tally, dail { "date": "2019-07-23T00:00:00Z", "hasData": false, + "hasInfiniteQuantity": undefined, "isCurrentDate": false, "isFutureDate": true, "x": 9, @@ -542,6 +610,7 @@ exports[`RHSM Transformers should attempt to parse a tally response: tally, dail { "date": "2019-07-24T00:00:00Z", "hasData": false, + "hasInfiniteQuantity": undefined, "isCurrentDate": false, "isFutureDate": true, "x": 10, @@ -550,6 +619,7 @@ exports[`RHSM Transformers should attempt to parse a tally response: tally, dail { "date": "2019-07-25T00:00:00Z", "hasData": false, + "hasInfiniteQuantity": undefined, "isCurrentDate": false, "isFutureDate": true, "x": 11, @@ -569,12 +639,29 @@ exports[`RHSM Transformers should attempt to parse a tally response: tally, dail } `; +exports[`RHSM Transformers should attempt to parse a tally response: tally, failed 1`] = ` +{ + "data": [], + "meta": { + "category": undefined, + "cloudigradeHasMismatch": undefined, + "count": undefined, + "metricId": undefined, + "productId": undefined, + "totalMonthlyDate": undefined, + "totalMonthlyHasData": undefined, + "totalMonthlyValue": undefined, + }, +} +`; + exports[`RHSM Transformers should attempt to parse a tally response: tally, monthly like granularity 1`] = ` { "data": [ { "date": "2019-01-01T00:00:00Z", "hasData": false, + "hasInfiniteQuantity": undefined, "isCurrentDate": false, "isFutureDate": false, "x": 0, @@ -583,6 +670,7 @@ exports[`RHSM Transformers should attempt to parse a tally response: tally, mont { "date": "2019-02-01T00:00:00Z", "hasData": false, + "hasInfiniteQuantity": undefined, "isCurrentDate": false, "isFutureDate": false, "x": 1, @@ -591,6 +679,7 @@ exports[`RHSM Transformers should attempt to parse a tally response: tally, mont { "date": "2019-03-01T00:00:00Z", "hasData": false, + "hasInfiniteQuantity": undefined, "isCurrentDate": false, "isFutureDate": false, "x": 2, @@ -599,6 +688,7 @@ exports[`RHSM Transformers should attempt to parse a tally response: tally, mont { "date": "2019-04-01T00:00:00Z", "hasData": false, + "hasInfiniteQuantity": undefined, "isCurrentDate": false, "isFutureDate": false, "x": 3, @@ -607,6 +697,7 @@ exports[`RHSM Transformers should attempt to parse a tally response: tally, mont { "date": "2019-05-01T00:00:00Z", "hasData": true, + "hasInfiniteQuantity": undefined, "isCurrentDate": false, "isFutureDate": false, "x": 4, @@ -615,6 +706,7 @@ exports[`RHSM Transformers should attempt to parse a tally response: tally, mont { "date": "2019-06-01T00:00:00Z", "hasData": true, + "hasInfiniteQuantity": undefined, "isCurrentDate": false, "isFutureDate": false, "x": 5, @@ -623,6 +715,7 @@ exports[`RHSM Transformers should attempt to parse a tally response: tally, mont { "date": "2019-07-01T00:00:00Z", "hasData": false, + "hasInfiniteQuantity": undefined, "isCurrentDate": false, "isFutureDate": false, "x": 6, @@ -631,6 +724,7 @@ exports[`RHSM Transformers should attempt to parse a tally response: tally, mont { "date": "2019-08-01T00:00:00Z", "hasData": false, + "hasInfiniteQuantity": undefined, "isCurrentDate": false, "isFutureDate": true, "x": 7, @@ -668,6 +762,16 @@ exports[`RHSM Transformers should attempt to parse an hosts response: hosts 1`] } `; +exports[`RHSM Transformers should attempt to parse an hosts response: hosts, failed 1`] = ` +{ + "data": [], + "meta": { + "count": undefined, + "productId": undefined, + }, +} +`; + exports[`RHSM Transformers should attempt to parse an instances response: instances 1`] = ` { "data": [ @@ -686,11 +790,20 @@ exports[`RHSM Transformers should attempt to parse an instances response: instan } `; +exports[`RHSM Transformers should attempt to parse an instances response: instances, failed 1`] = ` +{ + "data": [], + "meta": { + "count": undefined, + "productId": undefined, + }, +} +`; + exports[`RHSM Transformers should have specific response transformers: specific transformers 1`] = ` { - "capacity": [Function], "hosts": [Function], "instances": [Function], - "tally": [Function], + "tallyCapacity": [Function], } `; diff --git a/src/services/rhsm/__tests__/rhsmServices.test.js b/src/services/rhsm/__tests__/rhsmServices.test.js index 30720f860..490dabaaa 100644 --- a/src/services/rhsm/__tests__/rhsmServices.test.js +++ b/src/services/rhsm/__tests__/rhsmServices.test.js @@ -17,13 +17,12 @@ describe('RhsmServices', () => { }); it('should export a specific number of methods and classes', () => { - expect(Object.keys(rhsmServices)).toHaveLength(9); + expect(Object.keys(rhsmServices)).toHaveLength(8); }); it('should have specific methods', () => { expect(rhsmServices.getApiVersion).toBeDefined(); expect(rhsmServices.getGraphCapacity).toBeDefined(); - expect(rhsmServices.getGraphCapacityDeprecated).toBeDefined(); expect(rhsmServices.getGraphReports).toBeDefined(); expect(rhsmServices.getGraphTally).toBeDefined(); expect(rhsmServices.getHostsInventory).toBeDefined(); diff --git a/src/services/rhsm/__tests__/rhsmTransformers.test.js b/src/services/rhsm/__tests__/rhsmTransformers.test.js index f0c223d0c..e7929dce3 100644 --- a/src/services/rhsm/__tests__/rhsmTransformers.test.js +++ b/src/services/rhsm/__tests__/rhsmTransformers.test.js @@ -1,8 +1,7 @@ import { rhsmTransformers } from '../rhsmTransformers'; import { rhsmConstants, - RHSM_API_RESPONSE_CAPACITY_DATA_TYPES as CAPACITY_DATA_TYPES, - RHSM_API_RESPONSE_TALLY_DATA_TYPES as TALLY_DATA_TYPES + RHSM_API_RESPONSE_TALLY_CAPACITY_DATA_TYPES as TALLY_CAPACITY_DATA_TYPES } from '../rhsmConstants'; describe('RHSM Transformers', () => { @@ -16,143 +15,143 @@ describe('RHSM Transformers', () => { [rhsmConstants.RHSM_API_RESPONSE_META]: {} }; - expect(rhsmTransformers.tally(baseCapacity)).toMatchSnapshot('capacity'); + expect(rhsmTransformers.tallyCapacity(baseCapacity)).toMatchSnapshot('capacity'); const dailyCapacityResponse = { [rhsmConstants.RHSM_API_RESPONSE_DATA]: [ { - [CAPACITY_DATA_TYPES.DATE]: '2019-07-14T00:00:00Z', - [CAPACITY_DATA_TYPES.SOCKETS]: 0.0, - [CAPACITY_DATA_TYPES.HAS_INFINITE_QUANTITY]: false + [TALLY_CAPACITY_DATA_TYPES.DATE]: '2019-07-14T00:00:00Z', + [TALLY_CAPACITY_DATA_TYPES.VALUE]: 0.0, + [TALLY_CAPACITY_DATA_TYPES.HAS_INFINITE_QUANTITY]: false }, { - [CAPACITY_DATA_TYPES.DATE]: '2019-07-15T00:00:00Z', - [CAPACITY_DATA_TYPES.SOCKETS]: 0.0, - [CAPACITY_DATA_TYPES.HAS_INFINITE_QUANTITY]: false + [TALLY_CAPACITY_DATA_TYPES.DATE]: '2019-07-15T00:00:00Z', + [TALLY_CAPACITY_DATA_TYPES.VALUE]: 0.0, + [TALLY_CAPACITY_DATA_TYPES.HAS_INFINITE_QUANTITY]: false }, { - [CAPACITY_DATA_TYPES.DATE]: '2019-07-16T00:00:00Z', - [CAPACITY_DATA_TYPES.SOCKETS]: 1.4977989514668784, - [CAPACITY_DATA_TYPES.HAS_INFINITE_QUANTITY]: true + [TALLY_CAPACITY_DATA_TYPES.DATE]: '2019-07-16T00:00:00Z', + [TALLY_CAPACITY_DATA_TYPES.VALUE]: 1.4977989514668784, + [TALLY_CAPACITY_DATA_TYPES.HAS_INFINITE_QUANTITY]: true }, { - [CAPACITY_DATA_TYPES.DATE]: '2019-07-17T00:00:00Z', - [CAPACITY_DATA_TYPES.SOCKETS]: 1.5547887908087836, - [CAPACITY_DATA_TYPES.HAS_INFINITE_QUANTITY]: true + [TALLY_CAPACITY_DATA_TYPES.DATE]: '2019-07-17T00:00:00Z', + [TALLY_CAPACITY_DATA_TYPES.VALUE]: 1.5547887908087836, + [TALLY_CAPACITY_DATA_TYPES.HAS_INFINITE_QUANTITY]: true }, { - [CAPACITY_DATA_TYPES.DATE]: '2019-07-18T00:00:00Z', - [CAPACITY_DATA_TYPES.SOCKETS]: 4.446975872251722, - [CAPACITY_DATA_TYPES.HAS_INFINITE_QUANTITY]: true + [TALLY_CAPACITY_DATA_TYPES.DATE]: '2019-07-18T00:00:00Z', + [TALLY_CAPACITY_DATA_TYPES.VALUE]: 4.446975872251722, + [TALLY_CAPACITY_DATA_TYPES.HAS_INFINITE_QUANTITY]: true }, { - [CAPACITY_DATA_TYPES.DATE]: '2019-07-19T00:00:00Z', - [CAPACITY_DATA_TYPES.SOCKETS]: 4.69084013303121, - [CAPACITY_DATA_TYPES.HAS_INFINITE_QUANTITY]: true + [TALLY_CAPACITY_DATA_TYPES.DATE]: '2019-07-19T00:00:00Z', + [TALLY_CAPACITY_DATA_TYPES.VALUE]: 4.69084013303121, + [TALLY_CAPACITY_DATA_TYPES.HAS_INFINITE_QUANTITY]: true }, { - [CAPACITY_DATA_TYPES.DATE]: '2019-07-20T00:00:00Z', - [CAPACITY_DATA_TYPES.SOCKETS]: 0.0, - [CAPACITY_DATA_TYPES.HAS_INFINITE_QUANTITY]: false + [TALLY_CAPACITY_DATA_TYPES.DATE]: '2019-07-20T00:00:00Z', + [TALLY_CAPACITY_DATA_TYPES.VALUE]: 0.0, + [TALLY_CAPACITY_DATA_TYPES.HAS_INFINITE_QUANTITY]: false }, { - [CAPACITY_DATA_TYPES.DATE]: '2019-07-21T00:00:00Z', - [CAPACITY_DATA_TYPES.SOCKETS]: 0.0, - [CAPACITY_DATA_TYPES.HAS_INFINITE_QUANTITY]: false + [TALLY_CAPACITY_DATA_TYPES.DATE]: '2019-07-21T00:00:00Z', + [TALLY_CAPACITY_DATA_TYPES.VALUE]: 0.0, + [TALLY_CAPACITY_DATA_TYPES.HAS_INFINITE_QUANTITY]: false }, { - [CAPACITY_DATA_TYPES.DATE]: '2019-07-22T00:00:00Z', - [CAPACITY_DATA_TYPES.SOCKETS]: 0.0, - [CAPACITY_DATA_TYPES.HAS_INFINITE_QUANTITY]: false + [TALLY_CAPACITY_DATA_TYPES.DATE]: '2019-07-22T00:00:00Z', + [TALLY_CAPACITY_DATA_TYPES.VALUE]: 0.0, + [TALLY_CAPACITY_DATA_TYPES.HAS_INFINITE_QUANTITY]: false }, { - [CAPACITY_DATA_TYPES.DATE]: '2019-07-23T00:00:00Z', - [CAPACITY_DATA_TYPES.SOCKETS]: 0.0, - [CAPACITY_DATA_TYPES.HAS_INFINITE_QUANTITY]: false + [TALLY_CAPACITY_DATA_TYPES.DATE]: '2019-07-23T00:00:00Z', + [TALLY_CAPACITY_DATA_TYPES.VALUE]: 0.0, + [TALLY_CAPACITY_DATA_TYPES.HAS_INFINITE_QUANTITY]: false }, { - [CAPACITY_DATA_TYPES.DATE]: '2019-07-24T00:00:00Z', - [CAPACITY_DATA_TYPES.SOCKETS]: 0.0, - [CAPACITY_DATA_TYPES.HAS_INFINITE_QUANTITY]: false + [TALLY_CAPACITY_DATA_TYPES.DATE]: '2019-07-24T00:00:00Z', + [TALLY_CAPACITY_DATA_TYPES.VALUE]: 0.0, + [TALLY_CAPACITY_DATA_TYPES.HAS_INFINITE_QUANTITY]: false }, { - [CAPACITY_DATA_TYPES.DATE]: '2019-07-25T00:00:00Z', - [CAPACITY_DATA_TYPES.SOCKETS]: 0.0, - [CAPACITY_DATA_TYPES.HAS_INFINITE_QUANTITY]: false + [TALLY_CAPACITY_DATA_TYPES.DATE]: '2019-07-25T00:00:00Z', + [TALLY_CAPACITY_DATA_TYPES.VALUE]: 0.0, + [TALLY_CAPACITY_DATA_TYPES.HAS_INFINITE_QUANTITY]: false } ], [rhsmConstants.RHSM_API_RESPONSE_META]: {} }; - expect(rhsmTransformers.capacity(dailyCapacityResponse)).toMatchSnapshot('capacity, daily like granularity'); + expect(rhsmTransformers.tallyCapacity(dailyCapacityResponse)).toMatchSnapshot('capacity, daily like granularity'); const dailyCapacityFirstMonthResponse = { [rhsmConstants.RHSM_API_RESPONSE_DATA]: [ { - [CAPACITY_DATA_TYPES.DATE]: '2019-07-20T00:00:00Z', - [CAPACITY_DATA_TYPES.SOCKETS]: 0.1, - [CAPACITY_DATA_TYPES.HAS_INFINITE_QUANTITY]: true + [TALLY_CAPACITY_DATA_TYPES.DATE]: '2019-07-20T00:00:00Z', + [TALLY_CAPACITY_DATA_TYPES.VALUE]: 0.1, + [TALLY_CAPACITY_DATA_TYPES.HAS_INFINITE_QUANTITY]: true }, { - [CAPACITY_DATA_TYPES.DATE]: '2019-07-21T00:00:00Z', - [CAPACITY_DATA_TYPES.SOCKETS]: 0.0, - [CAPACITY_DATA_TYPES.HAS_INFINITE_QUANTITY]: false + [TALLY_CAPACITY_DATA_TYPES.DATE]: '2019-07-21T00:00:00Z', + [TALLY_CAPACITY_DATA_TYPES.VALUE]: 0.0, + [TALLY_CAPACITY_DATA_TYPES.HAS_INFINITE_QUANTITY]: false }, { - [CAPACITY_DATA_TYPES.DATE]: '2019-07-22T00:00:00Z', - [CAPACITY_DATA_TYPES.SOCKETS]: 0.0, - [CAPACITY_DATA_TYPES.HAS_INFINITE_QUANTITY]: false + [TALLY_CAPACITY_DATA_TYPES.DATE]: '2019-07-22T00:00:00Z', + [TALLY_CAPACITY_DATA_TYPES.VALUE]: 0.0, + [TALLY_CAPACITY_DATA_TYPES.HAS_INFINITE_QUANTITY]: false }, { - [CAPACITY_DATA_TYPES.DATE]: '2019-07-23T00:00:00Z', - [CAPACITY_DATA_TYPES.SOCKETS]: 0.0, - [CAPACITY_DATA_TYPES.HAS_INFINITE_QUANTITY]: false + [TALLY_CAPACITY_DATA_TYPES.DATE]: '2019-07-23T00:00:00Z', + [TALLY_CAPACITY_DATA_TYPES.VALUE]: 0.0, + [TALLY_CAPACITY_DATA_TYPES.HAS_INFINITE_QUANTITY]: false }, { - [CAPACITY_DATA_TYPES.DATE]: '2019-07-24T00:00:00Z', - [CAPACITY_DATA_TYPES.SOCKETS]: 0.0, - [CAPACITY_DATA_TYPES.HAS_INFINITE_QUANTITY]: false + [TALLY_CAPACITY_DATA_TYPES.DATE]: '2019-07-24T00:00:00Z', + [TALLY_CAPACITY_DATA_TYPES.VALUE]: 0.0, + [TALLY_CAPACITY_DATA_TYPES.HAS_INFINITE_QUANTITY]: false }, { - [CAPACITY_DATA_TYPES.DATE]: '2019-07-25T00:00:00Z', - [CAPACITY_DATA_TYPES.SOCKETS]: 0.0, - [CAPACITY_DATA_TYPES.HAS_INFINITE_QUANTITY]: false + [TALLY_CAPACITY_DATA_TYPES.DATE]: '2019-07-25T00:00:00Z', + [TALLY_CAPACITY_DATA_TYPES.VALUE]: 0.0, + [TALLY_CAPACITY_DATA_TYPES.HAS_INFINITE_QUANTITY]: false }, { - [CAPACITY_DATA_TYPES.DATE]: '2019-07-26T00:00:00Z', - [CAPACITY_DATA_TYPES.SOCKETS]: 0.0, - [CAPACITY_DATA_TYPES.HAS_INFINITE_QUANTITY]: false + [TALLY_CAPACITY_DATA_TYPES.DATE]: '2019-07-26T00:00:00Z', + [TALLY_CAPACITY_DATA_TYPES.VALUE]: 0.0, + [TALLY_CAPACITY_DATA_TYPES.HAS_INFINITE_QUANTITY]: false }, { - [CAPACITY_DATA_TYPES.DATE]: '2019-07-27T00:00:00Z', - [CAPACITY_DATA_TYPES.SOCKETS]: 0.0, - [CAPACITY_DATA_TYPES.HAS_INFINITE_QUANTITY]: false + [TALLY_CAPACITY_DATA_TYPES.DATE]: '2019-07-27T00:00:00Z', + [TALLY_CAPACITY_DATA_TYPES.VALUE]: 0.0, + [TALLY_CAPACITY_DATA_TYPES.HAS_INFINITE_QUANTITY]: false }, { - [CAPACITY_DATA_TYPES.DATE]: '2019-07-28T00:00:00Z', - [CAPACITY_DATA_TYPES.SOCKETS]: 0.0, - [CAPACITY_DATA_TYPES.HAS_INFINITE_QUANTITY]: false + [TALLY_CAPACITY_DATA_TYPES.DATE]: '2019-07-28T00:00:00Z', + [TALLY_CAPACITY_DATA_TYPES.VALUE]: 0.0, + [TALLY_CAPACITY_DATA_TYPES.HAS_INFINITE_QUANTITY]: false }, { - [CAPACITY_DATA_TYPES.DATE]: '2019-07-29T00:00:00Z', - [CAPACITY_DATA_TYPES.SOCKETS]: 0.0, - [CAPACITY_DATA_TYPES.HAS_INFINITE_QUANTITY]: false + [TALLY_CAPACITY_DATA_TYPES.DATE]: '2019-07-29T00:00:00Z', + [TALLY_CAPACITY_DATA_TYPES.VALUE]: 0.0, + [TALLY_CAPACITY_DATA_TYPES.HAS_INFINITE_QUANTITY]: false }, { - [CAPACITY_DATA_TYPES.DATE]: '2019-07-30T00:00:00Z', - [CAPACITY_DATA_TYPES.SOCKETS]: 0.0, - [CAPACITY_DATA_TYPES.HAS_INFINITE_QUANTITY]: false + [TALLY_CAPACITY_DATA_TYPES.DATE]: '2019-07-30T00:00:00Z', + [TALLY_CAPACITY_DATA_TYPES.VALUE]: 0.0, + [TALLY_CAPACITY_DATA_TYPES.HAS_INFINITE_QUANTITY]: false }, { - [CAPACITY_DATA_TYPES.DATE]: '2019-07-31T00:00:00Z', - [CAPACITY_DATA_TYPES.SOCKETS]: 0.0, - [CAPACITY_DATA_TYPES.HAS_INFINITE_QUANTITY]: false + [TALLY_CAPACITY_DATA_TYPES.DATE]: '2019-07-31T00:00:00Z', + [TALLY_CAPACITY_DATA_TYPES.VALUE]: 0.0, + [TALLY_CAPACITY_DATA_TYPES.HAS_INFINITE_QUANTITY]: false } ], [rhsmConstants.RHSM_API_RESPONSE_META]: {} }; - const transformedDailyCapacityFirstMonthResponse = rhsmTransformers.capacity(dailyCapacityFirstMonthResponse); + const transformedDailyCapacityFirstMonthResponse = rhsmTransformers.tallyCapacity(dailyCapacityFirstMonthResponse); expect(dailyCapacityFirstMonthResponse[rhsmConstants.RHSM_API_RESPONSE_DATA].length).toBe(12); expect(transformedDailyCapacityFirstMonthResponse.data.length).toBe(13); @@ -163,53 +162,57 @@ describe('RHSM Transformers', () => { const monthlyCapacityResponse = { [rhsmConstants.RHSM_API_RESPONSE_DATA]: [ { - [CAPACITY_DATA_TYPES.DATE]: '2019-01-01T00:00:00Z', - [CAPACITY_DATA_TYPES.SOCKETS]: 0.0, - [CAPACITY_DATA_TYPES.HAS_INFINITE_QUANTITY]: false + [TALLY_CAPACITY_DATA_TYPES.DATE]: '2019-01-01T00:00:00Z', + [TALLY_CAPACITY_DATA_TYPES.VALUE]: 0.0, + [TALLY_CAPACITY_DATA_TYPES.HAS_INFINITE_QUANTITY]: false }, { - [CAPACITY_DATA_TYPES.DATE]: '2019-02-01T00:00:00Z', - [CAPACITY_DATA_TYPES.SOCKETS]: 0.0, - [CAPACITY_DATA_TYPES.HAS_INFINITE_QUANTITY]: false + [TALLY_CAPACITY_DATA_TYPES.DATE]: '2019-02-01T00:00:00Z', + [TALLY_CAPACITY_DATA_TYPES.VALUE]: 0.0, + [TALLY_CAPACITY_DATA_TYPES.HAS_INFINITE_QUANTITY]: false }, { - [CAPACITY_DATA_TYPES.DATE]: '2019-03-01T00:00:00Z', - [CAPACITY_DATA_TYPES.SOCKETS]: 0.0, - [CAPACITY_DATA_TYPES.HAS_INFINITE_QUANTITY]: false + [TALLY_CAPACITY_DATA_TYPES.DATE]: '2019-03-01T00:00:00Z', + [TALLY_CAPACITY_DATA_TYPES.VALUE]: 0.0, + [TALLY_CAPACITY_DATA_TYPES.HAS_INFINITE_QUANTITY]: false }, { - [CAPACITY_DATA_TYPES.DATE]: '2019-04-01T00:00:00Z', - [CAPACITY_DATA_TYPES.SOCKETS]: 0.0, - [CAPACITY_DATA_TYPES.HAS_INFINITE_QUANTITY]: false + [TALLY_CAPACITY_DATA_TYPES.DATE]: '2019-04-01T00:00:00Z', + [TALLY_CAPACITY_DATA_TYPES.VALUE]: 0.0, + [TALLY_CAPACITY_DATA_TYPES.HAS_INFINITE_QUANTITY]: false }, { - [CAPACITY_DATA_TYPES.DATE]: '2019-05-01T00:00:00Z', - [CAPACITY_DATA_TYPES.SOCKETS]: 4.767144674723709, - [CAPACITY_DATA_TYPES.HAS_INFINITE_QUANTITY]: true + [TALLY_CAPACITY_DATA_TYPES.DATE]: '2019-05-01T00:00:00Z', + [TALLY_CAPACITY_DATA_TYPES.VALUE]: 4.767144674723709, + [TALLY_CAPACITY_DATA_TYPES.HAS_INFINITE_QUANTITY]: true }, { - [CAPACITY_DATA_TYPES.DATE]: '2019-06-01T00:00:00Z', - [CAPACITY_DATA_TYPES.SOCKETS]: 4.446975872251722, - [CAPACITY_DATA_TYPES.HAS_INFINITE_QUANTITY]: true + [TALLY_CAPACITY_DATA_TYPES.DATE]: '2019-06-01T00:00:00Z', + [TALLY_CAPACITY_DATA_TYPES.VALUE]: 4.446975872251722, + [TALLY_CAPACITY_DATA_TYPES.HAS_INFINITE_QUANTITY]: true }, { - [CAPACITY_DATA_TYPES.DATE]: '2019-07-01T00:00:00Z', - [CAPACITY_DATA_TYPES.SOCKETS]: 0.0, - [CAPACITY_DATA_TYPES.HAS_INFINITE_QUANTITY]: false + [TALLY_CAPACITY_DATA_TYPES.DATE]: '2019-07-01T00:00:00Z', + [TALLY_CAPACITY_DATA_TYPES.VALUE]: 0.0, + [TALLY_CAPACITY_DATA_TYPES.HAS_INFINITE_QUANTITY]: false }, { - [CAPACITY_DATA_TYPES.DATE]: '2019-08-01T00:00:00Z', - [CAPACITY_DATA_TYPES.SOCKETS]: 0.0, - [CAPACITY_DATA_TYPES.HAS_INFINITE_QUANTITY]: false + [TALLY_CAPACITY_DATA_TYPES.DATE]: '2019-08-01T00:00:00Z', + [TALLY_CAPACITY_DATA_TYPES.VALUE]: 0.0, + [TALLY_CAPACITY_DATA_TYPES.HAS_INFINITE_QUANTITY]: false } ], [rhsmConstants.RHSM_API_RESPONSE_META]: {} }; - expect(rhsmTransformers.capacity(monthlyCapacityResponse)).toMatchSnapshot('capacity, monthly like granularity'); + expect(rhsmTransformers.tallyCapacity(monthlyCapacityResponse)).toMatchSnapshot( + 'capacity, monthly like granularity' + ); }); it('should attempt to parse an hosts response', () => { + expect(rhsmTransformers.hosts(undefined)).toMatchSnapshot('hosts, failed'); + expect( rhsmTransformers.hosts({ [rhsmConstants.RHSM_API_RESPONSE_DATA]: [ @@ -226,6 +229,8 @@ describe('RHSM Transformers', () => { }); it('should attempt to parse an instances response', () => { + expect(rhsmTransformers.instances(undefined)).toMatchSnapshot('instances, failed'); + expect( rhsmTransformers.instances({ [rhsmConstants.RHSM_API_RESPONSE_DATA]: [ @@ -241,148 +246,152 @@ describe('RHSM Transformers', () => { }); it('should attempt to parse a tally response', () => { + const failedTallyResponse = undefined; + + expect(rhsmTransformers.tallyCapacity(failedTallyResponse)).toMatchSnapshot('tally, failed'); + const baseTallyResponse = { [rhsmConstants.RHSM_API_RESPONSE_DATA]: [], [rhsmConstants.RHSM_API_RESPONSE_META]: {} }; - expect(rhsmTransformers.tally(baseTallyResponse)).toMatchSnapshot('tally'); + expect(rhsmTransformers.tallyCapacity(baseTallyResponse)).toMatchSnapshot('tally'); const dailyTallyResponse = { [rhsmConstants.RHSM_API_RESPONSE_DATA]: [ { - [TALLY_DATA_TYPES.DATE]: '2019-07-14T00:00:00Z', - [TALLY_DATA_TYPES.VALUE]: 0.0, - [TALLY_DATA_TYPES.HAS_DATA]: false + [TALLY_CAPACITY_DATA_TYPES.DATE]: '2019-07-14T00:00:00Z', + [TALLY_CAPACITY_DATA_TYPES.VALUE]: 0.0, + [TALLY_CAPACITY_DATA_TYPES.HAS_DATA]: false }, { - [TALLY_DATA_TYPES.DATE]: '2019-07-15T00:00:00Z', - [TALLY_DATA_TYPES.VALUE]: 0.0, - [TALLY_DATA_TYPES.HAS_DATA]: false + [TALLY_CAPACITY_DATA_TYPES.DATE]: '2019-07-15T00:00:00Z', + [TALLY_CAPACITY_DATA_TYPES.VALUE]: 0.0, + [TALLY_CAPACITY_DATA_TYPES.HAS_DATA]: false }, { - [TALLY_DATA_TYPES.DATE]: '2019-07-16T00:00:00Z', - [TALLY_DATA_TYPES.VALUE]: 1.4977989514668784, - [TALLY_DATA_TYPES.HAS_DATA]: true + [TALLY_CAPACITY_DATA_TYPES.DATE]: '2019-07-16T00:00:00Z', + [TALLY_CAPACITY_DATA_TYPES.VALUE]: 1.4977989514668784, + [TALLY_CAPACITY_DATA_TYPES.HAS_DATA]: true }, { - [TALLY_DATA_TYPES.DATE]: '2019-07-17T00:00:00Z', - [TALLY_DATA_TYPES.VALUE]: 1.5547887908087836, - [TALLY_DATA_TYPES.HAS_DATA]: true + [TALLY_CAPACITY_DATA_TYPES.DATE]: '2019-07-17T00:00:00Z', + [TALLY_CAPACITY_DATA_TYPES.VALUE]: 1.5547887908087836, + [TALLY_CAPACITY_DATA_TYPES.HAS_DATA]: true }, { - [TALLY_DATA_TYPES.DATE]: '2019-07-18T00:00:00Z', - [TALLY_DATA_TYPES.VALUE]: 4.446975872251722, - [TALLY_DATA_TYPES.HAS_DATA]: true + [TALLY_CAPACITY_DATA_TYPES.DATE]: '2019-07-18T00:00:00Z', + [TALLY_CAPACITY_DATA_TYPES.VALUE]: 4.446975872251722, + [TALLY_CAPACITY_DATA_TYPES.HAS_DATA]: true }, { - [TALLY_DATA_TYPES.DATE]: '2019-07-19T00:00:00Z', - [TALLY_DATA_TYPES.VALUE]: 4.69084013303121, - [TALLY_DATA_TYPES.HAS_DATA]: true + [TALLY_CAPACITY_DATA_TYPES.DATE]: '2019-07-19T00:00:00Z', + [TALLY_CAPACITY_DATA_TYPES.VALUE]: 4.69084013303121, + [TALLY_CAPACITY_DATA_TYPES.HAS_DATA]: true }, { - [TALLY_DATA_TYPES.DATE]: '2019-07-20T00:00:00Z', - [TALLY_DATA_TYPES.VALUE]: 0.0, - [TALLY_DATA_TYPES.HAS_DATA]: false + [TALLY_CAPACITY_DATA_TYPES.DATE]: '2019-07-20T00:00:00Z', + [TALLY_CAPACITY_DATA_TYPES.VALUE]: 0.0, + [TALLY_CAPACITY_DATA_TYPES.HAS_DATA]: false }, { - [TALLY_DATA_TYPES.DATE]: '2019-07-21T00:00:00Z', - [TALLY_DATA_TYPES.VALUE]: 0.0, - [TALLY_DATA_TYPES.HAS_DATA]: false + [TALLY_CAPACITY_DATA_TYPES.DATE]: '2019-07-21T00:00:00Z', + [TALLY_CAPACITY_DATA_TYPES.VALUE]: 0.0, + [TALLY_CAPACITY_DATA_TYPES.HAS_DATA]: false }, { - [TALLY_DATA_TYPES.DATE]: '2019-07-22T00:00:00Z', - [TALLY_DATA_TYPES.VALUE]: 0.0, - [TALLY_DATA_TYPES.HAS_DATA]: false + [TALLY_CAPACITY_DATA_TYPES.DATE]: '2019-07-22T00:00:00Z', + [TALLY_CAPACITY_DATA_TYPES.VALUE]: 0.0, + [TALLY_CAPACITY_DATA_TYPES.HAS_DATA]: false }, { - [TALLY_DATA_TYPES.DATE]: '2019-07-23T00:00:00Z', - [TALLY_DATA_TYPES.VALUE]: 0.0, - [TALLY_DATA_TYPES.HAS_DATA]: false + [TALLY_CAPACITY_DATA_TYPES.DATE]: '2019-07-23T00:00:00Z', + [TALLY_CAPACITY_DATA_TYPES.VALUE]: 0.0, + [TALLY_CAPACITY_DATA_TYPES.HAS_DATA]: false }, { - [TALLY_DATA_TYPES.DATE]: '2019-07-24T00:00:00Z', - [TALLY_DATA_TYPES.VALUE]: 0.0, - [TALLY_DATA_TYPES.HAS_DATA]: false + [TALLY_CAPACITY_DATA_TYPES.DATE]: '2019-07-24T00:00:00Z', + [TALLY_CAPACITY_DATA_TYPES.VALUE]: 0.0, + [TALLY_CAPACITY_DATA_TYPES.HAS_DATA]: false }, { - [TALLY_DATA_TYPES.DATE]: '2019-07-25T00:00:00Z', - [TALLY_DATA_TYPES.VALUE]: 0.0, - [TALLY_DATA_TYPES.HAS_DATA]: false + [TALLY_CAPACITY_DATA_TYPES.DATE]: '2019-07-25T00:00:00Z', + [TALLY_CAPACITY_DATA_TYPES.VALUE]: 0.0, + [TALLY_CAPACITY_DATA_TYPES.HAS_DATA]: false } ], [rhsmConstants.RHSM_API_RESPONSE_META]: {} }; - expect(rhsmTransformers.tally(dailyTallyResponse)).toMatchSnapshot('tally, daily like granularity'); + expect(rhsmTransformers.tallyCapacity(dailyTallyResponse)).toMatchSnapshot('tally, daily like granularity'); const dailyTallyFirstMonthResponse = { [rhsmConstants.RHSM_API_RESPONSE_DATA]: [ { - [TALLY_DATA_TYPES.DATE]: '2019-07-20T00:00:00Z', - [TALLY_DATA_TYPES.VALUE]: 0.1, - [TALLY_DATA_TYPES.HAS_DATA]: true + [TALLY_CAPACITY_DATA_TYPES.DATE]: '2019-07-20T00:00:00Z', + [TALLY_CAPACITY_DATA_TYPES.VALUE]: 0.1, + [TALLY_CAPACITY_DATA_TYPES.HAS_DATA]: true }, { - [TALLY_DATA_TYPES.DATE]: '2019-07-21T00:00:00Z', - [TALLY_DATA_TYPES.VALUE]: 0.0, - [TALLY_DATA_TYPES.HAS_DATA]: false + [TALLY_CAPACITY_DATA_TYPES.DATE]: '2019-07-21T00:00:00Z', + [TALLY_CAPACITY_DATA_TYPES.VALUE]: 0.0, + [TALLY_CAPACITY_DATA_TYPES.HAS_DATA]: false }, { - [TALLY_DATA_TYPES.DATE]: '2019-07-22T00:00:00Z', - [TALLY_DATA_TYPES.VALUE]: 0.0, - [TALLY_DATA_TYPES.HAS_DATA]: false + [TALLY_CAPACITY_DATA_TYPES.DATE]: '2019-07-22T00:00:00Z', + [TALLY_CAPACITY_DATA_TYPES.VALUE]: 0.0, + [TALLY_CAPACITY_DATA_TYPES.HAS_DATA]: false }, { - [TALLY_DATA_TYPES.DATE]: '2019-07-23T00:00:00Z', - [TALLY_DATA_TYPES.VALUE]: 0.0, - [TALLY_DATA_TYPES.HAS_DATA]: false + [TALLY_CAPACITY_DATA_TYPES.DATE]: '2019-07-23T00:00:00Z', + [TALLY_CAPACITY_DATA_TYPES.VALUE]: 0.0, + [TALLY_CAPACITY_DATA_TYPES.HAS_DATA]: false }, { - [TALLY_DATA_TYPES.DATE]: '2019-07-24T00:00:00Z', - [TALLY_DATA_TYPES.VALUE]: 0.0, - [TALLY_DATA_TYPES.HAS_DATA]: false + [TALLY_CAPACITY_DATA_TYPES.DATE]: '2019-07-24T00:00:00Z', + [TALLY_CAPACITY_DATA_TYPES.VALUE]: 0.0, + [TALLY_CAPACITY_DATA_TYPES.HAS_DATA]: false }, { - [TALLY_DATA_TYPES.DATE]: '2019-07-25T00:00:00Z', - [TALLY_DATA_TYPES.VALUE]: 0.0, - [TALLY_DATA_TYPES.HAS_DATA]: false + [TALLY_CAPACITY_DATA_TYPES.DATE]: '2019-07-25T00:00:00Z', + [TALLY_CAPACITY_DATA_TYPES.VALUE]: 0.0, + [TALLY_CAPACITY_DATA_TYPES.HAS_DATA]: false }, { - [TALLY_DATA_TYPES.DATE]: '2019-07-26T00:00:00Z', - [TALLY_DATA_TYPES.VALUE]: 0.0, - [TALLY_DATA_TYPES.HAS_DATA]: false + [TALLY_CAPACITY_DATA_TYPES.DATE]: '2019-07-26T00:00:00Z', + [TALLY_CAPACITY_DATA_TYPES.VALUE]: 0.0, + [TALLY_CAPACITY_DATA_TYPES.HAS_DATA]: false }, { - [TALLY_DATA_TYPES.DATE]: '2019-07-27T00:00:00Z', - [TALLY_DATA_TYPES.VALUE]: 0.0, - [TALLY_DATA_TYPES.HAS_DATA]: false + [TALLY_CAPACITY_DATA_TYPES.DATE]: '2019-07-27T00:00:00Z', + [TALLY_CAPACITY_DATA_TYPES.VALUE]: 0.0, + [TALLY_CAPACITY_DATA_TYPES.HAS_DATA]: false }, { - [TALLY_DATA_TYPES.DATE]: '2019-07-28T00:00:00Z', - [TALLY_DATA_TYPES.VALUE]: 0.0, - [TALLY_DATA_TYPES.HAS_DATA]: false + [TALLY_CAPACITY_DATA_TYPES.DATE]: '2019-07-28T00:00:00Z', + [TALLY_CAPACITY_DATA_TYPES.VALUE]: 0.0, + [TALLY_CAPACITY_DATA_TYPES.HAS_DATA]: false }, { - [TALLY_DATA_TYPES.DATE]: '2019-07-29T00:00:00Z', - [TALLY_DATA_TYPES.VALUE]: 0.0, - [TALLY_DATA_TYPES.HAS_DATA]: false + [TALLY_CAPACITY_DATA_TYPES.DATE]: '2019-07-29T00:00:00Z', + [TALLY_CAPACITY_DATA_TYPES.VALUE]: 0.0, + [TALLY_CAPACITY_DATA_TYPES.HAS_DATA]: false }, { - [TALLY_DATA_TYPES.DATE]: '2019-07-30T00:00:00Z', - [TALLY_DATA_TYPES.VALUE]: 0.0, - [TALLY_DATA_TYPES.HAS_DATA]: false + [TALLY_CAPACITY_DATA_TYPES.DATE]: '2019-07-30T00:00:00Z', + [TALLY_CAPACITY_DATA_TYPES.VALUE]: 0.0, + [TALLY_CAPACITY_DATA_TYPES.HAS_DATA]: false }, { - [TALLY_DATA_TYPES.DATE]: '2019-07-31T00:00:00Z', - [TALLY_DATA_TYPES.VALUE]: 0.0, - [TALLY_DATA_TYPES.HAS_DATA]: false + [TALLY_CAPACITY_DATA_TYPES.DATE]: '2019-07-31T00:00:00Z', + [TALLY_CAPACITY_DATA_TYPES.VALUE]: 0.0, + [TALLY_CAPACITY_DATA_TYPES.HAS_DATA]: false } ], [rhsmConstants.RHSM_API_RESPONSE_META]: {} }; - const transformedDailyTallyFirstMonthResponse = rhsmTransformers.tally(dailyTallyFirstMonthResponse); + const transformedDailyTallyFirstMonthResponse = rhsmTransformers.tallyCapacity(dailyTallyFirstMonthResponse); expect(dailyTallyFirstMonthResponse[rhsmConstants.RHSM_API_RESPONSE_DATA].length).toBe(12); expect(transformedDailyTallyFirstMonthResponse.data.length).toBe(13); @@ -391,49 +400,49 @@ describe('RHSM Transformers', () => { const monthlyTallyResponse = { [rhsmConstants.RHSM_API_RESPONSE_DATA]: [ { - [TALLY_DATA_TYPES.DATE]: '2019-01-01T00:00:00Z', - [TALLY_DATA_TYPES.VALUE]: 0.0, - [TALLY_DATA_TYPES.HAS_DATA]: false + [TALLY_CAPACITY_DATA_TYPES.DATE]: '2019-01-01T00:00:00Z', + [TALLY_CAPACITY_DATA_TYPES.VALUE]: 0.0, + [TALLY_CAPACITY_DATA_TYPES.HAS_DATA]: false }, { - [TALLY_DATA_TYPES.DATE]: '2019-02-01T00:00:00Z', - [TALLY_DATA_TYPES.VALUE]: 0.0, - [TALLY_DATA_TYPES.HAS_DATA]: false + [TALLY_CAPACITY_DATA_TYPES.DATE]: '2019-02-01T00:00:00Z', + [TALLY_CAPACITY_DATA_TYPES.VALUE]: 0.0, + [TALLY_CAPACITY_DATA_TYPES.HAS_DATA]: false }, { - [TALLY_DATA_TYPES.DATE]: '2019-03-01T00:00:00Z', - [TALLY_DATA_TYPES.VALUE]: 0.0, - [TALLY_DATA_TYPES.HAS_DATA]: false + [TALLY_CAPACITY_DATA_TYPES.DATE]: '2019-03-01T00:00:00Z', + [TALLY_CAPACITY_DATA_TYPES.VALUE]: 0.0, + [TALLY_CAPACITY_DATA_TYPES.HAS_DATA]: false }, { - [TALLY_DATA_TYPES.DATE]: '2019-04-01T00:00:00Z', - [TALLY_DATA_TYPES.VALUE]: 0.0, - [TALLY_DATA_TYPES.HAS_DATA]: false + [TALLY_CAPACITY_DATA_TYPES.DATE]: '2019-04-01T00:00:00Z', + [TALLY_CAPACITY_DATA_TYPES.VALUE]: 0.0, + [TALLY_CAPACITY_DATA_TYPES.HAS_DATA]: false }, { - [TALLY_DATA_TYPES.DATE]: '2019-05-01T00:00:00Z', - [TALLY_DATA_TYPES.VALUE]: 4.767144674723709, - [TALLY_DATA_TYPES.HAS_DATA]: true + [TALLY_CAPACITY_DATA_TYPES.DATE]: '2019-05-01T00:00:00Z', + [TALLY_CAPACITY_DATA_TYPES.VALUE]: 4.767144674723709, + [TALLY_CAPACITY_DATA_TYPES.HAS_DATA]: true }, { - [TALLY_DATA_TYPES.DATE]: '2019-06-01T00:00:00Z', - [TALLY_DATA_TYPES.VALUE]: 4.446975872251722, - [TALLY_DATA_TYPES.HAS_DATA]: true + [TALLY_CAPACITY_DATA_TYPES.DATE]: '2019-06-01T00:00:00Z', + [TALLY_CAPACITY_DATA_TYPES.VALUE]: 4.446975872251722, + [TALLY_CAPACITY_DATA_TYPES.HAS_DATA]: true }, { - [TALLY_DATA_TYPES.DATE]: '2019-07-01T00:00:00Z', - [TALLY_DATA_TYPES.VALUE]: 0.0, - [TALLY_DATA_TYPES.HAS_DATA]: false + [TALLY_CAPACITY_DATA_TYPES.DATE]: '2019-07-01T00:00:00Z', + [TALLY_CAPACITY_DATA_TYPES.VALUE]: 0.0, + [TALLY_CAPACITY_DATA_TYPES.HAS_DATA]: false }, { - [TALLY_DATA_TYPES.DATE]: '2019-08-01T00:00:00Z', - [TALLY_DATA_TYPES.VALUE]: 0.0, - [TALLY_DATA_TYPES.HAS_DATA]: false + [TALLY_CAPACITY_DATA_TYPES.DATE]: '2019-08-01T00:00:00Z', + [TALLY_CAPACITY_DATA_TYPES.VALUE]: 0.0, + [TALLY_CAPACITY_DATA_TYPES.HAS_DATA]: false } ], [rhsmConstants.RHSM_API_RESPONSE_META]: {} }; - expect(rhsmTransformers.tally(monthlyTallyResponse)).toMatchSnapshot('tally, monthly like granularity'); + expect(rhsmTransformers.tallyCapacity(monthlyTallyResponse)).toMatchSnapshot('tally, monthly like granularity'); }); }); diff --git a/src/services/rhsm/rhsmConstants.js b/src/services/rhsm/rhsmConstants.js index e5b86a962..b820ddfa4 100644 --- a/src/services/rhsm/rhsmConstants.js +++ b/src/services/rhsm/rhsmConstants.js @@ -206,24 +206,13 @@ const RHSM_API_RESPONSE_SUBSCRIPTIONS_META_TYPES = { /** * RHSM response Tally DATA types. * - * @type {{DATE: string, HAS_DATA: string, VALUE: string}} + * @type {{DATE: string, HAS_DATA: string, VALUE: string, HAS_INFINITE_QUANTITY: string}} */ -const RHSM_API_RESPONSE_TALLY_DATA_TYPES = { +const RHSM_API_RESPONSE_TALLY_CAPACITY_DATA_TYPES = { DATE: 'date', VALUE: 'value', - HAS_DATA: 'has_data' -}; - -/** - * RHSM response Capacity DATA types. - * - * @type {{CORES: string, DATE: string, SOCKETS: string, HAS_INFINITE_QUANTITY: string}} - */ -const RHSM_API_RESPONSE_CAPACITY_DATA_TYPES = { - CORES: 'cores', - DATE: 'date', - HAS_INFINITE_QUANTITY: 'has_infinite_quantity', - SOCKETS: 'sockets' + HAS_DATA: 'has_data', + HAS_INFINITE_QUANTITY: 'has_infinite_quantity' }; /** @@ -232,7 +221,7 @@ const RHSM_API_RESPONSE_CAPACITY_DATA_TYPES = { * @type {{TOTAL_MONTHLY: string, DATE: string, PRODUCT: string, HAS_CLOUDIGRADE_DATA: string, * HAS_CLOUDIGRADE_MISMATCH: string, HAS_DATA: string, METRIC_ID: string, COUNT: string, VALUE: string}} */ -const RHSM_API_RESPONSE_TALLY_META_TYPES = { +const RHSM_API_RESPONSE_TALLY_CAPACITY_META_TYPES = { ...RHSM_API_RESPONSE_META_TYPES, DATE: 'date', VALUE: 'value', @@ -243,16 +232,6 @@ const RHSM_API_RESPONSE_TALLY_META_TYPES = { TOTAL_MONTHLY: 'total_monthly' }; -/** - * RHSM response Capacity META types. - * - * @type {{PRODUCT: string, METRIC_ID: string, COUNT: string}} - */ -const RHSM_API_RESPONSE_CAPACITY_META_TYPES = { - ...RHSM_API_RESPONSE_META_TYPES, - METRIC_ID: 'metric_id' -}; - /** * RHSM response, query parameters for GRANULARITY. * @@ -479,68 +458,57 @@ const RHSM_INTERNAL_PRODUCT_DISPLAY_TYPES = { /** * RHSM constants. * - * @type {{RHSM_API_QUERY_SET_TALLY_CAPACITY_TYPES: {GRANULARITY: string, USAGE: string, CATEGORY: string, END_DATE: string, - * SLA: string, START_DATE: string, BILLING_PROVIDER: string}, RHSM_API_RESPONSE_DATA: string, + * @type {{RHSM_API_QUERY_SET_TALLY_CAPACITY_TYPES: {GRANULARITY: string, USAGE: string, CATEGORY: string, END_DATE: string, SLA: string, + * START_DATE: string, BILLING_PROVIDER: string}, RHSM_API_RESPONSE_DATA: string, * RHSM_API_RESPONSE_SUBSCRIPTIONS_META_TYPES: {PRODUCT: string, SUBSCRIPTION_TYPE: string, COUNT: string}, * RHSM_API_PATH_PRODUCT_VARIANT_SATELLITE_TYPES: {SATELLITE_SERVER: string, SATELLITE_CAPSULE: string}, - * RHSM_API_PATH_METRIC_TYPES: {CORES: string, STORAGE_GIBIBYTES: string, SOCKETS: string, INSTANCE_HOURS: string, - * TRANSFER_GIBIBYTES: string, CORE_SECONDS: string, STORAGE_GIBIBYTE_MONTHS: string}, - * RHSM_API_RESPONSE_TALLY_DATA_TYPES: {DATE: string, HAS_DATA: string, VALUE: string}, - * RHSM_API_RESPONSE_INSTANCES_META_TYPES: {MEASUREMENTS: string, PRODUCT: string, COUNT: string}, - * RHSM_API_RESPONSE_INSTANCES_DATA_TYPES: {MEASUREMENTS: string, BILLING_ACCOUNT_ID: string, - * SUBSCRIPTION_MANAGER_ID: string, INVENTORY_ID: string, NUMBER_OF_GUESTS: string, BILLING_PROVIDER: string, - * DISPLAY_NAME: string, LAST_SEEN: string}, RHSM_API_RESPONSE_SLA_TYPES: {PREMIUM: string, SELF: string, NONE: string, - * STANDARD: string}, RHSM_API_PATH_PRODUCT_ARCHITECTURE_RHEL_TYPES: {RHEL_ARM: string, RHEL_IBM_Z: string, - * RHEL_IBM_POWER: string, RHEL_X86: string}, RHSM_API_RESPONSE_HOSTS_META_TYPES: {PRODUCT: string, COUNT: string}, - * RHSM_API_RESPONSE_CAPACITY_META_TYPES: {PRODUCT: string, METRIC_ID: string, COUNT: string}, - * RHSM_API_RESPONSE_CAPACITY_DATA_TYPES: {CORES: string, DATE: string, SOCKETS: string, HAS_INFINITE_QUANTITY: string}, - * RHSM_API_RESPONSE_META_TYPES: {PRODUCT: string, COUNT: string}, RHSM_API_RESPONSE_ERRORS_CODE_TYPES: {GENERIC: string, - * OPTIN: string}, RHSM_API_QUERY_GRANULARITY_TYPES: {WEEKLY: string, QUARTERLY: string, DAILY: string, MONTHLY: string}, - * RHSM_API_RESPONSE_UOM_TYPES: {CORES: string, SOCKETS: string}, - * RHSM_API_RESPONSE_SUBSCRIPTIONS_DATA_TYPES: {BILLING_ACCOUNT_ID: string, QUANTITY: string, - * SUBSCRIPTION_MANAGER_ID: string, INVENTORY_ID: string, NUMBER_OF_GUESTS: string, HAS_INFINITE_QUANTITY: string, - * TOTAL_CAPACITY: string, PRODUCT_NAME: string, SERVICE_LEVEL: string, DISPLAY_NAME: string, MEASUREMENTS: string, - * UOM: string, NEXT_EVENT_DATE: string, BILLING_PROVIDER: string, LAST_SEEN: string}, - * RHSM_API_QUERY_INVENTORY_SORT_DIRECTION_TYPES: {ASCENDING: string, DESCENDING: string}, - * RHSM_API_RESPONSE_SUBSCRIPTION_TYPES: {ANNUAL: string, ON_DEMAND: string}, - * RHSM_API_QUERY_INVENTORY_SORT_TYPES: {CORES: string, STORAGE_GIBIBYTES: string, SOCKETS: string, INSTANCE_HOURS: string, - * TRANSFER_GIBIBYTES: string, BILLING_PROVIDER: string, CORE_SECONDS: string, STORAGE_GIBIBYTE_MONTHS: string, - * LAST_SEEN: string, NAME: string}, RHSM_API_PATH_PRODUCT_TYPES: {RHEL_ARM: string, OPENSHIFT_METRICS: string, - * SATELLITE: string, RHEL_WORKSTATION: string, RHODS: string, RHOSAK: string, RHEL_COMPUTE_NODE: string, - * RHEL_X86: string, OPENSHIFT: string, SATELLITE_SERVER: string, OPENSHIFT_DEDICATED_METRICS: string, - * RHEL_DESKTOP: string, RHEL: string, SATELLITE_CAPSULE: string, RHEL_SERVER: string, RHEL_IBM_Z: string, RHACS: string, - * RHEL_IBM_POWER: string}, RHSM_API_RESPONSE_BILLING_PROVIDER_TYPES: {AZURE: string, GCP: string, RED_HAT: string, - * NONE: string, AWS: string, ORACLE: string}, RHSM_API_RESPONSE_ERRORS_TYPES: {CODE: string}, - * RHSM_API_QUERY_BILLING_PROVIDER_TYPES: {AZURE: string, GCP: string, RED_HAT: string, NONE: string, AWS: string, + * RHSM_API_PATH_METRIC_TYPES: {CORES: string, STORAGE_GIBIBYTES: string, SOCKETS: string, INSTANCE_HOURS: string, TRANSFER_GIBIBYTES: string, + * CORE_SECONDS: string, STORAGE_GIBIBYTE_MONTHS: string}, RHSM_API_RESPONSE_INSTANCES_META_TYPES: {MEASUREMENTS: string, PRODUCT: string, + * COUNT: string}, RHSM_API_RESPONSE_INSTANCES_DATA_TYPES: {MEASUREMENTS: string, BILLING_ACCOUNT_ID: string, SUBSCRIPTION_MANAGER_ID: string, + * INVENTORY_ID: string, NUMBER_OF_GUESTS: string, BILLING_PROVIDER: string, DISPLAY_NAME: string, LAST_SEEN: string}, + * RHSM_API_RESPONSE_SLA_TYPES: {PREMIUM: string, SELF: string, NONE: string, STANDARD: string}, + * RHSM_API_PATH_PRODUCT_ARCHITECTURE_RHEL_TYPES: {RHEL_ARM: string, RHEL_IBM_Z: string, RHEL_IBM_POWER: string, RHEL_X86: string}, + * RHSM_API_RESPONSE_HOSTS_META_TYPES: {PRODUCT: string, COUNT: string}, RHSM_API_RESPONSE_META_TYPES: {PRODUCT: string, COUNT: string}, + * RHSM_API_RESPONSE_ERRORS_CODE_TYPES: {GENERIC: string, OPTIN: string}, RHSM_API_QUERY_GRANULARITY_TYPES: {WEEKLY: string, + * QUARTERLY: string, DAILY: string, MONTHLY: string}, RHSM_API_RESPONSE_UOM_TYPES: {CORES: string, SOCKETS: string}, + * RHSM_API_RESPONSE_SUBSCRIPTIONS_DATA_TYPES: {BILLING_ACCOUNT_ID: string, QUANTITY: string, SUBSCRIPTION_MANAGER_ID: string, + * INVENTORY_ID: string, NUMBER_OF_GUESTS: string, HAS_INFINITE_QUANTITY: string, TOTAL_CAPACITY: string, PRODUCT_NAME: string, + * SERVICE_LEVEL: string, DISPLAY_NAME: string, MEASUREMENTS: string, UOM: string, NEXT_EVENT_DATE: string, BILLING_PROVIDER: string, + * LAST_SEEN: string}, RHSM_API_QUERY_INVENTORY_SORT_DIRECTION_TYPES: {ASCENDING: string, DESCENDING: string}, + * RHSM_API_RESPONSE_SUBSCRIPTION_TYPES: {ANNUAL: string, ON_DEMAND: string}, RHSM_API_QUERY_INVENTORY_SORT_TYPES: {CORES: string, + * STORAGE_GIBIBYTES: string, SOCKETS: string, INSTANCE_HOURS: string, TRANSFER_GIBIBYTES: string, BILLING_PROVIDER: string, + * CORE_SECONDS: string, STORAGE_GIBIBYTE_MONTHS: string, LAST_SEEN: string, NAME: string}, RHSM_API_PATH_PRODUCT_TYPES: {RHEL_ARM: string, + * OPENSHIFT_METRICS: string, SATELLITE: string, RHEL_WORKSTATION: string, RHODS: string, RHOSAK: string, RHEL_COMPUTE_NODE: string, + * RHEL_X86: string, OPENSHIFT: string, SATELLITE_SERVER: string, OPENSHIFT_DEDICATED_METRICS: string, RHEL_DESKTOP: string, RHEL: string, + * SATELLITE_CAPSULE: string, RHEL_SERVER: string, RHEL_IBM_Z: string, RHACS: string, RHEL_IBM_POWER: string}, + * RHSM_API_RESPONSE_BILLING_PROVIDER_TYPES: {AZURE: string, GCP: string, RED_HAT: string, NONE: string, AWS: string, ORACLE: string}, + * RHSM_API_RESPONSE_ERRORS_TYPES: {CODE: string}, RHSM_API_RESPONSE_TALLY_CAPACITY_DATA_TYPES: {DATE: string, HAS_DATA: string, + * VALUE: string, HAS_INFINITE_QUANTITY: string}, RHSM_API_RESPONSE_TALLY_CAPACITY_META_TYPES: {TOTAL_MONTHLY: string, DATE: string, + * PRODUCT: string, HAS_CLOUDIGRADE_DATA: string, HAS_CLOUDIGRADE_MISMATCH: string, HAS_DATA: string, METRIC_ID: string, COUNT: string, + * VALUE: string}, RHSM_API_QUERY_BILLING_PROVIDER_TYPES: {AZURE: string, GCP: string, RED_HAT: string, NONE: string, AWS: string, * ORACLE: string}, RHSM_API_QUERY_CATEGORY_TYPES: {CLOUD: string, PHYSICAL: string, HYPERVISOR: string, VIRTUAL: string}, * RHSM_API_QUERY_USAGE_TYPES: {UNSPECIFIED: string, DISASTER: string, DEVELOPMENT: string, PRODUCTION: string}, * RHSM_API_QUERY_SLA_TYPES: {PREMIUM: string, SELF: string, NONE: string, STANDARD: string}, - * RHSM_API_QUERY_SET_INVENTORY_TYPES: {BILLING_ACCOUNT_ID: string, DIRECTION: string, END_DATE: string, SLA: string, - * LIMIT: string, START_DATE: string, VARIANT: string, DISPLAY_NAME: string, UOM: string, USAGE: string, CATEGORY: string, - * ARCHITECTURE: string, SORT: string, OFFSET: string, BILLING_PROVIDER: string}, - * RHSM_API_RESPONSE_HOSTS_DATA_TYPES: {MEASUREMENT_TYPE: string, CORES: string, CORE_HOURS: string, HARDWARE_TYPE: string, - * SUBSCRIPTION_MANAGER_ID: string, INSTANCE_HOURS: string, SOCKETS: string, INVENTORY_ID: string, NUMBER_OF_GUESTS: string, - * DISPLAY_NAME: string, CLOUD_PROVIDER: string, LAST_SEEN: string}, RHSM_API_RESPONSE_ERRORS: string, - * RHSM_API_RESPONSE_TALLY_META_TYPES: {TOTAL_MONTHLY: string, DATE: string, PRODUCT: string, HAS_CLOUDIGRADE_DATA: string, - * HAS_CLOUDIGRADE_MISMATCH: string, HAS_DATA: string, METRIC_ID: string, COUNT: string, VALUE: string}, - * RHSM_API_QUERY_UOM_TYPES: {CORES: string, SOCKETS: string}, RHSM_API_RESPONSE_META: string, + * RHSM_API_QUERY_SET_INVENTORY_TYPES: {BILLING_ACCOUNT_ID: string, DIRECTION: string, END_DATE: string, SLA: string, LIMIT: string, + * START_DATE: string, VARIANT: string, DISPLAY_NAME: string, UOM: string, USAGE: string, CATEGORY: string, ARCHITECTURE: string, + * SORT: string, OFFSET: string, BILLING_PROVIDER: string}, RHSM_API_RESPONSE_HOSTS_DATA_TYPES: {MEASUREMENT_TYPE: string, CORES: string, + * CORE_HOURS: string, HARDWARE_TYPE: string, SUBSCRIPTION_MANAGER_ID: string, INSTANCE_HOURS: string, SOCKETS: string, + * INVENTORY_ID: string, NUMBER_OF_GUESTS: string, DISPLAY_NAME: string, CLOUD_PROVIDER: string, LAST_SEEN: string}, + * RHSM_API_RESPONSE_ERRORS: string, RHSM_API_QUERY_UOM_TYPES: {CORES: string, SOCKETS: string}, RHSM_API_RESPONSE_META: string, * RHSM_API_RESPONSE_GRANULARITY_TYPES: {WEEKLY: string, QUARTERLY: string, DAILY: string, MONTHLY: string}, - * RHSM_API_QUERY_SET_TYPES: {UOM: string, GRANULARITY: string, USAGE: string, DIRECTION: string, SORT: string, - * END_DATE: string, OFFSET: string, SLA: string, LIMIT: string, START_DATE: string, DISPLAY_NAME: string}, - * RHSM_API_QUERY_INVENTORY_SUBSCRIPTIONS_SORT_TYPES: {QUANTITY: string, USAGE: string, NEXT_EVENT_TYPE: string, - * NEXT_EVENT_DATE: string, TOTAL_CAPACITY: string, PRODUCT_NAME: string, SKU: string, SERVICE_LEVEL: string}, - * RHSM_INTERNAL_PRODUCT_DISPLAY_TYPES: {LEGACY: string, DUAL_AXES: string, PARTIAL: string, HOURLY: string}, - * RHSM_API_RESPONSE_USAGE_TYPES: {UNSPECIFIED: string, DISASTER: string, DEVELOPMENT: string, PRODUCTION: string}, - * RHSM_API_QUERY_INVENTORY_HOSTS_SORT_TYPES: {CORES: string, CORE_HOURS: string, HARDWARE: string, INSTANCE_HOURS: string, - * SOCKETS: string, MEASUREMENT: string, LAST_SEEN: string, NAME: string}}} + * RHSM_API_QUERY_SET_TYPES: {UOM: string, GRANULARITY: string, USAGE: string, DIRECTION: string, SORT: string, END_DATE: string, + * OFFSET: string, SLA: string, LIMIT: string, START_DATE: string, DISPLAY_NAME: string}, + * RHSM_API_QUERY_INVENTORY_SUBSCRIPTIONS_SORT_TYPES: {QUANTITY: string, USAGE: string, NEXT_EVENT_TYPE: string, NEXT_EVENT_DATE: string, + * TOTAL_CAPACITY: string, PRODUCT_NAME: string, SKU: string, SERVICE_LEVEL: string}, RHSM_INTERNAL_PRODUCT_DISPLAY_TYPES: {LEGACY: string, + * DUAL_AXES: string, PARTIAL: string, HOURLY: string}, RHSM_API_RESPONSE_USAGE_TYPES: {UNSPECIFIED: string, DISASTER: string, + * DEVELOPMENT: string, PRODUCTION: string}, RHSM_API_QUERY_INVENTORY_HOSTS_SORT_TYPES: {CORES: string, CORE_HOURS: string, HARDWARE: string, + * INSTANCE_HOURS: string, SOCKETS: string, MEASUREMENT: string, LAST_SEEN: string, NAME: string}}} */ const rhsmConstants = { RHSM_API_PATH_PRODUCT_TYPES, RHSM_API_PATH_PRODUCT_ARCHITECTURE_RHEL_TYPES, RHSM_API_PATH_PRODUCT_VARIANT_SATELLITE_TYPES, RHSM_API_PATH_METRIC_TYPES, - RHSM_API_RESPONSE_CAPACITY_DATA_TYPES, - RHSM_API_RESPONSE_CAPACITY_META_TYPES, RHSM_API_RESPONSE_DATA, RHSM_API_RESPONSE_META, RHSM_API_RESPONSE_META_TYPES, @@ -553,8 +521,8 @@ const rhsmConstants = { RHSM_API_RESPONSE_INSTANCES_META_TYPES, RHSM_API_RESPONSE_SUBSCRIPTIONS_DATA_TYPES, RHSM_API_RESPONSE_SUBSCRIPTIONS_META_TYPES, - RHSM_API_RESPONSE_TALLY_DATA_TYPES, - RHSM_API_RESPONSE_TALLY_META_TYPES, + RHSM_API_RESPONSE_TALLY_CAPACITY_DATA_TYPES, + RHSM_API_RESPONSE_TALLY_CAPACITY_META_TYPES, RHSM_API_RESPONSE_GRANULARITY_TYPES, RHSM_API_RESPONSE_BILLING_PROVIDER_TYPES, RHSM_API_RESPONSE_SLA_TYPES, @@ -584,8 +552,6 @@ export { RHSM_API_PATH_PRODUCT_ARCHITECTURE_RHEL_TYPES, RHSM_API_PATH_PRODUCT_VARIANT_SATELLITE_TYPES, RHSM_API_PATH_METRIC_TYPES, - RHSM_API_RESPONSE_CAPACITY_DATA_TYPES, - RHSM_API_RESPONSE_CAPACITY_META_TYPES, RHSM_API_RESPONSE_DATA, RHSM_API_RESPONSE_META, RHSM_API_RESPONSE_META_TYPES, @@ -598,8 +564,8 @@ export { RHSM_API_RESPONSE_INSTANCES_META_TYPES, RHSM_API_RESPONSE_SUBSCRIPTIONS_DATA_TYPES, RHSM_API_RESPONSE_SUBSCRIPTIONS_META_TYPES, - RHSM_API_RESPONSE_TALLY_DATA_TYPES, - RHSM_API_RESPONSE_TALLY_META_TYPES, + RHSM_API_RESPONSE_TALLY_CAPACITY_DATA_TYPES, + RHSM_API_RESPONSE_TALLY_CAPACITY_META_TYPES, RHSM_API_RESPONSE_GRANULARITY_TYPES, RHSM_API_RESPONSE_BILLING_PROVIDER_TYPES, RHSM_API_RESPONSE_SLA_TYPES, diff --git a/src/services/rhsm/rhsmSchemas.js b/src/services/rhsm/rhsmSchemas.js index a1a7a77e4..96e02b32d 100644 --- a/src/services/rhsm/rhsmSchemas.js +++ b/src/services/rhsm/rhsmSchemas.js @@ -45,7 +45,11 @@ const metaResponseSchema = Joi.object() * * @type {*} Joi schema */ -const capacityMetaSchema = metaResponseSchema; +const capacityMetaSchema = metaResponseSchema + .keys({ + metric_id: Joi.string().valid(...Object.values(rhsmConstants.RHSM_API_PATH_METRIC_TYPES)) + }) + .unknown(true); /** * Capacity response item. @@ -53,10 +57,10 @@ const capacityMetaSchema = metaResponseSchema; * @type {*} Joi schema */ const capacityItem = Joi.object({ - cores: Joi.number().allow(null).default(0), date: Joi.date().utc().allow(null), + has_data: Joi.boolean().optional().allow(null), has_infinite_quantity: Joi.boolean().optional().allow(null), - sockets: Joi.number().allow(null).default(0) + value: Joi.number().allow(null).default(0) }) .unknown(true) .default(); diff --git a/src/services/rhsm/rhsmServices.js b/src/services/rhsm/rhsmServices.js index 88af95c4f..c198d5f1c 100644 --- a/src/services/rhsm/rhsmServices.js +++ b/src/services/rhsm/rhsmServices.js @@ -1876,7 +1876,7 @@ const getGraphTally = (id, params = {}, options = {}) => { cancel = true, cancelId, schema = [rhsmSchemas.tally, rhsmSchemas.errors], - transform = [rhsmTransformers.tally] + transform = [rhsmTransformers.tallyCapacity] } = options; const updatedId = (typeof id === 'string' && [id]) || (Array.isArray(id) && id) || []; @@ -1902,7 +1902,7 @@ const getGraphTally = (id, params = {}, options = {}) => { }; /** - * @api {get} /api/rhsm-subscriptions/v1/capacity/products/:product_id Get RHSM graph capacity data, i.e. thresholds + * @api {get} /api/rhsm-subscriptions/v1/capacity/products/:product_id/:metric_id Get RHSM graph capacity data, i.e. thresholds * @apiDescription Retrieve graph capacity data, such as thresholds. * * Reference [RHSM for capacity params and commands](https://github.com/RedHatInsights/rhsm-subscriptions/blob/main/api/rhsm-subscriptions-api-spec.yaml) @@ -1913,232 +1913,198 @@ const getGraphTally = (id, params = {}, options = {}) => { * "data": [ * { * "date": "2020-07-01T00:00:00Z", - * "sockets": 0, - * "physical_sockets": 0, - * "hypervisor_sockets": 0, + * "value": 0, + * "has_data": true, * "has_infinite_quantity": false * }, * { * "date": "2020-07-02T00:00:00Z", - * "sockets": 0, - * "physical_sockets": 0, - * "hypervisor_sockets": 0, + * "value": 0, + * "has_data": true, * "has_infinite_quantity": false * }, * { * "date": "2020-07-03T00:00:00Z", - * "sockets": 0, - * "physical_sockets": 0, - * "hypervisor_sockets": 0, + * "value": 0, + * "has_data": true, * "has_infinite_quantity": false * }, * { * "date": "2020-07-04T00:00:00Z", - * "sockets": 0, - * "physical_sockets": 0, - * "hypervisor_sockets": 0, + * "value": 25, + * "has_data": true, * "has_infinite_quantity": true * }, * { * "date": "2020-07-05T00:00:00Z", - * "sockets": 0, - * "physical_sockets": 0, - * "hypervisor_sockets": 0, + * "value": 50, + * "has_data": false, * "has_infinite_quantity": true * }, * { * "date": "2020-07-06T00:00:00Z", - * "sockets": 0, - * "physical_sockets": 0, - * "hypervisor_sockets": 0, + * "value": 0, + * "has_data": true, * "has_infinite_quantity": true * }, * { * "date": "2020-07-07T00:00:00Z", - * "sockets": 0, - * "physical_sockets": 0, - * "hypervisor_sockets": 0, + * "value": 0, + * "has_data": false, * "has_infinite_quantity": true * }, * { * "date": "2020-07-08T00:00:00Z", - * "sockets": 0, - * "physical_sockets": 0, - * "hypervisor_sockets": 0, + * "value": 0, + * "has_data": false, * "has_infinite_quantity": true * }, * { * "date": "2020-07-09T00:00:00Z", - * "sockets": 0, - * "physical_sockets": 0, - * "hypervisor_sockets": 0, + * "value": 50, + * "has_data": false, * "has_infinite_quantity": true * }, * { * "date": "2020-07-10T00:00:00Z", - * "sockets": 0, - * "physical_sockets": 0, - * "hypervisor_sockets": 0, - * "has_infinite_quantity": true + * "value": 100, + * "has_data": false, + * "has_infinite_quantity": false * }, * { * "date": "2020-07-11T00:00:00Z", - * "sockets": 50, - * "physical_sockets": 50, - * "hypervisor_sockets": 0, + * "value": 100, + * "has_data": null, * "has_infinite_quantity": false * }, * { * "date": "2020-07-12T00:00:00Z", - * "sockets": 50, - * "physical_sockets": 50, - * "hypervisor_sockets": 0, + * "has_data": null, * "has_infinite_quantity": false * }, * { * "date": "2020-07-13T00:00:00Z", - * "sockets": 50, - * "physical_sockets": 50, - * "hypervisor_sockets": 0, + * "has_data": false, * "has_infinite_quantity": false * }, * { * "date": "2020-07-14T00:00:00Z", - * "sockets": 50, - * "physical_sockets": 50, - * "hypervisor_sockets": 0, + * "value": null, + * "has_data": false, * "has_infinite_quantity": false * }, * { * "date": "2020-07-15T00:00:00Z", - * "sockets": 50, - * "physical_sockets": 50, - * "hypervisor_sockets": 0, + * "value": null, + * "has_data": false, * "has_infinite_quantity": false * }, * { * "date": "2020-07-16T00:00:00Z", - * "sockets": 50, - * "physical_sockets": 50, - * "hypervisor_sockets": 0, + * "value": null, + * "has_data": false, * "has_infinite_quantity": false * }, * { * "date": "2020-07-17T00:00:00Z", - * "sockets": 50, - * "physical_sockets": 50, - * "hypervisor_sockets": 0, + * "value": null, + * "has_data": false, * "has_infinite_quantity": false * }, * { * "date": "2020-07-18T00:00:00Z", - * "sockets": 50, - * "physical_sockets": 50, - * "hypervisor_sockets": 0, + * "value": null, + * "has_data": true, * "has_infinite_quantity": false * }, * { * "date": "2020-07-19T00:00:00Z", - * "sockets": 50, - * "physical_sockets": 50, - * "hypervisor_sockets": 0, + * "value": null, + * "has_data": true, * "has_infinite_quantity": false * }, * { * "date": "2020-07-20T00:00:00Z", - * "sockets": 50, - * "physical_sockets": 32, - * "hypervisor_sockets": 18, + * "value": 200, + * "has_data": true, * "has_infinite_quantity": false * }, * { * "date": "2020-07-21T00:00:00Z", - * "sockets": 50, - * "physical_sockets": 32, - * "hypervisor_sockets": 18, + * "value": 200, + * "has_data": true, * "has_infinite_quantity": false * }, * { * "date": "2020-07-22T00:00:00Z", - * "sockets": 50, - * "physical_sockets": 32, - * "hypervisor_sockets": 18, + * "value": 200, + * "has_data": true, * "has_infinite_quantity": false * }, * { * "date": "2020-07-23T00:00:00Z", - * "sockets": null, - * "physical_sockets": null, - * "hypervisor_sockets": null, + * "value": 200, + * "has_data": false, * "has_infinite_quantity": false * }, * { * "date": "2020-07-24T00:00:00Z", - * "sockets": null, - * "physical_sockets": null, - * "hypervisor_sockets": null, + * "value": 200, + * "has_data": true, * "has_infinite_quantity": true * }, * { * "date": "2020-07-25T00:00:00Z", - * "sockets": 100, - * "physical_sockets": 75, - * "hypervisor_sockets": 25, + * "value": 200, + * "has_data": true, * "has_infinite_quantity": true * }, * { * "date": "2020-07-26T00:00:00Z", - * "sockets": 100, - * "physical_sockets": 75, - * "hypervisor_sockets": 25, + * "value": 200, + * "has_data": true, * "has_infinite_quantity": true * }, * { * "date": "2020-07-27T00:00:00Z", - * "sockets": 100, - * "physical_sockets": 75, - * "hypervisor_sockets": 25, + * "value": 200, + * "has_data": true, * "has_infinite_quantity": true * }, * { * "date": "2020-07-28T00:00:00Z", - * "sockets": 100, - * "physical_sockets": 75, - * "hypervisor_sockets": 25, + * "value": 200, + * "has_data": true, * "has_infinite_quantity": true * }, * { * "date": "2020-07-29T00:00:00Z", - * "sockets": 100, - * "physical_sockets": 75, - * "hypervisor_sockets": 25, + * "value": 200, + * "has_data": true, * "has_infinite_quantity": true * }, * { * "date": "2020-07-30T00:00:00Z", - * "sockets": 100, - * "physical_sockets": 75, - * "hypervisor_sockets": 25, + * "value": 200, + * "has_data": true, * "has_infinite_quantity": true * }, * { * "date": "2020-07-31T00:00:00Z", - * "sockets": 100, - * "physical_sockets": 75, - * "hypervisor_sockets": 25, + * "value": 200, + * "has_data": true, * "has_infinite_quantity": true * } * ], - * "links": { - * "first": "/api/rhsm-subscriptions/v1/capacity/products/RHEL?granularity=daily&beginning=2020-07-20T00:00:00.000Z&ending=2020-08-19T23:59:59.999Z&offset=0", - * "last": "/api/rhsm-subscriptions/v1/capacity/products/RHEL?granularity=daily&beginning=2020-07-20T00:00:00.000Z&ending=2020-08-19T23:59:59.999Z&offset=0", - * "previous": null, - * "next": "/api/rhsm-subscriptions/v1/capacity/products/RHEL?granularity=daily&beginning=2020-07-20T00:00:00.000Z&ending=2020-08-19T23:59:59.999Z&offset=0" - * }, + * "links": {}, * "meta": { - * "count": 11, + * "count": 31, * "product": "RHEL", - * "granularity": "daily" + * "metric_id": "Sockets", + * "granularity": "daily", + * "service_level": "", + * "usage": "", + * "category": "" * } * } * @@ -2182,28 +2148,6 @@ const getGraphTally = (id, params = {}, options = {}) => { * ] * } */ -/** - * Get RHSM API capacity/threshold graph/chart data. - * - * @param {string} id Product ID - * @param {object} params Query/search params - * @param {object} options - * @param {boolean} options.cancel - * @param {string} options.cancelId - * @returns {Promise<*>} - */ -const getGraphCapacityDeprecated = (id, params = {}, options = {}) => { - const { cache = true, cancel = true, cancelId } = options; - const updatedId = rhsmHelpers.filterArchitectureVariant(id, params); - return serviceCall({ - url: `${process.env.REACT_APP_SERVICES_RHSM_CAPACITY_DEPRECATED}${updatedId}`, - params, - cache, - cancel, - cancelId - }); -}; - /** * Get RHSM API capacity/threshold graph/chart data. * @@ -2220,25 +2164,19 @@ const getGraphCapacity = (id, params = {}, options = {}) => { cancel = true, cancelId, schema = [rhsmSchemas.capacity, rhsmSchemas.errors], - transform = [rhsmTransformers.capacity] + transform = [rhsmTransformers.tallyCapacity] } = options; const updatedId = (typeof id === 'string' && [id]) || (Array.isArray(id) && id) || []; - let url = `${process.env.REACT_APP_SERVICES_RHSM_CAPACITY_DEPRECATED}`; + let url = `${process.env.REACT_APP_SERVICES_RHSM_CAPACITY}`; updatedId.forEach((value, index) => { + let updatedValue = value; if (index === 0) { - const updatedValue = rhsmHelpers.filterArchitectureVariant(value, params); - url = `${url}${updatedValue}`; + updatedValue = rhsmHelpers.filterArchitectureVariant(value, params); } - }); - /** - * ToDo: remove this if/when capacity supports metric identifiers in its path - * We're emulating metric identifiers for the capacity endpoint to align with Tally updates, - * and provide consistency for consuming components. The value is passed via Redux action -> - * to service call -> to transformer. - */ - const _metricId = updatedId?.[1]; + url = url.replace(`{${index}}`, updatedValue); + }); return serviceCall({ url, @@ -2247,8 +2185,7 @@ const getGraphCapacity = (id, params = {}, options = {}) => { cancel, cancelId, schema, - transform, - _metricId + transform }); }; @@ -2842,7 +2779,6 @@ const getSubscriptionsInventory = (id, params = {}, options = {}) => { const rhsmServices = { getApiVersion, getGraphCapacity, - getGraphCapacityDeprecated, getGraphReports, getGraphTally, getHostsInventory, @@ -2861,7 +2797,6 @@ export { rhsmServices, getApiVersion, getGraphCapacity, - getGraphCapacityDeprecated, getGraphReports, getGraphTally, getHostsInventory, diff --git a/src/services/rhsm/rhsmTransformers.js b/src/services/rhsm/rhsmTransformers.js index 4d8eb8ae2..d9f7d48cf 100644 --- a/src/services/rhsm/rhsmTransformers.js +++ b/src/services/rhsm/rhsmTransformers.js @@ -1,92 +1,16 @@ import moment from 'moment'; import { RHSM_API_QUERY_SET_TYPES, - RHSM_API_RESPONSE_CAPACITY_DATA_TYPES as CAPACITY_DATA_TYPES, - RHSM_API_RESPONSE_CAPACITY_META_TYPES as CAPACITY_META_TYPES, RHSM_API_RESPONSE_HOSTS_DATA_TYPES as HOSTS_DATA_TYPES, RHSM_API_RESPONSE_HOSTS_META_TYPES as HOSTS_META_TYPES, RHSM_API_RESPONSE_INSTANCES_DATA_TYPES as INSTANCES_DATA_TYPES, RHSM_API_RESPONSE_INSTANCES_META_TYPES as INSTANCES_META_TYPES, - RHSM_API_RESPONSE_TALLY_DATA_TYPES as TALLY_DATA_TYPES, - RHSM_API_RESPONSE_TALLY_META_TYPES as TALLY_META_TYPES, + RHSM_API_RESPONSE_TALLY_CAPACITY_DATA_TYPES as TALLY_CAPACITY_DATA_TYPES, + RHSM_API_RESPONSE_TALLY_CAPACITY_META_TYPES as TALLY_CAPACITY_META_TYPES, rhsmConstants } from './rhsmConstants'; import { dateHelpers } from '../../common'; -/** - * FixMe: The capacity transformer is emulating metric identifier behavior to provide a consistent component update path. - * The _metricId passed via configuration should be removed in favor of the transformer pattern used by "rhsmTally". - * Review using the same transformer for both Tally and Capacity once Capacity is fully aligned with Tally. - */ -/** - * Parse RHSM capacity response for caching. - * - * @param {object} response - * @param {object} config - * @param {string} config._metricId - * @param {string} config.params - * @returns {object} - */ -const rhsmCapacity = (response, { _metricId, params } = {}) => { - const updatedResponse = {}; - const { [rhsmConstants.RHSM_API_RESPONSE_DATA]: data = [], [rhsmConstants.RHSM_API_RESPONSE_META]: meta = {} } = - response || {}; - const currentDate = moment.utc(dateHelpers.getCurrentDate()); - const currentDateStr = moment.utc(dateHelpers.getCurrentDate()).format('MM-D-YYYY'); - let futureDateCount = 0; - - updatedResponse.data = data.map( - ( - { - [CAPACITY_DATA_TYPES.DATE]: date, - [_metricId?.toLowerCase()]: value, - [CAPACITY_DATA_TYPES.HAS_INFINITE_QUANTITY]: hasInfiniteQuantity - }, - index - ) => { - const updatedDate = moment.utc(date); - const isCurrentDate = updatedDate.format('MM-D-YYYY') === currentDateStr; - const isFutureDate = updatedDate.diff(currentDate) > 0; - - if (isFutureDate && !isCurrentDate) { - futureDateCount += 1; - } - - return { - x: index, - y: isFutureDate || hasInfiniteQuantity === true ? null : value, - date, - hasInfiniteQuantity, - isCurrentDate, - isFutureDate - }; - } - ); - - /** - * Add an extra date to the first entry of the range to help Victory charts display. - */ - if (futureDateCount === updatedResponse.data.length - 1) { - updatedResponse.data = [ - { - ...updatedResponse.data[0], - x: 0, - isCurrentDate: false - }, - ...updatedResponse.data - ].map((props, index) => ({ ...props, x: index })); - } - - updatedResponse.meta = { - category: params?.[RHSM_API_QUERY_SET_TYPES.CATEGORY], - count: meta[CAPACITY_META_TYPES.COUNT], - metricId: _metricId, - productId: meta[CAPACITY_META_TYPES.PRODUCT] - }; - - return updatedResponse; -}; - /** * Parse RHSM hosts response for caching. * @@ -165,9 +89,9 @@ const rhsmInstances = response => { }; /** - * ToDo: Evaluate granularity alterations, transform logic is targeted at daily granularity - * Specifically, the "isCurrentDate" condition is targeted at daily. Weekly, monthly, and - * quarterly have not been tested, and may need logic adjustments for "isCurrentLikeDate". + * ToDo: Confirm category meta response for Capacity + * We're temporarily applying category from submitted params. API docs indicate + * category only comes through on metric capacity? */ /** * Parse RHSM tally response for caching. @@ -177,7 +101,7 @@ const rhsmInstances = response => { * @param {string} config.params * @returns {object} */ -const rhsmTally = (response, { params } = {}) => { +const rhsmTallyCapacity = (response, { params } = {}) => { const updatedResponse = {}; const { [rhsmConstants.RHSM_API_RESPONSE_DATA]: data = [], [rhsmConstants.RHSM_API_RESPONSE_META]: meta = {} } = response || {}; @@ -187,7 +111,12 @@ const rhsmTally = (response, { params } = {}) => { updatedResponse.data = data.map( ( - { [TALLY_DATA_TYPES.DATE]: date, [TALLY_DATA_TYPES.VALUE]: value, [TALLY_DATA_TYPES.HAS_DATA]: hasData }, + { + [TALLY_CAPACITY_DATA_TYPES.DATE]: date, + [TALLY_CAPACITY_DATA_TYPES.VALUE]: value, + [TALLY_CAPACITY_DATA_TYPES.HAS_DATA]: hasData, + [TALLY_CAPACITY_DATA_TYPES.HAS_INFINITE_QUANTITY]: hasInfiniteQuantity + }, index ) => { const updatedDate = moment.utc(date); @@ -200,9 +129,13 @@ const rhsmTally = (response, { params } = {}) => { return { x: index, - y: (hasData === false && isFutureDate) || (hasData === false && isCurrentDate) ? null : value, + y: + (hasData === false && isFutureDate) || (hasData === false && isCurrentDate) || hasInfiniteQuantity === true + ? null + : value, date, hasData, + hasInfiniteQuantity, isCurrentDate, isFutureDate }; @@ -225,23 +158,22 @@ const rhsmTally = (response, { params } = {}) => { updatedResponse.meta = { category: params?.[RHSM_API_QUERY_SET_TYPES.CATEGORY], - count: meta[TALLY_META_TYPES.COUNT], - cloudigradeHasMismatch: meta?.[TALLY_META_TYPES.HAS_CLOUDIGRADE_MISMATCH], - metricId: meta[TALLY_META_TYPES.METRIC_ID], - productId: meta[TALLY_META_TYPES.PRODUCT], - totalMonthlyDate: meta?.[TALLY_META_TYPES.TOTAL_MONTHLY]?.[TALLY_META_TYPES.DATE], - totalMonthlyHasData: meta?.[TALLY_META_TYPES.TOTAL_MONTHLY]?.[TALLY_META_TYPES.HAS_DATA], - totalMonthlyValue: meta?.[TALLY_META_TYPES.TOTAL_MONTHLY]?.[TALLY_META_TYPES.VALUE] + count: meta[TALLY_CAPACITY_META_TYPES.COUNT], + cloudigradeHasMismatch: meta?.[TALLY_CAPACITY_META_TYPES.HAS_CLOUDIGRADE_MISMATCH], + metricId: meta[TALLY_CAPACITY_META_TYPES.METRIC_ID], + productId: meta[TALLY_CAPACITY_META_TYPES.PRODUCT], + totalMonthlyDate: meta?.[TALLY_CAPACITY_META_TYPES.TOTAL_MONTHLY]?.[TALLY_CAPACITY_META_TYPES.DATE], + totalMonthlyHasData: meta?.[TALLY_CAPACITY_META_TYPES.TOTAL_MONTHLY]?.[TALLY_CAPACITY_META_TYPES.HAS_DATA], + totalMonthlyValue: meta?.[TALLY_CAPACITY_META_TYPES.TOTAL_MONTHLY]?.[TALLY_CAPACITY_META_TYPES.VALUE] }; return updatedResponse; }; const rhsmTransformers = { - capacity: rhsmCapacity, hosts: rhsmHosts, instances: rhsmInstances, - tally: rhsmTally + tallyCapacity: rhsmTallyCapacity }; -export { rhsmTransformers as default, rhsmTransformers, rhsmCapacity, rhsmHosts, rhsmInstances, rhsmTally }; +export { rhsmTransformers as default, rhsmTransformers, rhsmHosts, rhsmInstances, rhsmTallyCapacity };