diff --git a/ui/app/components/clients/dashboard.js b/ui/app/components/clients/dashboard.js index b9e1011c5a..23ebe23fec 100644 --- a/ui/app/components/clients/dashboard.js +++ b/ui/app/components/clients/dashboard.js @@ -113,7 +113,10 @@ export default class Dashboard extends Component { // on init, date is automatically pulled from license start date and user hasn't queried anything yet message = 'Your license start date is'; } - if (isAfter(activityStartDateObject, queryStartDateObject)) { + if ( + isAfter(activityStartDateObject, queryStartDateObject) && + !isSameMonth(activityStartDateObject, queryStartDateObject) + ) { return `${message} ${parseAPITimestamp(this.startMonthTimestamp, 'MMMM yyyy')}. We only have data from ${parseAPITimestamp(this.getActivityResponse.startTime, 'MMMM yyyy')}, and that is what is being shown here.`; @@ -237,7 +240,7 @@ export default class Dashboard extends Component { // new client data for horizontal bar chart get newClientAttribution() { // new client attribution only available in a single, historical month (not a date range or current month) - if (this.isDateRange) return null; + if (this.isDateRange || this.isCurrentMonth) return null; if (this.selectedNamespace) { return this.newClientCounts?.mounts || null; diff --git a/ui/app/components/clients/running-total.js b/ui/app/components/clients/running-total.js index 6c3b09951b..56076d39c0 100644 --- a/ui/app/components/clients/running-total.js +++ b/ui/app/components/clients/running-total.js @@ -72,17 +72,18 @@ export default class RunningTotal extends Component { get showSingleMonth() { if (this.args.lineChartData?.length === 1) { + const totalData = this.args.runningTotals; const monthData = this.args?.lineChartData[0]; return { total: { - total: monthData.clients, - entityClients: monthData.entity_clients, - nonEntityClients: monthData.non_entity_clients, + total: totalData.clients, + entityClients: totalData.entity_clients, + nonEntityClients: totalData.non_entity_clients, }, new: { - total: monthData.new_clients.clients, - entityClients: monthData.new_clients.entity_clients, - nonEntityClients: monthData.new_clients.non_entity_clients, + total: monthData.new_clients.clients || 0, + entityClients: monthData.new_clients.entity_clients || 0, + nonEntityClients: monthData.new_clients.non_entity_clients || 0, }, }; } diff --git a/ui/mirage/handlers/activity.js b/ui/mirage/handlers/activity.js deleted file mode 100644 index c783f8be1e..0000000000 --- a/ui/mirage/handlers/activity.js +++ /dev/null @@ -1,5666 +0,0 @@ -export default function (server) { - // 1.10 API response - server.get('sys/version-history', function () { - return { - keys: ['1.9.0', '1.9.1', '1.9.2'], - key_info: { - '1.9.0': { - previous_version: null, - timestamp_installed: '2021-11-03T10:23:16Z', - }, - '1.9.1': { - previous_version: '1.9.0', - timestamp_installed: '2021-12-03T10:23:16Z', - }, - '1.9.2': { - previous_version: '1.9.1', - timestamp_installed: '2021-01-03T10:23:16Z', - }, - }, - }; - }); - - server.get('sys/internal/counters/config', function () { - return { - request_id: '00001', - data: { - default_report_months: 12, - enabled: 'default-enable', - queries_available: true, - retention_months: 24, - }, - }; - }); - - server.get( - '/sys/internal/counters/activity', - function (_, req) { - const start_time = req.queryParams.start_time || '2021-03-17T00:00:00Z'; - const end_time = req.queryParams.end_time || '2021-12-31T23:59:59Z'; - return { - request_id: '26be5ab9-dcac-9237-ec12-269a8ca647d5', - data: { - start_time, - end_time, - total: { - _comment1: 'total client counts', - clients: 3637, - _comment2: 'following 2 fields are deprecated', - entity_clients: 1643, - non_entity_clients: 1994, - }, - by_namespace: [ - { - namespace_id: '5SWT8', - namespace_path: 'namespacelonglonglong4/', - counts: { - entity_clients: 171, - non_entity_clients: 20, - clients: 191, - }, - mounts: [ - { - path: 'auth/method/uMGBU', - counts: { - clients: 35, - entity_clients: 20, - non_entity_clients: 15, - }, - }, - { - path: 'auth/method/8YJO3', - counts: { - clients: 28, - entity_clients: 18, - non_entity_clients: 10, - }, - }, - { - path: 'auth/method/Ro774', - counts: { - clients: 25, - entity_clients: 15, - non_entity_clients: 10, - }, - }, - { - path: 'auth/method/ZIpjT', - counts: { - clients: 20, - entity_clients: 10, - non_entity_clients: 10, - }, - }, - { - path: 'auth/method/jdRjF', - counts: { - clients: 27, - entity_clients: 15, - non_entity_clients: 12, - }, - }, - { - path: 'auth/method/yyBoC', - counts: { - clients: 24, - entity_clients: 14, - non_entity_clients: 10, - }, - }, - { - path: 'auth/method/WLxYp', - counts: { - clients: 18, - entity_clients: 11, - non_entity_clients: 7, - }, - }, - { - path: 'auth/method/SNM6V', - counts: { - clients: 5, - entity_clients: 2, - non_entity_clients: 3, - }, - }, - { - path: 'auth/method/vNHtH', - counts: { - clients: 9, - entity_clients: 5, - non_entity_clients: 4, - }, - }, - { - path: 'auth/method/EqmlO', - counts: { - clients: 0, - entity_clients: 0, - non_entity_clients: 0, - }, - }, - ], - }, - { - namespace_id: 'BCl56', - namespace_path: 'namespace8/', - counts: { - entity_clients: 141, - non_entity_clients: 47, - clients: 188, - }, - mounts: [ - { - path: 'auth/method/LpVqc', - counts: { - clients: 35, - entity_clients: 20, - non_entity_clients: 15, - }, - }, - { - path: 'auth/method/VFHO6', - counts: { - clients: 33, - entity_clients: 19, - non_entity_clients: 14, - }, - }, - { - path: 'auth/method/utu0r', - counts: { - clients: 25, - entity_clients: 16, - non_entity_clients: 9, - }, - }, - { - path: 'auth/method/xikiW', - counts: { - clients: 25, - entity_clients: 13, - non_entity_clients: 12, - }, - }, - { - path: 'auth/method/uPSo6', - counts: { - clients: 18, - entity_clients: 12, - non_entity_clients: 6, - }, - }, - { - path: 'auth/method/Z8fpo', - counts: { - clients: 14, - entity_clients: 7, - non_entity_clients: 7, - }, - }, - { - path: 'auth/method/5BBm7', - counts: { - clients: 10, - entity_clients: 8, - non_entity_clients: 2, - }, - }, - { - path: 'auth/method/Eyxkz', - counts: { - clients: 11, - entity_clients: 8, - non_entity_clients: 3, - }, - }, - { - path: 'auth/method/QBC0w', - counts: { - clients: 13, - entity_clients: 9, - non_entity_clients: 4, - }, - }, - { - path: 'auth/method/8MdGr', - counts: { - clients: 4, - entity_clients: 3, - non_entity_clients: 1, - }, - }, - ], - }, - { - namespace_id: 'yHcL9', - namespace_path: 'namespace11/', - counts: { - entity_clients: 10, - non_entity_clients: 176, - clients: 186, - }, - mounts: [ - { - path: 'auth/method/qT4Wl', - counts: { - clients: 33, - entity_clients: 20, - non_entity_clients: 13, - }, - }, - { - path: 'auth/method/Vhu56', - counts: { - clients: 22, - entity_clients: 8, - non_entity_clients: 14, - }, - }, - { - path: 'auth/method/PCc58', - counts: { - clients: 29, - entity_clients: 16, - non_entity_clients: 13, - }, - }, - { - path: 'auth/method/nPP4c', - counts: { - clients: 20, - entity_clients: 13, - non_entity_clients: 7, - }, - }, - { - path: 'auth/method/LY3am', - counts: { - clients: 29, - entity_clients: 16, - non_entity_clients: 13, - }, - }, - { - path: 'auth/method/McQ4X', - counts: { - clients: 20, - entity_clients: 15, - non_entity_clients: 5, - }, - }, - { - path: 'auth/method/NpjhH', - counts: { - clients: 17, - entity_clients: 11, - non_entity_clients: 6, - }, - }, - { - path: 'auth/method/ToKO8', - counts: { - clients: 12, - entity_clients: 9, - non_entity_clients: 3, - }, - }, - { - path: 'auth/method/wfApH', - counts: { - clients: 3, - entity_clients: 2, - non_entity_clients: 1, - }, - }, - { - path: 'auth/method/L9uWV', - counts: { - clients: 1, - entity_clients: 0, - non_entity_clients: 1, - }, - }, - ], - }, - { - namespace_id: 'bw5UO', - namespace_path: 'namespace6/', - counts: { - entity_clients: 29, - non_entity_clients: 155, - clients: 184, - }, - mounts: [ - { - path: 'auth/method/XQUrA', - counts: { - clients: 34, - entity_clients: 19, - non_entity_clients: 15, - }, - }, - { - path: 'auth/method/1p6HR', - counts: { - clients: 30, - entity_clients: 15, - non_entity_clients: 15, - }, - }, - { - path: 'auth/method/qRjoJ', - counts: { - clients: 24, - entity_clients: 12, - non_entity_clients: 12, - }, - }, - { - path: 'auth/method/x9QQB', - counts: { - clients: 27, - entity_clients: 16, - non_entity_clients: 11, - }, - }, - { - path: 'auth/method/rezK4', - counts: { - clients: 20, - entity_clients: 15, - non_entity_clients: 5, - }, - }, - { - path: 'auth/method/qWNSS', - counts: { - clients: 23, - entity_clients: 15, - non_entity_clients: 8, - }, - }, - { - path: 'auth/method/OmQEf', - counts: { - clients: 14, - entity_clients: 10, - non_entity_clients: 4, - }, - }, - { - path: 'auth/method/PhoAy', - counts: { - clients: 8, - entity_clients: 6, - non_entity_clients: 2, - }, - }, - { - path: 'auth/method/aUuyM', - counts: { - clients: 3, - entity_clients: 3, - non_entity_clients: 0, - }, - }, - { - path: 'auth/method/kUj1S', - counts: { - clients: 1, - entity_clients: 1, - non_entity_clients: 0, - }, - }, - ], - }, - { - namespace_id: 'F0xGm', - namespace_path: 'namespace10/', - counts: { - entity_clients: 75, - non_entity_clients: 107, - clients: 182, - }, - mounts: [ - { - path: 'auth/method/xYL0l', - counts: { - clients: 34, - entity_clients: 19, - non_entity_clients: 15, - }, - }, - { - path: 'auth/method/CwWM7', - counts: { - clients: 25, - entity_clients: 13, - non_entity_clients: 12, - }, - }, - { - path: 'auth/method/swCd0', - counts: { - clients: 29, - entity_clients: 17, - non_entity_clients: 12, - }, - }, - { - path: 'auth/method/0CZTs', - counts: { - clients: 21, - entity_clients: 8, - non_entity_clients: 13, - }, - }, - { - path: 'auth/method/9v04G', - counts: { - clients: 21, - entity_clients: 13, - non_entity_clients: 8, - }, - }, - { - path: 'auth/method/6hAlO', - counts: { - clients: 23, - entity_clients: 12, - non_entity_clients: 11, - }, - }, - { - path: 'auth/method/ydSdP', - counts: { - clients: 8, - entity_clients: 4, - non_entity_clients: 4, - }, - }, - { - path: 'auth/method/i0CTY', - counts: { - clients: 8, - entity_clients: 6, - non_entity_clients: 2, - }, - }, - { - path: 'auth/method/nevwU', - counts: { - clients: 6, - entity_clients: 3, - non_entity_clients: 3, - }, - }, - { - path: 'auth/method/k2jYC', - counts: { - clients: 7, - entity_clients: 4, - non_entity_clients: 3, - }, - }, - ], - }, - { - namespace_id: 'MSgZE', - namespace_path: 'namespace7/', - counts: { - entity_clients: 72, - non_entity_clients: 109, - clients: 181, - }, - mounts: [ - { - path: 'auth/method/gD50V', - counts: { - clients: 31, - entity_clients: 19, - non_entity_clients: 12, - }, - }, - { - path: 'auth/method/iJRmf', - counts: { - clients: 31, - entity_clients: 17, - non_entity_clients: 14, - }, - }, - { - path: 'auth/method/GrNjy', - counts: { - clients: 18, - entity_clients: 12, - non_entity_clients: 6, - }, - }, - { - path: 'auth/method/r0Uw3', - counts: { - clients: 23, - entity_clients: 11, - non_entity_clients: 12, - }, - }, - { - path: 'auth/method/k2lQG', - counts: { - clients: 25, - entity_clients: 18, - non_entity_clients: 7, - }, - }, - { - path: 'auth/method/hJxto', - counts: { - clients: 15, - entity_clients: 8, - non_entity_clients: 7, - }, - }, - { - path: 'auth/method/vtDck', - counts: { - clients: 16, - entity_clients: 8, - non_entity_clients: 8, - }, - }, - { - path: 'auth/method/1CenH', - counts: { - clients: 9, - entity_clients: 4, - non_entity_clients: 5, - }, - }, - { - path: 'auth/method/M47Ey', - counts: { - clients: 8, - entity_clients: 4, - non_entity_clients: 4, - }, - }, - { - path: 'auth/method/gVT0t', - counts: { - clients: 5, - entity_clients: 5, - non_entity_clients: 0, - }, - }, - ], - }, - { - namespace_id: 'AAidI', - namespace_path: 'namespace20/', - counts: { - entity_clients: 39, - non_entity_clients: 141, - clients: 180, - }, - mounts: [ - { - path: 'auth/method/zolCO', - counts: { - clients: 35, - entity_clients: 20, - non_entity_clients: 15, - }, - }, - { - path: 'auth/method/6p3g4', - counts: { - clients: 26, - entity_clients: 15, - non_entity_clients: 11, - }, - }, - { - path: 'auth/method/iKOdR', - counts: { - clients: 22, - entity_clients: 12, - non_entity_clients: 10, - }, - }, - { - path: 'auth/method/brnKt', - counts: { - clients: 30, - entity_clients: 19, - non_entity_clients: 11, - }, - }, - { - path: 'auth/method/qK3rr', - counts: { - clients: 17, - entity_clients: 12, - non_entity_clients: 5, - }, - }, - { - path: 'auth/method/DmAuN', - counts: { - clients: 13, - entity_clients: 7, - non_entity_clients: 6, - }, - }, - { - path: 'auth/method/krE4t', - counts: { - clients: 21, - entity_clients: 13, - non_entity_clients: 8, - }, - }, - { - path: 'auth/method/sFrWK', - counts: { - clients: 11, - entity_clients: 10, - non_entity_clients: 1, - }, - }, - { - path: 'auth/method/bQg4l', - counts: { - clients: 4, - entity_clients: 2, - non_entity_clients: 2, - }, - }, - { - path: 'auth/method/Jaw0k', - counts: { - clients: 1, - entity_clients: 0, - non_entity_clients: 1, - }, - }, - ], - }, - { - namespace_id: '5KxXA', - namespace_path: 'namespace18anotherlong/', - counts: { - entity_clients: 168, - non_entity_clients: 11, - clients: 179, - }, - mounts: [ - { - path: 'auth/method/GkDM1', - counts: { - clients: 33, - entity_clients: 18, - non_entity_clients: 15, - }, - }, - { - path: 'auth/method/7deLa', - counts: { - clients: 30, - entity_clients: 15, - non_entity_clients: 15, - }, - }, - { - path: 'auth/method/Ash3Y', - counts: { - clients: 30, - entity_clients: 17, - non_entity_clients: 13, - }, - }, - { - path: 'auth/method/doKJ0', - counts: { - clients: 21, - entity_clients: 13, - non_entity_clients: 8, - }, - }, - { - path: 'auth/method/9Irmo', - counts: { - clients: 13, - entity_clients: 5, - non_entity_clients: 8, - }, - }, - { - path: 'auth/method/jdYx5', - counts: { - clients: 18, - entity_clients: 12, - non_entity_clients: 6, - }, - }, - { - path: 'auth/method/sYe2h', - counts: { - clients: 11, - entity_clients: 6, - non_entity_clients: 5, - }, - }, - { - path: 'auth/method/Z5F36', - counts: { - clients: 6, - entity_clients: 3, - non_entity_clients: 3, - }, - }, - { - path: 'auth/method/O0cuK', - counts: { - clients: 11, - entity_clients: 6, - non_entity_clients: 5, - }, - }, - { - path: 'auth/method/0clSt', - counts: { - clients: 6, - entity_clients: 2, - non_entity_clients: 4, - }, - }, - ], - }, - { - namespace_id: 'yYNw2', - namespace_path: 'namespace19/', - counts: { - entity_clients: 50, - non_entity_clients: 129, - clients: 179, - }, - mounts: [ - { - path: 'auth/method/zD8lQ', - counts: { - clients: 31, - entity_clients: 16, - non_entity_clients: 15, - }, - }, - { - path: 'auth/method/Dl96I', - counts: { - clients: 31, - entity_clients: 19, - non_entity_clients: 12, - }, - }, - { - path: 'auth/method/ElIse', - counts: { - clients: 31, - entity_clients: 19, - non_entity_clients: 12, - }, - }, - { - path: 'auth/method/AXzhE', - counts: { - clients: 20, - entity_clients: 13, - non_entity_clients: 7, - }, - }, - { - path: 'auth/method/cNuC6', - counts: { - clients: 22, - entity_clients: 12, - non_entity_clients: 10, - }, - }, - { - path: 'auth/method/gXtbE', - counts: { - clients: 20, - entity_clients: 13, - non_entity_clients: 7, - }, - }, - { - path: 'auth/method/PptIE', - counts: { - clients: 12, - entity_clients: 7, - non_entity_clients: 5, - }, - }, - { - path: 'auth/method/QILdh', - counts: { - clients: 7, - entity_clients: 5, - non_entity_clients: 2, - }, - }, - { - path: 'auth/method/cClAS', - counts: { - clients: 2, - entity_clients: 2, - non_entity_clients: 0, - }, - }, - { - path: 'auth/method/YYm3v', - counts: { - clients: 3, - entity_clients: 3, - non_entity_clients: 0, - }, - }, - ], - }, - { - namespace_id: 'R6L40', - namespace_path: 'namespace2/', - counts: { - entity_clients: 121, - non_entity_clients: 56, - clients: 177, - }, - mounts: [ - { - path: 'auth/method/824CE', - counts: { - clients: 33, - entity_clients: 18, - non_entity_clients: 15, - }, - }, - { - path: 'auth/method/r2zb4', - counts: { - clients: 29, - entity_clients: 17, - non_entity_clients: 12, - }, - }, - { - path: 'auth/method/1zfD6', - counts: { - clients: 25, - entity_clients: 15, - non_entity_clients: 10, - }, - }, - { - path: 'auth/method/L14lj', - counts: { - clients: 24, - entity_clients: 14, - non_entity_clients: 10, - }, - }, - { - path: 'auth/method/cTsw9', - counts: { - clients: 19, - entity_clients: 12, - non_entity_clients: 7, - }, - }, - { - path: 'auth/method/3KTWZ', - counts: { - clients: 19, - entity_clients: 11, - non_entity_clients: 8, - }, - }, - { - path: 'auth/method/Douf5', - counts: { - clients: 13, - entity_clients: 6, - non_entity_clients: 7, - }, - }, - { - path: 'auth/method/30eez', - counts: { - clients: 9, - entity_clients: 7, - non_entity_clients: 2, - }, - }, - { - path: 'auth/method/xSSJz', - counts: { - clients: 5, - entity_clients: 3, - non_entity_clients: 2, - }, - }, - { - path: 'auth/method/pR3x7', - counts: { - clients: 1, - entity_clients: 0, - non_entity_clients: 1, - }, - }, - ], - }, - { - namespace_id: 'Z4Rzh', - namespace_path: 'namespace1/', - counts: { - entity_clients: 142, - non_entity_clients: 33, - clients: 175, - }, - mounts: [ - { - path: 'auth/method/NqMeC', - counts: { - clients: 34, - entity_clients: 20, - non_entity_clients: 14, - }, - }, - { - path: 'auth/method/S0FaZ', - counts: { - clients: 30, - entity_clients: 20, - non_entity_clients: 10, - }, - }, - { - path: 'auth/method/vzH3z', - counts: { - clients: 28, - entity_clients: 17, - non_entity_clients: 11, - }, - }, - { - path: 'auth/method/uP1zV', - counts: { - clients: 26, - entity_clients: 14, - non_entity_clients: 12, - }, - }, - { - path: 'auth/method/yAga3', - counts: { - clients: 14, - entity_clients: 6, - non_entity_clients: 8, - }, - }, - { - path: 'auth/method/DTAFz', - counts: { - clients: 17, - entity_clients: 9, - non_entity_clients: 8, - }, - }, - { - path: 'auth/method/Rk3Pt', - counts: { - clients: 16, - entity_clients: 9, - non_entity_clients: 7, - }, - }, - { - path: 'auth/method/wnNH5', - counts: { - clients: 3, - entity_clients: 2, - non_entity_clients: 1, - }, - }, - { - path: 'auth/method/N3BJy', - counts: { - clients: 4, - entity_clients: 2, - non_entity_clients: 2, - }, - }, - { - path: 'auth/method/C5qsy', - counts: { - clients: 3, - entity_clients: 3, - non_entity_clients: 0, - }, - }, - ], - }, - { - namespace_id: 'XGu7R', - namespace_path: 'namespace12/', - counts: { - entity_clients: 18, - non_entity_clients: 157, - clients: 175, - }, - mounts: [ - { - path: 'auth/method/qcuLl', - counts: { - clients: 35, - entity_clients: 20, - non_entity_clients: 15, - }, - }, - { - path: 'auth/method/KGWiS', - counts: { - clients: 29, - entity_clients: 17, - non_entity_clients: 12, - }, - }, - { - path: 'auth/method/iM8pi', - counts: { - clients: 21, - entity_clients: 13, - non_entity_clients: 8, - }, - }, - { - path: 'auth/method/IeyA4', - counts: { - clients: 27, - entity_clients: 18, - non_entity_clients: 9, - }, - }, - { - path: 'auth/method/KGFfV', - counts: { - clients: 21, - entity_clients: 13, - non_entity_clients: 8, - }, - }, - { - path: 'auth/method/23AQk', - counts: { - clients: 14, - entity_clients: 10, - non_entity_clients: 4, - }, - }, - { - path: 'auth/method/PqTWe', - counts: { - clients: 11, - entity_clients: 9, - non_entity_clients: 2, - }, - }, - { - path: 'auth/method/pPSo1', - counts: { - clients: 8, - entity_clients: 6, - non_entity_clients: 2, - }, - }, - { - path: 'auth/method/HMu5H', - counts: { - clients: 7, - entity_clients: 4, - non_entity_clients: 3, - }, - }, - { - path: 'auth/method/xpOk3', - counts: { - clients: 2, - entity_clients: 0, - non_entity_clients: 2, - }, - }, - ], - }, - { - namespace_id: 'IeyJp', - namespace_path: 'namespace14/', - counts: { - entity_clients: 33, - non_entity_clients: 142, - clients: 175, - }, - mounts: [ - { - path: 'auth/method/8NFVo', - counts: { - clients: 30, - entity_clients: 16, - non_entity_clients: 14, - }, - }, - { - path: 'auth/method/XnNDy', - counts: { - clients: 31, - entity_clients: 18, - non_entity_clients: 13, - }, - }, - { - path: 'auth/method/RYrzg', - counts: { - clients: 26, - entity_clients: 14, - non_entity_clients: 12, - }, - }, - { - path: 'auth/method/SOKji', - counts: { - clients: 27, - entity_clients: 17, - non_entity_clients: 10, - }, - }, - { - path: 'auth/method/CEYXo', - counts: { - clients: 19, - entity_clients: 13, - non_entity_clients: 6, - }, - }, - { - path: 'auth/method/RPjsj', - counts: { - clients: 15, - entity_clients: 10, - non_entity_clients: 5, - }, - }, - { - path: 'auth/method/dIqPJ', - counts: { - clients: 9, - entity_clients: 6, - non_entity_clients: 3, - }, - }, - { - path: 'auth/method/wThqG', - counts: { - clients: 8, - entity_clients: 6, - non_entity_clients: 2, - }, - }, - { - path: 'auth/method/Sa1dO', - counts: { - clients: 7, - entity_clients: 5, - non_entity_clients: 2, - }, - }, - { - path: 'auth/method/0JVs1', - counts: { - clients: 3, - entity_clients: 3, - non_entity_clients: 0, - }, - }, - ], - }, - { - namespace_id: 'kxU4t', - namespace_path: 'namespacelonglonglong3/', - counts: { - entity_clients: 151, - non_entity_clients: 21, - clients: 172, - }, - mounts: [ - { - path: 'auth/method/lDz9c', - counts: { - clients: 32, - entity_clients: 17, - non_entity_clients: 15, - }, - }, - { - path: 'auth/method/GtbUu', - counts: { - clients: 23, - entity_clients: 13, - non_entity_clients: 10, - }, - }, - { - path: 'auth/method/WCyYz', - counts: { - clients: 30, - entity_clients: 17, - non_entity_clients: 13, - }, - }, - { - path: 'auth/method/j227p', - counts: { - clients: 21, - entity_clients: 14, - non_entity_clients: 7, - }, - }, - { - path: 'auth/method/9V6aN', - counts: { - clients: 20, - entity_clients: 13, - non_entity_clients: 7, - }, - }, - { - path: 'auth/method/USYOd', - counts: { - clients: 17, - entity_clients: 13, - non_entity_clients: 4, - }, - }, - { - path: 'auth/method/8pfWr', - counts: { - clients: 12, - entity_clients: 7, - non_entity_clients: 5, - }, - }, - { - path: 'auth/method/0L511', - counts: { - clients: 6, - entity_clients: 2, - non_entity_clients: 4, - }, - }, - { - path: 'auth/method/6d0rw', - counts: { - clients: 6, - entity_clients: 4, - non_entity_clients: 2, - }, - }, - { - path: 'auth/method/ECHpZ', - counts: { - clients: 5, - entity_clients: 5, - non_entity_clients: 0, - }, - }, - ], - }, - { - namespace_id: '5xKya', - namespace_path: 'namespace15/', - counts: { - entity_clients: 73, - non_entity_clients: 98, - clients: 171, - }, - mounts: [ - { - path: 'auth/method/u2r0G', - counts: { - clients: 35, - entity_clients: 20, - non_entity_clients: 15, - }, - }, - { - path: 'auth/method/mKqBV', - counts: { - clients: 29, - entity_clients: 18, - non_entity_clients: 11, - }, - }, - { - path: 'auth/method/nGOa2', - counts: { - clients: 19, - entity_clients: 9, - non_entity_clients: 10, - }, - }, - { - path: 'auth/method/46UKX', - counts: { - clients: 21, - entity_clients: 11, - non_entity_clients: 10, - }, - }, - { - path: 'auth/method/WHW73', - counts: { - clients: 26, - entity_clients: 15, - non_entity_clients: 11, - }, - }, - { - path: 'auth/method/KcO46', - counts: { - clients: 20, - entity_clients: 12, - non_entity_clients: 8, - }, - }, - { - path: 'auth/method/y2vSv', - counts: { - clients: 13, - entity_clients: 12, - non_entity_clients: 1, - }, - }, - { - path: 'auth/method/VNy4X', - counts: { - clients: 3, - entity_clients: 1, - non_entity_clients: 2, - }, - }, - { - path: 'auth/method/cEDV9', - counts: { - clients: 2, - entity_clients: 2, - non_entity_clients: 0, - }, - }, - { - path: 'auth/method/CZTaj', - counts: { - clients: 3, - entity_clients: 3, - non_entity_clients: 0, - }, - }, - ], - }, - { - namespace_id: 'root', - namespace_path: '', - counts: { - entity_clients: 112, - non_entity_clients: 58, - clients: 170, - }, - mounts: [ - { - path: 'auth/method/koO6h', - counts: { - clients: 35, - entity_clients: 20, - non_entity_clients: 15, - }, - }, - { - path: 'auth/method/iF9oZ', - counts: { - clients: 31, - entity_clients: 20, - non_entity_clients: 11, - }, - }, - { - path: 'auth/method/N6guZ', - counts: { - clients: 28, - entity_clients: 16, - non_entity_clients: 12, - }, - }, - { - path: 'auth/method/h2CxN', - counts: { - clients: 16, - entity_clients: 9, - non_entity_clients: 7, - }, - }, - { - path: 'auth/method/pA5pU', - counts: { - clients: 21, - entity_clients: 15, - non_entity_clients: 6, - }, - }, - { - path: 'auth/method/xbqJh', - counts: { - clients: 9, - entity_clients: 6, - non_entity_clients: 3, - }, - }, - { - path: 'auth/method/m7vOo', - counts: { - clients: 10, - entity_clients: 6, - non_entity_clients: 4, - }, - }, - { - path: 'auth/method/lULhW', - counts: { - clients: 9, - entity_clients: 7, - non_entity_clients: 2, - }, - }, - { - path: 'auth/method/hB9qn', - counts: { - clients: 10, - entity_clients: 8, - non_entity_clients: 2, - }, - }, - { - path: 'auth/method/RIEKI', - counts: { - clients: 1, - entity_clients: 0, - non_entity_clients: 1, - }, - }, - ], - }, - { - namespace_id: 'DcgzU', - namespace_path: 'namespace17/', - counts: { - entity_clients: 43, - non_entity_clients: 125, - clients: 168, - }, - mounts: [ - { - path: 'auth/method/cdZ64', - counts: { - clients: 35, - entity_clients: 20, - non_entity_clients: 15, - }, - }, - { - path: 'auth/method/UpXi1', - counts: { - clients: 33, - entity_clients: 19, - non_entity_clients: 14, - }, - }, - { - path: 'auth/method/6OzPw', - counts: { - clients: 22, - entity_clients: 10, - non_entity_clients: 12, - }, - }, - { - path: 'auth/method/PkimI', - counts: { - clients: 21, - entity_clients: 10, - non_entity_clients: 11, - }, - }, - { - path: 'auth/method/7ecN2', - counts: { - clients: 14, - entity_clients: 10, - non_entity_clients: 4, - }, - }, - { - path: 'auth/method/AYdDo', - counts: { - clients: 16, - entity_clients: 8, - non_entity_clients: 8, - }, - }, - { - path: 'auth/method/kS9h6', - counts: { - clients: 9, - entity_clients: 4, - non_entity_clients: 5, - }, - }, - { - path: 'auth/method/dIoMU', - counts: { - clients: 6, - entity_clients: 3, - non_entity_clients: 3, - }, - }, - { - path: 'auth/method/eXB1u', - counts: { - clients: 7, - entity_clients: 3, - non_entity_clients: 4, - }, - }, - { - path: 'auth/method/SQ8Ty', - counts: { - clients: 5, - entity_clients: 3, - non_entity_clients: 2, - }, - }, - ], - }, - { - namespace_id: 'Uc0o8', - namespace_path: 'namespace16/', - counts: { - entity_clients: 56, - non_entity_clients: 112, - clients: 168, - }, - mounts: [ - { - path: 'auth/method/my50c', - counts: { - clients: 33, - entity_clients: 18, - non_entity_clients: 15, - }, - }, - { - path: 'auth/method/D8zfa', - counts: { - clients: 29, - entity_clients: 17, - non_entity_clients: 12, - }, - }, - { - path: 'auth/method/w2xnA', - counts: { - clients: 32, - entity_clients: 18, - non_entity_clients: 14, - }, - }, - { - path: 'auth/method/FwR7Z', - counts: { - clients: 20, - entity_clients: 12, - non_entity_clients: 8, - }, - }, - { - path: 'auth/method/wwNCu', - counts: { - clients: 17, - entity_clients: 10, - non_entity_clients: 7, - }, - }, - { - path: 'auth/method/vv2O6', - counts: { - clients: 11, - entity_clients: 7, - non_entity_clients: 4, - }, - }, - { - path: 'auth/method/zRqUm', - counts: { - clients: 9, - entity_clients: 6, - non_entity_clients: 3, - }, - }, - { - path: 'auth/method/Yez2v', - counts: { - clients: 8, - entity_clients: 3, - non_entity_clients: 5, - }, - }, - { - path: 'auth/method/SBBJ2', - counts: { - clients: 5, - entity_clients: 3, - non_entity_clients: 2, - }, - }, - { - path: 'auth/method/NNSCC', - counts: { - clients: 4, - entity_clients: 1, - non_entity_clients: 3, - }, - }, - ], - }, - { - namespace_id: 'Rqa3W', - namespace_path: 'namespace13/', - counts: { - entity_clients: 9, - non_entity_clients: 156, - clients: 165, - }, - mounts: [ - { - path: 'auth/method/KPlRb', - counts: { - clients: 33, - entity_clients: 20, - non_entity_clients: 13, - }, - }, - { - path: 'auth/method/199gy', - counts: { - clients: 29, - entity_clients: 19, - non_entity_clients: 10, - }, - }, - { - path: 'auth/method/UDpxk', - counts: { - clients: 24, - entity_clients: 14, - non_entity_clients: 10, - }, - }, - { - path: 'auth/method/bmgSl', - counts: { - clients: 21, - entity_clients: 13, - non_entity_clients: 8, - }, - }, - { - path: 'auth/method/oyWlP', - counts: { - clients: 20, - entity_clients: 12, - non_entity_clients: 8, - }, - }, - { - path: 'auth/method/z7Uka', - counts: { - clients: 15, - entity_clients: 5, - non_entity_clients: 10, - }, - }, - { - path: 'auth/method/ftNn7', - counts: { - clients: 10, - entity_clients: 6, - non_entity_clients: 4, - }, - }, - { - path: 'auth/method/pvdQ7', - counts: { - clients: 9, - entity_clients: 7, - non_entity_clients: 2, - }, - }, - { - path: 'auth/method/DsnIn', - counts: { - clients: 4, - entity_clients: 2, - non_entity_clients: 2, - }, - }, - { - path: 'auth/method/E1YLg', - counts: { - clients: 0, - entity_clients: 0, - non_entity_clients: 0, - }, - }, - ], - }, - { - namespace_id: 'aJuQG', - namespace_path: 'namespace9/', - counts: { - entity_clients: 80, - non_entity_clients: 71, - clients: 151, - }, - mounts: [ - { - path: 'auth/method/RCpUn', - counts: { - clients: 31, - entity_clients: 18, - non_entity_clients: 13, - }, - }, - { - path: 'auth/method/S0O4t', - counts: { - clients: 21, - entity_clients: 7, - non_entity_clients: 14, - }, - }, - { - path: 'auth/method/QqXfg', - counts: { - clients: 25, - entity_clients: 12, - non_entity_clients: 13, - }, - }, - { - path: 'auth/method/CSSoi', - counts: { - clients: 23, - entity_clients: 13, - non_entity_clients: 10, - }, - }, - { - path: 'auth/method/klonh', - counts: { - clients: 15, - entity_clients: 7, - non_entity_clients: 8, - }, - }, - { - path: 'auth/method/JyhFQ', - counts: { - clients: 15, - entity_clients: 5, - non_entity_clients: 10, - }, - }, - { - path: 'auth/method/S66CH', - counts: { - clients: 7, - entity_clients: 4, - non_entity_clients: 3, - }, - }, - { - path: 'auth/method/6pBz3', - counts: { - clients: 6, - entity_clients: 4, - non_entity_clients: 2, - }, - }, - { - path: 'auth/method/qHCZa', - counts: { - clients: 6, - entity_clients: 4, - non_entity_clients: 2, - }, - }, - { - path: 'auth/method/I6OpF', - counts: { - clients: 2, - entity_clients: 2, - non_entity_clients: 0, - }, - }, - ], - }, - { - namespace_id: 'DochC', - namespace_path: 'ns2/', - counts: { - _comment3: 'simulating response with old key names', - distinct_entities: 45, - non_entity_tokens: 55, - clients: 100, - }, - }, - { - namespace_id: 'RtgpW', - namespace_path: 'ns1/', - counts: { - _comment4: 'and another namespace with old key names', - distinct_entities: 5, - non_entity_tokens: 15, - clients: 20, - }, - }, - ], - months: [ - { - timestamp: '2022-01-01T08:00:00.000Z', - counts: { - clients: 68, - entity_clients: 23, - non_entity_clients: 45, - }, - namespaces: [ - { - counts: { - entity_clients: 14, - non_entity_clients: 18, - clients: 32, - }, - mounts: [ - { - path: 'auth/method/cdZ64', - counts: { - clients: 18, - entity_clients: 8, - non_entity_clients: 10, - }, - }, - { - path: 'auth/method/UpXi1', - counts: { - clients: 6, - entity_clients: 3, - non_entity_clients: 3, - }, - }, - { - path: 'auth/method/6OzPw', - counts: { - clients: 5, - entity_clients: 2, - non_entity_clients: 3, - }, - }, - { - path: 'auth/method/PkimI', - counts: { - clients: 3, - entity_clients: 1, - non_entity_clients: 2, - }, - }, - ], - id: 'namespace17/', - path: '', - }, - { - counts: { - entity_clients: 4, - non_entity_clients: 13, - clients: 17, - }, - mounts: [ - { - path: 'auth/method/KPlRb', - counts: { - clients: 8, - entity_clients: 1, - non_entity_clients: 7, - }, - }, - { - path: 'auth/method/199gy', - counts: { - clients: 4, - entity_clients: 1, - non_entity_clients: 3, - }, - }, - { - path: 'auth/method/UDpxk', - counts: { - clients: 3, - entity_clients: 1, - non_entity_clients: 2, - }, - }, - { - path: 'auth/method/bmgSl', - counts: { - clients: 2, - entity_clients: 1, - non_entity_clients: 1, - }, - }, - ], - id: 'namespace13/', - path: '', - }, - { - counts: { - entity_clients: 3, - non_entity_clients: 12, - clients: 15, - }, - mounts: [ - { - path: 'auth/method/uMGBU', - counts: { - clients: 5, - entity_clients: 1, - non_entity_clients: 4, - }, - }, - { - path: 'auth/method/8YJO3', - counts: { - clients: 4, - entity_clients: 1, - non_entity_clients: 3, - }, - }, - { - path: 'auth/method/Ro774', - counts: { - clients: 4, - entity_clients: 1, - non_entity_clients: 3, - }, - }, - { - path: 'auth/method/ZIpjT', - counts: { - clients: 2, - entity_clients: 0, - non_entity_clients: 2, - }, - }, - ], - id: 'namespacelonglonglong4/', - path: '', - }, - { - counts: { - entity_clients: 2, - non_entity_clients: 2, - clients: 4, - }, - mounts: [ - { - path: 'auth/method/qcuLl', - counts: { - clients: 2, - entity_clients: 1, - non_entity_clients: 1, - }, - }, - { - path: 'auth/method/KGWiS', - counts: { - clients: 2, - entity_clients: 1, - non_entity_clients: 1, - }, - }, - { - path: 'auth/method/iM8pi', - counts: { - clients: 0, - entity_clients: 0, - non_entity_clients: 0, - }, - }, - { - path: 'auth/method/IeyA4', - counts: { - clients: 0, - entity_clients: 0, - non_entity_clients: 0, - }, - }, - ], - id: 'namespace12/', - path: '', - }, - ], - new_clients: { - counts: { - clients: 47, - entity_clients: 11, - non_entity_clients: 36, - }, - namespaces: [ - { - counts: { - clients: 14, - entity_clients: 11, - non_entity_clients: 3, - }, - mounts: [ - { - path: 'auth/method/cdZ64', - counts: { - clients: 6, - entity_clients: 4, - non_entity_clients: 813, - }, - }, - { - path: 'auth/method/UpXi1', - counts: { - clients: 5, - entity_clients: 3, - non_entity_clients: 113, - }, - }, - { - path: 'auth/method/6OzPw', - counts: { - clients: 1, - entity_clients: 1, - non_entity_clients: 45, - }, - }, - { - path: 'auth/method/PkimI', - counts: { - clients: 1, - entity_clients: 1, - non_entity_clients: 168, - }, - }, - ], - id: 'namespace17/', - path: '', - }, - { - counts: { - clients: 11, - entity_clients: 9, - non_entity_clients: 2, - }, - mounts: [ - { - path: 'auth/method/KPlRb', - counts: { - clients: 5, - entity_clients: 1, - non_entity_clients: 346, - }, - }, - { - path: 'auth/method/199gy', - counts: { - clients: 2, - entity_clients: 1, - non_entity_clients: 85, - }, - }, - { - path: 'auth/method/UDpxk', - counts: { - clients: 2, - entity_clients: 1, - non_entity_clients: 3, - }, - }, - { - path: 'auth/method/bmgSl', - counts: { - clients: 1, - entity_clients: 1, - non_entity_clients: 2, - }, - }, - ], - id: 'namespace13/', - path: '', - }, - { - counts: { - clients: 10, - entity_clients: 8, - non_entity_clients: 2, - }, - mounts: [ - { - path: 'auth/method/uMGBU', - counts: { - clients: 4, - entity_clients: 1, - non_entity_clients: 453, - }, - }, - { - path: 'auth/method/8YJO3', - counts: { - clients: 3, - entity_clients: 1, - non_entity_clients: 291, - }, - }, - { - path: 'auth/method/Ro774', - counts: { - clients: 1, - entity_clients: 1, - non_entity_clients: 13, - }, - }, - { - path: 'auth/method/ZIpjT', - counts: { - clients: 1, - entity_clients: 1, - non_entity_clients: 4, - }, - }, - ], - id: 'namespacelonglonglong4/', - path: '', - }, - { - counts: { - clients: 1, - entity_clients: 1, - non_entity_clients: 0, - }, - mounts: [ - { - path: 'auth/method/qcuLl', - counts: { - clients: 1, - entity_clients: 1, - non_entity_clients: 253, - }, - }, - { - path: 'auth/method/KGWiS', - counts: { - clients: 1, - entity_clients: 1, - non_entity_clients: 26, - }, - }, - { - path: 'auth/method/iM8pi', - counts: { - clients: 0, - entity_clients: 0, - non_entity_clients: 126, - }, - }, - { - path: 'auth/method/IeyA4', - counts: { - clients: 0, - entity_clients: 0, - non_entity_clients: 53, - }, - }, - ], - id: 'namespace12/', - path: '', - }, - ], - }, - }, - { - timestamp: '2022-02-01T08:00:00.000Z', - counts: { - clients: 115, - entity_clients: 95, - non_entity_clients: 20, - }, - namespaces: [ - { - counts: { - entity_clients: 83, - non_entity_clients: 17, - clients: 100, - }, - mounts: [ - { - path: 'auth/method/cdZ64', - counts: { - clients: 73, - entity_clients: 61, - non_entity_clients: 12, - }, - }, - { - path: 'auth/method/UpXi1', - counts: { - clients: 19, - entity_clients: 17, - non_entity_clients: 2, - }, - }, - { - path: 'auth/method/6OzPw', - counts: { - clients: 5, - entity_clients: 3, - non_entity_clients: 2, - }, - }, - { - path: 'auth/method/PkimI', - counts: { - clients: 3, - entity_clients: 2, - non_entity_clients: 1, - }, - }, - ], - id: 'namespace17/', - path: '', - }, - { - counts: { - entity_clients: 10, - non_entity_clients: 1, - clients: 11, - }, - mounts: [ - { - path: 'auth/method/824CE', - counts: { - clients: 7, - entity_clients: 6, - non_entity_clients: 1, - }, - }, - { - path: 'auth/method/r2zb4', - counts: { - clients: 2, - entity_clients: 2, - non_entity_clients: 0, - }, - }, - { - path: 'auth/method/1zfD6', - counts: { - clients: 1, - entity_clients: 1, - non_entity_clients: 0, - }, - }, - { - path: 'auth/method/L14lj', - counts: { - clients: 1, - entity_clients: 1, - non_entity_clients: 0, - }, - }, - ], - id: 'namespace2/', - path: '', - }, - { - counts: { - entity_clients: 1, - non_entity_clients: 1, - clients: 2, - }, - mounts: [ - { - path: 'auth/method/uMGBU', - counts: { - clients: 2, - entity_clients: 1, - non_entity_clients: 1, - }, - }, - { - path: 'auth/method/8YJO3', - counts: { - clients: 0, - entity_clients: 0, - non_entity_clients: 0, - }, - }, - { - path: 'auth/method/Ro774', - counts: { - clients: 0, - entity_clients: 0, - non_entity_clients: 0, - }, - }, - { - path: 'auth/method/ZIpjT', - counts: { - clients: 0, - entity_clients: 0, - non_entity_clients: 0, - }, - }, - ], - id: 'namespacelonglonglong4/', - path: '', - }, - { - counts: { - entity_clients: 1, - non_entity_clients: 1, - clients: 2, - }, - mounts: [ - { - path: 'auth/method/qT4Wl', - counts: { - clients: 2, - entity_clients: 1, - non_entity_clients: 1, - }, - }, - { - path: 'auth/method/Vhu56', - counts: { - clients: 0, - entity_clients: 0, - non_entity_clients: 0, - }, - }, - { - path: 'auth/method/PCc58', - counts: { - clients: 0, - entity_clients: 0, - non_entity_clients: 0, - }, - }, - { - path: 'auth/method/nPP4c', - counts: { - clients: 0, - entity_clients: 0, - non_entity_clients: 0, - }, - }, - ], - id: 'namespace11/', - path: '', - }, - ], - new_clients: { - counts: { - clients: 30, - entity_clients: 26, - non_entity_clients: 4, - }, - namespaces: [ - { - counts: { - clients: 0, - entity_clients: 0, - non_entity_clients: 0, - }, - mounts: [ - { - path: 'auth/method/cdZ64', - counts: { - clients: 1, - entity_clients: 1, - non_entity_clients: 0, - }, - }, - { - path: 'auth/method/UpXi1', - counts: { - clients: 1, - entity_clients: 1, - non_entity_clients: 0, - }, - }, - { - path: 'auth/method/6OzPw', - counts: { - clients: 0, - entity_clients: 0, - non_entity_clients: 0, - }, - }, - { - path: 'auth/method/PkimI', - counts: { - clients: -1, - entity_clients: -1, - non_entity_clients: 0, - }, - }, - ], - id: 'namespace17/', - path: '', - }, - { - counts: { - clients: 0, - entity_clients: 0, - non_entity_clients: 0, - }, - mounts: [ - { - path: 'auth/method/824CE', - counts: { - clients: 1, - entity_clients: 1, - non_entity_clients: 0, - }, - }, - { - path: 'auth/method/r2zb4', - counts: { - clients: 1, - entity_clients: 1, - non_entity_clients: 0, - }, - }, - { - path: 'auth/method/1zfD6', - counts: { - clients: 1, - entity_clients: 1, - non_entity_clients: 0, - }, - }, - { - path: 'auth/method/L14lj', - counts: { - clients: 0, - entity_clients: 0, - non_entity_clients: 0, - }, - }, - ], - id: 'namespace2/', - path: '', - }, - { - counts: { - clients: 0, - entity_clients: 0, - non_entity_clients: 0, - }, - mounts: [ - { - path: 'auth/method/uMGBU', - counts: { - clients: 1, - entity_clients: 1, - non_entity_clients: 0, - }, - }, - { - path: 'auth/method/8YJO3', - counts: { - clients: 1, - entity_clients: 1, - non_entity_clients: 0, - }, - }, - { - path: 'auth/method/Ro774', - counts: { - clients: 0, - entity_clients: 0, - non_entity_clients: 0, - }, - }, - { - path: 'auth/method/ZIpjT', - counts: { - clients: 0, - entity_clients: 0, - non_entity_clients: 0, - }, - }, - ], - id: 'namespacelonglonglong4/', - path: '', - }, - { - counts: { - clients: 0, - entity_clients: 0, - non_entity_clients: -1, - }, - mounts: [ - { - path: 'auth/method/qT4Wl', - counts: { - clients: 0, - entity_clients: 0, - non_entity_clients: 0, - }, - }, - { - path: 'auth/method/Vhu56', - counts: { - clients: 0, - entity_clients: 0, - non_entity_clients: 0, - }, - }, - { - path: 'auth/method/PCc58', - counts: { - clients: 0, - entity_clients: 0, - non_entity_clients: 0, - }, - }, - { - path: 'auth/method/nPP4c', - counts: { - clients: 0, - entity_clients: 0, - non_entity_clients: 0, - }, - }, - ], - id: 'namespace11/', - path: '', - }, - ], - }, - }, - { - timestamp: '2022-03-01T08:00:00.000Z', - counts: { - clients: 145, - entity_clients: 121, - non_entity_clients: 24, - }, - namespaces: [ - { - counts: { - entity_clients: 83, - non_entity_clients: 20, - clients: 103, - }, - mounts: [ - { - path: 'auth/method/cdZ64', - counts: { - clients: 71, - entity_clients: 61, - non_entity_clients: 10, - }, - }, - { - path: 'auth/method/UpXi1', - counts: { - clients: 21, - entity_clients: 15, - non_entity_clients: 6, - }, - }, - { - path: 'auth/method/6OzPw', - counts: { - clients: 8, - entity_clients: 6, - non_entity_clients: 2, - }, - }, - { - path: 'auth/method/PkimI', - counts: { - clients: 3, - entity_clients: 1, - non_entity_clients: 2, - }, - }, - ], - id: 'namespace17/', - path: '', - }, - { - counts: { - entity_clients: 20, - non_entity_clients: 2, - clients: 22, - }, - mounts: [ - { - path: 'auth/method/824CE', - counts: { - clients: 11, - entity_clients: 10, - non_entity_clients: 1, - }, - }, - { - path: 'auth/method/r2zb4', - counts: { - clients: 7, - entity_clients: 6, - non_entity_clients: 1, - }, - }, - { - path: 'auth/method/1zfD6', - counts: { - clients: 3, - entity_clients: 3, - non_entity_clients: 0, - }, - }, - { - path: 'auth/method/L14lj', - counts: { - clients: 1, - entity_clients: 1, - non_entity_clients: 0, - }, - }, - ], - id: 'namespace2/', - path: '', - }, - { - counts: { - entity_clients: 15, - non_entity_clients: 1, - clients: 16, - }, - mounts: [ - { - path: 'auth/method/uMGBU', - counts: { - clients: 11, - entity_clients: 10, - non_entity_clients: 1, - }, - }, - { - path: 'auth/method/8YJO3', - counts: { - clients: 2, - entity_clients: 2, - non_entity_clients: 0, - }, - }, - { - path: 'auth/method/Ro774', - counts: { - clients: 2, - entity_clients: 2, - non_entity_clients: 0, - }, - }, - { - path: 'auth/method/ZIpjT', - counts: { - clients: 1, - entity_clients: 1, - non_entity_clients: 0, - }, - }, - ], - id: 'namespacelonglonglong4/', - path: '', - }, - { - counts: { - entity_clients: 3, - non_entity_clients: 1, - clients: 4, - }, - mounts: [ - { - path: 'auth/method/qT4Wl', - counts: { - clients: 2, - entity_clients: 1, - non_entity_clients: 1, - }, - }, - { - path: 'auth/method/Vhu56', - counts: { - clients: 1, - entity_clients: 1, - non_entity_clients: 0, - }, - }, - { - path: 'auth/method/PCc58', - counts: { - clients: 1, - entity_clients: 1, - non_entity_clients: 0, - }, - }, - { - path: 'auth/method/nPP4c', - counts: { - clients: 0, - entity_clients: 0, - non_entity_clients: 0, - }, - }, - ], - id: 'namespace11/', - path: '', - }, - ], - new_clients: { - counts: { - clients: 29, - entity_clients: 21, - non_entity_clients: 8, - }, - namespaces: [ - { - counts: { - clients: 127, - entity_clients: 119, - non_entity_clients: 8, - }, - mounts: [ - { - path: 'auth/method/cdZ64', - counts: { - clients: 108, - entity_clients: 69, - non_entity_clients: 813, - }, - }, - { - path: 'auth/method/UpXi1', - counts: { - clients: 9, - entity_clients: 1, - non_entity_clients: 113, - }, - }, - { - path: 'auth/method/6OzPw', - counts: { - clients: 5, - entity_clients: 4, - non_entity_clients: 45, - }, - }, - { - path: 'auth/method/PkimI', - counts: { - clients: 3, - entity_clients: 2, - non_entity_clients: 168, - }, - }, - ], - id: 'namespace17/', - path: '', - }, - { - counts: { - clients: 40, - entity_clients: 39, - non_entity_clients: 1, - }, - mounts: [ - { - path: 'auth/method/824CE', - counts: { - clients: 35, - entity_clients: 10, - non_entity_clients: 3, - }, - }, - { - path: 'auth/method/r2zb4', - counts: { - clients: 2, - entity_clients: 1, - non_entity_clients: 495, - }, - }, - { - path: 'auth/method/1zfD6', - counts: { - clients: 1, - entity_clients: 1, - non_entity_clients: 8, - }, - }, - { - path: 'auth/method/L14lj', - counts: { - clients: 1, - entity_clients: 1, - non_entity_clients: 5, - }, - }, - ], - id: 'namespace2/', - path: '', - }, - { - counts: { - clients: 21, - entity_clients: 15, - non_entity_clients: 6, - }, - mounts: [ - { - path: 'auth/method/uMGBU', - counts: { - clients: 10, - entity_clients: 2, - non_entity_clients: 453, - }, - }, - { - path: 'auth/method/8YJO3', - counts: { - clients: 4, - entity_clients: 3, - non_entity_clients: 291, - }, - }, - { - path: 'auth/method/Ro774', - counts: { - clients: 3, - entity_clients: 1, - non_entity_clients: 13, - }, - }, - { - path: 'auth/method/ZIpjT', - counts: { - clients: 2, - entity_clients: 1, - non_entity_clients: 4, - }, - }, - ], - id: 'namespacelonglonglong4/', - path: '', - }, - { - counts: { - clients: 2, - entity_clients: 1, - non_entity_clients: 1, - }, - mounts: [ - { - path: 'auth/method/qT4Wl', - counts: { - clients: 1, - entity_clients: 1, - non_entity_clients: 1019, - }, - }, - { - path: 'auth/method/Vhu56', - counts: { - clients: 1, - entity_clients: 1, - non_entity_clients: 11, - }, - }, - { - path: 'auth/method/PCc58', - counts: { - clients: 0, - entity_clients: 0, - non_entity_clients: 29, - }, - }, - { - path: 'auth/method/nPP4c', - counts: { - clients: 0, - entity_clients: 0, - non_entity_clients: 7, - }, - }, - ], - id: 'namespace11/', - path: '', - }, - ], - }, - }, - { - timestamp: '2022-04-01T07:00:00.000Z', - counts: { - clients: 174, - entity_clients: 81, - non_entity_clients: 93, - }, - namespaces: [ - { - counts: { - entity_clients: 53, - non_entity_clients: 83, - clients: 136, - }, - mounts: [ - { - path: 'auth/method/uMGBU', - counts: { - clients: 102, - entity_clients: 37, - non_entity_clients: 65, - }, - }, - { - path: 'auth/method/8YJO3', - counts: { - clients: 25, - entity_clients: 12, - non_entity_clients: 13, - }, - }, - { - path: 'auth/method/Ro774', - counts: { - clients: 5, - entity_clients: 2, - non_entity_clients: 3, - }, - }, - { - path: 'auth/method/ZIpjT', - counts: { - clients: 4, - entity_clients: 2, - non_entity_clients: 2, - }, - }, - ], - id: 'namespacelonglonglong4/', - path: '', - }, - { - counts: { - entity_clients: 14, - non_entity_clients: 5, - clients: 19, - }, - mounts: [ - { - path: 'auth/method/qT4Wl', - counts: { - clients: 11, - entity_clients: 9, - non_entity_clients: 2, - }, - }, - { - path: 'auth/method/Vhu56', - counts: { - clients: 4, - entity_clients: 3, - non_entity_clients: 1, - }, - }, - { - path: 'auth/method/PCc58', - counts: { - clients: 2, - entity_clients: 1, - non_entity_clients: 1, - }, - }, - { - path: 'auth/method/nPP4c', - counts: { - clients: 2, - entity_clients: 1, - non_entity_clients: 1, - }, - }, - ], - id: 'namespace11/', - path: '', - }, - { - counts: { - entity_clients: 7, - non_entity_clients: 4, - clients: 11, - }, - mounts: [ - { - path: 'auth/method/xYL0l', - counts: { - clients: 3, - entity_clients: 2, - non_entity_clients: 1, - }, - }, - { - path: 'auth/method/CwWM7', - counts: { - clients: 3, - entity_clients: 2, - non_entity_clients: 1, - }, - }, - { - path: 'auth/method/swCd0', - counts: { - clients: 3, - entity_clients: 2, - non_entity_clients: 1, - }, - }, - { - path: 'auth/method/0CZTs', - counts: { - clients: 2, - entity_clients: 1, - non_entity_clients: 1, - }, - }, - ], - id: 'namespace10/', - path: '', - }, - { - counts: { - entity_clients: 7, - non_entity_clients: 1, - clients: 8, - }, - mounts: [ - { - path: 'auth/method/RCpUn', - counts: { - clients: 3, - entity_clients: 2, - non_entity_clients: 1, - }, - }, - { - path: 'auth/method/S0O4t', - counts: { - clients: 2, - entity_clients: 2, - non_entity_clients: 0, - }, - }, - { - path: 'auth/method/QqXfg', - counts: { - clients: 2, - entity_clients: 2, - non_entity_clients: 0, - }, - }, - { - path: 'auth/method/CSSoi', - counts: { - clients: 1, - entity_clients: 1, - non_entity_clients: 0, - }, - }, - ], - id: 'namespace9/', - path: '', - }, - ], - new_clients: { - counts: { - clients: 20, - entity_clients: 5, - non_entity_clients: 15, - }, - namespaces: [ - { - counts: { - clients: 725, - entity_clients: 416, - non_entity_clients: 309, - }, - mounts: [ - { - path: 'auth/method/uMGBU', - counts: { - clients: 281, - entity_clients: 48, - non_entity_clients: 453, - }, - }, - { - path: 'auth/method/8YJO3', - counts: { - clients: 252, - entity_clients: 142, - non_entity_clients: 291, - }, - }, - { - path: 'auth/method/Ro774', - counts: { - clients: 93, - entity_clients: 43, - non_entity_clients: 13, - }, - }, - { - path: 'auth/method/ZIpjT', - counts: { - clients: 86, - entity_clients: 19, - non_entity_clients: 4, - }, - }, - ], - id: 'namespacelonglonglong4/', - path: '', - }, - { - counts: { - clients: 178, - entity_clients: 99, - non_entity_clients: 79, - }, - mounts: [ - { - path: 'auth/method/qT4Wl', - counts: { - clients: 76, - entity_clients: 69, - non_entity_clients: 1019, - }, - }, - { - path: 'auth/method/Vhu56', - counts: { - clients: 64, - entity_clients: 38, - non_entity_clients: 11, - }, - }, - { - path: 'auth/method/PCc58', - counts: { - clients: 20, - entity_clients: 12, - non_entity_clients: 29, - }, - }, - { - path: 'auth/method/nPP4c', - counts: { - clients: 15, - entity_clients: 12, - non_entity_clients: 7, - }, - }, - ], - id: 'namespace11/', - path: '', - }, - { - counts: { - clients: 40, - entity_clients: 28, - non_entity_clients: 12, - }, - mounts: [ - { - path: 'auth/method/xYL0l', - counts: { - clients: 24, - entity_clients: 9, - non_entity_clients: 195, - }, - }, - { - path: 'auth/method/CwWM7', - counts: { - clients: 10, - entity_clients: 8, - non_entity_clients: 88, - }, - }, - { - path: 'auth/method/swCd0', - counts: { - clients: 4, - entity_clients: 2, - non_entity_clients: 58, - }, - }, - { - path: 'auth/method/0CZTs', - counts: { - clients: 1, - entity_clients: 1, - non_entity_clients: 1, - }, - }, - ], - id: 'namespace10/', - path: '', - }, - { - counts: { - clients: 34, - entity_clients: 21, - non_entity_clients: 13, - }, - mounts: [ - { - path: 'auth/method/RCpUn', - counts: { - clients: 27, - entity_clients: 14, - non_entity_clients: 445, - }, - }, - { - path: 'auth/method/S0O4t', - counts: { - clients: 4, - entity_clients: 1, - non_entity_clients: 378, - }, - }, - { - path: 'auth/method/QqXfg', - counts: { - clients: 1, - entity_clients: 1, - non_entity_clients: 3, - }, - }, - { - path: 'auth/method/CSSoi', - counts: { - clients: 1, - entity_clients: 1, - non_entity_clients: 4, - }, - }, - ], - id: 'namespace9/', - path: '', - }, - ], - }, - }, - { - timestamp: '2022-05-01T07:00:00.000Z', - counts: { - clients: 194, - entity_clients: 187, - non_entity_clients: 7, - }, - namespaces: [ - { - counts: { - entity_clients: 106, - non_entity_clients: 3, - clients: 109, - }, - mounts: [ - { - path: 'auth/method/cdZ64', - counts: { - clients: 44, - entity_clients: 43, - non_entity_clients: 1, - }, - }, - { - path: 'auth/method/UpXi1', - counts: { - clients: 34, - entity_clients: 33, - non_entity_clients: 1, - }, - }, - { - path: 'auth/method/6OzPw', - counts: { - clients: 21, - entity_clients: 20, - non_entity_clients: 1, - }, - }, - { - path: 'auth/method/PkimI', - counts: { - clients: 10, - entity_clients: 10, - non_entity_clients: 0, - }, - }, - ], - id: 'namespace17/', - path: '', - }, - { - counts: { - entity_clients: 80, - non_entity_clients: 3, - clients: 83, - }, - mounts: [ - { - path: 'auth/method/qcuLl', - counts: { - clients: 37, - entity_clients: 36, - non_entity_clients: 1, - }, - }, - { - path: 'auth/method/KGWiS', - counts: { - clients: 35, - entity_clients: 34, - non_entity_clients: 1, - }, - }, - { - path: 'auth/method/iM8pi', - counts: { - clients: 10, - entity_clients: 9, - non_entity_clients: 1, - }, - }, - { - path: 'auth/method/IeyA4', - counts: { - clients: 1, - entity_clients: 1, - non_entity_clients: 0, - }, - }, - ], - id: 'namespace12/', - path: '', - }, - { - counts: { - entity_clients: 1, - non_entity_clients: 1, - clients: 2, - }, - mounts: [ - { - path: 'auth/method/XQUrA', - counts: { - clients: 2, - entity_clients: 1, - non_entity_clients: 1, - }, - }, - { - path: 'auth/method/1p6HR', - counts: { - clients: null, - non_entity_clients: 0, - }, - }, - { - path: 'auth/method/qRjoJ', - counts: { - clients: null, - non_entity_clients: 0, - }, - }, - { - path: 'auth/method/x9QQB', - counts: { - clients: null, - non_entity_clients: 0, - }, - }, - ], - id: 'namespace6/', - path: '', - }, - ], - new_clients: { - counts: { - clients: 38, - entity_clients: 29, - non_entity_clients: 9, - }, - namespaces: [ - { - counts: { - clients: 62, - entity_clients: 37, - non_entity_clients: 25, - }, - mounts: [ - { - path: 'auth/method/cdZ64', - counts: { - clients: 57, - entity_clients: 26, - non_entity_clients: 813, - }, - }, - { - path: 'auth/method/UpXi1', - counts: { - clients: 2, - entity_clients: 1, - non_entity_clients: 113, - }, - }, - { - path: 'auth/method/6OzPw', - counts: { - clients: 1, - entity_clients: 1, - non_entity_clients: 45, - }, - }, - { - path: 'auth/method/PkimI', - counts: { - clients: 1, - entity_clients: 1, - non_entity_clients: 168, - }, - }, - ], - id: 'namespace17/', - path: '', - }, - { - counts: { - clients: 31, - entity_clients: 20, - non_entity_clients: 11, - }, - mounts: [ - { - path: 'auth/method/qcuLl', - counts: { - clients: 27, - entity_clients: 24, - non_entity_clients: 253, - }, - }, - { - path: 'auth/method/KGWiS', - counts: { - clients: 1, - entity_clients: 1, - non_entity_clients: 26, - }, - }, - { - path: 'auth/method/iM8pi', - counts: { - clients: 1, - entity_clients: 1, - non_entity_clients: 126, - }, - }, - { - path: 'auth/method/IeyA4', - counts: { - clients: 1, - entity_clients: 1, - non_entity_clients: 53, - }, - }, - ], - id: 'namespace12/', - path: '', - }, - { - counts: { - clients: 30, - entity_clients: 21, - non_entity_clients: 9, - }, - mounts: [ - { - path: 'auth/method/XQUrA', - counts: { - clients: 15, - entity_clients: 5, - non_entity_clients: 164, - }, - }, - { - path: 'auth/method/1p6HR', - counts: { - clients: 7, - entity_clients: 4, - non_entity_clients: 292, - }, - }, - { - path: 'auth/method/qRjoJ', - counts: { - clients: 6, - entity_clients: 1, - non_entity_clients: 47, - }, - }, - { - path: 'auth/method/x9QQB', - counts: { - clients: 1, - entity_clients: 1, - non_entity_clients: 33, - }, - }, - ], - id: 'namespace6/', - path: '', - }, - ], - }, - }, - { - timestamp: '2022-06-01T07:00:00.000Z', - counts: { - clients: 232, - entity_clients: 47, - non_entity_clients: 185, - }, - namespaces: [ - { - counts: { - entity_clients: 21, - non_entity_clients: 102, - clients: 123, - }, - mounts: [ - { - path: 'auth/method/cdZ64', - counts: { - clients: 111, - entity_clients: 12, - non_entity_clients: 99, - }, - }, - { - path: 'auth/method/UpXi1', - counts: { - clients: 7, - entity_clients: 6, - non_entity_clients: 1, - }, - }, - { - path: 'auth/method/6OzPw', - counts: { - clients: 3, - entity_clients: 2, - non_entity_clients: 1, - }, - }, - { - path: 'auth/method/PkimI', - counts: { - clients: 2, - entity_clients: 1, - non_entity_clients: 1, - }, - }, - ], - id: 'namespace17/', - path: '', - }, - { - counts: { - entity_clients: 19, - non_entity_clients: 59, - clients: 78, - }, - mounts: [ - { - path: 'auth/method/qT4Wl', - counts: { - clients: 37, - entity_clients: 8, - non_entity_clients: 29, - }, - }, - { - path: 'auth/method/Vhu56', - counts: { - clients: 25, - entity_clients: 5, - non_entity_clients: 20, - }, - }, - { - path: 'auth/method/PCc58', - counts: { - clients: 9, - entity_clients: 4, - non_entity_clients: 5, - }, - }, - { - path: 'auth/method/nPP4c', - counts: { - clients: 7, - entity_clients: 2, - non_entity_clients: 5, - }, - }, - ], - id: 'namespace11/', - path: '', - }, - { - counts: { - entity_clients: 7, - non_entity_clients: 24, - clients: 31, - }, - mounts: [ - { - path: 'auth/method/my50c', - counts: { - clients: 20, - entity_clients: 4, - non_entity_clients: 16, - }, - }, - { - path: 'auth/method/D8zfa', - counts: { - clients: 7, - entity_clients: 1, - non_entity_clients: 6, - }, - }, - { - path: 'auth/method/w2xnA', - counts: { - clients: 2, - entity_clients: 1, - non_entity_clients: 1, - }, - }, - { - path: 'auth/method/FwR7Z', - counts: { - clients: 2, - entity_clients: 1, - non_entity_clients: 1, - }, - }, - ], - id: 'namespace16/', - path: '', - }, - ], - new_clients: { - counts: { - clients: 71, - entity_clients: 49, - non_entity_clients: 22, - }, - namespaces: [ - { - counts: { - clients: 0, - entity_clients: 0, - non_entity_clients: 0, - }, - mounts: [ - { - path: 'auth/method/cdZ64', - counts: { - clients: 0, - entity_clients: 0, - non_entity_clients: 0, - }, - }, - { - path: 'auth/method/UpXi1', - counts: { - clients: 0, - entity_clients: 0, - non_entity_clients: 0, - }, - }, - { - path: 'auth/method/6OzPw', - counts: { - clients: 0, - entity_clients: 0, - non_entity_clients: 0, - }, - }, - { - path: 'auth/method/PkimI', - counts: { - clients: 0, - entity_clients: 0, - non_entity_clients: 0, - }, - }, - ], - id: 'namespace17/', - path: '', - }, - { - counts: { - clients: 0, - entity_clients: 0, - non_entity_clients: 0, - }, - mounts: [ - { - path: 'auth/method/qT4Wl', - counts: { - clients: 0, - entity_clients: 0, - non_entity_clients: 0, - }, - }, - { - path: 'auth/method/Vhu56', - counts: { - clients: 0, - entity_clients: 0, - non_entity_clients: 0, - }, - }, - { - path: 'auth/method/PCc58', - counts: { - clients: 0, - entity_clients: 0, - non_entity_clients: 0, - }, - }, - { - path: 'auth/method/nPP4c', - counts: { - clients: 0, - entity_clients: 0, - non_entity_clients: 0, - }, - }, - ], - id: 'namespace11/', - path: '', - }, - { - counts: { - clients: 0, - entity_clients: 0, - non_entity_clients: 0, - }, - mounts: [ - { - path: 'auth/method/my50c', - counts: { - clients: 0, - entity_clients: 0, - non_entity_clients: 0, - }, - }, - { - path: 'auth/method/D8zfa', - counts: { - clients: 0, - entity_clients: 0, - non_entity_clients: 0, - }, - }, - { - path: 'auth/method/w2xnA', - counts: { - clients: 0, - entity_clients: 0, - non_entity_clients: 0, - }, - }, - { - path: 'auth/method/FwR7Z', - counts: { - clients: 0, - entity_clients: 0, - non_entity_clients: 0, - }, - }, - ], - id: 'namespace16/', - path: '', - }, - ], - }, - }, - { - timestamp: '2022-07-01T07:00:00.000Z', - counts: { - clients: 303, - entity_clients: 218, - non_entity_clients: 85, - }, - namespaces: [ - { - counts: { - entity_clients: 120, - non_entity_clients: 44, - clients: 164, - }, - mounts: [ - { - path: 'auth/method/cdZ64', - counts: { - clients: 81, - entity_clients: 61, - non_entity_clients: 20, - }, - }, - { - path: 'auth/method/UpXi1', - counts: { - clients: 44, - entity_clients: 31, - non_entity_clients: 13, - }, - }, - { - path: 'auth/method/6OzPw', - counts: { - clients: 32, - entity_clients: 24, - non_entity_clients: 8, - }, - }, - { - path: 'auth/method/PkimI', - counts: { - clients: 7, - entity_clients: 4, - non_entity_clients: 3, - }, - }, - ], - id: 'namespace17/', - path: '', - }, - { - counts: { - entity_clients: 65, - non_entity_clients: 35, - clients: 100, - }, - mounts: [ - { - path: 'auth/method/qT4Wl', - counts: { - clients: 88, - entity_clients: 62, - non_entity_clients: 26, - }, - }, - { - path: 'auth/method/Vhu56', - counts: { - clients: 7, - entity_clients: 1, - non_entity_clients: 6, - }, - }, - { - path: 'auth/method/PCc58', - counts: { - clients: 3, - entity_clients: 1, - non_entity_clients: 2, - }, - }, - { - path: 'auth/method/nPP4c', - counts: { - clients: 2, - entity_clients: 1, - non_entity_clients: 1, - }, - }, - ], - id: 'namespace11/', - path: '', - }, - { - counts: { - entity_clients: 33, - non_entity_clients: 6, - clients: 39, - }, - mounts: [ - { - path: 'auth/method/my50c', - counts: { - clients: 29, - entity_clients: 26, - non_entity_clients: 3, - }, - }, - { - path: 'auth/method/D8zfa', - counts: { - clients: 4, - entity_clients: 3, - non_entity_clients: 1, - }, - }, - { - path: 'auth/method/w2xnA', - counts: { - clients: 3, - entity_clients: 2, - non_entity_clients: 1, - }, - }, - { - path: 'auth/method/FwR7Z', - counts: { - clients: 3, - entity_clients: 2, - non_entity_clients: 1, - }, - }, - ], - id: 'namespace16/', - path: '', - }, - ], - new_clients: { - counts: { - clients: 72, - entity_clients: 46, - non_entity_clients: 26, - }, - namespaces: [ - { - counts: { - clients: 41, - entity_clients: 39, - non_entity_clients: 2, - }, - mounts: [ - { - path: 'auth/method/cdZ64', - counts: { - clients: 21, - entity_clients: 18, - non_entity_clients: 3, - }, - }, - { - path: 'auth/method/UpXi1', - counts: { - clients: 12, - entity_clients: 9, - non_entity_clients: 3, - }, - }, - { - path: 'auth/method/6OzPw', - counts: { - clients: 3, - entity_clients: 2, - non_entity_clients: 1, - }, - }, - { - path: 'auth/method/PkimI', - counts: { - clients: 3, - entity_clients: 2, - non_entity_clients: 1, - }, - }, - ], - id: 'namespace17/', - path: '', - }, - { - counts: { - clients: 14, - entity_clients: 13, - non_entity_clients: 1, - }, - mounts: [ - { - path: 'auth/method/qT4Wl', - counts: { - clients: 8, - entity_clients: 6, - non_entity_clients: 2, - }, - }, - { - path: 'auth/method/Vhu56', - counts: { - clients: 3, - entity_clients: 1, - non_entity_clients: 2, - }, - }, - { - path: 'auth/method/PCc58', - counts: { - clients: 1, - entity_clients: 1, - non_entity_clients: 0, - }, - }, - { - path: 'auth/method/nPP4c', - counts: { - clients: 1, - entity_clients: 1, - non_entity_clients: 0, - }, - }, - ], - id: 'namespace11/', - path: '', - }, - { - counts: { - clients: 10, - entity_clients: 6, - non_entity_clients: 4, - }, - mounts: [ - { - path: 'auth/method/my50c', - counts: { - clients: 6, - entity_clients: 5, - non_entity_clients: 1, - }, - }, - { - path: 'auth/method/D8zfa', - counts: { - clients: 1, - entity_clients: 1, - non_entity_clients: 0, - }, - }, - { - path: 'auth/method/w2xnA', - counts: { - clients: 1, - entity_clients: 1, - non_entity_clients: 0, - }, - }, - { - path: 'auth/method/FwR7Z', - counts: { - clients: 1, - entity_clients: 1, - non_entity_clients: 0, - }, - }, - ], - id: 'namespace16/', - path: '', - }, - ], - }, - }, - { - timestamp: '2022-08-01T07:00:00.000Z', - counts: { - clients: 375, - entity_clients: 80, - non_entity_clients: 295, - }, - namespaces: [ - { - counts: { - entity_clients: 63, - non_entity_clients: 216, - clients: 279, - }, - mounts: [ - { - path: 'auth/method/cdZ64', - counts: { - clients: 200, - entity_clients: 43, - non_entity_clients: 157, - }, - }, - { - path: 'auth/method/UpXi1', - counts: { - clients: 49, - entity_clients: 14, - non_entity_clients: 35, - }, - }, - { - path: 'auth/method/6OzPw', - counts: { - clients: 19, - entity_clients: 4, - non_entity_clients: 15, - }, - }, - { - path: 'auth/method/PkimI', - counts: { - clients: 11, - entity_clients: 2, - non_entity_clients: 9, - }, - }, - ], - id: 'namespace17/', - path: '', - }, - { - counts: { - entity_clients: 14, - non_entity_clients: 45, - clients: 59, - }, - mounts: [ - { - path: 'auth/method/xYL0l', - counts: { - clients: 40, - entity_clients: 6, - non_entity_clients: 34, - }, - }, - { - path: 'auth/method/CwWM7', - counts: { - clients: 9, - entity_clients: 4, - non_entity_clients: 5, - }, - }, - { - path: 'auth/method/swCd0', - counts: { - clients: 6, - entity_clients: 2, - non_entity_clients: 4, - }, - }, - { - path: 'auth/method/0CZTs', - counts: { - clients: 4, - entity_clients: 2, - non_entity_clients: 2, - }, - }, - ], - id: 'namespace10/', - path: '', - }, - { - counts: { - entity_clients: 3, - non_entity_clients: 34, - clients: 37, - }, - mounts: [ - { - path: 'auth/method/RCpUn', - counts: { - clients: 29, - entity_clients: 1, - non_entity_clients: 28, - }, - }, - { - path: 'auth/method/S0O4t', - counts: { - clients: 5, - entity_clients: 1, - non_entity_clients: 4, - }, - }, - { - path: 'auth/method/QqXfg', - counts: { - clients: 2, - entity_clients: 1, - non_entity_clients: 1, - }, - }, - { - path: 'auth/method/CSSoi', - counts: { - clients: 1, - entity_clients: 0, - non_entity_clients: 1, - }, - }, - ], - id: 'namespace9/', - path: '', - }, - ], - new_clients: { - counts: { - clients: 0, - entity_clients: 0, - non_entity_clients: 0, - }, - namespaces: [ - { - counts: { - clients: 0, - entity_clients: 0, - non_entity_clients: 0, - }, - mounts: [ - { - path: 'auth/method/cdZ64', - counts: { - clients: 0, - entity_clients: 0, - non_entity_clients: 0, - }, - }, - { - path: 'auth/method/UpXi1', - counts: { - clients: 0, - entity_clients: 0, - non_entity_clients: 0, - }, - }, - { - path: 'auth/method/6OzPw', - counts: { - clients: 0, - entity_clients: 0, - non_entity_clients: 0, - }, - }, - { - path: 'auth/method/PkimI', - counts: { - clients: 0, - entity_clients: 0, - non_entity_clients: 0, - }, - }, - ], - id: 'namespace17/', - path: '', - }, - { - counts: { - clients: 0, - entity_clients: 0, - non_entity_clients: 0, - }, - mounts: [ - { - path: 'auth/method/xYL0l', - counts: { - clients: 0, - entity_clients: 0, - non_entity_clients: 0, - }, - }, - { - path: 'auth/method/CwWM7', - counts: { - clients: 0, - entity_clients: 0, - non_entity_clients: 0, - }, - }, - { - path: 'auth/method/swCd0', - counts: { - clients: 0, - entity_clients: 0, - non_entity_clients: 0, - }, - }, - { - path: 'auth/method/0CZTs', - counts: { - clients: 0, - entity_clients: 0, - non_entity_clients: 0, - }, - }, - ], - id: 'namespace10/', - path: '', - }, - { - counts: { - clients: 0, - entity_clients: 0, - non_entity_clients: 0, - }, - mounts: [ - { - path: 'auth/method/RCpUn', - counts: { - clients: 0, - entity_clients: 0, - non_entity_clients: 0, - }, - }, - { - path: 'auth/method/S0O4t', - counts: { - clients: 0, - entity_clients: 0, - non_entity_clients: 0, - }, - }, - { - path: 'auth/method/QqXfg', - counts: { - clients: 0, - entity_clients: 0, - non_entity_clients: 0, - }, - }, - { - path: 'auth/method/CSSoi', - counts: { - clients: 0, - entity_clients: 0, - non_entity_clients: 0, - }, - }, - ], - id: 'namespace9/', - path: '', - }, - ], - }, - }, - { - timestamp: '2022-09-01T07:00:00.000Z', - counts: { - clients: 375, - entity_clients: 67, - non_entity_clients: 308, - }, - namespaces: [ - { - counts: { - entity_clients: 34, - non_entity_clients: 230, - clients: 264, - }, - mounts: [ - { - path: 'auth/method/cdZ64', - counts: { - clients: 107, - entity_clients: 26, - non_entity_clients: 81, - }, - }, - { - path: 'auth/method/UpXi1', - counts: { - clients: 81, - entity_clients: 4, - non_entity_clients: 77, - }, - }, - { - path: 'auth/method/6OzPw', - counts: { - clients: 55, - entity_clients: 3, - non_entity_clients: 52, - }, - }, - { - path: 'auth/method/PkimI', - counts: { - clients: 21, - entity_clients: 1, - non_entity_clients: 20, - }, - }, - ], - id: 'namespace17/', - path: '', - }, - { - counts: { - entity_clients: 24, - non_entity_clients: 48, - clients: 72, - }, - mounts: [ - { - path: 'auth/method/xYL0l', - counts: { - clients: 59, - entity_clients: 21, - non_entity_clients: 38, - }, - }, - { - path: 'auth/method/CwWM7', - counts: { - clients: 7, - entity_clients: 1, - non_entity_clients: 6, - }, - }, - { - path: 'auth/method/swCd0', - counts: { - clients: 4, - entity_clients: 1, - non_entity_clients: 3, - }, - }, - { - path: 'auth/method/0CZTs', - counts: { - clients: 2, - entity_clients: 1, - non_entity_clients: 1, - }, - }, - ], - id: 'namespace10/', - path: '', - }, - { - counts: { - entity_clients: 9, - non_entity_clients: 30, - clients: 39, - }, - mounts: [ - { - path: 'auth/method/RCpUn', - counts: { - clients: 18, - entity_clients: 3, - non_entity_clients: 15, - }, - }, - { - path: 'auth/method/S0O4t', - counts: { - clients: 14, - entity_clients: 3, - non_entity_clients: 11, - }, - }, - { - path: 'auth/method/QqXfg', - counts: { - clients: 5, - entity_clients: 2, - non_entity_clients: 3, - }, - }, - { - path: 'auth/method/CSSoi', - counts: { - clients: 2, - entity_clients: 1, - non_entity_clients: 1, - }, - }, - ], - id: 'namespace9/', - path: '', - }, - ], - new_clients: { - counts: { - clients: 114, - entity_clients: 63, - non_entity_clients: 51, - }, - namespaces: [ - { - counts: { - clients: 7, - entity_clients: 6, - non_entity_clients: 1, - }, - mounts: [ - { - path: 'auth/method/cdZ64', - counts: { - clients: 2, - entity_clients: 2, - non_entity_clients: 1, - }, - }, - { - path: 'auth/method/UpXi1', - counts: { - clients: 2, - entity_clients: 1, - non_entity_clients: 0, - }, - }, - { - path: 'auth/method/6OzPw', - counts: { - clients: 1, - entity_clients: 1, - non_entity_clients: 5, - }, - }, - { - path: 'auth/method/PkimI', - counts: { - clients: 1, - entity_clients: 1, - non_entity_clients: 0, - }, - }, - ], - id: 'namespace17/', - path: '', - }, - { - counts: { - clients: 1, - entity_clients: 1, - non_entity_clients: 0, - }, - mounts: [ - { - path: 'auth/method/xYL0l', - counts: { - clients: 1, - entity_clients: 1, - non_entity_clients: 0, - }, - }, - { - path: 'auth/method/CwWM7', - counts: { - clients: 0, - entity_clients: 0, - non_entity_clients: 0, - }, - }, - { - path: 'auth/method/swCd0', - counts: { - clients: 0, - entity_clients: 0, - non_entity_clients: 0, - }, - }, - { - path: 'auth/method/0CZTs', - counts: { - clients: 0, - entity_clients: 0, - non_entity_clients: 0, - }, - }, - ], - id: 'namespace10/', - path: '', - }, - { - counts: { - clients: 1, - entity_clients: 1, - non_entity_clients: 0, - }, - mounts: [ - { - path: 'auth/method/RCpUn', - counts: { - clients: 1, - entity_clients: 1, - non_entity_clients: 0, - }, - }, - { - path: 'auth/method/S0O4t', - counts: { - clients: 0, - entity_clients: 0, - non_entity_clients: 0, - }, - }, - { - path: 'auth/method/QqXfg', - counts: { - clients: 0, - entity_clients: 0, - non_entity_clients: 0, - }, - }, - { - path: 'auth/method/CSSoi', - counts: { - clients: 0, - entity_clients: 0, - non_entity_clients: 0, - }, - }, - ], - id: 'namespace9/', - path: '', - }, - ], - }, - }, - { - timestamp: '2022-10-01T07:00:00.000Z', - counts: { - clients: 489, - entity_clients: 134, - non_entity_clients: 355, - }, - namespaces: [ - { - counts: { - entity_clients: 108, - non_entity_clients: 322, - clients: 430, - }, - mounts: [ - { - path: 'auth/method/uMGBU', - counts: { - clients: 257, - entity_clients: 35, - non_entity_clients: 222, - }, - }, - { - path: 'auth/method/8YJO3', - counts: { - clients: 79, - entity_clients: 34, - non_entity_clients: 45, - }, - }, - { - path: 'auth/method/Ro774', - counts: { - clients: 65, - entity_clients: 32, - non_entity_clients: 33, - }, - }, - { - path: 'auth/method/ZIpjT', - counts: { - clients: 29, - entity_clients: 7, - non_entity_clients: 22, - }, - }, - ], - id: 'namespacelonglonglong4/', - path: '', - }, - { - counts: { - entity_clients: 15, - non_entity_clients: 26, - clients: 41, - }, - mounts: [ - { - path: 'auth/method/qT4Wl', - counts: { - clients: 22, - entity_clients: 9, - non_entity_clients: 13, - }, - }, - { - path: 'auth/method/Vhu56', - counts: { - clients: 9, - entity_clients: 3, - non_entity_clients: 6, - }, - }, - { - path: 'auth/method/PCc58', - counts: { - clients: 7, - entity_clients: 2, - non_entity_clients: 5, - }, - }, - { - path: 'auth/method/nPP4c', - counts: { - clients: 3, - entity_clients: 1, - non_entity_clients: 2, - }, - }, - ], - id: 'namespace11/', - path: '', - }, - { - counts: { - entity_clients: 11, - non_entity_clients: 7, - clients: 18, - }, - mounts: [ - { - path: 'auth/method/xYL0l', - counts: { - clients: 8, - entity_clients: 5, - non_entity_clients: 3, - }, - }, - { - path: 'auth/method/CwWM7', - counts: { - clients: 5, - entity_clients: 3, - non_entity_clients: 2, - }, - }, - { - path: 'auth/method/swCd0', - counts: { - clients: 3, - entity_clients: 2, - non_entity_clients: 1, - }, - }, - { - path: 'auth/method/0CZTs', - counts: { - clients: 2, - entity_clients: 1, - non_entity_clients: 1, - }, - }, - ], - id: 'namespace10/', - path: '', - }, - ], - new_clients: { - counts: { - clients: 21, - entity_clients: 11, - non_entity_clients: 10, - }, - namespaces: [ - { - counts: { - clients: 154, - entity_clients: 129, - non_entity_clients: 25, - }, - mounts: [ - { - path: 'auth/method/uMGBU', - counts: { - clients: 114, - entity_clients: 84, - non_entity_clients: 453, - }, - }, - { - path: 'auth/method/8YJO3', - counts: { - clients: 33, - entity_clients: 25, - non_entity_clients: 291, - }, - }, - { - path: 'auth/method/Ro774', - counts: { - clients: 4, - entity_clients: 2, - non_entity_clients: 13, - }, - }, - { - path: 'auth/method/ZIpjT', - counts: { - clients: 2, - entity_clients: 1, - non_entity_clients: 4, - }, - }, - ], - id: 'namespacelonglonglong4/', - path: '', - }, - { - counts: { - clients: 6, - entity_clients: 3, - non_entity_clients: 3, - }, - mounts: [ - { - path: 'auth/method/qT4Wl', - counts: { - clients: 2, - entity_clients: 1, - non_entity_clients: 1019, - }, - }, - { - path: 'auth/method/Vhu56', - counts: { - clients: 1, - entity_clients: 1, - non_entity_clients: 11, - }, - }, - { - path: 'auth/method/PCc58', - counts: { - clients: 1, - entity_clients: 1, - non_entity_clients: 29, - }, - }, - { - path: 'auth/method/nPP4c', - counts: { - clients: 1, - entity_clients: 1, - non_entity_clients: 7, - }, - }, - ], - id: 'namespace11/', - path: '', - }, - { - counts: { - clients: 4, - entity_clients: 2, - non_entity_clients: 2, - }, - mounts: [ - { - path: 'auth/method/xYL0l', - counts: { - clients: 1, - entity_clients: 1, - non_entity_clients: 195, - }, - }, - { - path: 'auth/method/CwWM7', - counts: { - clients: 1, - entity_clients: 1, - non_entity_clients: 88, - }, - }, - { - path: 'auth/method/swCd0', - counts: { - clients: 1, - entity_clients: 1, - non_entity_clients: 58, - }, - }, - { - path: 'auth/method/0CZTs', - counts: { - clients: 1, - entity_clients: 1, - non_entity_clients: 1, - }, - }, - ], - id: 'namespace10/', - path: '', - }, - ], - }, - }, - { - timestamp: '2022-11-01T07:00:00.000Z', - counts: { - clients: 510, - entity_clients: 164, - non_entity_clients: 346, - }, - namespaces: [ - { - counts: { - entity_clients: 66, - non_entity_clients: 176, - clients: 242, - }, - mounts: [ - { - path: 'auth/method/cdZ64', - counts: { - clients: 108, - entity_clients: 26, - non_entity_clients: 82, - }, - }, - { - path: 'auth/method/UpXi1', - counts: { - clients: 93, - entity_clients: 22, - non_entity_clients: 71, - }, - }, - { - path: 'auth/method/6OzPw', - counts: { - clients: 29, - entity_clients: 15, - non_entity_clients: 14, - }, - }, - { - path: 'auth/method/PkimI', - counts: { - clients: 12, - entity_clients: 3, - non_entity_clients: 9, - }, - }, - ], - id: 'namespace17/', - path: '', - }, - { - counts: { - entity_clients: 51, - non_entity_clients: 120, - clients: 171, - }, - mounts: [ - { - path: 'auth/method/lDz9c', - counts: { - clients: 144, - entity_clients: 31, - non_entity_clients: 113, - }, - }, - { - path: 'auth/method/GtbUu', - counts: { - clients: 15, - entity_clients: 10, - non_entity_clients: 5, - }, - }, - { - path: 'auth/method/WCyYz', - counts: { - clients: 7, - entity_clients: 6, - non_entity_clients: 1, - }, - }, - { - path: 'auth/method/j227p', - counts: { - clients: 5, - entity_clients: 4, - non_entity_clients: 1, - }, - }, - ], - id: 'namespacelonglonglong3/', - path: '', - }, - { - counts: { - entity_clients: 47, - non_entity_clients: 50, - clients: 97, - }, - mounts: [ - { - path: 'auth/method/uMGBU', - counts: { - clients: 53, - entity_clients: 23, - non_entity_clients: 30, - }, - }, - { - path: 'auth/method/8YJO3', - counts: { - clients: 33, - entity_clients: 16, - non_entity_clients: 17, - }, - }, - { - path: 'auth/method/Ro774', - counts: { - clients: 9, - entity_clients: 7, - non_entity_clients: 2, - }, - }, - { - path: 'auth/method/ZIpjT', - counts: { - clients: 2, - entity_clients: 1, - non_entity_clients: 1, - }, - }, - ], - id: 'namespacelonglonglong4/', - path: '', - }, - ], - new_clients: { - counts: { - clients: 27, - entity_clients: 8, - non_entity_clients: 19, - }, - namespaces: [ - { - counts: { - clients: 79, - entity_clients: 40, - non_entity_clients: 39, - }, - mounts: [ - { - path: 'auth/method/cdZ64', - counts: { - clients: 43, - entity_clients: 19, - non_entity_clients: 813, - }, - }, - { - path: 'auth/method/UpXi1', - counts: { - clients: 19, - entity_clients: 15, - non_entity_clients: 113, - }, - }, - { - path: 'auth/method/6OzPw', - counts: { - clients: 9, - entity_clients: 6, - non_entity_clients: 45, - }, - }, - { - path: 'auth/method/PkimI', - counts: { - clients: 4, - entity_clients: 2, - non_entity_clients: 168, - }, - }, - ], - id: 'namespace17/', - path: '', - }, - { - counts: { - clients: 4, - entity_clients: 3, - non_entity_clients: 1, - }, - mounts: [ - { - path: 'auth/method/lDz9c', - counts: { - clients: 1, - entity_clients: 1, - non_entity_clients: 392, - }, - }, - { - path: 'auth/method/GtbUu', - counts: { - clients: 1, - entity_clients: 1, - non_entity_clients: 32, - }, - }, - { - path: 'auth/method/WCyYz', - counts: { - clients: 1, - entity_clients: 1, - non_entity_clients: 1, - }, - }, - { - path: 'auth/method/j227p', - counts: { - clients: 1, - entity_clients: 1, - non_entity_clients: 51, - }, - }, - ], - id: 'namespacelonglonglong3/', - path: '', - }, - { - counts: { - clients: 3, - entity_clients: 2, - non_entity_clients: 1, - }, - mounts: [ - { - path: 'auth/method/uMGBU', - counts: { - clients: 1, - entity_clients: 1, - non_entity_clients: 453, - }, - }, - { - path: 'auth/method/8YJO3', - counts: { - clients: 1, - entity_clients: 1, - non_entity_clients: 291, - }, - }, - { - path: 'auth/method/Ro774', - counts: { - clients: 1, - entity_clients: 1, - non_entity_clients: 13, - }, - }, - { - path: 'auth/method/ZIpjT', - counts: { - clients: 0, - entity_clients: 0, - non_entity_clients: 4, - }, - }, - ], - id: 'namespacelonglonglong4/', - path: '', - }, - ], - }, - }, - { - timestamp: '2022-12-01T08:00:00.000Z', - counts: { - clients: 537, - entity_clients: 125, - non_entity_clients: 412, - }, - namespaces: [ - { - counts: { - entity_clients: 89, - non_entity_clients: 188, - clients: 277, - }, - mounts: [ - { - path: 'auth/method/cdZ64', - counts: { - clients: 148, - entity_clients: 79, - non_entity_clients: 69, - }, - }, - { - path: 'auth/method/UpXi1', - counts: { - clients: 63, - entity_clients: 4, - non_entity_clients: 59, - }, - }, - { - path: 'auth/method/6OzPw', - counts: { - clients: 40, - entity_clients: 3, - non_entity_clients: 37, - }, - }, - { - path: 'auth/method/PkimI', - counts: { - clients: 26, - entity_clients: 3, - non_entity_clients: 23, - }, - }, - ], - id: 'namespace17/', - path: '', - }, - { - counts: { - entity_clients: 24, - non_entity_clients: 187, - clients: 211, - }, - mounts: [ - { - path: 'auth/method/u2r0G', - counts: { - clients: 190, - entity_clients: 17, - non_entity_clients: 173, - }, - }, - { - path: 'auth/method/mKqBV', - counts: { - clients: 12, - entity_clients: 4, - non_entity_clients: 8, - }, - }, - { - path: 'auth/method/nGOa2', - counts: { - clients: 7, - entity_clients: 2, - non_entity_clients: 5, - }, - }, - { - path: 'auth/method/46UKX', - counts: { - clients: 2, - entity_clients: 1, - non_entity_clients: 1, - }, - }, - ], - id: 'namespace15/', - path: '', - }, - { - counts: { - entity_clients: 12, - non_entity_clients: 37, - clients: 49, - }, - mounts: [ - { - path: 'auth/method/uMGBU', - counts: { - clients: 22, - entity_clients: 6, - non_entity_clients: 16, - }, - }, - { - path: 'auth/method/8YJO3', - counts: { - clients: 14, - entity_clients: 4, - non_entity_clients: 10, - }, - }, - { - path: 'auth/method/Ro774', - counts: { - clients: 9, - entity_clients: 1, - non_entity_clients: 8, - }, - }, - { - path: 'auth/method/ZIpjT', - counts: { - clients: 4, - entity_clients: 1, - non_entity_clients: 3, - }, - }, - ], - id: 'namespacelonglonglong4/', - path: '', - }, - ], - new_clients: { - counts: { - clients: 0, - entity_clients: 0, - non_entity_clients: 0, - }, - namespaces: [ - { - counts: { - clients: 0, - entity_clients: 0, - non_entity_clients: 0, - }, - mounts: [ - { - path: 'auth/method/cdZ64', - counts: { - clients: 0, - entity_clients: 0, - non_entity_clients: 0, - }, - }, - { - path: 'auth/method/UpXi1', - counts: { - clients: 0, - entity_clients: 0, - non_entity_clients: 0, - }, - }, - { - path: 'auth/method/6OzPw', - counts: { - clients: 0, - entity_clients: 0, - non_entity_clients: 0, - }, - }, - { - path: 'auth/method/PkimI', - counts: { - clients: 0, - entity_clients: 0, - non_entity_clients: 0, - }, - }, - ], - id: 'namespace17/', - path: '', - }, - { - counts: { - clients: 0, - entity_clients: 0, - non_entity_clients: 0, - }, - mounts: [ - { - path: 'auth/method/u2r0G', - counts: { - clients: 0, - entity_clients: 0, - non_entity_clients: 0, - }, - }, - { - path: 'auth/method/mKqBV', - counts: { - clients: 0, - entity_clients: 0, - non_entity_clients: 0, - }, - }, - { - path: 'auth/method/nGOa2', - counts: { - clients: 0, - entity_clients: 0, - non_entity_clients: 0, - }, - }, - { - path: 'auth/method/46UKX', - counts: { - clients: 0, - entity_clients: 0, - non_entity_clients: 0, - }, - }, - ], - id: 'namespace15/', - path: '', - }, - { - counts: { - clients: 0, - entity_clients: 0, - non_entity_clients: 0, - }, - mounts: [ - { - path: 'auth/method/uMGBU', - counts: { - clients: 0, - entity_clients: 0, - non_entity_clients: 0, - }, - }, - { - path: 'auth/method/8YJO3', - counts: { - clients: 0, - entity_clients: 0, - non_entity_clients: 0, - }, - }, - { - path: 'auth/method/Ro774', - counts: { - clients: 0, - entity_clients: 0, - non_entity_clients: 0, - }, - }, - { - path: 'auth/method/ZIpjT', - counts: { - clients: 0, - entity_clients: 0, - non_entity_clients: 0, - }, - }, - ], - id: 'namespacelonglonglong4/', - path: '', - }, - ], - }, - }, - ], - }, - }; - }, - { timing: 3000 } - ); - - server.get('/sys/internal/counters/activity/monthly', function () { - return { - request_id: '26be5ab9-dcac-9237-ec12-269a8ca64742', - lease_id: '', - renewable: false, - lease_duration: 0, - data: { - by_namespace: [ - { - namespace_id: '0lHBL', - namespace_path: 'ns1/', - counts: { - distinct_entities: 85, - non_entity_tokens: 15, - clients: 100, - }, - mounts: [ - { - path: 'auth/method/uMGBU', - counts: { - clients: 35, - entity_clients: 20, - non_entity_clients: 15, - }, - }, - { - path: 'auth/method/woiej', - counts: { - clients: 35, - entity_clients: 20, - non_entity_clients: 15, - }, - }, - ], - }, - { - namespace_id: 'RxD81', - namespace_path: 'ns2/', - counts: { - distinct_entities: 35, - non_entity_tokens: 20, - clients: 55, - }, - mounts: [ - { - path: 'auth/method/ABCD1', - counts: { - clients: 35, - entity_clients: 20, - non_entity_clients: 15, - }, - }, - { - path: 'auth/method/ABCD2', - counts: { - clients: 35, - entity_clients: 20, - non_entity_clients: 15, - }, - }, - ], - }, - { - namespace_id: 'root', - namespace_path: '', - counts: { - distinct_entities: 12, - non_entity_tokens: 8, - clients: 20, - }, - mounts: [ - { - path: 'auth/method/XYZZ2', - counts: { - clients: 35, - entity_clients: 20, - non_entity_clients: 15, - }, - }, - { - path: 'auth/method/XYZZ1', - counts: { - clients: 35, - entity_clients: 20, - non_entity_clients: 15, - }, - }, - ], - }, - ], - distinct_entities: 132, - non_entity_tokens: 43, - clients: 175, - }, - wrap_info: null, - warnings: null, - auth: null, - }; - }); -} diff --git a/ui/mirage/handlers/clients.js b/ui/mirage/handlers/clients.js index 5e9296a1dc..46d22b74e9 100644 --- a/ui/mirage/handlers/clients.js +++ b/ui/mirage/handlers/clients.js @@ -1,2969 +1,127 @@ import { - formatISO, - isAfter, isBefore, - sub, - isSameMonth, startOfMonth, endOfMonth, addMonths, subMonths, differenceInCalendarMonths, fromUnixTime, + isAfter, + formatRFC3339, } from 'date-fns'; import { parseAPITimestamp } from 'core/utils/date-formatters'; -import formatRFC3339 from 'date-fns/formatRFC3339'; - -const NEW_DATE = new Date(); -const COUNTS_START = subMonths(NEW_DATE, 12); // pretend vault user started cluster 1 year ago +const CURRENT_DATE = new Date(); +const COUNTS_START = subMonths(CURRENT_DATE, 12); // pretend vault user started cluster 6 months ago // for testing, we're in the middle of a license/billing period -const LICENSE_START = startOfMonth(subMonths(NEW_DATE, 6)); -const LICENSE_END = endOfMonth(addMonths(NEW_DATE, 6)); - +const LICENSE_START = startOfMonth(subMonths(CURRENT_DATE, 6)); // upgrade happened 1 month after license start const UPGRADE_DATE = addMonths(LICENSE_START, 1); -// Oldest to newest -const MOCK_MONTHLY_DATA = [ - { - timestamp: formatISO(UPGRADE_DATE), - counts: { - distinct_entities: 0, - entity_clients: 10433, - non_entity_tokens: 0, - non_entity_clients: 7555, - clients: 17988, - }, - namespaces: [ - { - namespace_id: 'PU6JB', - namespace_path: 'test-ns-2/', - counts: { - distinct_entities: 0, - entity_clients: 3458, - non_entity_tokens: 0, - non_entity_clients: 1631, - clients: 5089, - }, - mounts: [ - { - mount_path: 'path-1', - counts: { - distinct_entities: 0, - entity_clients: 948, - non_entity_tokens: 0, - non_entity_clients: 714, - clients: 1662, - }, - }, - { - mount_path: 'path-4-with-over-18-characters', - counts: { - distinct_entities: 0, - entity_clients: 899, - non_entity_tokens: 0, - non_entity_clients: 301, - clients: 1200, - }, - }, - { - mount_path: 'path-2', - counts: { - distinct_entities: 0, - entity_clients: 692, - non_entity_tokens: 0, - non_entity_clients: 474, - clients: 1166, - }, - }, - { - mount_path: 'path-3-with-over-18-characters', - counts: { - distinct_entities: 0, - entity_clients: 919, - non_entity_tokens: 0, - non_entity_clients: 142, - clients: 1061, - }, - }, - ], - }, - { - namespace_id: '3lq5r', - namespace_path: 'test-ns-2-with-namespace-length-over-18-characters/', - counts: { - distinct_entities: 0, - entity_clients: 2428, - non_entity_tokens: 0, - non_entity_clients: 1841, - clients: 4269, - }, - mounts: [ - { - mount_path: 'path-3-with-over-18-characters', - counts: { - distinct_entities: 0, - entity_clients: 969, - non_entity_tokens: 0, - non_entity_clients: 396, - clients: 1365, - }, - }, - { - mount_path: 'path-4-with-over-18-characters', - counts: { - distinct_entities: 0, - entity_clients: 794, - non_entity_tokens: 0, - non_entity_clients: 501, - clients: 1295, - }, - }, - { - mount_path: 'path-1', - counts: { - distinct_entities: 0, - entity_clients: 289, - non_entity_tokens: 0, - non_entity_clients: 666, - clients: 955, - }, - }, - { - mount_path: 'path-2', - counts: { - distinct_entities: 0, - entity_clients: 376, - non_entity_tokens: 0, - non_entity_clients: 278, - clients: 654, - }, - }, - ], - }, - { - namespace_id: 'sJRLj', - namespace_path: 'test-ns-1-with-namespace-length-over-18-characters/', - counts: { - distinct_entities: 0, - entity_clients: 2384, - non_entity_tokens: 0, - non_entity_clients: 1278, - clients: 3662, - }, - mounts: [ - { - mount_path: 'path-2', - counts: { - distinct_entities: 0, - entity_clients: 853, - non_entity_tokens: 0, - non_entity_clients: 553, - clients: 1406, - }, - }, - { - mount_path: 'path-1', - counts: { - distinct_entities: 0, - entity_clients: 677, - non_entity_tokens: 0, - non_entity_clients: 182, - clients: 859, - }, - }, - { - mount_path: 'path-4-with-over-18-characters', - counts: { - distinct_entities: 0, - entity_clients: 582, - non_entity_tokens: 0, - non_entity_clients: 175, - clients: 757, - }, - }, - { - mount_path: 'path-3-with-over-18-characters', - counts: { - distinct_entities: 0, - entity_clients: 272, - non_entity_tokens: 0, - non_entity_clients: 368, - clients: 640, - }, - }, - ], - }, - { - namespace_id: 'root', - namespace_path: '', - counts: { - distinct_entities: 0, - entity_clients: 943, - non_entity_tokens: 0, - non_entity_clients: 1595, - clients: 2538, - }, - mounts: [ - { - mount_path: 'path-4-with-over-18-characters', - counts: { - distinct_entities: 0, - entity_clients: 318, - non_entity_tokens: 0, - non_entity_clients: 735, - clients: 1053, - }, - }, - { - mount_path: 'path-3-with-over-18-characters', - counts: { - distinct_entities: 0, - entity_clients: 362, - non_entity_tokens: 0, - non_entity_clients: 415, - clients: 777, - }, - }, - { - mount_path: 'path-2', - counts: { - distinct_entities: 0, - entity_clients: 158, - non_entity_tokens: 0, - non_entity_clients: 325, - clients: 483, - }, - }, - { - mount_path: 'path-1', - counts: { - distinct_entities: 0, - entity_clients: 105, - non_entity_tokens: 0, - non_entity_clients: 120, - clients: 225, - }, - }, - ], - }, - { - namespace_id: 'opmJ1', - namespace_path: 'test-ns-1/', - counts: { - distinct_entities: 0, - entity_clients: 1220, - non_entity_tokens: 0, - non_entity_clients: 1210, - clients: 2430, - }, - mounts: [ - { - mount_path: 'path-3-with-over-18-characters', - counts: { - distinct_entities: 0, - entity_clients: 697, - non_entity_tokens: 0, - non_entity_clients: 516, - clients: 1213, - }, - }, - { - mount_path: 'path-1', - counts: { - distinct_entities: 0, - entity_clients: 154, - non_entity_tokens: 0, - non_entity_clients: 480, - clients: 634, - }, - }, - { - mount_path: 'path-4-with-over-18-characters', - counts: { - distinct_entities: 0, - entity_clients: 223, - non_entity_tokens: 0, - non_entity_clients: 97, - clients: 320, - }, - }, - { - mount_path: 'path-2', - counts: { - distinct_entities: 0, - entity_clients: 146, - non_entity_tokens: 0, - non_entity_clients: 117, - clients: 263, - }, - }, - ], - }, - ], - new_clients: { - counts: { - distinct_entities: 0, - entity_clients: 5032, - non_entity_tokens: 0, - non_entity_clients: 2888, - clients: 7920, - }, - namespaces: [ - { - namespace_id: 'sJRLj', - namespace_path: 'test-ns-1-with-namespace-length-over-18-characters/', - counts: { - distinct_entities: 0, - entity_clients: 1907, - non_entity_tokens: 0, - non_entity_clients: 354, - clients: 2261, - }, - mounts: [ - { - mount_path: 'path-2', - counts: { - distinct_entities: 0, - entity_clients: 753, - non_entity_tokens: 0, - non_entity_clients: 138, - clients: 891, - }, - }, - { - mount_path: 'path-1', - counts: { - distinct_entities: 0, - entity_clients: 516, - non_entity_tokens: 0, - non_entity_clients: 91, - clients: 607, - }, - }, - { - mount_path: 'path-4-with-over-18-characters', - counts: { - distinct_entities: 0, - entity_clients: 474, - non_entity_tokens: 0, - non_entity_clients: 1, - clients: 475, - }, - }, - { - mount_path: 'path-3-with-over-18-characters', - counts: { - distinct_entities: 0, - entity_clients: 164, - non_entity_tokens: 0, - non_entity_clients: 124, - clients: 288, - }, - }, - ], - }, - { - namespace_id: '3lq5r', - namespace_path: 'test-ns-2-with-namespace-length-over-18-characters/', - counts: { - distinct_entities: 0, - entity_clients: 843, - non_entity_tokens: 0, - non_entity_clients: 748, - clients: 1591, - }, - mounts: [ - { - mount_path: 'path-4-with-over-18-characters', - counts: { - distinct_entities: 0, - entity_clients: 597, - non_entity_tokens: 0, - non_entity_clients: 369, - clients: 966, - }, - }, - { - mount_path: 'path-3-with-over-18-characters', - counts: { - distinct_entities: 0, - entity_clients: 185, - non_entity_tokens: 0, - non_entity_clients: 156, - clients: 341, - }, - }, - { - mount_path: 'path-1', - counts: { - distinct_entities: 0, - entity_clients: 59, - non_entity_tokens: 0, - non_entity_clients: 223, - clients: 282, - }, - }, - { - mount_path: 'path-2', - counts: { - distinct_entities: 0, - entity_clients: 2, - non_entity_tokens: 0, - non_entity_clients: 0, - clients: 2, - }, - }, - ], - }, - { - namespace_id: 'PU6JB', - namespace_path: 'test-ns-2/', - counts: { - distinct_entities: 0, - entity_clients: 1291, - non_entity_tokens: 0, - non_entity_clients: 268, - clients: 1559, - }, - mounts: [ - { - mount_path: 'path-2', - counts: { - distinct_entities: 0, - entity_clients: 518, - non_entity_tokens: 0, - non_entity_clients: 78, - clients: 596, - }, - }, - { - mount_path: 'path-1', - counts: { - distinct_entities: 0, - entity_clients: 291, - non_entity_tokens: 0, - non_entity_clients: 85, - clients: 376, - }, - }, - { - mount_path: 'path-4-with-over-18-characters', - counts: { - distinct_entities: 0, - entity_clients: 276, - non_entity_tokens: 0, - non_entity_clients: 59, - clients: 335, - }, - }, - { - mount_path: 'path-3-with-over-18-characters', - counts: { - distinct_entities: 0, - entity_clients: 206, - non_entity_tokens: 0, - non_entity_clients: 46, - clients: 252, - }, - }, - ], - }, - { - namespace_id: 'opmJ1', - namespace_path: 'test-ns-1/', - counts: { - distinct_entities: 0, - entity_clients: 663, - non_entity_tokens: 0, - non_entity_clients: 778, - clients: 1441, - }, - mounts: [ - { - mount_path: 'path-3-with-over-18-characters', - counts: { - distinct_entities: 0, - entity_clients: 478, - non_entity_tokens: 0, - non_entity_clients: 309, - clients: 787, - }, - }, - { - mount_path: 'path-1', - counts: { - distinct_entities: 0, - entity_clients: 129, - non_entity_tokens: 0, - non_entity_clients: 313, - clients: 442, - }, - }, - { - mount_path: 'path-2', - counts: { - distinct_entities: 0, - entity_clients: 32, - non_entity_tokens: 0, - non_entity_clients: 79, - clients: 111, - }, - }, - { - mount_path: 'path-4-with-over-18-characters', - counts: { - distinct_entities: 0, - entity_clients: 24, - non_entity_tokens: 0, - non_entity_clients: 77, - clients: 101, - }, - }, - ], - }, - { - namespace_id: 'root', - namespace_path: '', - counts: { - distinct_entities: 0, - entity_clients: 328, - non_entity_tokens: 0, - non_entity_clients: 740, - clients: 1068, - }, - mounts: [ - { - mount_path: 'path-4-with-over-18-characters', - counts: { - distinct_entities: 0, - entity_clients: 143, - non_entity_tokens: 0, - non_entity_clients: 273, - clients: 416, - }, - }, - { - mount_path: 'path-2', - counts: { - distinct_entities: 0, - entity_clients: 136, - non_entity_tokens: 0, - non_entity_clients: 142, - clients: 278, - }, - }, - { - mount_path: 'path-3-with-over-18-characters', - counts: { - distinct_entities: 0, - entity_clients: 19, - non_entity_tokens: 0, - non_entity_clients: 216, - clients: 235, - }, - }, - { - mount_path: 'path-1', - counts: { - distinct_entities: 0, - entity_clients: 30, - non_entity_tokens: 0, - non_entity_clients: 109, - clients: 139, - }, - }, - ], - }, - ], - }, - }, - { - timestamp: formatISO(addMonths(UPGRADE_DATE, 1)), - counts: { - distinct_entities: 0, - entity_clients: 10285, - non_entity_tokens: 0, - non_entity_clients: 10425, - clients: 20710, - }, - namespaces: [ - { - namespace_id: '3lq5r', - namespace_path: 'test-ns-2-with-namespace-length-over-18-characters/', - counts: { - distinct_entities: 0, - entity_clients: 2335, - non_entity_tokens: 0, - non_entity_clients: 2644, - clients: 4979, - }, - mounts: [ - { - mount_path: 'path-2', - counts: { - distinct_entities: 0, - entity_clients: 939, - non_entity_tokens: 0, - non_entity_clients: 649, - clients: 1588, - }, - }, - { - mount_path: 'path-1', - counts: { - distinct_entities: 0, - entity_clients: 461, - non_entity_tokens: 0, - non_entity_clients: 870, - clients: 1331, - }, - }, - { - mount_path: 'path-4-with-over-18-characters', - counts: { - distinct_entities: 0, - entity_clients: 172, - non_entity_tokens: 0, - non_entity_clients: 990, - clients: 1162, - }, - }, - { - mount_path: 'path-3-with-over-18-characters', - counts: { - distinct_entities: 0, - entity_clients: 763, - non_entity_tokens: 0, - non_entity_clients: 135, - clients: 898, - }, - }, - ], - }, - { - namespace_id: 'root', - namespace_path: '', - counts: { - distinct_entities: 0, - entity_clients: 2054, - non_entity_tokens: 0, - non_entity_clients: 2747, - clients: 4801, - }, - mounts: [ - { - mount_path: 'path-2', - counts: { - distinct_entities: 0, - entity_clients: 540, - non_entity_tokens: 0, - non_entity_clients: 941, - clients: 1481, - }, - }, - { - mount_path: 'path-1', - counts: { - distinct_entities: 0, - entity_clients: 722, - non_entity_tokens: 0, - non_entity_clients: 507, - clients: 1229, - }, - }, - { - mount_path: 'path-3-with-over-18-characters', - counts: { - distinct_entities: 0, - entity_clients: 611, - non_entity_tokens: 0, - non_entity_clients: 520, - clients: 1131, - }, - }, - { - mount_path: 'path-4-with-over-18-characters', - counts: { - distinct_entities: 0, - entity_clients: 181, - non_entity_tokens: 0, - non_entity_clients: 779, - clients: 960, - }, - }, - ], - }, - { - namespace_id: 'PU6JB', - namespace_path: 'test-ns-2/', - counts: { - distinct_entities: 0, - entity_clients: 2788, - non_entity_tokens: 0, - non_entity_clients: 1720, - clients: 4508, - }, - mounts: [ - { - mount_path: 'path-2', - counts: { - distinct_entities: 0, - entity_clients: 643, - non_entity_tokens: 0, - non_entity_clients: 814, - clients: 1457, - }, - }, - { - mount_path: 'path-3-with-over-18-characters', - counts: { - distinct_entities: 0, - entity_clients: 811, - non_entity_tokens: 0, - non_entity_clients: 385, - clients: 1196, - }, - }, - { - mount_path: 'path-1', - counts: { - distinct_entities: 0, - entity_clients: 932, - non_entity_tokens: 0, - non_entity_clients: 72, - clients: 1004, - }, - }, - { - mount_path: 'path-4-with-over-18-characters', - counts: { - distinct_entities: 0, - entity_clients: 402, - non_entity_tokens: 0, - non_entity_clients: 449, - clients: 851, - }, - }, - ], - }, - { - namespace_id: 'sJRLj', - namespace_path: 'test-ns-1-with-namespace-length-over-18-characters/', - counts: { - distinct_entities: 0, - entity_clients: 1162, - non_entity_tokens: 0, - non_entity_clients: 2187, - clients: 3349, - }, - mounts: [ - { - mount_path: 'path-2', - counts: { - distinct_entities: 0, - entity_clients: 483, - non_entity_tokens: 0, - non_entity_clients: 839, - clients: 1322, - }, - }, - { - mount_path: 'path-4-with-over-18-characters', - counts: { - distinct_entities: 0, - entity_clients: 373, - non_entity_tokens: 0, - non_entity_clients: 858, - clients: 1231, - }, - }, - { - mount_path: 'path-1', - counts: { - distinct_entities: 0, - entity_clients: 271, - non_entity_tokens: 0, - non_entity_clients: 154, - clients: 425, - }, - }, - { - mount_path: 'path-3-with-over-18-characters', - counts: { - distinct_entities: 0, - entity_clients: 35, - non_entity_tokens: 0, - non_entity_clients: 336, - clients: 371, - }, - }, - ], - }, - { - namespace_id: 'opmJ1', - namespace_path: 'test-ns-1/', - counts: { - distinct_entities: 0, - entity_clients: 1946, - non_entity_tokens: 0, - non_entity_clients: 1127, - clients: 3073, - }, - mounts: [ - { - mount_path: 'path-4-with-over-18-characters', - counts: { - distinct_entities: 0, - entity_clients: 322, - non_entity_tokens: 0, - non_entity_clients: 537, - clients: 859, - }, - }, - { - mount_path: 'path-1', - counts: { - distinct_entities: 0, - entity_clients: 685, - non_entity_tokens: 0, - non_entity_clients: 132, - clients: 817, - }, - }, - { - mount_path: 'path-3-with-over-18-characters', - counts: { - distinct_entities: 0, - entity_clients: 321, - non_entity_tokens: 0, - non_entity_clients: 385, - clients: 706, - }, - }, - { - mount_path: 'path-2', - counts: { - distinct_entities: 0, - entity_clients: 618, - non_entity_tokens: 0, - non_entity_clients: 73, - clients: 691, - }, - }, - ], - }, - ], - new_clients: { - counts: { - distinct_entities: 0, - entity_clients: 5315, - non_entity_tokens: 0, - non_entity_clients: 5724, - clients: 11039, - }, - namespaces: [ - { - namespace_id: 'root', - namespace_path: '', - counts: { - distinct_entities: 0, - entity_clients: 1253, - non_entity_tokens: 0, - non_entity_clients: 1529, - clients: 2782, - }, - mounts: [ - { - mount_path: 'path-2', - counts: { - distinct_entities: 0, - entity_clients: 452, - non_entity_tokens: 0, - non_entity_clients: 433, - clients: 885, - }, - }, - { - mount_path: 'path-4-with-over-18-characters', - counts: { - distinct_entities: 0, - entity_clients: 134, - non_entity_tokens: 0, - non_entity_clients: 732, - clients: 866, - }, - }, - { - mount_path: 'path-3-with-over-18-characters', - counts: { - distinct_entities: 0, - entity_clients: 472, - non_entity_tokens: 0, - non_entity_clients: 361, - clients: 833, - }, - }, - { - mount_path: 'path-1', - counts: { - distinct_entities: 0, - entity_clients: 195, - non_entity_tokens: 0, - non_entity_clients: 3, - clients: 198, - }, - }, - ], - }, - { - namespace_id: '3lq5r', - namespace_path: 'test-ns-2-with-namespace-length-over-18-characters/', - counts: { - distinct_entities: 0, - entity_clients: 1032, - non_entity_tokens: 0, - non_entity_clients: 1652, - clients: 2684, - }, - mounts: [ - { - mount_path: 'path-4-with-over-18-characters', - counts: { - distinct_entities: 0, - entity_clients: 93, - non_entity_tokens: 0, - non_entity_clients: 849, - clients: 942, - }, - }, - { - mount_path: 'path-3-with-over-18-characters', - counts: { - distinct_entities: 0, - entity_clients: 692, - non_entity_tokens: 0, - non_entity_clients: 117, - clients: 809, - }, - }, - { - mount_path: 'path-1', - counts: { - distinct_entities: 0, - entity_clients: 159, - non_entity_tokens: 0, - non_entity_clients: 596, - clients: 755, - }, - }, - { - mount_path: 'path-2', - counts: { - distinct_entities: 0, - entity_clients: 88, - non_entity_tokens: 0, - non_entity_clients: 90, - clients: 178, - }, - }, - ], - }, - { - namespace_id: 'opmJ1', - namespace_path: 'test-ns-1/', - counts: { - distinct_entities: 0, - entity_clients: 1482, - non_entity_tokens: 0, - non_entity_clients: 742, - clients: 2224, - }, - mounts: [ - { - mount_path: 'path-3-with-over-18-characters', - counts: { - distinct_entities: 0, - entity_clients: 278, - non_entity_tokens: 0, - non_entity_clients: 372, - clients: 650, - }, - }, - { - mount_path: 'path-1', - counts: { - distinct_entities: 0, - entity_clients: 546, - non_entity_tokens: 0, - non_entity_clients: 52, - clients: 598, - }, - }, - { - mount_path: 'path-4-with-over-18-characters', - counts: { - distinct_entities: 0, - entity_clients: 313, - non_entity_tokens: 0, - non_entity_clients: 264, - clients: 577, - }, - }, - { - mount_path: 'path-2', - counts: { - distinct_entities: 0, - entity_clients: 345, - non_entity_tokens: 0, - non_entity_clients: 54, - clients: 399, - }, - }, - ], - }, - { - namespace_id: 'PU6JB', - namespace_path: 'test-ns-2/', - counts: { - distinct_entities: 0, - entity_clients: 1090, - non_entity_tokens: 0, - non_entity_clients: 600, - clients: 1690, - }, - mounts: [ - { - mount_path: 'path-2', - counts: { - distinct_entities: 0, - entity_clients: 632, - non_entity_tokens: 0, - non_entity_clients: 7, - clients: 639, - }, - }, - { - mount_path: 'path-4-with-over-18-characters', - counts: { - distinct_entities: 0, - entity_clients: 180, - non_entity_tokens: 0, - non_entity_clients: 317, - clients: 497, - }, - }, - { - mount_path: 'path-3-with-over-18-characters', - counts: { - distinct_entities: 0, - entity_clients: 214, - non_entity_tokens: 0, - non_entity_clients: 239, - clients: 453, - }, - }, - { - mount_path: 'path-1', - counts: { - distinct_entities: 0, - entity_clients: 64, - non_entity_tokens: 0, - non_entity_clients: 37, - clients: 101, - }, - }, - ], - }, - { - namespace_id: 'sJRLj', - namespace_path: 'test-ns-1-with-namespace-length-over-18-characters/', - counts: { - distinct_entities: 0, - entity_clients: 458, - non_entity_tokens: 0, - non_entity_clients: 1201, - clients: 1659, - }, - mounts: [ - { - mount_path: 'path-4-with-over-18-characters', - counts: { - distinct_entities: 0, - entity_clients: 134, - non_entity_tokens: 0, - non_entity_clients: 827, - clients: 961, - }, - }, - { - mount_path: 'path-1', - counts: { - distinct_entities: 0, - entity_clients: 232, - non_entity_tokens: 0, - non_entity_clients: 112, - clients: 344, - }, - }, - { - mount_path: 'path-3-with-over-18-characters', - counts: { - distinct_entities: 0, - entity_clients: 4, - non_entity_tokens: 0, - non_entity_clients: 193, - clients: 197, - }, - }, - { - mount_path: 'path-2', - counts: { - distinct_entities: 0, - entity_clients: 88, - non_entity_tokens: 0, - non_entity_clients: 69, - clients: 157, - }, - }, - ], - }, - ], - }, - }, - { - timestamp: formatISO(addMonths(UPGRADE_DATE, 2)), - counts: { - distinct_entities: 0, - entity_clients: 9721, - non_entity_tokens: 0, - non_entity_clients: 11472, - clients: 21193, - }, - namespaces: [ - { - namespace_id: 'sJRLj', - namespace_path: 'test-ns-1-with-namespace-length-over-18-characters/', - counts: { - distinct_entities: 0, - entity_clients: 2321, - non_entity_tokens: 0, - non_entity_clients: 2864, - clients: 5185, - }, - mounts: [ - { - mount_path: 'path-3-with-over-18-characters', - counts: { - distinct_entities: 0, - entity_clients: 616, - non_entity_tokens: 0, - non_entity_clients: 940, - clients: 1556, - }, - }, - { - mount_path: 'path-4-with-over-18-characters', - counts: { - distinct_entities: 0, - entity_clients: 965, - non_entity_tokens: 0, - non_entity_clients: 393, - clients: 1358, - }, - }, - { - mount_path: 'path-1', - counts: { - distinct_entities: 0, - entity_clients: 587, - non_entity_tokens: 0, - non_entity_clients: 724, - clients: 1311, - }, - }, - { - mount_path: 'path-2', - counts: { - distinct_entities: 0, - entity_clients: 153, - non_entity_tokens: 0, - non_entity_clients: 807, - clients: 960, - }, - }, - ], - }, - { - namespace_id: 'PU6JB', - namespace_path: 'test-ns-2/', - counts: { - distinct_entities: 0, - entity_clients: 2711, - non_entity_tokens: 0, - non_entity_clients: 1883, - clients: 4594, - }, - mounts: [ - { - mount_path: 'path-3-with-over-18-characters', - counts: { - distinct_entities: 0, - entity_clients: 619, - non_entity_tokens: 0, - non_entity_clients: 925, - clients: 1544, - }, - }, - { - mount_path: 'path-4-with-over-18-characters', - counts: { - distinct_entities: 0, - entity_clients: 661, - non_entity_tokens: 0, - non_entity_clients: 814, - clients: 1475, - }, - }, - { - mount_path: 'path-2', - counts: { - distinct_entities: 0, - entity_clients: 954, - non_entity_tokens: 0, - non_entity_clients: 7, - clients: 961, - }, - }, - { - mount_path: 'path-1', - counts: { - distinct_entities: 0, - entity_clients: 477, - non_entity_tokens: 0, - non_entity_clients: 137, - clients: 614, - }, - }, - ], - }, - { - namespace_id: '3lq5r', - namespace_path: 'test-ns-2-with-namespace-length-over-18-characters/', - counts: { - distinct_entities: 0, - entity_clients: 1426, - non_entity_tokens: 0, - non_entity_clients: 2978, - clients: 4404, - }, - mounts: [ - { - mount_path: 'path-2', - counts: { - distinct_entities: 0, - entity_clients: 780, - non_entity_tokens: 0, - non_entity_clients: 696, - clients: 1476, - }, - }, - { - mount_path: 'path-4-with-over-18-characters', - counts: { - distinct_entities: 0, - entity_clients: 369, - non_entity_tokens: 0, - non_entity_clients: 977, - clients: 1346, - }, - }, - { - mount_path: 'path-3-with-over-18-characters', - counts: { - distinct_entities: 0, - entity_clients: 200, - non_entity_tokens: 0, - non_entity_clients: 753, - clients: 953, - }, - }, - { - mount_path: 'path-1', - counts: { - distinct_entities: 0, - entity_clients: 77, - non_entity_tokens: 0, - non_entity_clients: 552, - clients: 629, - }, - }, - ], - }, - { - namespace_id: 'opmJ1', - namespace_path: 'test-ns-1/', - counts: { - distinct_entities: 0, - entity_clients: 2213, - non_entity_tokens: 0, - non_entity_clients: 1851, - clients: 4064, - }, - mounts: [ - { - mount_path: 'path-1', - counts: { - distinct_entities: 0, - entity_clients: 610, - non_entity_tokens: 0, - non_entity_clients: 893, - clients: 1503, - }, - }, - { - mount_path: 'path-3-with-over-18-characters', - counts: { - distinct_entities: 0, - entity_clients: 957, - non_entity_tokens: 0, - non_entity_clients: 136, - clients: 1093, - }, - }, - { - mount_path: 'path-2', - counts: { - distinct_entities: 0, - entity_clients: 262, - non_entity_tokens: 0, - non_entity_clients: 605, - clients: 867, - }, - }, - { - mount_path: 'path-4-with-over-18-characters', - counts: { - distinct_entities: 0, - entity_clients: 384, - non_entity_tokens: 0, - non_entity_clients: 217, - clients: 601, - }, - }, - ], - }, - { - namespace_id: 'root', - namespace_path: '', - counts: { - distinct_entities: 0, - entity_clients: 1050, - non_entity_tokens: 0, - non_entity_clients: 1896, - clients: 2946, - }, - mounts: [ - { - mount_path: 'path-4-with-over-18-characters', - counts: { - distinct_entities: 0, - entity_clients: 74, - non_entity_tokens: 0, - non_entity_clients: 978, - clients: 1052, - }, - }, - { - mount_path: 'path-1', - counts: { - distinct_entities: 0, - entity_clients: 238, - non_entity_tokens: 0, - non_entity_clients: 530, - clients: 768, - }, - }, - { - mount_path: 'path-3-with-over-18-characters', - counts: { - distinct_entities: 0, - entity_clients: 367, - non_entity_tokens: 0, - non_entity_clients: 199, - clients: 566, - }, - }, - { - mount_path: 'path-2', - counts: { - distinct_entities: 0, - entity_clients: 371, - non_entity_tokens: 0, - non_entity_clients: 189, - clients: 560, - }, - }, - ], - }, - ], - new_clients: { - counts: { - distinct_entities: 0, - entity_clients: 4637, - non_entity_tokens: 0, - non_entity_clients: 5789, - clients: 10426, - }, - namespaces: [ - { - namespace_id: 'sJRLj', - namespace_path: 'test-ns-1-with-namespace-length-over-18-characters/', - counts: { - distinct_entities: 0, - entity_clients: 1170, - non_entity_tokens: 0, - non_entity_clients: 1525, - clients: 2695, - }, - mounts: [ - { - mount_path: 'path-3-with-over-18-characters', - counts: { - distinct_entities: 0, - entity_clients: 511, - non_entity_tokens: 0, - non_entity_clients: 720, - clients: 1231, - }, - }, - { - mount_path: 'path-2', - counts: { - distinct_entities: 0, - entity_clients: 76, - non_entity_tokens: 0, - non_entity_clients: 479, - clients: 555, - }, - }, - { - mount_path: 'path-4-with-over-18-characters', - counts: { - distinct_entities: 0, - entity_clients: 431, - non_entity_tokens: 0, - non_entity_clients: 72, - clients: 503, - }, - }, - { - mount_path: 'path-1', - counts: { - distinct_entities: 0, - entity_clients: 152, - non_entity_tokens: 0, - non_entity_clients: 254, - clients: 406, - }, - }, - ], - }, - { - namespace_id: 'opmJ1', - namespace_path: 'test-ns-1/', - counts: { - distinct_entities: 0, - entity_clients: 1482, - non_entity_tokens: 0, - non_entity_clients: 1129, - clients: 2611, - }, - mounts: [ - { - mount_path: 'path-1', - counts: { - distinct_entities: 0, - entity_clients: 553, - non_entity_tokens: 0, - non_entity_clients: 884, - clients: 1437, - }, - }, - { - mount_path: 'path-3-with-over-18-characters', - counts: { - distinct_entities: 0, - entity_clients: 664, - non_entity_tokens: 0, - non_entity_clients: 11, - clients: 675, - }, - }, - { - mount_path: 'path-2', - counts: { - distinct_entities: 0, - entity_clients: 153, - non_entity_tokens: 0, - non_entity_clients: 230, - clients: 383, - }, - }, - { - mount_path: 'path-4-with-over-18-characters', - counts: { - distinct_entities: 0, - entity_clients: 112, - non_entity_tokens: 0, - non_entity_clients: 4, - clients: 116, - }, - }, - ], - }, - { - namespace_id: 'PU6JB', - namespace_path: 'test-ns-2/', - counts: { - distinct_entities: 0, - entity_clients: 1067, - non_entity_tokens: 0, - non_entity_clients: 968, - clients: 2035, - }, - mounts: [ - { - mount_path: 'path-3-with-over-18-characters', - counts: { - distinct_entities: 0, - entity_clients: 0, - non_entity_tokens: 0, - non_entity_clients: 865, - clients: 865, - }, - }, - { - mount_path: 'path-2', - counts: { - distinct_entities: 0, - entity_clients: 659, - non_entity_tokens: 0, - non_entity_clients: 4, - clients: 663, - }, - }, - { - mount_path: 'path-4-with-over-18-characters', - counts: { - distinct_entities: 0, - entity_clients: 292, - non_entity_tokens: 0, - non_entity_clients: 40, - clients: 332, - }, - }, - { - mount_path: 'path-1', - counts: { - distinct_entities: 0, - entity_clients: 116, - non_entity_tokens: 0, - non_entity_clients: 59, - clients: 175, - }, - }, - ], - }, - { - namespace_id: '3lq5r', - namespace_path: 'test-ns-2-with-namespace-length-over-18-characters/', - counts: { - distinct_entities: 0, - entity_clients: 547, - non_entity_tokens: 0, - non_entity_clients: 1270, - clients: 1817, - }, - mounts: [ - { - mount_path: 'path-4-with-over-18-characters', - counts: { - distinct_entities: 0, - entity_clients: 36, - non_entity_tokens: 0, - non_entity_clients: 546, - clients: 582, - }, - }, - { - mount_path: 'path-1', - counts: { - distinct_entities: 0, - entity_clients: 61, - non_entity_tokens: 0, - non_entity_clients: 467, - clients: 528, - }, - }, - { - mount_path: 'path-2', - counts: { - distinct_entities: 0, - entity_clients: 286, - non_entity_tokens: 0, - non_entity_clients: 216, - clients: 502, - }, - }, - { - mount_path: 'path-3-with-over-18-characters', - counts: { - distinct_entities: 0, - entity_clients: 164, - non_entity_tokens: 0, - non_entity_clients: 41, - clients: 205, - }, - }, - ], - }, - { - namespace_id: 'root', - namespace_path: '', - counts: { - distinct_entities: 0, - entity_clients: 371, - non_entity_tokens: 0, - non_entity_clients: 897, - clients: 1268, - }, - mounts: [ - { - mount_path: 'path-1', - counts: { - distinct_entities: 0, - entity_clients: 152, - non_entity_tokens: 0, - non_entity_clients: 490, - clients: 642, - }, - }, - { - mount_path: 'path-2', - counts: { - distinct_entities: 0, - entity_clients: 70, - non_entity_tokens: 0, - non_entity_clients: 160, - clients: 230, - }, - }, - { - mount_path: 'path-3-with-over-18-characters', - counts: { - distinct_entities: 0, - entity_clients: 84, - non_entity_tokens: 0, - non_entity_clients: 141, - clients: 225, - }, - }, - { - mount_path: 'path-4-with-over-18-characters', - counts: { - distinct_entities: 0, - entity_clients: 65, - non_entity_tokens: 0, - non_entity_clients: 106, - clients: 171, - }, - }, - ], - }, - ], - }, - }, - { - timestamp: formatISO(addMonths(UPGRADE_DATE, 3)), - counts: { - distinct_entities: 0, - entity_clients: 10873, - non_entity_tokens: 0, - non_entity_clients: 9343, - clients: 20216, - }, - namespaces: [ - { - namespace_id: 'root', - namespace_path: '', - counts: { - distinct_entities: 0, - entity_clients: 1303, - non_entity_tokens: 0, - non_entity_clients: 3388, - clients: 4691, - }, - mounts: [ - { - mount_path: 'path-2', - counts: { - distinct_entities: 0, - entity_clients: 721, - non_entity_tokens: 0, - non_entity_clients: 980, - clients: 1701, - }, - }, - { - mount_path: 'path-1', - counts: { - distinct_entities: 0, - entity_clients: 377, - non_entity_tokens: 0, - non_entity_clients: 838, - clients: 1215, - }, - }, - { - mount_path: 'path-4-with-over-18-characters', - counts: { - distinct_entities: 0, - entity_clients: 127, - non_entity_tokens: 0, - non_entity_clients: 877, - clients: 1004, - }, - }, - { - mount_path: 'path-3-with-over-18-characters', - counts: { - distinct_entities: 0, - entity_clients: 78, - non_entity_tokens: 0, - non_entity_clients: 693, - clients: 771, - }, - }, - ], - }, - { - namespace_id: 'opmJ1', - namespace_path: 'test-ns-1/', - counts: { - distinct_entities: 0, - entity_clients: 2404, - non_entity_tokens: 0, - non_entity_clients: 2085, - clients: 4489, - }, - mounts: [ - { - mount_path: 'path-3-with-over-18-characters', - counts: { - distinct_entities: 0, - entity_clients: 830, - non_entity_tokens: 0, - non_entity_clients: 779, - clients: 1609, - }, - }, - { - mount_path: 'path-4-with-over-18-characters', - counts: { - distinct_entities: 0, - entity_clients: 926, - non_entity_tokens: 0, - non_entity_clients: 311, - clients: 1237, - }, - }, - { - mount_path: 'path-2', - counts: { - distinct_entities: 0, - entity_clients: 82, - non_entity_tokens: 0, - non_entity_clients: 896, - clients: 978, - }, - }, - { - mount_path: 'path-1', - counts: { - distinct_entities: 0, - entity_clients: 566, - non_entity_tokens: 0, - non_entity_clients: 99, - clients: 665, - }, - }, - ], - }, - { - namespace_id: '3lq5r', - namespace_path: 'test-ns-2-with-namespace-length-over-18-characters/', - counts: { - distinct_entities: 0, - entity_clients: 3076, - non_entity_tokens: 0, - non_entity_clients: 1396, - clients: 4472, - }, - mounts: [ - { - mount_path: 'path-4-with-over-18-characters', - counts: { - distinct_entities: 0, - entity_clients: 874, - non_entity_tokens: 0, - non_entity_clients: 601, - clients: 1475, - }, - }, - { - mount_path: 'path-2', - counts: { - distinct_entities: 0, - entity_clients: 921, - non_entity_tokens: 0, - non_entity_clients: 428, - clients: 1349, - }, - }, - { - mount_path: 'path-3-with-over-18-characters', - counts: { - distinct_entities: 0, - entity_clients: 885, - non_entity_tokens: 0, - non_entity_clients: 204, - clients: 1089, - }, - }, - { - mount_path: 'path-1', - counts: { - distinct_entities: 0, - entity_clients: 396, - non_entity_tokens: 0, - non_entity_clients: 163, - clients: 559, - }, - }, - ], - }, - { - namespace_id: 'sJRLj', - namespace_path: 'test-ns-1-with-namespace-length-over-18-characters/', - counts: { - distinct_entities: 0, - entity_clients: 2298, - non_entity_tokens: 0, - non_entity_clients: 1632, - clients: 3930, - }, - mounts: [ - { - mount_path: 'path-3-with-over-18-characters', - counts: { - distinct_entities: 0, - entity_clients: 858, - non_entity_tokens: 0, - non_entity_clients: 663, - clients: 1521, - }, - }, - { - mount_path: 'path-4-with-over-18-characters', - counts: { - distinct_entities: 0, - entity_clients: 669, - non_entity_tokens: 0, - non_entity_clients: 272, - clients: 941, - }, - }, - { - mount_path: 'path-1', - counts: { - distinct_entities: 0, - entity_clients: 183, - non_entity_tokens: 0, - non_entity_clients: 567, - clients: 750, - }, - }, - { - mount_path: 'path-2', - counts: { - distinct_entities: 0, - entity_clients: 588, - non_entity_tokens: 0, - non_entity_clients: 130, - clients: 718, - }, - }, - ], - }, - { - namespace_id: 'PU6JB', - namespace_path: 'test-ns-2/', - counts: { - distinct_entities: 0, - entity_clients: 1792, - non_entity_tokens: 0, - non_entity_clients: 842, - clients: 2634, - }, - mounts: [ - { - mount_path: 'path-2', - counts: { - distinct_entities: 0, - entity_clients: 611, - non_entity_tokens: 0, - non_entity_clients: 215, - clients: 826, - }, - }, - { - mount_path: 'path-1', - counts: { - distinct_entities: 0, - entity_clients: 365, - non_entity_tokens: 0, - non_entity_clients: 368, - clients: 733, - }, - }, - { - mount_path: 'path-4-with-over-18-characters', - counts: { - distinct_entities: 0, - entity_clients: 469, - non_entity_tokens: 0, - non_entity_clients: 244, - clients: 713, - }, - }, - { - mount_path: 'path-3-with-over-18-characters', - counts: { - distinct_entities: 0, - entity_clients: 347, - non_entity_tokens: 0, - non_entity_clients: 15, - clients: 362, - }, - }, - ], - }, - ], - new_clients: { - counts: { - distinct_entities: 0, - entity_clients: 5855, - non_entity_tokens: 0, - non_entity_clients: 4729, - clients: 10584, - }, - namespaces: [ - { - namespace_id: 'opmJ1', - namespace_path: 'test-ns-1/', - counts: { - distinct_entities: 0, - entity_clients: 1409, - non_entity_tokens: 0, - non_entity_clients: 1429, - clients: 2838, - }, - mounts: [ - { - mount_path: 'path-3-with-over-18-characters', - counts: { - distinct_entities: 0, - entity_clients: 532, - non_entity_tokens: 0, - non_entity_clients: 563, - clients: 1095, - }, - }, - { - mount_path: 'path-4-with-over-18-characters', - counts: { - distinct_entities: 0, - entity_clients: 655, - non_entity_tokens: 0, - non_entity_clients: 179, - clients: 834, - }, - }, - { - mount_path: 'path-2', - counts: { - distinct_entities: 0, - entity_clients: 34, - non_entity_tokens: 0, - non_entity_clients: 658, - clients: 692, - }, - }, - { - mount_path: 'path-1', - counts: { - distinct_entities: 0, - entity_clients: 188, - non_entity_tokens: 0, - non_entity_clients: 29, - clients: 217, - }, - }, - ], - }, - { - namespace_id: '3lq5r', - namespace_path: 'test-ns-2-with-namespace-length-over-18-characters/', - counts: { - distinct_entities: 0, - entity_clients: 1869, - non_entity_tokens: 0, - non_entity_clients: 592, - clients: 2461, - }, - mounts: [ - { - mount_path: 'path-4-with-over-18-characters', - counts: { - distinct_entities: 0, - entity_clients: 745, - non_entity_tokens: 0, - non_entity_clients: 239, - clients: 984, - }, - }, - { - mount_path: 'path-2', - counts: { - distinct_entities: 0, - entity_clients: 539, - non_entity_tokens: 0, - non_entity_clients: 132, - clients: 671, - }, - }, - { - mount_path: 'path-1', - counts: { - distinct_entities: 0, - entity_clients: 294, - non_entity_tokens: 0, - non_entity_clients: 110, - clients: 404, - }, - }, - { - mount_path: 'path-3-with-over-18-characters', - counts: { - distinct_entities: 0, - entity_clients: 291, - non_entity_tokens: 0, - non_entity_clients: 111, - clients: 402, - }, - }, - ], - }, - { - namespace_id: 'root', - namespace_path: '', - counts: { - distinct_entities: 0, - entity_clients: 838, - non_entity_tokens: 0, - non_entity_clients: 1486, - clients: 2324, - }, - mounts: [ - { - mount_path: 'path-2', - counts: { - distinct_entities: 0, - entity_clients: 629, - non_entity_tokens: 0, - non_entity_clients: 742, - clients: 1371, - }, - }, - { - mount_path: 'path-1', - counts: { - distinct_entities: 0, - entity_clients: 166, - non_entity_tokens: 0, - non_entity_clients: 410, - clients: 576, - }, - }, - { - mount_path: 'path-4-with-over-18-characters', - counts: { - distinct_entities: 0, - entity_clients: 12, - non_entity_tokens: 0, - non_entity_clients: 279, - clients: 291, - }, - }, - { - mount_path: 'path-3-with-over-18-characters', - counts: { - distinct_entities: 0, - entity_clients: 31, - non_entity_tokens: 0, - non_entity_clients: 55, - clients: 86, - }, - }, - ], - }, - { - namespace_id: 'sJRLj', - namespace_path: 'test-ns-1-with-namespace-length-over-18-characters/', - counts: { - distinct_entities: 0, - entity_clients: 996, - non_entity_tokens: 0, - non_entity_clients: 805, - clients: 1801, - }, - mounts: [ - { - mount_path: 'path-3-with-over-18-characters', - counts: { - distinct_entities: 0, - entity_clients: 484, - non_entity_tokens: 0, - non_entity_clients: 145, - clients: 629, - }, - }, - { - mount_path: 'path-4-with-over-18-characters', - counts: { - distinct_entities: 0, - entity_clients: 396, - non_entity_tokens: 0, - non_entity_clients: 156, - clients: 552, - }, - }, - { - mount_path: 'path-1', - counts: { - distinct_entities: 0, - entity_clients: 18, - non_entity_tokens: 0, - non_entity_clients: 401, - clients: 419, - }, - }, - { - mount_path: 'path-2', - counts: { - distinct_entities: 0, - entity_clients: 98, - non_entity_tokens: 0, - non_entity_clients: 103, - clients: 201, - }, - }, - ], - }, - { - namespace_id: 'PU6JB', - namespace_path: 'test-ns-2/', - counts: { - distinct_entities: 0, - entity_clients: 743, - non_entity_tokens: 0, - non_entity_clients: 417, - clients: 1160, - }, - mounts: [ - { - mount_path: 'path-2', - counts: { - distinct_entities: 0, - entity_clients: 188, - non_entity_tokens: 0, - non_entity_clients: 168, - clients: 356, - }, - }, - { - mount_path: 'path-4-with-over-18-characters', - counts: { - distinct_entities: 0, - entity_clients: 196, - non_entity_tokens: 0, - non_entity_clients: 115, - clients: 311, - }, - }, - { - mount_path: 'path-3-with-over-18-characters', - counts: { - distinct_entities: 0, - entity_clients: 291, - non_entity_tokens: 0, - non_entity_clients: 3, - clients: 294, - }, - }, - { - mount_path: 'path-1', - counts: { - distinct_entities: 0, - entity_clients: 68, - non_entity_tokens: 0, - non_entity_clients: 131, - clients: 199, - }, - }, - ], - }, - ], - }, - }, - { - timestamp: formatISO(addMonths(UPGRADE_DATE, 4)), - counts: { - distinct_entities: 0, - entity_clients: 10342, - non_entity_tokens: 0, - non_entity_clients: 13170, - clients: 23512, - }, - namespaces: [ - { - namespace_id: 'PU6JB', - namespace_path: 'test-ns-2/', - counts: { - distinct_entities: 0, - entity_clients: 2816, - non_entity_tokens: 0, - non_entity_clients: 3098, - clients: 5914, - }, - mounts: [ - { - mount_path: 'path-1', - counts: { - distinct_entities: 0, - entity_clients: 726, - non_entity_tokens: 0, - non_entity_clients: 995, - clients: 1721, - }, - }, - { - mount_path: 'path-3-with-over-18-characters', - counts: { - distinct_entities: 0, - entity_clients: 737, - non_entity_tokens: 0, - non_entity_clients: 850, - clients: 1587, - }, - }, - { - mount_path: 'path-4-with-over-18-characters', - counts: { - distinct_entities: 0, - entity_clients: 754, - non_entity_tokens: 0, - non_entity_clients: 617, - clients: 1371, - }, - }, - { - mount_path: 'path-2', - counts: { - distinct_entities: 0, - entity_clients: 599, - non_entity_tokens: 0, - non_entity_clients: 636, - clients: 1235, - }, - }, - ], - }, - { - namespace_id: 'sJRLj', - namespace_path: 'test-ns-1-with-namespace-length-over-18-characters/', - counts: { - distinct_entities: 0, - entity_clients: 2253, - non_entity_tokens: 0, - non_entity_clients: 2404, - clients: 4657, - }, - mounts: [ - { - mount_path: 'path-3-with-over-18-characters', - counts: { - distinct_entities: 0, - entity_clients: 775, - non_entity_tokens: 0, - non_entity_clients: 689, - clients: 1464, - }, - }, - { - mount_path: 'path-1', - counts: { - distinct_entities: 0, - entity_clients: 699, - non_entity_tokens: 0, - non_entity_clients: 652, - clients: 1351, - }, - }, - { - mount_path: 'path-2', - counts: { - distinct_entities: 0, - entity_clients: 566, - non_entity_tokens: 0, - non_entity_clients: 487, - clients: 1053, - }, - }, - { - mount_path: 'path-4-with-over-18-characters', - counts: { - distinct_entities: 0, - entity_clients: 213, - non_entity_tokens: 0, - non_entity_clients: 576, - clients: 789, - }, - }, - ], - }, - { - namespace_id: 'opmJ1', - namespace_path: 'test-ns-1/', - counts: { - distinct_entities: 0, - entity_clients: 1725, - non_entity_tokens: 0, - non_entity_clients: 2927, - clients: 4652, - }, - mounts: [ - { - mount_path: 'path-2', - counts: { - distinct_entities: 0, - entity_clients: 811, - non_entity_tokens: 0, - non_entity_clients: 417, - clients: 1228, - }, - }, - { - mount_path: 'path-4-with-over-18-characters', - counts: { - distinct_entities: 0, - entity_clients: 294, - non_entity_tokens: 0, - non_entity_clients: 900, - clients: 1194, - }, - }, - { - mount_path: 'path-3-with-over-18-characters', - counts: { - distinct_entities: 0, - entity_clients: 503, - non_entity_tokens: 0, - non_entity_clients: 620, - clients: 1123, - }, - }, - { - mount_path: 'path-1', - counts: { - distinct_entities: 0, - entity_clients: 117, - non_entity_tokens: 0, - non_entity_clients: 990, - clients: 1107, - }, - }, - ], - }, - { - namespace_id: 'root', - namespace_path: '', - counts: { - distinct_entities: 0, - entity_clients: 1678, - non_entity_tokens: 0, - non_entity_clients: 2775, - clients: 4453, - }, - mounts: [ - { - mount_path: 'path-1', - counts: { - distinct_entities: 0, - entity_clients: 972, - non_entity_tokens: 0, - non_entity_clients: 608, - clients: 1580, - }, - }, - { - mount_path: 'path-3-with-over-18-characters', - counts: { - distinct_entities: 0, - entity_clients: 172, - non_entity_tokens: 0, - non_entity_clients: 957, - clients: 1129, - }, - }, - { - mount_path: 'path-4-with-over-18-characters', - counts: { - distinct_entities: 0, - entity_clients: 220, - non_entity_tokens: 0, - non_entity_clients: 756, - clients: 976, - }, - }, - { - mount_path: 'path-2', - counts: { - distinct_entities: 0, - entity_clients: 314, - non_entity_tokens: 0, - non_entity_clients: 454, - clients: 768, - }, - }, - ], - }, - { - namespace_id: '3lq5r', - namespace_path: 'test-ns-2-with-namespace-length-over-18-characters/', - counts: { - distinct_entities: 0, - entity_clients: 1870, - non_entity_tokens: 0, - non_entity_clients: 1966, - clients: 3836, - }, - mounts: [ - { - mount_path: 'path-4-with-over-18-characters', - counts: { - distinct_entities: 0, - entity_clients: 839, - non_entity_tokens: 0, - non_entity_clients: 762, - clients: 1601, - }, - }, - { - mount_path: 'path-3-with-over-18-characters', - counts: { - distinct_entities: 0, - entity_clients: 447, - non_entity_tokens: 0, - non_entity_clients: 583, - clients: 1030, - }, - }, - { - mount_path: 'path-2', - counts: { - distinct_entities: 0, - entity_clients: 382, - non_entity_tokens: 0, - non_entity_clients: 375, - clients: 757, - }, - }, - { - mount_path: 'path-1', - counts: { - distinct_entities: 0, - entity_clients: 202, - non_entity_tokens: 0, - non_entity_clients: 246, - clients: 448, - }, - }, - ], - }, - ], - new_clients: { - counts: { - distinct_entities: 0, - entity_clients: 5959, - non_entity_tokens: 0, - non_entity_clients: 6985, - clients: 12944, - }, - namespaces: [ - { - namespace_id: 'opmJ1', - namespace_path: 'test-ns-1/', - counts: { - distinct_entities: 0, - entity_clients: 873, - non_entity_tokens: 0, - non_entity_clients: 2355, - clients: 3228, - }, - mounts: [ - { - mount_path: 'path-4-with-over-18-characters', - counts: { - distinct_entities: 0, - entity_clients: 196, - non_entity_tokens: 0, - non_entity_clients: 811, - clients: 1007, - }, - }, - { - mount_path: 'path-1', - counts: { - distinct_entities: 0, - entity_clients: 38, - non_entity_tokens: 0, - non_entity_clients: 931, - clients: 969, - }, - }, - { - mount_path: 'path-3-with-over-18-characters', - counts: { - distinct_entities: 0, - entity_clients: 148, - non_entity_tokens: 0, - non_entity_clients: 608, - clients: 756, - }, - }, - { - mount_path: 'path-2', - counts: { - distinct_entities: 0, - entity_clients: 491, - non_entity_tokens: 0, - non_entity_clients: 5, - clients: 496, - }, - }, - ], - }, - { - namespace_id: 'sJRLj', - namespace_path: 'test-ns-1-with-namespace-length-over-18-characters/', - counts: { - distinct_entities: 0, - entity_clients: 1352, - non_entity_tokens: 0, - non_entity_clients: 1506, - clients: 2858, - }, - mounts: [ - { - mount_path: 'path-1', - counts: { - distinct_entities: 0, - entity_clients: 245, - non_entity_tokens: 0, - non_entity_clients: 560, - clients: 805, - }, - }, - { - mount_path: 'path-3-with-over-18-characters', - counts: { - distinct_entities: 0, - entity_clients: 465, - non_entity_tokens: 0, - non_entity_clients: 332, - clients: 797, - }, - }, - { - mount_path: 'path-2', - counts: { - distinct_entities: 0, - entity_clients: 529, - non_entity_tokens: 0, - non_entity_clients: 117, - clients: 646, - }, - }, - { - mount_path: 'path-4-with-over-18-characters', - counts: { - distinct_entities: 0, - entity_clients: 113, - non_entity_tokens: 0, - non_entity_clients: 497, - clients: 610, - }, - }, - ], - }, - { - namespace_id: '3lq5r', - namespace_path: 'test-ns-2-with-namespace-length-over-18-characters/', - counts: { - distinct_entities: 0, - entity_clients: 1355, - non_entity_tokens: 0, - non_entity_clients: 1353, - clients: 2708, - }, - mounts: [ - { - mount_path: 'path-4-with-over-18-characters', - counts: { - distinct_entities: 0, - entity_clients: 557, - non_entity_tokens: 0, - non_entity_clients: 538, - clients: 1095, - }, - }, - { - mount_path: 'path-3-with-over-18-characters', - counts: { - distinct_entities: 0, - entity_clients: 410, - non_entity_tokens: 0, - non_entity_clients: 496, - clients: 906, - }, - }, - { - mount_path: 'path-1', - counts: { - distinct_entities: 0, - entity_clients: 146, - non_entity_tokens: 0, - non_entity_clients: 237, - clients: 383, - }, - }, - { - mount_path: 'path-2', - counts: { - distinct_entities: 0, - entity_clients: 242, - non_entity_tokens: 0, - non_entity_clients: 82, - clients: 324, - }, - }, - ], - }, - { - namespace_id: 'PU6JB', - namespace_path: 'test-ns-2/', - counts: { - distinct_entities: 0, - entity_clients: 1514, - non_entity_tokens: 0, - non_entity_clients: 578, - clients: 2092, - }, - mounts: [ - { - mount_path: 'path-4-with-over-18-characters', - counts: { - distinct_entities: 0, - entity_clients: 602, - non_entity_tokens: 0, - non_entity_clients: 147, - clients: 749, - }, - }, - { - mount_path: 'path-3-with-over-18-characters', - counts: { - distinct_entities: 0, - entity_clients: 259, - non_entity_tokens: 0, - non_entity_clients: 344, - clients: 603, - }, - }, - { - mount_path: 'path-2', - counts: { - distinct_entities: 0, - entity_clients: 349, - non_entity_tokens: 0, - non_entity_clients: 43, - clients: 392, - }, - }, - { - mount_path: 'path-1', - counts: { - distinct_entities: 0, - entity_clients: 304, - non_entity_tokens: 0, - non_entity_clients: 44, - clients: 348, - }, - }, - ], - }, - { - namespace_id: 'root', - namespace_path: '', - counts: { - distinct_entities: 0, - entity_clients: 865, - non_entity_tokens: 0, - non_entity_clients: 1193, - clients: 2058, - }, - mounts: [ - { - mount_path: 'path-4-with-over-18-characters', - counts: { - distinct_entities: 0, - entity_clients: 10, - non_entity_tokens: 0, - non_entity_clients: 722, - clients: 732, - }, - }, - { - mount_path: 'path-1', - counts: { - distinct_entities: 0, - entity_clients: 643, - non_entity_tokens: 0, - non_entity_clients: 4, - clients: 647, - }, - }, - { - mount_path: 'path-2', - counts: { - distinct_entities: 0, - entity_clients: 93, - non_entity_tokens: 0, - non_entity_clients: 379, - clients: 472, - }, - }, - { - mount_path: 'path-3-with-over-18-characters', - counts: { - distinct_entities: 0, - entity_clients: 119, - non_entity_tokens: 0, - non_entity_clients: 88, - clients: 207, - }, - }, - ], - }, - ], - }, - }, - { - timestamp: formatISO(addMonths(UPGRADE_DATE, 5)), - counts: { - distinct_entities: 0, - entity_clients: 5, - non_entity_tokens: 0, - non_entity_clients: 10, - clients: 15, - }, - namespaces: [ - { - namespace_id: 'PU6JB', - namespace_path: 'test-ns-2/', - counts: { - distinct_entities: 0, - entity_clients: 5, - non_entity_tokens: 0, - non_entity_clients: 10, - clients: 15, - }, - mounts: [ - { - mount_path: 'path-1', - counts: { - distinct_entities: 0, - entity_clients: 1, - non_entity_tokens: 0, - non_entity_clients: 0, - clients: 1, - }, - }, - { - mount_path: 'path-3-with-over-18-characters', - counts: { - distinct_entities: 0, - entity_clients: 1, - non_entity_tokens: 0, - non_entity_clients: 0, - clients: 1, - }, - }, - { - mount_path: 'path-4-with-over-18-characters', - counts: { - distinct_entities: 0, - entity_clients: 2, - non_entity_tokens: 0, - non_entity_clients: 2, - clients: 4, - }, - }, - { - mount_path: 'path-2', - counts: { - distinct_entities: 0, - entity_clients: 1, - non_entity_tokens: 0, - non_entity_clients: 8, - clients: 9, - }, - }, - ], - }, - ], - new_clients: { - counts: { - distinct_entities: 0, - entity_clients: 5, - non_entity_tokens: 0, - non_entity_clients: 10, - clients: 15, - }, - namespaces: [ - { - namespace_id: 'PU6JB', - namespace_path: 'test-ns-2/', - counts: { - distinct_entities: 0, - entity_clients: 5, - non_entity_tokens: 0, - non_entity_clients: 10, - clients: 15, - }, - mounts: [ - { - mount_path: 'path-1', - counts: { - distinct_entities: 0, - entity_clients: 1, - non_entity_tokens: 0, - non_entity_clients: 0, - clients: 1, - }, - }, - { - mount_path: 'path-3-with-over-18-characters', - counts: { - distinct_entities: 0, - entity_clients: 1, - non_entity_tokens: 0, - non_entity_clients: 0, - clients: 1, - }, - }, - { - mount_path: 'path-4-with-over-18-characters', - counts: { - distinct_entities: 0, - entity_clients: 2, - non_entity_tokens: 0, - non_entity_clients: 2, - clients: 4, - }, - }, - { - mount_path: 'path-2', - counts: { - distinct_entities: 0, - entity_clients: 1, - non_entity_tokens: 0, - non_entity_clients: 8, - clients: 9, - }, - }, - ], - }, - ], - }, - }, -]; -function generateNullMonths(startDate, endDate) { - const numberOfMonths = differenceInCalendarMonths(endDate, startDate); - const months = []; - for (let i = 0; i < numberOfMonths; i++) { - months.push({ - timestamp: formatRFC3339(startOfMonth(addMonths(startDate, i))), - counts: null, - namespace: null, - new_clients: null, +function getSum(array, key) { + return array.reduce((sum, { counts }) => sum + counts[key], 0); +} + +function getTotalCounts(array) { + return { + distinct_entities: getSum(array, 'entity_clients'), + entity_clients: getSum(array, 'entity_clients'), + non_entity_tokens: getSum(array, 'non_entity_clients'), + non_entity_clients: getSum(array, 'non_entity_clients'), + clients: getSum(array, 'clients'), + }; +} + +function randomBetween(min, max) { + return Math.floor(Math.random() * (max - min + 1) + min); +} + +function arrayOfCounts(max, arrayLength) { + var result = []; + var sum = 0; + for (var i = 0; i < arrayLength - 1; i++) { + result[i] = randomBetween(1, max - (arrayLength - i - 1) - sum); + sum += result[i]; + } + result[arrayLength - 1] = max - sum; + return result.sort((a, b) => b - a); +} + +function generateNamespaceBlock(idx = 0, isLowerCounts = false, ns) { + const min = isLowerCounts ? 10 : 50; + const max = isLowerCounts ? 100 : 5000; + const nsBlock = { + namespace_id: ns?.namespace_id || (idx === 0 ? 'root' : Math.random().toString(36).slice(2, 7) + idx), + namespace_path: ns?.namespace_path || (idx === 0 ? '' : `ns/${idx}`), + counts: {}, + }; + const mounts = []; + Array.from(Array(10)).forEach((mount, index) => { + const mountClients = randomBetween(min, max); + const [nonEntity, entity] = arrayOfCounts(mountClients, 2); + mounts.push({ + mount_path: `auth/authid${index}`, + counts: { + clients: mountClients, + entity_clients: entity, + non_entity_clients: nonEntity, + distinct_entities: entity, + non_entity_tokens: nonEntity, + }, + }); + }); + mounts.sort((a, b) => b.counts.clients - a.counts.clients); + nsBlock.mounts = mounts; + nsBlock.counts = getTotalCounts(mounts); + return nsBlock; +} + +function generateMonths(startDate, endDate, namespaces) { + const startDateObject = startOfMonth(parseAPITimestamp(startDate)); + const endDateObject = startOfMonth(parseAPITimestamp(endDate)); + const numberOfMonths = differenceInCalendarMonths(endDateObject, startDateObject) + 1; + const months = []; + if (isBefore(startDateObject, UPGRADE_DATE) && isBefore(endDateObject, UPGRADE_DATE)) { + // months block is empty if dates do not span an upgrade + return []; + } + for (let i = 0; i < numberOfMonths; i++) { + const month = addMonths(startDateObject, i); + const hasNoData = isBefore(month, UPGRADE_DATE); + if (hasNoData) { + months.push({ + timestamp: formatRFC3339(month), + counts: null, + namespaces: null, + new_clients: null, + }); + continue; + } + + const monthNs = namespaces.map((ns, idx) => generateNamespaceBlock(idx, true, ns)); + const newClients = namespaces.map((ns, idx) => generateNamespaceBlock(idx, true, ns)); + months.push({ + timestamp: formatRFC3339(month), + counts: getTotalCounts(monthNs), + namespaces: monthNs.sort((a, b) => b.counts.clients - a.counts.clients), + new_clients: { + counts: getTotalCounts(newClients), + namespaces: newClients.sort((a, b) => b.counts.clients - a.counts.clients), + }, }); - continue; } return months; } -const handleMockQuery = (queryStartTimestamp, queryEndTimestamp, monthlyData) => { - const queryStartDate = startOfMonth(parseAPITimestamp(queryStartTimestamp)); - const queryEndDate = parseAPITimestamp(queryEndTimestamp); - // monthlyData is oldest to newest - const dataEarliestMonth = parseAPITimestamp(monthlyData[0].timestamp); - const dataLatestMonth = parseAPITimestamp(monthlyData[monthlyData.length - 1].timestamp); - const transformedMonthlyArray = [...monthlyData]; - // If query end is before last month in array, return only through end query - if (isBefore(queryEndDate, dataLatestMonth)) { - const indexQueryStart = monthlyData.findIndex((e) => - isSameMonth(queryStartDate, parseAPITimestamp(e.timestamp)) - ); - const indexQueryEnd = monthlyData.findIndex((e) => - isSameMonth(queryEndDate, parseAPITimestamp(e.timestamp)) - ); - return transformedMonthlyArray.slice(indexQueryStart, indexQueryEnd + 1); - } - // If query wants months previous to the data we have, generate months without data prior - if (isBefore(queryStartDate, dataEarliestMonth)) { - return [...generateNullMonths(queryStartDate, dataEarliestMonth), ...transformedMonthlyArray]; - } - // If query is after earliest month in array, return latest to month that matches query - if (isAfter(queryStartDate, dataEarliestMonth)) { - const index = monthlyData.findIndex((e) => isSameMonth(queryStartDate, parseAPITimestamp(e.timestamp))); - return transformedMonthlyArray.slice(index); - } - return transformedMonthlyArray; -}; +function generateActivityResponse(namespaces, startDate, endDate) { + return { + start_time: isAfter(new Date(startDate), COUNTS_START) ? startDate : formatRFC3339(COUNTS_START), + end_time: endDate, + by_namespace: namespaces.sort((a, b) => b.counts.clients - a.counts.clients), + months: generateMonths(startDate, endDate, namespaces), + total: getTotalCounts(namespaces), + }; +} export default function (server) { server.get('sys/license/status', function () { @@ -2973,7 +131,7 @@ export default function (server) { autoloaded: { license_id: 'my-license-id', start_time: formatRFC3339(LICENSE_START), - expiration_time: formatRFC3339(LICENSE_END), + expiration_time: formatRFC3339(endOfMonth(addMonths(CURRENT_DATE, 6))), }, }, }; @@ -2996,518 +154,13 @@ export default function (server) { // backend returns a timestamp if given unix time, so first convert to timestamp string here if (!start_time.includes('T')) start_time = fromUnixTime(start_time).toISOString(); if (!end_time.includes('T')) end_time = fromUnixTime(end_time).toISOString(); + const namespaces = Array.from(Array(12)).map((v, idx) => generateNamespaceBlock(idx)); return { - request_id: '25f55fbb-f253-9c46-c6f0-3cdd3ada91ab', + request_id: 'some-activity-id', lease_id: '', renewable: false, lease_duration: 0, - data: { - by_namespace: [ - { - namespace_id: 'PU6JB', - namespace_path: 'test-ns-2/', - counts: { - distinct_entities: 23326, - entity_clients: 23326, - non_entity_tokens: 17826, - non_entity_clients: 17826, - clients: 41152, - }, - mounts: [ - { - mount_path: 'path-2', - counts: { - distinct_entities: 6508, - entity_clients: 6508, - non_entity_tokens: 3634, - non_entity_clients: 3634, - clients: 10142, - }, - }, - { - mount_path: 'path-4-with-over-18-characters', - counts: { - distinct_entities: 5118, - entity_clients: 5118, - non_entity_tokens: 4942, - non_entity_clients: 4942, - clients: 10060, - }, - }, - { - mount_path: 'path-3-with-over-18-characters', - counts: { - distinct_entities: 5931, - entity_clients: 5931, - non_entity_tokens: 4057, - non_entity_clients: 4057, - clients: 9988, - }, - }, - { - mount_path: 'path-1', - counts: { - distinct_entities: 4962, - entity_clients: 4962, - non_entity_tokens: 3739, - non_entity_clients: 3739, - clients: 8701, - }, - }, - ], - }, - { - namespace_id: '3lq5r', - namespace_path: 'test-ns-2-with-namespace-length-over-18-characters/', - counts: { - distinct_entities: 19842, - entity_clients: 19842, - non_entity_tokens: 20799, - non_entity_clients: 20799, - clients: 40641, - }, - mounts: [ - { - mount_path: 'path-4-with-over-18-characters', - counts: { - distinct_entities: 4695, - entity_clients: 4695, - non_entity_tokens: 6620, - non_entity_clients: 6620, - clients: 11315, - }, - }, - { - mount_path: 'path-3-with-over-18-characters', - counts: { - distinct_entities: 5762, - entity_clients: 5762, - non_entity_tokens: 4112, - non_entity_clients: 4112, - clients: 9874, - }, - }, - { - mount_path: 'path-2', - counts: { - distinct_entities: 5303, - entity_clients: 5303, - non_entity_tokens: 4538, - non_entity_clients: 4538, - clients: 9841, - }, - }, - { - mount_path: 'path-1', - counts: { - distinct_entities: 3501, - entity_clients: 3501, - non_entity_tokens: 4974, - non_entity_clients: 4974, - clients: 8475, - }, - }, - ], - }, - { - namespace_id: 'sJRLj', - namespace_path: 'test-ns-1-with-namespace-length-over-18-characters/', - counts: { - distinct_entities: 20389, - entity_clients: 20389, - non_entity_tokens: 19445, - non_entity_clients: 19445, - clients: 39834, - }, - mounts: [ - { - mount_path: 'path-3-with-over-18-characters', - counts: { - distinct_entities: 5356, - entity_clients: 5356, - non_entity_tokens: 5075, - non_entity_clients: 5075, - clients: 10431, - }, - }, - { - mount_path: 'path-4-with-over-18-characters', - counts: { - distinct_entities: 4639, - entity_clients: 4639, - non_entity_tokens: 5242, - non_entity_clients: 5242, - clients: 9881, - }, - }, - { - mount_path: 'path-2', - counts: { - distinct_entities: 4926, - entity_clients: 4926, - non_entity_tokens: 4163, - non_entity_clients: 4163, - clients: 9089, - }, - }, - { - mount_path: 'path-1', - counts: { - distinct_entities: 4437, - entity_clients: 4437, - non_entity_tokens: 4201, - non_entity_clients: 4201, - clients: 8638, - }, - }, - ], - }, - { - namespace_id: 'opmJ1', - namespace_path: 'test-ns-1/', - counts: { - distinct_entities: 19316, - entity_clients: 19316, - non_entity_tokens: 18450, - non_entity_clients: 18450, - clients: 37766, - }, - mounts: [ - { - mount_path: 'path-3-with-over-18-characters', - counts: { - distinct_entities: 4952, - entity_clients: 4952, - non_entity_tokens: 5080, - non_entity_clients: 5080, - clients: 10032, - }, - }, - { - mount_path: 'path-4-with-over-18-characters', - counts: { - distinct_entities: 5198, - entity_clients: 5198, - non_entity_tokens: 3825, - non_entity_clients: 3825, - clients: 9023, - }, - }, - { - mount_path: 'path-1', - counts: { - distinct_entities: 3827, - entity_clients: 3827, - non_entity_tokens: 5156, - non_entity_clients: 5156, - clients: 8983, - }, - }, - { - mount_path: 'path-2', - counts: { - distinct_entities: 3981, - entity_clients: 3981, - non_entity_tokens: 3661, - non_entity_clients: 3661, - clients: 7642, - }, - }, - ], - }, - { - namespace_id: 'root', - namespace_path: '', - counts: { - distinct_entities: 15416, - entity_clients: 15416, - non_entity_tokens: 19892, - non_entity_clients: 19892, - clients: 35308, - }, - mounts: [ - { - mount_path: 'path-2', - counts: { - distinct_entities: 3936, - entity_clients: 3936, - non_entity_tokens: 5428, - non_entity_clients: 5428, - clients: 9364, - }, - }, - { - mount_path: 'path-1', - counts: { - distinct_entities: 4021, - entity_clients: 4021, - non_entity_tokens: 4530, - non_entity_clients: 4530, - clients: 8551, - }, - }, - { - mount_path: 'path-4-with-over-18-characters', - counts: { - distinct_entities: 2934, - entity_clients: 2934, - non_entity_tokens: 5357, - non_entity_clients: 5357, - clients: 8291, - }, - }, - { - mount_path: 'path-3-with-over-18-characters', - counts: { - distinct_entities: 3938, - entity_clients: 3938, - non_entity_tokens: 3932, - non_entity_clients: 3932, - clients: 7870, - }, - }, - ], - }, - ], - end_time: end_time || formatISO(endOfMonth(sub(NEW_DATE, { months: 1 }))), - months: handleMockQuery(start_time, end_time, MOCK_MONTHLY_DATA), - start_time: isBefore(new Date(start_time), COUNTS_START) ? formatRFC3339(COUNTS_START) : start_time, - total: { - distinct_entities: 98289, - entity_clients: 98289, - non_entity_tokens: 96412, - non_entity_clients: 96412, - clients: 194701, - }, - }, - wrap_info: null, - warnings: null, - auth: null, - }; - }); - - server.get('/sys/internal/counters/activity/monthly', function () { - const timestamp = NEW_DATE; - return { - request_id: '26be5ab9-dcac-9237-ec12-269a8ca64742', - lease_id: '', - renewable: false, - lease_duration: 0, - data: { - by_namespace: [ - { - namespace_id: '0lHBL', - namespace_path: 'ns1/', - counts: { - distinct_entities: 85, - non_entity_tokens: 15, - clients: 100, - }, - mounts: [ - { - mount_path: 'auth/method/uMGBU', - counts: { - clients: 35, - entity_clients: 20, - non_entity_clients: 15, - }, - }, - { - mount_path: 'auth/method/woiej', - counts: { - clients: 35, - entity_clients: 20, - non_entity_clients: 15, - }, - }, - ], - }, - { - namespace_id: 'RxD81', - namespace_path: 'ns2/', - counts: { - distinct_entities: 35, - non_entity_tokens: 20, - clients: 55, - }, - mounts: [ - { - mount_path: 'auth/method/ABCD1', - counts: { - clients: 35, - entity_clients: 20, - non_entity_clients: 15, - }, - }, - { - mount_path: 'auth/method/ABCD2', - counts: { - clients: 35, - entity_clients: 20, - non_entity_clients: 15, - }, - }, - ], - }, - { - namespace_id: 'root', - namespace_path: '', - counts: { - distinct_entities: 12, - non_entity_tokens: 8, - clients: 20, - }, - mounts: [ - { - mount_path: 'auth/method/XYZZ2', - counts: { - clients: 35, - entity_clients: 20, - non_entity_clients: 15, - }, - }, - { - mount_path: 'auth/method/XYZZ1', - counts: { - clients: 35, - entity_clients: 20, - non_entity_clients: 15, - }, - }, - { - mount_path: 'auth_userpass_3158c012', - counts: { - clients: 2, - entity_clients: 2, - non_entity_clients: 0, - }, - }, - ], - }, - ], - months: [ - { - timestamp: startOfMonth(timestamp).toISOString(), - counts: { - distinct_entities: 0, - entity_clients: 4, - non_entity_tokens: 0, - non_entity_clients: 0, - clients: 4, - }, - namespaces: [ - { - namespace_id: 'lHmap', - namespace_path: 'education/', - counts: { - distinct_entities: 0, - entity_clients: 2, - non_entity_tokens: 0, - non_entity_clients: 0, - clients: 2, - }, - mounts: [ - { - mount_path: 'auth_userpass_a36c8125', - counts: { - distinct_entities: 0, - entity_clients: 2, - non_entity_tokens: 0, - non_entity_clients: 0, - clients: 2, - }, - }, - ], - }, - { - namespace_id: 'root', - namespace_path: '', - counts: { - distinct_entities: 0, - entity_clients: 2, - non_entity_tokens: 0, - non_entity_clients: 0, - clients: 2, - }, - mounts: [ - { - mount_path: 'auth_userpass_3158c012', - counts: { - distinct_entities: 0, - entity_clients: 2, - non_entity_tokens: 0, - non_entity_clients: 0, - clients: 2, - }, - }, - ], - }, - ], - new_clients: { - counts: { - distinct_entities: 0, - entity_clients: 4, - non_entity_tokens: 0, - non_entity_clients: 0, - clients: 4, - }, - namespaces: [ - { - namespace_id: 'root', - namespace_path: '', - counts: { - distinct_entities: 0, - entity_clients: 2, - non_entity_tokens: 0, - non_entity_clients: 0, - clients: 2, - }, - mounts: [ - { - mount_path: 'auth_userpass_3158c012', - counts: { - distinct_entities: 0, - entity_clients: 2, - non_entity_tokens: 0, - non_entity_clients: 0, - clients: 2, - }, - }, - ], - }, - { - namespace_id: 'lHmap', - namespace_path: 'education/', - counts: { - distinct_entities: 0, - entity_clients: 2, - non_entity_tokens: 0, - non_entity_clients: 0, - clients: 2, - }, - mounts: [ - { - mount_path: 'auth_userpass_a36c8125', - counts: { - distinct_entities: 0, - entity_clients: 2, - non_entity_tokens: 0, - non_entity_clients: 0, - clients: 2, - }, - }, - ], - }, - ], - }, - }, - ], - distinct_entities: 132, - entity_clients: 132, - non_entity_tokens: 43, - non_entity_clients: 43, - clients: 175, - }, + data: generateActivityResponse(namespaces, start_time, end_time), wrap_info: null, warnings: null, auth: null, diff --git a/ui/mirage/handlers/index.js b/ui/mirage/handlers/index.js index 8c28ffa4de..dd01c7654d 100644 --- a/ui/mirage/handlers/index.js +++ b/ui/mirage/handlers/index.js @@ -1,7 +1,6 @@ // add all handlers here // individual lookup done in mirage config import base from './base'; -import activity from './activity'; import clients from './clients'; import db from './db'; import kms from './kms'; @@ -10,4 +9,4 @@ import mfaLogin from './mfa-login'; import oidcConfig from './oidc-config'; import hcpLink from './hcp-link'; -export { base, activity, clients, db, kms, mfaConfig, mfaLogin, oidcConfig, hcpLink }; +export { base, clients, db, kms, mfaConfig, mfaLogin, oidcConfig, hcpLink }; diff --git a/ui/tests/acceptance/client-dashboard-test.js b/ui/tests/acceptance/client-dashboard-test.js index d8c390442d..09d3a94e6c 100644 --- a/ui/tests/acceptance/client-dashboard-test.js +++ b/ui/tests/acceptance/client-dashboard-test.js @@ -10,16 +10,16 @@ import { create } from 'ember-cli-page-object'; import ss from 'vault/tests/pages/components/search-select'; import { clickTrigger } from 'ember-power-select/test-support/helpers'; import { ARRAY_OF_MONTHS } from 'core/utils/date-formatters'; +import { formatNumber } from 'core/helpers/format-number'; const searchSelect = create(ss); -const NEW_DATE = new Date(); -const LAST_MONTH = startOfMonth(subMonths(NEW_DATE, 1)); -const COUNTS_START = subMonths(NEW_DATE, 12); // pretend vault user started cluster 1 year ago +const CURRENT_DATE = new Date(); +const LAST_MONTH = startOfMonth(subMonths(CURRENT_DATE, 1)); +const COUNTS_START = subMonths(CURRENT_DATE, 12); // pretend vault user started cluster 1 year ago // for testing, we're in the middle of a license/billing period -const LICENSE_START = startOfMonth(subMonths(NEW_DATE, 6)); - +const LICENSE_START = startOfMonth(subMonths(CURRENT_DATE, 6)); // upgrade happened 1 month after license start const UPGRADE_DATE = addMonths(LICENSE_START, 1); @@ -31,6 +31,10 @@ module('Acceptance | client counts dashboard tab', function (hooks) { ENV['ember-cli-mirage'].handler = 'clients'; }); + hooks.beforeEach(function () { + this.store = this.owner.lookup('service:store'); + }); + hooks.after(function () { ENV['ember-cli-mirage'].handler = null; }); @@ -80,18 +84,17 @@ module('Acceptance | client counts dashboard tab', function (hooks) { assert.dom(SELECTORS.filterBar).doesNotExist('Does not show filter bar'); }); - test('visiting history tab config on and data with mounts', async function (assert) { + test('visiting dashboard tab config on and data with mounts', async function (assert) { assert.expect(8); await visit('/vault/clients/dashboard'); assert.strictEqual(currentURL(), '/vault/clients/dashboard'); - assert .dom(SELECTORS.dateDisplay) .hasText(format(LICENSE_START, 'MMMM yyyy'), 'billing start month is correctly parsed from license'); assert .dom(SELECTORS.rangeDropdown) .hasText( - `${format(LICENSE_START, 'MMM yyyy')} - ${format(NEW_DATE, 'MMM yyyy')}`, + `${format(LICENSE_START, 'MMM yyyy')} - ${format(CURRENT_DATE, 'MMM yyyy')}`, 'Date range shows dates correctly parsed activity response' ); assert.dom(SELECTORS.attributionBlock).exists('Shows attribution area'); @@ -111,8 +114,6 @@ module('Acceptance | client counts dashboard tab', function (hooks) { test('updates correctly when querying date ranges', async function (assert) { assert.expect(26); - // TODO CMB: wire up dynamically generated activity to mirage clients handler - // const activity = generateActivityResponse(5, LICENSE_START, LAST_MONTH); await visit('/vault/clients/dashboard'); assert.strictEqual(currentURL(), '/vault/clients/dashboard'); // query for single, historical month with no new counts @@ -167,7 +168,7 @@ module('Acceptance | client counts dashboard tab', function (hooks) { // query custom end month await click(SELECTORS.rangeDropdown); await click('[data-test-show-calendar]'); - if (parseInt(find('[data-test-display-year]').innerText) < NEW_DATE.getFullYear()) { + if (parseInt(find('[data-test-display-year]').innerText) < CURRENT_DATE.getFullYear()) { await click('[data-test-next-year]'); } await click(find(`[data-test-calendar-month=${ARRAY_OF_MONTHS[LAST_MONTH.getMonth() - 2]}]`)); @@ -190,7 +191,7 @@ module('Acceptance | client counts dashboard tab', function (hooks) { // query for single, historical month await click(SELECTORS.rangeDropdown); await click('[data-test-show-calendar]'); - if (parseInt(find('[data-test-display-year]').innerText) < NEW_DATE.getFullYear()) { + if (parseInt(find('[data-test-display-year]').innerText) < CURRENT_DATE.getFullYear()) { await click('[data-test-next-year]'); } await click(find(`[data-test-calendar-month=${ARRAY_OF_MONTHS[UPGRADE_DATE.getMonth()]}]`)); @@ -207,7 +208,6 @@ module('Acceptance | client counts dashboard tab', function (hooks) { // reset to billing period await click('[data-test-popup-menu-trigger]'); await click('[data-test-current-billing-period]'); - // query month older than count start date await click('[data-test-start-date-editor] button'); await click(SELECTORS.yearDropdown); @@ -221,8 +221,8 @@ module('Acceptance | client counts dashboard tab', function (hooks) { ); }); - test('filters correctly on history with full data', async function (assert) { - assert.expect(19); + test('dashboard filters correctly with full data', async function (assert) { + assert.expect(21); await visit('/vault/clients/dashboard'); assert.strictEqual(currentURL(), '/vault/clients/dashboard', 'clients/dashboard URL is correct'); assert.dom(SELECTORS.dashboardActiveTab).hasText('Dashboard', 'dashboard tab is active'); @@ -231,43 +231,73 @@ module('Acceptance | client counts dashboard tab', function (hooks) { .exists('Shows running totals with monthly breakdown charts'); assert.dom(SELECTORS.attributionBlock).exists('Shows attribution area'); assert.dom(SELECTORS.monthlyUsageBlock).exists('Shows monthly usage block'); + const response = await this.store.peekRecord('clients/activity', 'some-activity-id'); // FILTER BY NAMESPACE await clickTrigger(); await searchSelect.options.objectAt(0).click(); - await settled(); + const topNamespace = response.byNamespace[0]; + const topMount = topNamespace.mounts[0]; assert.ok(true, 'Filter by first namespace'); + assert.strictEqual( + find(SELECTORS.selectedNs).innerText.toLowerCase(), + topNamespace.label, + 'selects top namespace' + ); assert.dom('[data-test-top-attribution]').includesText('Top auth method'); - assert.dom('[data-test-running-total-entity]').includesText('23,326', 'total entity clients is accurate'); assert - .dom('[data-test-running-total-nonentity]') - .includesText('17,826', 'total non-entity clients is accurate'); - assert.dom('[data-test-attribution-clients]').includesText('10,142', 'top attribution clients accurate'); + .dom('[data-test-running-total-entity] p') + .includesText(`${formatNumber([topNamespace.entity_clients])}`, 'total entity clients is accurate'); + assert + .dom('[data-test-running-total-nonentity] p') + .includesText( + `${formatNumber([topNamespace.non_entity_clients])}`, + 'total non-entity clients is accurate' + ); + assert + .dom('[data-test-attribution-clients] p') + .includesText(`${formatNumber([topMount.clients])}`, 'top attribution clients accurate'); // FILTER BY AUTH METHOD await clickTrigger(); await searchSelect.options.objectAt(0).click(); await settled(); assert.ok(true, 'Filter by first auth method'); - assert.dom('[data-test-running-total-entity]').includesText('6,508', 'total entity clients is accurate'); + assert.strictEqual( + find(SELECTORS.selectedAuthMount).innerText.toLowerCase(), + topMount.label, + 'selects top mount' + ); assert - .dom('[data-test-running-total-nonentity]') - .includesText('3,634', 'total non-entity clients is accurate'); + .dom('[data-test-running-total-entity] p') + .includesText(`${formatNumber([topMount.entity_clients])}`, 'total entity clients is accurate'); + assert + .dom('[data-test-running-total-nonentity] p') + .includesText(`${formatNumber([topMount.non_entity_clients])}`, 'total non-entity clients is accurate'); assert.dom(SELECTORS.attributionBlock).doesNotExist('Does not show attribution block'); await click('#namespace-search-select [data-test-selected-list-button="delete"]'); assert.ok(true, 'Remove namespace filter without first removing auth method filter'); assert.dom('[data-test-top-attribution]').includesText('Top namespace'); - assert - .dom('[data-test-attribution-clients]') - .hasTextContaining('41,152', 'top attribution clients back to unfiltered value'); assert .dom('[data-test-running-total-entity]') - .hasTextContaining('98,289', 'total entity clients is back to unfiltered value'); + .hasTextContaining( + `${formatNumber([response.total.entity_clients])}`, + 'total entity clients is back to unfiltered value' + ); assert .dom('[data-test-running-total-nonentity]') - .hasTextContaining('96,412', 'total non-entity clients is back to unfiltered value'); + .hasTextContaining( + `${formatNumber([formatNumber([response.total.non_entity_clients])])}`, + 'total non-entity clients is back to unfiltered value' + ); + assert + .dom('[data-test-attribution-clients]') + .hasTextContaining( + `${formatNumber([topNamespace.clients])}`, + 'top attribution clients back to unfiltered value' + ); }); test('shows warning if upgrade happened within license period', async function (assert) { @@ -312,8 +342,8 @@ module('Acceptance | client counts dashboard tab', function (hooks) { test('Shows empty if license start date is current month', async function (assert) { // TODO cmb update to reflect new behavior - const licenseStart = NEW_DATE; - const licenseEnd = addMonths(NEW_DATE, 12); + const licenseStart = CURRENT_DATE; + const licenseEnd = addMonths(CURRENT_DATE, 12); this.server.get('sys/license/status', function () { return { request_id: 'my-license-request-id', diff --git a/ui/tests/helpers/clients.js b/ui/tests/helpers/clients.js index 68be57c195..89e7cd318d 100644 --- a/ui/tests/helpers/clients.js +++ b/ui/tests/helpers/clients.js @@ -1,4 +1,3 @@ -import { addMonths, differenceInCalendarMonths, formatRFC3339, startOfMonth } from 'date-fns'; import { Response } from 'miragejs'; /** Scenarios @@ -32,6 +31,8 @@ export const SELECTORS = { runningTotalMonthStats: '[data-test-running-total="single-month-stats"]', runningTotalMonthlyCharts: '[data-test-running-total="monthly-charts"]', monthlyUsageBlock: '[data-test-monthly-usage]', + selectedAuthMount: 'div#auth-method-search-select [data-test-selected-option] div', + selectedNs: 'div#namespace-search-select [data-test-selected-option] div', }; export const CHART_ELEMENTS = { @@ -74,187 +75,3 @@ export function overrideResponse(httpStatus, data) { } return new Response(200, { 'Content-Type': 'application/json' }, JSON.stringify(data)); } - -function generateNamespaceBlock(idx = 0, skipMounts = false) { - let mountCount = 1; - const nsBlock = { - namespace_id: `${idx}UUID`, - namespace_path: `${idx}/namespace`, - counts: { - clients: mountCount * 15, - entity_clients: mountCount * 5, - non_entity_clients: mountCount * 10, - distinct_entities: mountCount * 5, - non_entity_tokens: mountCount * 10, - }, - }; - if (!skipMounts) { - mountCount = Math.floor((Math.random() + idx) * 20); - const mounts = []; - Array.from(Array(mountCount)).forEach((v, index) => { - mounts.push({ - mount_path: `auth/authid${index}`, - counts: { - clients: 5, - entity_clients: 3, - non_entity_clients: 2, - distinct_entities: 3, - non_entity_tokens: 2, - }, - }); - }); - nsBlock.mounts = mounts; - } - return nsBlock; -} - -function generateCounts(max, arrayLength) { - function randomBetween(min, max) { - return Math.floor(Math.random() * (max - min + 1) + min); - } - var result = []; - var sum = 0; - for (var i = 0; i < arrayLength - 1; i++) { - result[i] = randomBetween(1, max - (arrayLength - i - 1) - sum); - sum += result[i]; - } - result[arrayLength - 1] = max - sum; - return result.sort((a, b) => b - a); -} - -function generateMonths(startDate, endDate, hasNoData = false) { - const numberOfMonths = differenceInCalendarMonths(endDate, startDate) + 1; - const months = []; - - for (let i = 0; i < numberOfMonths; i++) { - if (hasNoData) { - months.push({ - timestamp: formatRFC3339(startOfMonth(addMonths(startDate, i))), - counts: null, - namespace: null, - new_clients: null, - }); - continue; - } - const namespaces = Array.from(Array(5)).map((v, idx) => { - return generateNamespaceBlock(idx); - }); - const clients = numberOfMonths * 5 + i * 5; - const [entity_clients, non_entity_clients] = generateCounts(clients, 2); - const counts = { - clients, - entity_clients, - non_entity_clients, - distinct_entities: entity_clients, - non_entity_tokens: non_entity_clients, - }; - const new_counts = 5 + i; - const [new_entity, new_non_entity] = generateCounts(new_counts, 2); - months.push({ - timestamp: formatRFC3339(startOfMonth(addMonths(startDate, i))), - counts, - namespaces, - new_clients: { - counts: { - distinct_entities: new_entity, - entity_clients: new_entity, - non_entity_tokens: new_non_entity, - non_entity_clients: new_non_entity, - clients: new_counts, - }, - namespaces, - }, - }); - } - return months; -} - -export function generateActivityResponse(nsCount = 1, startDate, endDate) { - if (nsCount === 0) { - return { - request_id: 'some-activity-id', - data: { - start_time: formatRFC3339(startDate), - end_time: formatRFC3339(endDate), - total: { - clients: 0, - entity_clients: 0, - non_entity_clients: 0, - }, - by_namespace: [ - { - namespace_id: `root`, - namespace_path: '', - counts: { - entity_clients: 0, - non_entity_clients: 0, - clients: 0, - }, - }, - ], - months: generateMonths(startDate, endDate, false), - }, - }; - } - const namespaces = Array.from(Array(nsCount)).map((v, idx) => { - return generateNamespaceBlock(idx); - }); - return { - request_id: 'some-activity-id', - data: { - start_time: formatRFC3339(startDate), - end_time: formatRFC3339(endDate), - total: { - clients: 999, - entity_clients: 666, - non_entity_clients: 333, - }, - by_namespace: namespaces, - months: generateMonths(startDate, endDate), - }, - }; -} - -export function generateCurrentMonthResponse(namespaceCount, skipMounts = false, configEnabled = true) { - if (!configEnabled) { - return { - data: { id: 'no-data' }, - }; - } - if (!namespaceCount) { - return { - request_id: 'monthly-response-id', - data: { - by_namespace: [], - clients: 0, - distinct_entities: 0, - entity_clients: 0, - non_entity_clients: 0, - non_entity_tokens: 0, - months: [], - }, - }; - } - // generate by_namespace data - const by_namespace = Array.from(Array(namespaceCount)).map((ns, idx) => - generateNamespaceBlock(idx, skipMounts) - ); - const counts = by_namespace.reduce( - (prev, curr) => { - return { - clients: prev.clients + curr.counts.clients, - entity_clients: prev.entity_clients + curr.counts.entity_clients, - non_entity_clients: prev.non_entity_clients + curr.counts.non_entity_clients, - }; - }, - { clients: 0, entity_clients: 0, non_entity_clients: 0 } - ); - return { - request_id: 'monthly-response-id', - data: { - by_namespace, - ...counts, - months: [], - }, - }; -}