@ytsaurus/ui 1.21.0 → 1.22.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/build/cjs/@types/core.d.ts +1 -1
  2. package/build/cjs/server/ServerFactory.d.ts +3 -0
  3. package/build/cjs/server/ServerFactory.js +3 -0
  4. package/build/cjs/server/ServerFactory.js.map +1 -1
  5. package/build/cjs/server/controllers/availability.js +36 -18
  6. package/build/cjs/server/controllers/availability.js.map +1 -1
  7. package/build/cjs/server/controllers/odin-proxy-api.js +3 -4
  8. package/build/cjs/server/controllers/odin-proxy-api.js.map +1 -1
  9. package/build/cjs/ui/pages/odin/_actions/odin-overview.js +1 -1
  10. package/build/cjs/ui/pages/odin/_actions/odin-overview.js.map +1 -1
  11. package/build/cjs/ui/pages/odin/controls/OdinToolbar.js +2 -1
  12. package/build/cjs/ui/pages/odin/controls/OdinToolbar.js.map +1 -1
  13. package/build/cjs/ui/pages/odin/odin-utils.d.ts +1 -1
  14. package/build/cjs/ui/pages/odin/odin-utils.js +2 -2
  15. package/build/cjs/ui/pages/odin/odin-utils.js.map +1 -1
  16. package/build/esm/@types/core.d.ts +1 -1
  17. package/build/esm/server/ServerFactory.d.ts +3 -0
  18. package/build/esm/server/ServerFactory.js +4 -0
  19. package/build/esm/server/ServerFactory.js.map +1 -1
  20. package/build/esm/server/controllers/availability.js +43 -23
  21. package/build/esm/server/controllers/availability.js.map +1 -1
  22. package/build/esm/server/controllers/odin-proxy-api.js +9 -10
  23. package/build/esm/server/controllers/odin-proxy-api.js.map +1 -1
  24. package/build/esm/ui/pages/odin/_actions/odin-overview.js +1 -1
  25. package/build/esm/ui/pages/odin/_actions/odin-overview.js.map +1 -1
  26. package/build/esm/ui/pages/odin/controls/OdinToolbar.js +3 -2
  27. package/build/esm/ui/pages/odin/controls/OdinToolbar.js.map +1 -1
  28. package/build/esm/ui/pages/odin/odin-utils.d.ts +1 -1
  29. package/build/esm/ui/pages/odin/odin-utils.js +2 -2
  30. package/build/esm/ui/pages/odin/odin-utils.js.map +1 -1
  31. package/dist/public/build/assets-manifest.json +4 -4
  32. package/dist/public/build/js/main.724df837.js +3 -0
  33. package/dist/public/build/js/{main.53d3bdc5.js.map → main.724df837.js.map} +1 -1
  34. package/dist/public/build/manifest.json +2 -2
  35. package/dist/server/ServerFactory.d.ts +3 -0
  36. package/dist/server/ServerFactory.js +3 -0
  37. package/dist/server/controllers/availability.js +36 -18
  38. package/dist/server/controllers/odin-proxy-api.js +3 -4
  39. package/package.json +2 -2
  40. package/dist/public/build/js/main.53d3bdc5.js +0 -3
  41. /package/dist/public/build/js/{main.53d3bdc5.js.LICENSE.txt → main.724df837.js.LICENSE.txt} +0 -0
@@ -51,7 +51,7 @@ export interface YTCoreConfig {
51
51
  * Odin is a service for monitoring the availability of YTsaurus clusters
52
52
  * This parameter sets service base url and enables UI page
53
53
  */
54
- odinBaseUrl?: string;
54
+ odinBaseUrl?: Record<string, string> | string;
55
55
 
56
56
  /**
57
57
  * The OAuthRobot should have read/write access to mapNodePath
@@ -8,6 +8,9 @@ export interface ServerFactory {
8
8
  renderLayout(params: AppLayoutConfig, req: Request, res: Response): Promise<string>;
9
9
  }
10
10
  export declare function rememberApp(v: ExpressKit): void;
11
+ /**
12
+ * @deprecated use req.ctx.config instead of App().config
13
+ */
11
14
  export declare function getApp(): ExpressKit;
12
15
  export declare function configureServerFactory(overrides: Partial<ServerFactory>): void;
13
16
  declare const _default: ServerFactory;
@@ -16,6 +16,9 @@ function rememberApp(v) {
16
16
  app = v;
17
17
  }
18
18
  exports.rememberApp = rememberApp;
19
+ /**
20
+ * @deprecated use req.ctx.config instead of App().config
21
+ */
19
22
  function getApp() {
20
23
  return app;
21
24
  }
@@ -1 +1 @@
1
- {"version":3,"names":["_utils","require","_renderLayout2","_interopRequireDefault","_utils2","obj","__esModule","default","app","rememberApp","v","Error","getApp","serverFactory","getExtraRootPages","isLocalClusterId","cluster","isLocalModeByEnvironment","_isLocalClusterId","getHomeRedirectedUrl","Promise","resolve","undefined","renderLayout","params","_asyncToGenerator","_regeneratorRuntime","mark","_callee","wrap","_callee$","_context","prev","next","_renderLayout","abrupt","sent","stop","configureServerFactoryItem","k","redefinition","configureServerFactory","overrides","_forEach","_v","key","_default","exports","Proxy","set"],"sources":["ServerFactory.ts"],"sourcesContent":["import type {Request, Response} from 'express';\nimport type {ExpressKit} from '@gravity-ui/expresskit';\nimport _ from 'lodash';\nimport {isLocalClusterId} from '../shared/utils';\nimport {ConfigData} from '../shared/yt-types';\nimport renderLayout, {AppLayoutConfig} from './render-layout';\nimport {isLocalModeByEnvironment} from './utils';\n\nexport interface ServerFactory {\n getExtraRootPages(): Array<string>;\n isLocalClusterId(cluster: string): boolean;\n getHomeRedirectedUrl(cluster: string | undefined, req: Request): Promise<string | undefined>;\n renderLayout(params: AppLayoutConfig, req: Request, res: Response): Promise<string>;\n}\n\nlet app: ExpressKit;\n\nexport function rememberApp(v: ExpressKit) {\n if (app) {\n throw new Error('The method must not be called more than once');\n }\n app = v;\n}\n\nexport function getApp() {\n return app!;\n}\n\nconst serverFactory: ServerFactory = {\n getExtraRootPages() {\n return [];\n },\n isLocalClusterId(cluster) {\n return isLocalModeByEnvironment() || isLocalClusterId(cluster);\n },\n getHomeRedirectedUrl() {\n return Promise.resolve(undefined);\n },\n async renderLayout(params) {\n return await renderLayout<ConfigData>(params);\n },\n};\n\nfunction configureServerFactoryItem<K extends keyof ServerFactory>(\n k: K,\n redefinition: ServerFactory[K],\n) {\n serverFactory[k] = redefinition;\n}\n\nexport function configureServerFactory(overrides: Partial<ServerFactory>) {\n _.forEach(overrides, (_v, k) => {\n const key = k as keyof ServerFactory;\n configureServerFactoryItem(key, overrides[key]!);\n });\n}\n\nexport default new Proxy(serverFactory, {\n set: () => {\n throw new Error('Use configureUIFactory(...) method instead of direct modifications');\n },\n});\n"],"mappings":";;;;;;;;;;;;AAGA,IAAAA,MAAA,GAAAC,OAAA;AAEA,IAAAC,cAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,OAAA,GAAAH,OAAA;AAAgD,SAAAE,uBAAAE,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAShD,IAAIG,GAAe;AAEZ,SAASC,WAAWA,CAACC,CAAa,EAAE;EACvC,IAAIF,GAAG,EAAE;IACL,MAAM,IAAIG,KAAK,CAAC,8CAA8C,CAAC;EACnE;EACAH,GAAG,GAAGE,CAAC;AACX;AAEO,SAASE,MAAMA,CAAA,EAAG;EACrB,OAAOJ,GAAG;AACd;AAEA,IAAMK,aAA4B,GAAG;EACjCC,iBAAiB,WAAAA,kBAAA,EAAG;IAChB,OAAO,EAAE;EACb,CAAC;EACDC,gBAAgB,WAAAA,iBAACC,OAAO,EAAE;IACtB,OAAO,IAAAC,gCAAwB,EAAC,CAAC,IAAI,IAAAC,uBAAgB,EAACF,OAAO,CAAC;EAClE,CAAC;EACDG,oBAAoB,WAAAA,qBAAA,EAAG;IACnB,OAAOC,OAAO,CAACC,OAAO,CAACC,SAAS,CAAC;EACrC,CAAC;EACKC,YAAY,WAAAA,aAACC,MAAM,EAAE;IAAA,WAAAC,0BAAA,gBAAAC,oBAAA,CAAAC,IAAA,UAAAC,QAAA;MAAA,OAAAF,oBAAA,CAAAG,IAAA,UAAAC,SAAAC,QAAA;QAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;UAAA;YAAAF,QAAA,CAAAE,IAAA;YAAA,OACV,IAAAC,sBAAY,EAAaV,MAAM,CAAC;UAAA;YAAA,OAAAO,QAAA,CAAAI,MAAA,WAAAJ,QAAA,CAAAK,IAAA;UAAA;UAAA;YAAA,OAAAL,QAAA,CAAAM,IAAA;QAAA;MAAA,GAAAT,OAAA;IAAA;EACjD;AACJ,CAAC;AAED,SAASU,0BAA0BA,CAC/BC,CAAI,EACJC,YAA8B,EAChC;EACE3B,aAAa,CAAC0B,CAAC,CAAC,GAAGC,YAAY;AACnC;AAEO,SAASC,sBAAsBA,CAACC,SAAiC,EAAE;EACtE,IAAAC,iBAAA,EAAUD,SAAS,EAAE,UAACE,EAAE,EAAEL,CAAC,EAAK;IAC5B,IAAMM,GAAG,GAAGN,CAAwB;IACpCD,0BAA0B,CAACO,GAAG,EAAEH,SAAS,CAACG,GAAG,CAAE,CAAC;EACpD,CAAC,CAAC;AACN;AAAA,IAAAC,QAAA,GAAAC,OAAA,CAAAxC,OAAA,GAEe,IAAIyC,KAAK,CAACnC,aAAa,EAAE;EACpCoC,GAAG,EAAE,SAAAA,IAAA,EAAM;IACP,MAAM,IAAItC,KAAK,CAAC,oEAAoE,CAAC;EACzF;AACJ,CAAC,CAAC"}
1
+ {"version":3,"names":["_utils","require","_renderLayout2","_interopRequireDefault","_utils2","obj","__esModule","default","app","rememberApp","v","Error","getApp","serverFactory","getExtraRootPages","isLocalClusterId","cluster","isLocalModeByEnvironment","_isLocalClusterId","getHomeRedirectedUrl","Promise","resolve","undefined","renderLayout","params","_asyncToGenerator","_regeneratorRuntime","mark","_callee","wrap","_callee$","_context","prev","next","_renderLayout","abrupt","sent","stop","configureServerFactoryItem","k","redefinition","configureServerFactory","overrides","_forEach","_v","key","_default","exports","Proxy","set"],"sources":["ServerFactory.ts"],"sourcesContent":["import type {Request, Response} from 'express';\nimport type {ExpressKit} from '@gravity-ui/expresskit';\nimport _ from 'lodash';\nimport {isLocalClusterId} from '../shared/utils';\nimport {ConfigData} from '../shared/yt-types';\nimport renderLayout, {AppLayoutConfig} from './render-layout';\nimport {isLocalModeByEnvironment} from './utils';\n\nexport interface ServerFactory {\n getExtraRootPages(): Array<string>;\n isLocalClusterId(cluster: string): boolean;\n getHomeRedirectedUrl(cluster: string | undefined, req: Request): Promise<string | undefined>;\n renderLayout(params: AppLayoutConfig, req: Request, res: Response): Promise<string>;\n}\n\nlet app: ExpressKit;\n\nexport function rememberApp(v: ExpressKit) {\n if (app) {\n throw new Error('The method must not be called more than once');\n }\n app = v;\n}\n\n/**\n * @deprecated use req.ctx.config instead of App().config\n */\nexport function getApp() {\n return app!;\n}\n\nconst serverFactory: ServerFactory = {\n getExtraRootPages() {\n return [];\n },\n isLocalClusterId(cluster) {\n return isLocalModeByEnvironment() || isLocalClusterId(cluster);\n },\n getHomeRedirectedUrl() {\n return Promise.resolve(undefined);\n },\n async renderLayout(params) {\n return await renderLayout<ConfigData>(params);\n },\n};\n\nfunction configureServerFactoryItem<K extends keyof ServerFactory>(\n k: K,\n redefinition: ServerFactory[K],\n) {\n serverFactory[k] = redefinition;\n}\n\nexport function configureServerFactory(overrides: Partial<ServerFactory>) {\n _.forEach(overrides, (_v, k) => {\n const key = k as keyof ServerFactory;\n configureServerFactoryItem(key, overrides[key]!);\n });\n}\n\nexport default new Proxy(serverFactory, {\n set: () => {\n throw new Error('Use configureUIFactory(...) method instead of direct modifications');\n },\n});\n"],"mappings":";;;;;;;;;;;;AAGA,IAAAA,MAAA,GAAAC,OAAA;AAEA,IAAAC,cAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,OAAA,GAAAH,OAAA;AAAgD,SAAAE,uBAAAE,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAShD,IAAIG,GAAe;AAEZ,SAASC,WAAWA,CAACC,CAAa,EAAE;EACvC,IAAIF,GAAG,EAAE;IACL,MAAM,IAAIG,KAAK,CAAC,8CAA8C,CAAC;EACnE;EACAH,GAAG,GAAGE,CAAC;AACX;;AAEA;AACA;AACA;AACO,SAASE,MAAMA,CAAA,EAAG;EACrB,OAAOJ,GAAG;AACd;AAEA,IAAMK,aAA4B,GAAG;EACjCC,iBAAiB,WAAAA,kBAAA,EAAG;IAChB,OAAO,EAAE;EACb,CAAC;EACDC,gBAAgB,WAAAA,iBAACC,OAAO,EAAE;IACtB,OAAO,IAAAC,gCAAwB,EAAC,CAAC,IAAI,IAAAC,uBAAgB,EAACF,OAAO,CAAC;EAClE,CAAC;EACDG,oBAAoB,WAAAA,qBAAA,EAAG;IACnB,OAAOC,OAAO,CAACC,OAAO,CAACC,SAAS,CAAC;EACrC,CAAC;EACKC,YAAY,WAAAA,aAACC,MAAM,EAAE;IAAA,WAAAC,0BAAA,gBAAAC,oBAAA,CAAAC,IAAA,UAAAC,QAAA;MAAA,OAAAF,oBAAA,CAAAG,IAAA,UAAAC,SAAAC,QAAA;QAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;UAAA;YAAAF,QAAA,CAAAE,IAAA;YAAA,OACV,IAAAC,sBAAY,EAAaV,MAAM,CAAC;UAAA;YAAA,OAAAO,QAAA,CAAAI,MAAA,WAAAJ,QAAA,CAAAK,IAAA;UAAA;UAAA;YAAA,OAAAL,QAAA,CAAAM,IAAA;QAAA;MAAA,GAAAT,OAAA;IAAA;EACjD;AACJ,CAAC;AAED,SAASU,0BAA0BA,CAC/BC,CAAI,EACJC,YAA8B,EAChC;EACE3B,aAAa,CAAC0B,CAAC,CAAC,GAAGC,YAAY;AACnC;AAEO,SAASC,sBAAsBA,CAACC,SAAiC,EAAE;EACtE,IAAAC,iBAAA,EAAUD,SAAS,EAAE,UAACE,EAAE,EAAEL,CAAC,EAAK;IAC5B,IAAMM,GAAG,GAAGN,CAAwB;IACpCD,0BAA0B,CAACO,GAAG,EAAEH,SAAS,CAACG,GAAG,CAAE,CAAC;EACpD,CAAC,CAAC;AACN;AAAA,IAAAC,QAAA,GAAAC,OAAA,CAAAxC,OAAA,GAEe,IAAIyC,KAAK,CAACnC,aAAa,EAAE;EACpCoC,GAAG,EAAE,SAAAA,IAAA,EAAM;IACP,MAAM,IAAItC,KAAK,CAAC,oEAAoE,CAAC;EACzF;AACJ,CAAC,CAAC"}
@@ -8,7 +8,6 @@ const axios_1 = __importDefault(require("axios"));
8
8
  const lodash_1 = __importDefault(require("lodash"));
9
9
  const utils_1 = require("../components/utils");
10
10
  const utils_2 = require("../utils");
11
- const ServerFactory_1 = require("../ServerFactory");
12
11
  function getClusterAvailability(clusterConfig, odinPath) {
13
12
  const ODIN_PERIOD = 5;
14
13
  const ODIN_METRIC = 'master';
@@ -28,38 +27,57 @@ function getClusterAvailability(clusterConfig, odinPath) {
28
27
  return response.data;
29
28
  });
30
29
  }
31
- function getAvailability(req, clusters, odinPath) {
32
- const url = `${odinPath}/is_alive`;
33
- return axios_1.default
34
- .request({ url, responseType: 'json' })
35
- .then((res) => {
36
- if (res.data !== true) {
30
+ function getAvailability(req, clusters) {
31
+ const odinBaseUrl = req.ctx.config.odinBaseUrl;
32
+ const isMultiOdinBaseUrl = 'string' !== typeof odinBaseUrl;
33
+ const makeOdinIsAliveUrl = (odinBaseUrl) => `${odinBaseUrl}/is_alive`;
34
+ const commonIsAlive = isMultiOdinBaseUrl
35
+ ? Promise.resolve({ data: true })
36
+ : axios_1.default.request({ url: makeOdinIsAliveUrl(odinBaseUrl) });
37
+ return commonIsAlive
38
+ .then(({ data: commonAlive }) => {
39
+ if (!commonAlive) {
37
40
  return [];
38
41
  }
39
42
  return Promise.all(lodash_1.default.map(clusters, (clusterConfig) => {
40
- const id = clusterConfig.id;
41
- return getClusterAvailability(clusterConfig, odinPath)
42
- .then((availability) => ({ id, availability }))
43
- .catch((error) => {
44
- req.ctx.logError('getAvailability error', error);
45
- return { id };
43
+ const odinPath = isMultiOdinBaseUrl
44
+ ? odinBaseUrl === null || odinBaseUrl === void 0 ? void 0 : odinBaseUrl[clusterConfig.id]
45
+ : odinBaseUrl;
46
+ if (!odinPath) {
47
+ return {};
48
+ }
49
+ const alive = isMultiOdinBaseUrl
50
+ ? axios_1.default.get(makeOdinIsAliveUrl(odinPath)).catch((e) => {
51
+ req.ctx.logError(`Error of getting ${odinPath}`, e);
52
+ return { data: false };
53
+ })
54
+ : Promise.resolve({ data: true });
55
+ return alive.then(({ data }) => {
56
+ if (data != true) {
57
+ return {};
58
+ }
59
+ return getClusterAvailability(clusterConfig, odinPath)
60
+ .then((availability) => ({ id: clusterConfig.id, availability }))
61
+ .catch((error) => {
62
+ req.ctx.logError('getAvailability error', error);
63
+ return {};
64
+ });
46
65
  });
47
66
  }));
48
67
  })
49
68
  .catch((e) => {
50
- req.ctx.logError(`Error of getting ${url}`, e);
69
+ req.ctx.logError(`Error of getting ${odinBaseUrl}`, e);
51
70
  return [];
52
71
  });
53
72
  }
54
73
  async function getClustersAvailability(req, res) {
55
- var _a;
56
- const odinPath = (_a = (0, ServerFactory_1.getApp)().config) === null || _a === void 0 ? void 0 : _a.odinBaseUrl;
57
- if (!odinPath) {
74
+ const odinBaseUrl = req.ctx.config.odinBaseUrl;
75
+ if (!odinBaseUrl) {
58
76
  (0, utils_2.sendAndLogError)(req.ctx, res, 500, new Error('odin base url is not configured'));
59
77
  return;
60
78
  }
61
79
  const clusters = (0, utils_1.getClustersFromConfig)();
62
- await getAvailability(req, clusters, odinPath)
80
+ await getAvailability(req, clusters)
63
81
  .then((data) => (0, utils_2.sendResponse)(res, data))
64
82
  .catch((error) => (0, utils_2.sendError)(res, error));
65
83
  }
@@ -1 +1 @@
1
- {"version":3,"names":["_axios","_interopRequireDefault","require","_utils","_utils2","_ServerFactory","obj","__esModule","default","getClusterAvailability","clusterConfig","odinPath","ODIN_PERIOD","ODIN_METRIC","TIMEOUT","axios","request","url","id","params","period","target","method","timeout","responseType","then","response","data","getAvailability","req","clusters","concat","res","Promise","all","_map","availability","error","ctx","logError","e","getClustersAvailability","_x","_x2","_getClustersAvailability","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee","_getApp$config","wrap","_callee$","_context","prev","next","getApp","config","odinBaseUrl","sendAndLogError","Error","abrupt","getClustersFromConfig","sendResponse","sendError","stop"],"sources":["availability.ts"],"sourcesContent":["import axios, {AxiosResponse} from 'axios';\nimport _ from 'lodash';\nimport type {Request, Response} from '@gravity-ui/expresskit';\nimport {getClustersFromConfig} from '../components/utils';\nimport {sendAndLogError, sendError, sendResponse} from '../utils';\nimport {getApp} from '../ServerFactory';\n\nfunction getClusterAvailability(clusterConfig: {id: string}, odinPath: string) {\n const ODIN_PERIOD = 5;\n const ODIN_METRIC = 'master';\n const TIMEOUT = 15 * 1000;\n\n return axios\n .request({\n url: odinPath + '/availability_stat/' + clusterConfig.id,\n params: {\n period: ODIN_PERIOD,\n target: ODIN_METRIC,\n },\n method: 'GET',\n timeout: TIMEOUT,\n responseType: 'json',\n })\n .then((response: AxiosResponse<1 | undefined>) => {\n return response.data;\n });\n}\n\nfunction getAvailability(req: Request, clusters: Record<string, {id: string}>, odinPath: string) {\n const url = `${odinPath}/is_alive`;\n return axios\n .request({url, responseType: 'json'})\n .then((res) => {\n if (res.data !== true) {\n return [];\n }\n return Promise.all(\n _.map(clusters, (clusterConfig) => {\n const id = clusterConfig.id;\n return getClusterAvailability(clusterConfig, odinPath)\n .then((availability) => ({id, availability}))\n .catch((error) => {\n req.ctx.logError('getAvailability error', error);\n return {id};\n });\n }),\n );\n })\n .catch((e) => {\n req.ctx.logError(`Error of getting ${url}`, e);\n return [];\n });\n}\n\nexport async function getClustersAvailability(req: Request, res: Response) {\n const odinPath = getApp().config?.odinBaseUrl;\n if (!odinPath) {\n sendAndLogError(req.ctx, res, 500, new Error('odin base url is not configured'));\n return;\n }\n const clusters = getClustersFromConfig();\n\n await getAvailability(req, clusters, odinPath)\n .then((data: object) => sendResponse(res, data))\n .catch((error) => sendError(res, error));\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["_axios","_interopRequireDefault","require","_utils","_utils2","obj","__esModule","default","getClusterAvailability","clusterConfig","odinPath","ODIN_PERIOD","ODIN_METRIC","TIMEOUT","axios","request","url","id","params","period","target","method","timeout","responseType","then","response","data","getAvailability","req","clusters","odinBaseUrl","ctx","config","isMultiOdinBaseUrl","makeOdinIsAliveUrl","concat","commonIsAlive","Promise","resolve","_ref","commonAlive","all","_map","alive","get","e","logError","_ref2","availability","error","getClustersAvailability","_x","_x2","_getClustersAvailability","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee","res","wrap","_callee$","_context","prev","next","sendAndLogError","Error","abrupt","getClustersFromConfig","sendResponse","sendError","stop"],"sources":["availability.ts"],"sourcesContent":["import axios, {AxiosResponse} from 'axios';\nimport _ from 'lodash';\nimport type {Request, Response} from '@gravity-ui/expresskit';\nimport {getClustersFromConfig} from '../components/utils';\nimport {sendAndLogError, sendError, sendResponse} from '../utils';\n\nfunction getClusterAvailability(clusterConfig: {id: string}, odinPath: string) {\n const ODIN_PERIOD = 5;\n const ODIN_METRIC = 'master';\n const TIMEOUT = 15 * 1000;\n\n return axios\n .request({\n url: odinPath + '/availability_stat/' + clusterConfig.id,\n params: {\n period: ODIN_PERIOD,\n target: ODIN_METRIC,\n },\n method: 'GET',\n timeout: TIMEOUT,\n responseType: 'json',\n })\n .then((response: AxiosResponse<1 | undefined>) => {\n return response.data;\n });\n}\n\nfunction getAvailability(req: Request, clusters: Record<string, {id: string}>) {\n const odinBaseUrl = req.ctx.config.odinBaseUrl;\n const isMultiOdinBaseUrl = 'string' !== typeof odinBaseUrl;\n const makeOdinIsAliveUrl = (odinBaseUrl: string) => `${odinBaseUrl}/is_alive`;\n\n const commonIsAlive = isMultiOdinBaseUrl\n ? Promise.resolve({data: true})\n : axios.request({url: makeOdinIsAliveUrl(odinBaseUrl)});\n\n return commonIsAlive\n .then(({data: commonAlive}) => {\n if (!commonAlive) {\n return [];\n }\n\n return Promise.all(\n _.map(clusters, (clusterConfig) => {\n const odinPath = isMultiOdinBaseUrl\n ? odinBaseUrl?.[clusterConfig.id]\n : odinBaseUrl;\n\n if (!odinPath) {\n return {};\n }\n\n const alive = isMultiOdinBaseUrl\n ? axios.get(makeOdinIsAliveUrl(odinPath)).catch((e) => {\n req.ctx.logError(`Error of getting ${odinPath}`, e);\n return {data: false};\n })\n : Promise.resolve({data: true});\n\n return alive.then(({data}) => {\n if (data != true) {\n return {};\n }\n\n return getClusterAvailability(clusterConfig, odinPath)\n .then((availability) => ({id: clusterConfig.id, availability}))\n .catch((error) => {\n req.ctx.logError('getAvailability error', error);\n return {};\n });\n });\n }),\n );\n })\n .catch((e) => {\n req.ctx.logError(`Error of getting ${odinBaseUrl}`, e);\n return [];\n });\n}\n\nexport async function getClustersAvailability(req: Request, res: Response) {\n const odinBaseUrl = req.ctx.config.odinBaseUrl;\n\n if (!odinBaseUrl) {\n sendAndLogError(req.ctx, res, 500, new Error('odin base url is not configured'));\n return;\n }\n const clusters = getClustersFromConfig();\n\n await getAvailability(req, clusters)\n .then((data: object) => sendResponse(res, data))\n .catch((error) => sendError(res, error));\n}\n"],"mappings":"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"}
@@ -8,7 +8,6 @@ const lodash_1 = __importDefault(require("lodash"));
8
8
  const axios_1 = __importDefault(require("axios"));
9
9
  const qs_1 = __importDefault(require("qs"));
10
10
  const utils_1 = require("../utils");
11
- const ServerFactory_1 = require("../ServerFactory");
12
11
  async function odinProxyApi(req, res) {
13
12
  try {
14
13
  await odinProxyApiImpl(req, res);
@@ -23,14 +22,14 @@ async function odinProxyApi(req, res) {
23
22
  }
24
23
  exports.odinProxyApi = odinProxyApi;
25
24
  async function odinProxyApiImpl(req, res) {
26
- var _a;
27
- const odinPath = (_a = (0, ServerFactory_1.getApp)().config) === null || _a === void 0 ? void 0 : _a.odinBaseUrl;
25
+ const { action, ytAuthCluster: cluster } = req.params;
26
+ const { odinBaseUrl } = req.ctx.config;
27
+ const odinPath = typeof odinBaseUrl === 'string' ? odinBaseUrl : odinBaseUrl === null || odinBaseUrl === void 0 ? void 0 : odinBaseUrl[cluster];
28
28
  if (!odinPath) {
29
29
  return (0, utils_1.sendAndLogError)(req.ctx, res, 500, new Error('Odin base url is not configured'));
30
30
  }
31
31
  const { ctx, query } = req;
32
32
  const search = lodash_1.default.isEmpty(query) ? '' : `?${qs_1.default.stringify(query)}`;
33
- const { action, ytAuthCluster: cluster } = req.params;
34
33
  const allowedActionsUrls = {
35
34
  service_list: `${odinPath}/service_list`,
36
35
  exists: `${odinPath}/${action}/${cluster}`,
@@ -1 +1 @@
1
- {"version":3,"names":["_axios","_interopRequireDefault","require","_qs","_utils","_ServerFactory","obj","__esModule","default","odinProxyApi","_x","_x2","_odinProxyApi","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee","req","res","wrap","_callee$","_context","prev","next","odinProxyApiImpl","t0","sendAndLogError","ctx","method","query","page","headers","referer","stop","_x3","_x4","_odinProxyApiImpl","_callee3","_getApp$config","odinPath","search","_req$params","action","cluster","allowedActionsUrls","url","_callee3$","_context3","getApp","config","odinBaseUrl","abrupt","Error","_isEmpty","concat","qs","stringify","params","ytAuthCluster","service_list","exists","availability","_has","axios","request","_objectSpread","getMetadata","data","body","timeout","responseType","then","_ref","_callee2","response","pipedSize","_callee2$","_context2","pipeAxiosResponse","sent","UNEXPECTED_PIPE_AXIOS_RESPONSE","_x5"],"sources":["odin-proxy-api.ts"],"sourcesContent":["import _ from 'lodash';\nimport axios from 'axios';\nimport qs from 'qs';\n\nimport type {Request, Response} from 'express';\nimport {UNEXPECTED_PIPE_AXIOS_RESPONSE, pipeAxiosResponse, sendAndLogError} from '../utils';\nimport {getApp} from '../ServerFactory';\n\nexport async function odinProxyApi(req: Request, res: Response) {\n try {\n await odinProxyApiImpl(req, res);\n } catch (e: any) {\n await sendAndLogError(req.ctx, res, 500, e, {\n method: 'nodejs',\n query: req.query,\n page: req.headers.referer,\n });\n }\n}\n\nasync function odinProxyApiImpl(req: Request, res: Response) {\n const odinPath = getApp().config?.odinBaseUrl;\n if (!odinPath) {\n return sendAndLogError(req.ctx, res, 500, new Error('Odin base url is not configured'));\n }\n const {ctx, query} = req;\n\n const search = _.isEmpty(query) ? '' : `?${qs.stringify(query)}`;\n const {action, ytAuthCluster: cluster} = req.params;\n\n const allowedActionsUrls: Record<string, string> = {\n service_list: `${odinPath}/service_list`,\n exists: `${odinPath}/${action}/${cluster}`,\n availability: `${odinPath}/${action}/${cluster}${search}`,\n };\n\n if (!_.has(allowedActionsUrls, action)) {\n return sendAndLogError(\n req.ctx,\n res,\n 400,\n new Error(`Odin action - ${action}, is not supported`),\n );\n }\n\n const url = allowedActionsUrls[action];\n\n return axios\n .request({\n url: url,\n method: req.method as any,\n headers: {...ctx.getMetadata(), 'accept-encoding': 'gzip'},\n data: req.body,\n timeout: 100000,\n responseType: 'stream',\n })\n .then(async (response) => {\n const pipedSize = await pipeAxiosResponse(ctx, res, response);\n if (!pipedSize) {\n throw new Error(UNEXPECTED_PIPE_AXIOS_RESPONSE);\n }\n });\n}\n"],"mappings":";;;;;;;;;;;AACA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,GAAA,GAAAF,sBAAA,CAAAC,OAAA;AAGA,IAAAE,MAAA,GAAAF,OAAA;AACA,IAAAG,cAAA,GAAAH,OAAA;AAAuC,SAAAD,uBAAAK,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAEvC,SAAsBG,YAAYA,CAAAC,EAAA,EAAAC,GAAA;EAAA,OAAAC,aAAA,CAAAC,KAAA,OAAAC,SAAA;AAAA;AAUjC,SAAAF,cAAA;EAAAA,aAAA,OAAAG,0BAAA,gBAAAC,oBAAA,CAAAC,IAAA,CAVM,SAAAC,QAA4BC,GAAY,EAAEC,GAAa;IAAA,OAAAJ,oBAAA,CAAAK,IAAA,UAAAC,SAAAC,QAAA;MAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;QAAA;UAAAF,QAAA,CAAAC,IAAA;UAAAD,QAAA,CAAAE,IAAA;UAAA,OAEhDC,gBAAgB,CAACP,GAAG,EAAEC,GAAG,CAAC;QAAA;UAAAG,QAAA,CAAAE,IAAA;UAAA;QAAA;UAAAF,QAAA,CAAAC,IAAA;UAAAD,QAAA,CAAAI,EAAA,GAAAJ,QAAA;UAAAA,QAAA,CAAAE,IAAA;UAAA,OAE1B,IAAAG,sBAAe,EAACT,GAAG,CAACU,GAAG,EAAET,GAAG,EAAE,GAAG,EAAAG,QAAA,CAAAI,EAAA,EAAK;YACxCG,MAAM,EAAE,QAAQ;YAChBC,KAAK,EAAEZ,GAAG,CAACY,KAAK;YAChBC,IAAI,EAAEb,GAAG,CAACc,OAAO,CAACC;UACtB,CAAC,CAAC;QAAA;QAAA;UAAA,OAAAX,QAAA,CAAAY,IAAA;MAAA;IAAA,GAAAjB,OAAA;EAAA,CAET;EAAA,OAAAN,aAAA,CAAAC,KAAA,OAAAC,SAAA;AAAA;AAAA,SAEcY,gBAAgBA,CAAAU,GAAA,EAAAC,GAAA;EAAA,OAAAC,iBAAA,CAAAzB,KAAA,OAAAC,SAAA;AAAA;AAAA,SAAAwB,kBAAA;EAAAA,iBAAA,OAAAvB,0BAAA,gBAAAC,oBAAA,CAAAC,IAAA,CAA/B,SAAAsB,SAAgCpB,GAAY,EAAEC,GAAa;IAAA,IAAAoB,cAAA;IAAA,IAAAC,QAAA,EAAAZ,GAAA,EAAAE,KAAA,EAAAW,MAAA,EAAAC,WAAA,EAAAC,MAAA,EAAAC,OAAA,EAAAC,kBAAA,EAAAC,GAAA;IAAA,OAAA/B,oBAAA,CAAAK,IAAA,UAAA2B,UAAAC,SAAA;MAAA,kBAAAA,SAAA,CAAAzB,IAAA,GAAAyB,SAAA,CAAAxB,IAAA;QAAA;UACjDgB,QAAQ,IAAAD,cAAA,GAAG,IAAAU,qBAAM,EAAC,CAAC,CAACC,MAAM,cAAAX,cAAA,uBAAfA,cAAA,CAAiBY,WAAW;UAAA,IACxCX,QAAQ;YAAAQ,SAAA,CAAAxB,IAAA;YAAA;UAAA;UAAA,OAAAwB,SAAA,CAAAI,MAAA,WACF,IAAAzB,sBAAe,EAACT,GAAG,CAACU,GAAG,EAAET,GAAG,EAAE,GAAG,EAAE,IAAIkC,KAAK,CAAC,iCAAiC,CAAC,CAAC;QAAA;UAEpFzB,GAAG,GAAWV,GAAG,CAAjBU,GAAG,EAAEE,KAAK,GAAIZ,GAAG,CAAZY,KAAK;UAEXW,MAAM,GAAG,IAAAa,iBAAA,EAAUxB,KAAK,CAAC,GAAG,EAAE,OAAAyB,MAAA,CAAOC,WAAE,CAACC,SAAS,CAAC3B,KAAK,CAAC,CAAE;UAAAY,WAAA,GACvBxB,GAAG,CAACwC,MAAM,EAA5Cf,MAAM,GAAAD,WAAA,CAANC,MAAM,EAAiBC,OAAO,GAAAF,WAAA,CAAtBiB,aAAa;UAEtBd,kBAA0C,GAAG;YAC/Ce,YAAY,KAAAL,MAAA,CAAKf,QAAQ,kBAAe;YACxCqB,MAAM,KAAAN,MAAA,CAAKf,QAAQ,OAAAe,MAAA,CAAIZ,MAAM,OAAAY,MAAA,CAAIX,OAAO,CAAE;YAC1CkB,YAAY,KAAAP,MAAA,CAAKf,QAAQ,OAAAe,MAAA,CAAIZ,MAAM,OAAAY,MAAA,CAAIX,OAAO,EAAAW,MAAA,CAAGd,MAAM;UAC3D,CAAC;UAAA,IAEI,IAAAsB,aAAA,EAAMlB,kBAAkB,EAAEF,MAAM,CAAC;YAAAK,SAAA,CAAAxB,IAAA;YAAA;UAAA;UAAA,OAAAwB,SAAA,CAAAI,MAAA,WAC3B,IAAAzB,sBAAe,EAClBT,GAAG,CAACU,GAAG,EACPT,GAAG,EACH,GAAG,EACH,IAAIkC,KAAK,kBAAAE,MAAA,CAAkBZ,MAAM,uBAAoB,CACzD,CAAC;QAAA;UAGCG,GAAG,GAAGD,kBAAkB,CAACF,MAAM,CAAC;UAAA,OAAAK,SAAA,CAAAI,MAAA,WAE/BY,cAAK,CACPC,OAAO,CAAC;YACLnB,GAAG,EAAEA,GAAG;YACRjB,MAAM,EAAEX,GAAG,CAACW,MAAa;YACzBG,OAAO,MAAAkC,sBAAA,MAAAA,sBAAA,MAAMtC,GAAG,CAACuC,WAAW,CAAC,CAAC;cAAE,iBAAiB,EAAE;YAAM,EAAC;YAC1DC,IAAI,EAAElD,GAAG,CAACmD,IAAI;YACdC,OAAO,EAAE,MAAM;YACfC,YAAY,EAAE;UAClB,CAAC,CAAC,CACDC,IAAI;YAAA,IAAAC,IAAA,OAAA3D,0BAAA,gBAAAC,oBAAA,CAAAC,IAAA,CAAC,SAAA0D,SAAOC,QAAQ;cAAA,IAAAC,SAAA;cAAA,OAAA7D,oBAAA,CAAAK,IAAA,UAAAyD,UAAAC,SAAA;gBAAA,kBAAAA,SAAA,CAAAvD,IAAA,GAAAuD,SAAA,CAAAtD,IAAA;kBAAA;oBAAAsD,SAAA,CAAAtD,IAAA;oBAAA,OACO,IAAAuD,wBAAiB,EAACnD,GAAG,EAAET,GAAG,EAAEwD,QAAQ,CAAC;kBAAA;oBAAvDC,SAAS,GAAAE,SAAA,CAAAE,IAAA;oBAAA,IACVJ,SAAS;sBAAAE,SAAA,CAAAtD,IAAA;sBAAA;oBAAA;oBAAA,MACJ,IAAI6B,KAAK,CAAC4B,qCAA8B,CAAC;kBAAA;kBAAA;oBAAA,OAAAH,SAAA,CAAA5C,IAAA;gBAAA;cAAA,GAAAwC,QAAA;YAAA,CAEtD;YAAA,iBAAAQ,GAAA;cAAA,OAAAT,IAAA,CAAA7D,KAAA,OAAAC,SAAA;YAAA;UAAA,IAAC;QAAA;QAAA;UAAA,OAAAmC,SAAA,CAAAd,IAAA;MAAA;IAAA,GAAAI,QAAA;EAAA,CACT;EAAA,OAAAD,iBAAA,CAAAzB,KAAA,OAAAC,SAAA;AAAA"}
1
+ {"version":3,"names":["_axios","_interopRequireDefault","require","_qs","_utils","obj","__esModule","default","odinProxyApi","_x","_x2","_odinProxyApi","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee","req","res","wrap","_callee$","_context","prev","next","odinProxyApiImpl","t0","sendAndLogError","ctx","method","query","page","headers","referer","stop","_x3","_x4","_odinProxyApiImpl","_callee3","_req$params","action","cluster","odinBaseUrl","odinPath","search","allowedActionsUrls","url","_callee3$","_context3","params","ytAuthCluster","config","abrupt","Error","_isEmpty","concat","qs","stringify","service_list","exists","availability","_has","axios","request","_objectSpread","getMetadata","data","body","timeout","responseType","then","_ref","_callee2","response","pipedSize","_callee2$","_context2","pipeAxiosResponse","sent","UNEXPECTED_PIPE_AXIOS_RESPONSE","_x5"],"sources":["odin-proxy-api.ts"],"sourcesContent":["import _ from 'lodash';\nimport axios from 'axios';\nimport qs from 'qs';\n\nimport type {Request, Response} from 'express';\nimport {UNEXPECTED_PIPE_AXIOS_RESPONSE, pipeAxiosResponse, sendAndLogError} from '../utils';\n\nexport async function odinProxyApi(req: Request, res: Response) {\n try {\n await odinProxyApiImpl(req, res);\n } catch (e: any) {\n await sendAndLogError(req.ctx, res, 500, e, {\n method: 'nodejs',\n query: req.query,\n page: req.headers.referer,\n });\n }\n}\n\nasync function odinProxyApiImpl(req: Request, res: Response) {\n const {action, ytAuthCluster: cluster} = req.params;\n const {odinBaseUrl} = req.ctx.config;\n const odinPath = typeof odinBaseUrl === 'string' ? odinBaseUrl : odinBaseUrl?.[cluster];\n\n if (!odinPath) {\n return sendAndLogError(req.ctx, res, 500, new Error('Odin base url is not configured'));\n }\n const {ctx, query} = req;\n\n const search = _.isEmpty(query) ? '' : `?${qs.stringify(query)}`;\n\n const allowedActionsUrls: Record<string, string> = {\n service_list: `${odinPath}/service_list`,\n exists: `${odinPath}/${action}/${cluster}`,\n availability: `${odinPath}/${action}/${cluster}${search}`,\n };\n\n if (!_.has(allowedActionsUrls, action)) {\n return sendAndLogError(\n req.ctx,\n res,\n 400,\n new Error(`Odin action - ${action}, is not supported`),\n );\n }\n\n const url = allowedActionsUrls[action];\n\n return axios\n .request({\n url: url,\n method: req.method as any,\n headers: {...ctx.getMetadata(), 'accept-encoding': 'gzip'},\n data: req.body,\n timeout: 100000,\n responseType: 'stream',\n })\n .then(async (response) => {\n const pipedSize = await pipeAxiosResponse(ctx, res, response);\n if (!pipedSize) {\n throw new Error(UNEXPECTED_PIPE_AXIOS_RESPONSE);\n }\n });\n}\n"],"mappings":"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"}
@@ -52,7 +52,7 @@ function fetchOdinOverview(cluster) {
52
52
  }
53
53
  });
54
54
  }
55
- return _odinUtils.default.listMetrics().then(function (clusterMetrics) {
55
+ return _odinUtils.default.listMetrics(cluster).then(function (clusterMetrics) {
56
56
  if (getCluterHelper(getState) !== cluster) {
57
57
  return;
58
58
  }
@@ -1 +1 @@
1
- {"version":3,"names":["_forEach2","_interopRequireDefault","require","_map2","_odinUtils","_odinConstants","_odinOverview","_settings","_uikit","_utils","_settings2","_odinSettings","obj","__esModule","default","getCluterHelper","gs","getOdinOverviewDataCluster","COUNT_OF_MINUTES","fetchOdinOverview","cluster","dispatch","getState","data","getOdinOverviewData","_forEach","_ref","cancel","type","ODIN_OVERVIEW_PARTIAL","clusterMetrics","dataCluster","Utils","listMetrics","then","to","Date","from","getTime","ODIN_OVERVIEW_SUCCESS","dateFrom","dateTo","hiddenMetrics","getOdinOverviewHiddenMetrics","forEach","_ref2","name","fetchMetricData","error","isRequestCanceled","ODIN_OVERVIEW_CANCELLED","ODIN_OVERVIEW_FAILED","Promise","reject","_ref3","getMetric","c","d","_objectSpread","_defineProperty","metricData","prepareAvailabilityData","reloadOdinOverviewMetricData","metricName","state","getOdinOverviewDateFrom","getOdinOverviewDateTo","toggleOdinOverviewMetricVisibility","ODIN_OVERVIEW_HIDDEN_METRICS","odinOverviewSetAllMetricsVisible","value","oldHhiddenMetrics","toReload","metrics","getOdinOverviewClusterMetrics","_ref4","_map","__","odinOverviewShowCreatePresetDialog","showCreatePresetDialog","odinOverviewAddPreset","isDefault","toHide","reloadSetting","ODIN_VISIBLE_METRIC_PRESETS","YA_NAMESPACES","ODIN","presets","_toConsumableArray","getOdinOverviewVisiblePresets","push","hiddenMetricNames","_","setSetting","odinOverviewToggleDefaultPreset","_error$response","response","message","Toaster","add","autoHiding","content","title","actions","label","onClick","showErrorPopup","odinOverviewSetPresetToRemove","presetToRemove","odinOverviewRemovePreset","oldPresets","filter","item","_error$response2","i","length","_error$response3","odinOverviewSelectPreset","preset","find","oldHiddenMetrics","setOdinLastVisitedTab","tab","current","getOdinLastVisitedTab","ODIN_LAST_VISITED_TAB","NAMESPACES","GLOBAL"],"sources":["odin-overview.ts"],"sourcesContent":["import {ThunkAction} from 'redux-thunk';\nimport _forEach from 'lodash/forEach';\nimport _map from 'lodash/map';\n\nimport Utils from '../odin-utils';\nimport {RootState} from '../../../store/reducers';\nimport {OdinOverviewAction, OdinOverviewState} from '../_reducers/odin-overview';\nimport {\n ODIN_OVERVIEW_CANCELLED,\n ODIN_OVERVIEW_FAILED,\n ODIN_OVERVIEW_HIDDEN_METRICS,\n ODIN_OVERVIEW_PARTIAL,\n ODIN_OVERVIEW_SUCCESS,\n} from '../odin-constants';\nimport {\n getOdinLastVisitedTab,\n getOdinOverviewClusterMetrics,\n getOdinOverviewData,\n getOdinOverviewDataCluster,\n getOdinOverviewDateFrom,\n getOdinOverviewDateTo,\n getOdinOverviewHiddenMetrics,\n getOdinOverviewVisiblePresets,\n} from '../_selectors/odin-overview';\nimport {reloadSetting, setSetting} from '../../../store/actions/settings';\nimport {Toaster} from '@gravity-ui/uikit';\nimport {showErrorPopup} from '../../../utils/utils';\nimport {NAMESPACES} from '../../../../shared/constants/settings';\nimport {ODIN_LAST_VISITED_TAB, ODIN_VISIBLE_METRIC_PRESETS, YA_NAMESPACES} from '../odin-settings';\nimport {OdinRootState} from '../_reducers';\n\ntype OdinOverviewThunkAction = ThunkAction<any, OdinRootState & RootState, any, OdinOverviewAction>;\n\nfunction getCluterHelper(gs: () => OdinRootState) {\n return getOdinOverviewDataCluster(gs());\n}\n\nconst COUNT_OF_MINUTES = 30;\n\nexport function fetchOdinOverview(cluster: string): OdinOverviewThunkAction {\n return (dispatch, getState) => {\n if (getCluterHelper(getState) !== cluster) {\n const data = getOdinOverviewData(getState());\n _forEach(data, ({cancel}) => {\n if (cancel) {\n cancel();\n }\n });\n dispatch({\n type: ODIN_OVERVIEW_PARTIAL,\n data: {data: {}, clusterMetrics: [], dataCluster: cluster},\n });\n }\n\n return Utils.listMetrics()\n .then((clusterMetrics) => {\n if (getCluterHelper(getState) !== cluster) {\n return;\n }\n\n const to = new Date();\n const from = new Date(to.getTime() - COUNT_OF_MINUTES * 60 * 1000);\n dispatch({\n type: ODIN_OVERVIEW_SUCCESS,\n data: {clusterMetrics, dateFrom: from, dateTo: to},\n });\n\n const hiddenMetrics = getOdinOverviewHiddenMetrics(getState());\n clusterMetrics.forEach(({name}) => {\n if (!hiddenMetrics[name]) {\n dispatch(fetchMetricData(cluster, name, from, to));\n }\n });\n })\n .catch((error) => {\n if (Utils.isRequestCanceled(error)) {\n dispatch({type: ODIN_OVERVIEW_CANCELLED});\n } else {\n dispatch({type: ODIN_OVERVIEW_FAILED, data: error});\n }\n return Promise.reject(error);\n });\n };\n}\n\nexport function fetchMetricData(\n cluster: string,\n name: string,\n from: Date,\n to: Date,\n): OdinOverviewThunkAction {\n return (dispatch, getState) => {\n let {cancel} = getOdinOverviewData(getState())[name] || {};\n if (cancel) {\n cancel();\n }\n\n return Utils.getMetric(cluster, name, from, to, (c) => {\n cancel = c.cancel;\n })\n .then((d) => {\n if (getCluterHelper(getState) !== cluster) {\n return;\n }\n\n const data = {\n ...getOdinOverviewData(getState()),\n [name]: {\n cancel,\n metricData: Utils.prepareAvailabilityData(d, COUNT_OF_MINUTES),\n },\n };\n dispatch({type: ODIN_OVERVIEW_PARTIAL, data: {data}});\n })\n .catch((error) => {\n if (!Utils.isRequestCanceled(error)) {\n const data = {\n ...getOdinOverviewData(getState()),\n [name]: {error},\n };\n dispatch({type: ODIN_OVERVIEW_PARTIAL, data: {data}});\n }\n return Promise.reject(error);\n });\n };\n}\n\nexport function reloadOdinOverviewMetricData(metricName: string): OdinOverviewThunkAction {\n return (dispatch, getState) => {\n const state = getState();\n const cluster = getOdinOverviewDataCluster(state);\n const from = getOdinOverviewDateFrom(state);\n const to = getOdinOverviewDateTo(state);\n if (from && to) {\n dispatch(fetchMetricData(cluster, metricName, from, to));\n }\n };\n}\n\nexport function toggleOdinOverviewMetricVisibility(metricName: string): OdinOverviewThunkAction {\n return (dispatch, getState) => {\n const hiddenMetrics = {...getOdinOverviewHiddenMetrics(getState())};\n if (hiddenMetrics[metricName]) {\n delete hiddenMetrics[metricName];\n } else {\n hiddenMetrics[metricName] = true;\n }\n dispatch({\n type: ODIN_OVERVIEW_HIDDEN_METRICS,\n data: {hiddenMetrics},\n });\n if (!hiddenMetrics[metricName]) {\n dispatch(reloadOdinOverviewMetricData(metricName));\n }\n };\n}\n\nexport function odinOverviewSetAllMetricsVisible(value: boolean): OdinOverviewThunkAction {\n return (dispatch, getState) => {\n const state = getState();\n const oldHhiddenMetrics = getOdinOverviewHiddenMetrics(state);\n let toReload: Array<string> = [];\n const hiddenMetrics: typeof oldHhiddenMetrics = {};\n if (!value) {\n const metrics = getOdinOverviewClusterMetrics(state);\n metrics.forEach(({name}) => {\n hiddenMetrics[name] = true;\n });\n } else {\n toReload = _map(oldHhiddenMetrics, (__: boolean, name: string) => name);\n }\n\n dispatch({\n type: ODIN_OVERVIEW_HIDDEN_METRICS,\n data: {hiddenMetrics},\n });\n\n toReload.forEach((name) => {\n dispatch(reloadOdinOverviewMetricData(name));\n });\n };\n}\n\nexport function odinOverviewShowCreatePresetDialog(\n showCreatePresetDialog: boolean,\n): OdinOverviewAction {\n return {type: ODIN_OVERVIEW_PARTIAL, data: {showCreatePresetDialog}};\n}\n\nexport function odinOverviewAddPreset(name: string, isDefault: boolean): OdinOverviewThunkAction {\n return (dispatch, getState) => {\n const toHide = getOdinOverviewHiddenMetrics(getState());\n return dispatch(reloadSetting(ODIN_VISIBLE_METRIC_PRESETS, YA_NAMESPACES.ODIN)).then(() => {\n const presets = [...getOdinOverviewVisiblePresets(getState())];\n presets.push({\n name,\n hiddenMetricNames: _map(toHide, (_, name) => name),\n });\n return dispatch(setSetting(ODIN_VISIBLE_METRIC_PRESETS, YA_NAMESPACES.ODIN, presets))\n .then(() => {\n if (isDefault) {\n return dispatch(odinOverviewToggleDefaultPreset(name));\n }\n })\n .catch((error: any) => {\n const data = error?.response?.data || error;\n const {message} = data;\n\n new Toaster().add({\n name: 'add-preset',\n autoHiding: false,\n type: 'error',\n content: message,\n title: 'Failed to crete preset',\n actions: [\n {\n label: ' view',\n onClick: () => showErrorPopup(data),\n },\n ],\n });\n });\n });\n };\n}\n\nexport function odinOverviewSetPresetToRemove(\n name: OdinOverviewState['presetToRemove'],\n): OdinOverviewThunkAction {\n return (dispatch) => {\n dispatch({\n type: ODIN_OVERVIEW_PARTIAL,\n data: {presetToRemove: name},\n });\n };\n}\n\nexport function odinOverviewRemovePreset(name: string): OdinOverviewThunkAction {\n return (dispatch, getState) => {\n return dispatch(reloadSetting(ODIN_VISIBLE_METRIC_PRESETS, YA_NAMESPACES.ODIN))\n .then(() => {\n const oldPresets = getOdinOverviewVisiblePresets(getState());\n const presets = oldPresets.filter((item) => item.name !== name);\n return dispatch(\n setSetting(ODIN_VISIBLE_METRIC_PRESETS, YA_NAMESPACES.ODIN, presets),\n );\n })\n .catch((error: any) => {\n const data = error?.response?.data || error;\n const {message} = data;\n\n new Toaster().add({\n name: 'delete-preset',\n autoHiding: false,\n type: 'error',\n content: message,\n title: 'Failed to delete the preset',\n actions: [{label: ' view', onClick: () => showErrorPopup(data)}],\n });\n });\n };\n}\n\nexport function odinOverviewToggleDefaultPreset(name: string): OdinOverviewThunkAction {\n return (dispatch, getState) => {\n return dispatch(reloadSetting(ODIN_VISIBLE_METRIC_PRESETS, YA_NAMESPACES.ODIN)).then(() => {\n const presets = [...getOdinOverviewVisiblePresets(getState())];\n for (let i = 0; i < presets.length; ++i) {\n const item = presets[i];\n if (item.name === name) {\n presets[i] = {...item, isDefault: !item.isDefault};\n } else if (item.isDefault) {\n presets[i] = {...item};\n delete presets[i]['isDefault'];\n }\n }\n return dispatch(\n setSetting(ODIN_VISIBLE_METRIC_PRESETS, YA_NAMESPACES.ODIN, presets),\n ).catch((error: any) => {\n const data = error?.response?.data || error;\n const {message} = data;\n\n new Toaster().add({\n name: 'set-deault-preset',\n autoHiding: false,\n type: 'error',\n content: message,\n title: 'Failed to set the preset as default',\n actions: [{label: ' view', onClick: () => showErrorPopup(data)}],\n });\n });\n });\n };\n}\n\nexport function odinOverviewSelectPreset(name: string): OdinOverviewThunkAction {\n return (dispatch, getState) => {\n const state = getState();\n const presets = getOdinOverviewVisiblePresets(state);\n const preset = presets.find((item) => item.name === name);\n if (preset) {\n const {hiddenMetricNames} = preset;\n const hiddenMetrics: OdinOverviewState['hiddenMetrics'] = {};\n hiddenMetricNames.forEach((name) => {\n hiddenMetrics[name] = true;\n });\n dispatch({\n type: ODIN_OVERVIEW_HIDDEN_METRICS,\n data: {hiddenMetrics},\n });\n\n const oldHiddenMetrics = getOdinOverviewHiddenMetrics(state);\n _forEach(oldHiddenMetrics, (_, name) => {\n if (!hiddenMetrics[name]) {\n dispatch(reloadOdinOverviewMetricData(name));\n }\n });\n }\n };\n}\n\nexport function setOdinLastVisitedTab(tab: string): ThunkAction<any, any, RootState, any> {\n return (dispatch, getState) => {\n const current = getOdinLastVisitedTab(getState());\n if (current !== tab) {\n dispatch(setSetting(ODIN_LAST_VISITED_TAB, NAMESPACES.GLOBAL, tab));\n }\n };\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["_forEach2","_interopRequireDefault","require","_map2","_odinUtils","_odinConstants","_odinOverview","_settings","_uikit","_utils","_settings2","_odinSettings","obj","__esModule","default","getCluterHelper","gs","getOdinOverviewDataCluster","COUNT_OF_MINUTES","fetchOdinOverview","cluster","dispatch","getState","data","getOdinOverviewData","_forEach","_ref","cancel","type","ODIN_OVERVIEW_PARTIAL","clusterMetrics","dataCluster","Utils","listMetrics","then","to","Date","from","getTime","ODIN_OVERVIEW_SUCCESS","dateFrom","dateTo","hiddenMetrics","getOdinOverviewHiddenMetrics","forEach","_ref2","name","fetchMetricData","error","isRequestCanceled","ODIN_OVERVIEW_CANCELLED","ODIN_OVERVIEW_FAILED","Promise","reject","_ref3","getMetric","c","d","_objectSpread","_defineProperty","metricData","prepareAvailabilityData","reloadOdinOverviewMetricData","metricName","state","getOdinOverviewDateFrom","getOdinOverviewDateTo","toggleOdinOverviewMetricVisibility","ODIN_OVERVIEW_HIDDEN_METRICS","odinOverviewSetAllMetricsVisible","value","oldHhiddenMetrics","toReload","metrics","getOdinOverviewClusterMetrics","_ref4","_map","__","odinOverviewShowCreatePresetDialog","showCreatePresetDialog","odinOverviewAddPreset","isDefault","toHide","reloadSetting","ODIN_VISIBLE_METRIC_PRESETS","YA_NAMESPACES","ODIN","presets","_toConsumableArray","getOdinOverviewVisiblePresets","push","hiddenMetricNames","_","setSetting","odinOverviewToggleDefaultPreset","_error$response","response","message","Toaster","add","autoHiding","content","title","actions","label","onClick","showErrorPopup","odinOverviewSetPresetToRemove","presetToRemove","odinOverviewRemovePreset","oldPresets","filter","item","_error$response2","i","length","_error$response3","odinOverviewSelectPreset","preset","find","oldHiddenMetrics","setOdinLastVisitedTab","tab","current","getOdinLastVisitedTab","ODIN_LAST_VISITED_TAB","NAMESPACES","GLOBAL"],"sources":["odin-overview.ts"],"sourcesContent":["import {ThunkAction} from 'redux-thunk';\nimport _forEach from 'lodash/forEach';\nimport _map from 'lodash/map';\n\nimport Utils from '../odin-utils';\nimport {RootState} from '../../../store/reducers';\nimport {OdinOverviewAction, OdinOverviewState} from '../_reducers/odin-overview';\nimport {\n ODIN_OVERVIEW_CANCELLED,\n ODIN_OVERVIEW_FAILED,\n ODIN_OVERVIEW_HIDDEN_METRICS,\n ODIN_OVERVIEW_PARTIAL,\n ODIN_OVERVIEW_SUCCESS,\n} from '../odin-constants';\nimport {\n getOdinLastVisitedTab,\n getOdinOverviewClusterMetrics,\n getOdinOverviewData,\n getOdinOverviewDataCluster,\n getOdinOverviewDateFrom,\n getOdinOverviewDateTo,\n getOdinOverviewHiddenMetrics,\n getOdinOverviewVisiblePresets,\n} from '../_selectors/odin-overview';\nimport {reloadSetting, setSetting} from '../../../store/actions/settings';\nimport {Toaster} from '@gravity-ui/uikit';\nimport {showErrorPopup} from '../../../utils/utils';\nimport {NAMESPACES} from '../../../../shared/constants/settings';\nimport {ODIN_LAST_VISITED_TAB, ODIN_VISIBLE_METRIC_PRESETS, YA_NAMESPACES} from '../odin-settings';\nimport {OdinRootState} from '../_reducers';\n\ntype OdinOverviewThunkAction = ThunkAction<any, OdinRootState & RootState, any, OdinOverviewAction>;\n\nfunction getCluterHelper(gs: () => OdinRootState) {\n return getOdinOverviewDataCluster(gs());\n}\n\nconst COUNT_OF_MINUTES = 30;\n\nexport function fetchOdinOverview(cluster: string): OdinOverviewThunkAction {\n return (dispatch, getState) => {\n if (getCluterHelper(getState) !== cluster) {\n const data = getOdinOverviewData(getState());\n _forEach(data, ({cancel}) => {\n if (cancel) {\n cancel();\n }\n });\n dispatch({\n type: ODIN_OVERVIEW_PARTIAL,\n data: {data: {}, clusterMetrics: [], dataCluster: cluster},\n });\n }\n\n return Utils.listMetrics(cluster)\n .then((clusterMetrics) => {\n if (getCluterHelper(getState) !== cluster) {\n return;\n }\n\n const to = new Date();\n const from = new Date(to.getTime() - COUNT_OF_MINUTES * 60 * 1000);\n dispatch({\n type: ODIN_OVERVIEW_SUCCESS,\n data: {clusterMetrics, dateFrom: from, dateTo: to},\n });\n\n const hiddenMetrics = getOdinOverviewHiddenMetrics(getState());\n clusterMetrics.forEach(({name}) => {\n if (!hiddenMetrics[name]) {\n dispatch(fetchMetricData(cluster, name, from, to));\n }\n });\n })\n .catch((error) => {\n if (Utils.isRequestCanceled(error)) {\n dispatch({type: ODIN_OVERVIEW_CANCELLED});\n } else {\n dispatch({type: ODIN_OVERVIEW_FAILED, data: error});\n }\n return Promise.reject(error);\n });\n };\n}\n\nexport function fetchMetricData(\n cluster: string,\n name: string,\n from: Date,\n to: Date,\n): OdinOverviewThunkAction {\n return (dispatch, getState) => {\n let {cancel} = getOdinOverviewData(getState())[name] || {};\n if (cancel) {\n cancel();\n }\n\n return Utils.getMetric(cluster, name, from, to, (c) => {\n cancel = c.cancel;\n })\n .then((d) => {\n if (getCluterHelper(getState) !== cluster) {\n return;\n }\n\n const data = {\n ...getOdinOverviewData(getState()),\n [name]: {\n cancel,\n metricData: Utils.prepareAvailabilityData(d, COUNT_OF_MINUTES),\n },\n };\n dispatch({type: ODIN_OVERVIEW_PARTIAL, data: {data}});\n })\n .catch((error) => {\n if (!Utils.isRequestCanceled(error)) {\n const data = {\n ...getOdinOverviewData(getState()),\n [name]: {error},\n };\n dispatch({type: ODIN_OVERVIEW_PARTIAL, data: {data}});\n }\n return Promise.reject(error);\n });\n };\n}\n\nexport function reloadOdinOverviewMetricData(metricName: string): OdinOverviewThunkAction {\n return (dispatch, getState) => {\n const state = getState();\n const cluster = getOdinOverviewDataCluster(state);\n const from = getOdinOverviewDateFrom(state);\n const to = getOdinOverviewDateTo(state);\n if (from && to) {\n dispatch(fetchMetricData(cluster, metricName, from, to));\n }\n };\n}\n\nexport function toggleOdinOverviewMetricVisibility(metricName: string): OdinOverviewThunkAction {\n return (dispatch, getState) => {\n const hiddenMetrics = {...getOdinOverviewHiddenMetrics(getState())};\n if (hiddenMetrics[metricName]) {\n delete hiddenMetrics[metricName];\n } else {\n hiddenMetrics[metricName] = true;\n }\n dispatch({\n type: ODIN_OVERVIEW_HIDDEN_METRICS,\n data: {hiddenMetrics},\n });\n if (!hiddenMetrics[metricName]) {\n dispatch(reloadOdinOverviewMetricData(metricName));\n }\n };\n}\n\nexport function odinOverviewSetAllMetricsVisible(value: boolean): OdinOverviewThunkAction {\n return (dispatch, getState) => {\n const state = getState();\n const oldHhiddenMetrics = getOdinOverviewHiddenMetrics(state);\n let toReload: Array<string> = [];\n const hiddenMetrics: typeof oldHhiddenMetrics = {};\n if (!value) {\n const metrics = getOdinOverviewClusterMetrics(state);\n metrics.forEach(({name}) => {\n hiddenMetrics[name] = true;\n });\n } else {\n toReload = _map(oldHhiddenMetrics, (__: boolean, name: string) => name);\n }\n\n dispatch({\n type: ODIN_OVERVIEW_HIDDEN_METRICS,\n data: {hiddenMetrics},\n });\n\n toReload.forEach((name) => {\n dispatch(reloadOdinOverviewMetricData(name));\n });\n };\n}\n\nexport function odinOverviewShowCreatePresetDialog(\n showCreatePresetDialog: boolean,\n): OdinOverviewAction {\n return {type: ODIN_OVERVIEW_PARTIAL, data: {showCreatePresetDialog}};\n}\n\nexport function odinOverviewAddPreset(name: string, isDefault: boolean): OdinOverviewThunkAction {\n return (dispatch, getState) => {\n const toHide = getOdinOverviewHiddenMetrics(getState());\n return dispatch(reloadSetting(ODIN_VISIBLE_METRIC_PRESETS, YA_NAMESPACES.ODIN)).then(() => {\n const presets = [...getOdinOverviewVisiblePresets(getState())];\n presets.push({\n name,\n hiddenMetricNames: _map(toHide, (_, name) => name),\n });\n return dispatch(setSetting(ODIN_VISIBLE_METRIC_PRESETS, YA_NAMESPACES.ODIN, presets))\n .then(() => {\n if (isDefault) {\n return dispatch(odinOverviewToggleDefaultPreset(name));\n }\n })\n .catch((error: any) => {\n const data = error?.response?.data || error;\n const {message} = data;\n\n new Toaster().add({\n name: 'add-preset',\n autoHiding: false,\n type: 'error',\n content: message,\n title: 'Failed to crete preset',\n actions: [\n {\n label: ' view',\n onClick: () => showErrorPopup(data),\n },\n ],\n });\n });\n });\n };\n}\n\nexport function odinOverviewSetPresetToRemove(\n name: OdinOverviewState['presetToRemove'],\n): OdinOverviewThunkAction {\n return (dispatch) => {\n dispatch({\n type: ODIN_OVERVIEW_PARTIAL,\n data: {presetToRemove: name},\n });\n };\n}\n\nexport function odinOverviewRemovePreset(name: string): OdinOverviewThunkAction {\n return (dispatch, getState) => {\n return dispatch(reloadSetting(ODIN_VISIBLE_METRIC_PRESETS, YA_NAMESPACES.ODIN))\n .then(() => {\n const oldPresets = getOdinOverviewVisiblePresets(getState());\n const presets = oldPresets.filter((item) => item.name !== name);\n return dispatch(\n setSetting(ODIN_VISIBLE_METRIC_PRESETS, YA_NAMESPACES.ODIN, presets),\n );\n })\n .catch((error: any) => {\n const data = error?.response?.data || error;\n const {message} = data;\n\n new Toaster().add({\n name: 'delete-preset',\n autoHiding: false,\n type: 'error',\n content: message,\n title: 'Failed to delete the preset',\n actions: [{label: ' view', onClick: () => showErrorPopup(data)}],\n });\n });\n };\n}\n\nexport function odinOverviewToggleDefaultPreset(name: string): OdinOverviewThunkAction {\n return (dispatch, getState) => {\n return dispatch(reloadSetting(ODIN_VISIBLE_METRIC_PRESETS, YA_NAMESPACES.ODIN)).then(() => {\n const presets = [...getOdinOverviewVisiblePresets(getState())];\n for (let i = 0; i < presets.length; ++i) {\n const item = presets[i];\n if (item.name === name) {\n presets[i] = {...item, isDefault: !item.isDefault};\n } else if (item.isDefault) {\n presets[i] = {...item};\n delete presets[i]['isDefault'];\n }\n }\n return dispatch(\n setSetting(ODIN_VISIBLE_METRIC_PRESETS, YA_NAMESPACES.ODIN, presets),\n ).catch((error: any) => {\n const data = error?.response?.data || error;\n const {message} = data;\n\n new Toaster().add({\n name: 'set-deault-preset',\n autoHiding: false,\n type: 'error',\n content: message,\n title: 'Failed to set the preset as default',\n actions: [{label: ' view', onClick: () => showErrorPopup(data)}],\n });\n });\n });\n };\n}\n\nexport function odinOverviewSelectPreset(name: string): OdinOverviewThunkAction {\n return (dispatch, getState) => {\n const state = getState();\n const presets = getOdinOverviewVisiblePresets(state);\n const preset = presets.find((item) => item.name === name);\n if (preset) {\n const {hiddenMetricNames} = preset;\n const hiddenMetrics: OdinOverviewState['hiddenMetrics'] = {};\n hiddenMetricNames.forEach((name) => {\n hiddenMetrics[name] = true;\n });\n dispatch({\n type: ODIN_OVERVIEW_HIDDEN_METRICS,\n data: {hiddenMetrics},\n });\n\n const oldHiddenMetrics = getOdinOverviewHiddenMetrics(state);\n _forEach(oldHiddenMetrics, (_, name) => {\n if (!hiddenMetrics[name]) {\n dispatch(reloadOdinOverviewMetricData(name));\n }\n });\n }\n };\n}\n\nexport function setOdinLastVisitedTab(tab: string): ThunkAction<any, any, RootState, any> {\n return (dispatch, getState) => {\n const current = getOdinLastVisitedTab(getState());\n if (current !== tab) {\n dispatch(setSetting(ODIN_LAST_VISITED_TAB, NAMESPACES.GLOBAL, tab));\n }\n };\n}\n"],"mappings":"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"}
@@ -28,8 +28,9 @@ function useLoadMetricsList() {
28
28
  _useState2 = (0, _slicedToArray2.default)(_useState, 2),
29
29
  metrics = _useState2[0],
30
30
  setMetrics = _useState2[1];
31
+ var cluster = (0, _reactRedux.useSelector)(_selectors.getOdinCluster);
31
32
  (0, _react.useEffect)(function () {
32
- _odinUtils.default.listMetrics().then(function (metrics) {
33
+ _odinUtils.default.listMetrics(cluster).then(function (metrics) {
33
34
  setMetrics((0, _map2.default)(metrics, function (_ref) {
34
35
  var name = _ref.name,
35
36
  text = _ref.display_name;
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_reactRedux","_uikit","_Select","_interopRequireDefault","_Datepicker","_bemCnLite","_selectors","_actions","_odinUtils","_hammer","_jsxRuntime","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","obj","odinCN","block","tbBlock","useLoadMetricsList","_useState","useState","_useState2","_slicedToArray","metrics","setMetrics","useEffect","Utils","listMetrics","then","_map","_ref","name","text","display_name","value","MetricSelector","metric","useSelector","getMetric","dispatch","useDispatch","handleChange","useCallback","setMetric","length","_findIndex","_ref2","_jsx","Select","label","items","onUpdate","vals","showSearch","width","UseCurrentDate","useCurrentDate","getUseCurrentDate","toggleUseCurrentDate","Checkbox","size","content","checked","onChange","CustomDate","date","getDate","_ref3","from","setDate","Datepicker","range","to","scale","hasClear","controlWidth","Toolbar","_ref4","className","stat","getStat","_jsxs","children","hammer","format","Percent","_default","exports"],"sources":["OdinToolbar.js"],"sourcesContent":["import React, {useCallback, useEffect, useState} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\n\nimport {Checkbox} from '@gravity-ui/uikit';\nimport Select from '../../../components/Select/Select';\nimport {Datepicker} from '../../../components/common/Datepicker';\n\nimport block from 'bem-cn-lite';\nimport _ from 'lodash';\n\nimport {getDate, getMetric, getStat, getUseCurrentDate} from '../_selectors';\nimport {setDate, setMetric, toggleUseCurrentDate} from '../_actions';\nimport Utils from '../odin-utils';\nimport hammer from '../../../common/hammer';\n\nconst odinCN = block('odin');\n\nconst tbBlock = block('elements-toolbar');\n\nfunction useLoadMetricsList() {\n const [metrics, setMetrics] = useState([]);\n\n useEffect(() => {\n Utils.listMetrics().then((metrics) => {\n setMetrics(\n _.map(metrics, ({name, display_name: text}) => ({\n value: name,\n text,\n })),\n );\n });\n }, []);\n\n return metrics;\n}\n\nfunction MetricSelector() {\n const metric = useSelector(getMetric);\n const dispatch = useDispatch();\n const metrics = useLoadMetricsList();\n const handleChange = useCallback((value) => {\n dispatch(setMetric(value));\n }, []);\n\n if (metrics.length > 0 && _.findIndex(metrics, ({value}) => value === metric) === -1) {\n dispatch(setMetric(metrics[0].value));\n }\n\n return (\n <Select\n value={[metric]}\n label=\"Check:\"\n items={metrics}\n onUpdate={(vals) => handleChange(vals[0])}\n showSearch={true}\n width=\"max\"\n />\n );\n}\n\nfunction UseCurrentDate() {\n const useCurrentDate = useSelector(getUseCurrentDate);\n const dispatch = useDispatch();\n const handleChange = useCallback(() => {\n dispatch(toggleUseCurrentDate());\n }, []);\n\n return (\n <Checkbox\n size=\"l\"\n content=\"Current date\"\n checked={useCurrentDate}\n onChange={handleChange}\n />\n );\n}\n\nfunction CustomDate() {\n const date = useSelector(getDate);\n const dispatch = useDispatch();\n const handleChange = useCallback(({from}) => {\n dispatch(setDate(from));\n }, []);\n\n return (\n <Datepicker\n range={false}\n from={date}\n to={date}\n scale=\"day\"\n hasClear={false}\n controlWidth={180}\n onUpdate={handleChange}\n />\n );\n}\n\nfunction Toolbar({className}) {\n const stat = useSelector(getStat);\n return (\n <div className={className}>\n <div className={odinCN('toolbar-metric-filter', tbBlock('component'))}>\n <MetricSelector />\n </div>\n <div className={odinCN('toolbar-date-filter', tbBlock('component'))}>\n <CustomDate />\n </div>\n <div className={odinCN('toolbar-current-date', tbBlock('component'))}>\n <UseCurrentDate />\n </div>\n <div className={odinCN('toolbar-availability-message', tbBlock('component'))}>\n <div className=\"elements-message elements-message_theme_info\">\n <p className=\"elements-message__paragraph\">\n We were available from <em>{hammer.format.Percent(stat.from * 100)}</em> to{' '}\n <em>{hammer.format.Percent(stat.to * 100)}</em> of time.\n </p>\n </div>\n </div>\n </div>\n );\n}\n\nexport default Toolbar;\n"],"mappings":"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"}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_reactRedux","_uikit","_Select","_interopRequireDefault","_Datepicker","_bemCnLite","_selectors","_actions","_odinUtils","_hammer","_jsxRuntime","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","obj","odinCN","block","tbBlock","useLoadMetricsList","_useState","useState","_useState2","_slicedToArray","metrics","setMetrics","cluster","useSelector","getOdinCluster","useEffect","Utils","listMetrics","then","_map","_ref","name","text","display_name","value","MetricSelector","metric","getMetric","dispatch","useDispatch","handleChange","useCallback","setMetric","length","_findIndex","_ref2","_jsx","Select","label","items","onUpdate","vals","showSearch","width","UseCurrentDate","useCurrentDate","getUseCurrentDate","toggleUseCurrentDate","Checkbox","size","content","checked","onChange","CustomDate","date","getDate","_ref3","from","setDate","Datepicker","range","to","scale","hasClear","controlWidth","Toolbar","_ref4","className","stat","getStat","_jsxs","children","hammer","format","Percent","_default","exports"],"sources":["OdinToolbar.js"],"sourcesContent":["import React, {useCallback, useEffect, useState} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\n\nimport {Checkbox} from '@gravity-ui/uikit';\nimport Select from '../../../components/Select/Select';\nimport {Datepicker} from '../../../components/common/Datepicker';\n\nimport block from 'bem-cn-lite';\nimport _ from 'lodash';\n\nimport {getDate, getMetric, getOdinCluster, getStat, getUseCurrentDate} from '../_selectors';\nimport {setDate, setMetric, toggleUseCurrentDate} from '../_actions';\nimport Utils from '../odin-utils';\nimport hammer from '../../../common/hammer';\n\nconst odinCN = block('odin');\n\nconst tbBlock = block('elements-toolbar');\n\nfunction useLoadMetricsList() {\n const [metrics, setMetrics] = useState([]);\n const cluster = useSelector(getOdinCluster);\n\n useEffect(() => {\n Utils.listMetrics(cluster).then((metrics) => {\n setMetrics(\n _.map(metrics, ({name, display_name: text}) => ({\n value: name,\n text,\n })),\n );\n });\n }, []);\n\n return metrics;\n}\n\nfunction MetricSelector() {\n const metric = useSelector(getMetric);\n const dispatch = useDispatch();\n const metrics = useLoadMetricsList();\n const handleChange = useCallback((value) => {\n dispatch(setMetric(value));\n }, []);\n\n if (metrics.length > 0 && _.findIndex(metrics, ({value}) => value === metric) === -1) {\n dispatch(setMetric(metrics[0].value));\n }\n\n return (\n <Select\n value={[metric]}\n label=\"Check:\"\n items={metrics}\n onUpdate={(vals) => handleChange(vals[0])}\n showSearch={true}\n width=\"max\"\n />\n );\n}\n\nfunction UseCurrentDate() {\n const useCurrentDate = useSelector(getUseCurrentDate);\n const dispatch = useDispatch();\n const handleChange = useCallback(() => {\n dispatch(toggleUseCurrentDate());\n }, []);\n\n return (\n <Checkbox\n size=\"l\"\n content=\"Current date\"\n checked={useCurrentDate}\n onChange={handleChange}\n />\n );\n}\n\nfunction CustomDate() {\n const date = useSelector(getDate);\n const dispatch = useDispatch();\n const handleChange = useCallback(({from}) => {\n dispatch(setDate(from));\n }, []);\n\n return (\n <Datepicker\n range={false}\n from={date}\n to={date}\n scale=\"day\"\n hasClear={false}\n controlWidth={180}\n onUpdate={handleChange}\n />\n );\n}\n\nfunction Toolbar({className}) {\n const stat = useSelector(getStat);\n return (\n <div className={className}>\n <div className={odinCN('toolbar-metric-filter', tbBlock('component'))}>\n <MetricSelector />\n </div>\n <div className={odinCN('toolbar-date-filter', tbBlock('component'))}>\n <CustomDate />\n </div>\n <div className={odinCN('toolbar-current-date', tbBlock('component'))}>\n <UseCurrentDate />\n </div>\n <div className={odinCN('toolbar-availability-message', tbBlock('component'))}>\n <div className=\"elements-message elements-message_theme_info\">\n <p className=\"elements-message__paragraph\">\n We were available from <em>{hammer.format.Percent(stat.from * 100)}</em> to{' '}\n <em>{hammer.format.Percent(stat.to * 100)}</em> of time.\n </p>\n </div>\n </div>\n </div>\n );\n}\n\nexport default Toolbar;\n"],"mappings":"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"}
@@ -19,7 +19,7 @@ export default class Utils {
19
19
  static request<T = unknown>(path: string, saveCancelToken?: SaveCancelToken): Promise<T>;
20
20
  static isRequestCanceled(error: any): boolean;
21
21
  static checkStatus(cluster: string): Promise<unknown>;
22
- static listMetrics(): Promise<MetricListItem[]>;
22
+ static listMetrics(cluster: string): Promise<MetricListItem[]>;
23
23
  static getMetric(cluster: string, metric: string, from: Date, to: Date, saveCT: SaveCancelToken): Promise<Availability>;
24
24
  static getMetricOfThisDay(cluster: string, metric: string, date: string | null, saveCancelToken: SaveCancelToken): Promise<Availability>;
25
25
  static prepareAvailabilityData(availability: Availability, size: number): Array<MetricData>;
@@ -54,8 +54,8 @@ var Utils = exports.default = /*#__PURE__*/function () {
54
54
  }
55
55
  }, {
56
56
  key: "listMetrics",
57
- value: function listMetrics() {
58
- return Utils.request('/service_list');
57
+ value: function listMetrics(cluster) {
58
+ return Utils.request("/service_list/".concat(cluster));
59
59
  }
60
60
  }, {
61
61
  key: "getMetric",
@@ -1 +1 @@
1
- {"version":3,"names":["_axios","_interopRequireDefault","require","_moment","_odinConstants","_config","obj","__esModule","default","Utils","exports","_classCallCheck","_createClass","key","value","request","path","saveCancelToken","axios","url","ODIN_PATH","method","responseType","withCredentials","ODIN_AUTH","cancelToken","CancelToken","cancel","then","response","data","error","_error$response","isCancel","Promise","reject","isRequestCanceled","checkStatus","cluster","listMetrics","getMetric","metric","from","to","saveCT","moment","toISOString","getMetricOfThisDay","date","startTime","startOf","endTime","add","toDate","prepareAvailabilityData","availability","size","asArray","property","getPropertyName","i","substr","length","Object","hasOwnProperty","call","state","push","computeStat","counts","_countBy","_ref","sum","currentDate","format","DATE_FORMAT","fetchClustersAvailability","hasOdinPage","resolve"],"sources":["odin-utils.ts"],"sourcesContent":["import axios, {Canceler} from 'axios';\nimport _ from 'lodash';\nimport moment from 'moment';\n\nimport {DATE_FORMAT} from './odin-constants';\nimport {hasOdinPage} from '../../config';\n\ntype SaveCancelToken = ({cancel}: {cancel: Canceler}) => void;\ntype Availability = {[key: string]: MetricData};\n\nexport interface MetricListItem {\n display_name: string;\n name: string;\n}\n\nexport interface MetricData {\n message?: string;\n state: 'available' | 'unavailable' | 'partially_available' | 'no_data';\n}\n\nexport default class Utils {\n static ODIN_PATH = '/api/odin/proxy';\n static ODIN_AUTH = 'none';\n\n static request<T = unknown>(path: string, saveCancelToken?: SaveCancelToken): Promise<T> {\n return axios\n .request({\n url: Utils.ODIN_PATH + path,\n method: 'GET',\n responseType: 'json',\n withCredentials: Utils.ODIN_AUTH === 'domain',\n cancelToken: new axios.CancelToken((cancel) => {\n if (typeof saveCancelToken === 'function') {\n saveCancelToken({cancel});\n }\n }),\n })\n .then((response) => {\n return response.data;\n })\n .catch((error) => {\n if (axios.isCancel(error)) {\n return Promise.reject(error);\n }\n return Promise.reject(error.response?.data || error);\n });\n }\n\n static isRequestCanceled(error: any) {\n return axios.isCancel(error);\n }\n\n static checkStatus(cluster: string) {\n return Utils.request('/exists/' + cluster);\n }\n\n static listMetrics() {\n return Utils.request<Array<MetricListItem>>('/service_list');\n }\n\n static getMetric(\n cluster: string,\n metric: string,\n from: Date,\n to: Date,\n saveCT: SaveCancelToken,\n ) {\n return Utils.request<Availability>(\n '/availability/' +\n cluster +\n '?metric=' +\n metric +\n '&start_time=' +\n moment(from).toISOString() +\n '&end_time=' +\n moment(to).toISOString() +\n '&return_state_without_message=0',\n saveCT,\n );\n }\n\n static getMetricOfThisDay(\n cluster: string,\n metric: string,\n date: string | null,\n saveCancelToken: SaveCancelToken,\n ) {\n const startTime = moment(date).startOf('day');\n const endTime = moment(startTime).add(1, 'day');\n return Utils.getMetric(\n cluster,\n metric,\n startTime.toDate(),\n endTime.toDate(),\n saveCancelToken,\n );\n }\n\n static prepareAvailabilityData(availability: Availability, size: number): Array<MetricData> {\n const asArray: Array<MetricData> = [];\n let property: string;\n let data: MetricData;\n\n function getPropertyName(i: number) {\n let property = '00000' + i;\n property = 'at_' + property.substr(property.length - 5);\n return property;\n }\n\n for (let i = 0; i < size; i++) {\n property = getPropertyName(i);\n\n if (availability && Object.hasOwnProperty.call(availability, property)) {\n data = availability[property];\n } else {\n data = {\n state: 'no_data',\n };\n }\n asArray.push(data);\n }\n\n return asArray;\n }\n\n static computeStat(availability: Array<MetricData>) {\n const counts = _.countBy(availability, ({state}) => {\n if (state === 'available') {\n return 'available';\n } else if (state === 'no_data') {\n return 'no_data';\n } else {\n return 'unavailable';\n }\n });\n\n const sum = availability.length;\n\n return {\n from: (counts['available'] || 0) / sum,\n to: (sum - (counts['unavailable'] || 0)) / sum,\n };\n }\n}\n\nexport function currentDate() {\n return moment().startOf('day').format(DATE_FORMAT);\n}\n\nexport const fetchClustersAvailability = hasOdinPage()\n ? () => {\n return axios.request({\n method: 'get',\n url: '/api/odin/clusters/availability',\n }) as Promise<\n {\n id: string;\n availability?: 1 | undefined;\n }[]\n >;\n }\n : () => Promise.resolve([]);\n"],"mappings":";;;;;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,IAAAC,OAAA,GAAAF,sBAAA,CAAAC,OAAA;AAEA,IAAAE,cAAA,GAAAF,OAAA;AACA,IAAAG,OAAA,GAAAH,OAAA;AAAwC,SAAAD,uBAAAK,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAAC,IAepBG,KAAK,GAAAC,OAAA,CAAAF,OAAA;EAAA,SAAAC,MAAA;IAAA,IAAAE,wBAAA,QAAAF,KAAA;EAAA;EAAA,IAAAG,qBAAA,EAAAH,KAAA;IAAAI,GAAA;IAAAC,KAAA,EAItB,SAAAC,QAA4BC,IAAY,EAAEC,eAAiC,EAAc;MACrF,OAAOC,cAAK,CACPH,OAAO,CAAC;QACLI,GAAG,EAAEV,KAAK,CAACW,SAAS,GAAGJ,IAAI;QAC3BK,MAAM,EAAE,KAAK;QACbC,YAAY,EAAE,MAAM;QACpBC,eAAe,EAAEd,KAAK,CAACe,SAAS,KAAK,QAAQ;QAC7CC,WAAW,EAAE,IAAIP,cAAK,CAACQ,WAAW,CAAC,UAACC,MAAM,EAAK;UAC3C,IAAI,OAAOV,eAAe,KAAK,UAAU,EAAE;YACvCA,eAAe,CAAC;cAACU,MAAM,EAANA;YAAM,CAAC,CAAC;UAC7B;QACJ,CAAC;MACL,CAAC,CAAC,CACDC,IAAI,CAAC,UAACC,QAAQ,EAAK;QAChB,OAAOA,QAAQ,CAACC,IAAI;MACxB,CAAC,CAAC,SACI,CAAC,UAACC,KAAK,EAAK;QAAA,IAAAC,eAAA;QACd,IAAId,cAAK,CAACe,QAAQ,CAACF,KAAK,CAAC,EAAE;UACvB,OAAOG,OAAO,CAACC,MAAM,CAACJ,KAAK,CAAC;QAChC;QACA,OAAOG,OAAO,CAACC,MAAM,CAAC,EAAAH,eAAA,GAAAD,KAAK,CAACF,QAAQ,cAAAG,eAAA,uBAAdA,eAAA,CAAgBF,IAAI,KAAIC,KAAK,CAAC;MACxD,CAAC,CAAC;IACV;EAAC;IAAAlB,GAAA;IAAAC,KAAA,EAED,SAAAsB,kBAAyBL,KAAU,EAAE;MACjC,OAAOb,cAAK,CAACe,QAAQ,CAACF,KAAK,CAAC;IAChC;EAAC;IAAAlB,GAAA;IAAAC,KAAA,EAED,SAAAuB,YAAmBC,OAAe,EAAE;MAChC,OAAO7B,KAAK,CAACM,OAAO,CAAC,UAAU,GAAGuB,OAAO,CAAC;IAC9C;EAAC;IAAAzB,GAAA;IAAAC,KAAA,EAED,SAAAyB,YAAA,EAAqB;MACjB,OAAO9B,KAAK,CAACM,OAAO,CAAwB,eAAe,CAAC;IAChE;EAAC;IAAAF,GAAA;IAAAC,KAAA,EAED,SAAA0B,UACIF,OAAe,EACfG,MAAc,EACdC,IAAU,EACVC,EAAQ,EACRC,MAAuB,EACzB;MACE,OAAOnC,KAAK,CAACM,OAAO,CAChB,gBAAgB,GACZuB,OAAO,GACP,UAAU,GACVG,MAAM,GACN,cAAc,GACd,IAAAI,eAAM,EAACH,IAAI,CAAC,CAACI,WAAW,CAAC,CAAC,GAC1B,YAAY,GACZ,IAAAD,eAAM,EAACF,EAAE,CAAC,CAACG,WAAW,CAAC,CAAC,GACxB,iCAAiC,EACrCF,MACJ,CAAC;IACL;EAAC;IAAA/B,GAAA;IAAAC,KAAA,EAED,SAAAiC,mBACIT,OAAe,EACfG,MAAc,EACdO,IAAmB,EACnB/B,eAAgC,EAClC;MACE,IAAMgC,SAAS,GAAG,IAAAJ,eAAM,EAACG,IAAI,CAAC,CAACE,OAAO,CAAC,KAAK,CAAC;MAC7C,IAAMC,OAAO,GAAG,IAAAN,eAAM,EAACI,SAAS,CAAC,CAACG,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC;MAC/C,OAAO3C,KAAK,CAAC+B,SAAS,CAClBF,OAAO,EACPG,MAAM,EACNQ,SAAS,CAACI,MAAM,CAAC,CAAC,EAClBF,OAAO,CAACE,MAAM,CAAC,CAAC,EAChBpC,eACJ,CAAC;IACL;EAAC;IAAAJ,GAAA;IAAAC,KAAA,EAED,SAAAwC,wBAA+BC,YAA0B,EAAEC,IAAY,EAAqB;MACxF,IAAMC,OAA0B,GAAG,EAAE;MACrC,IAAIC,QAAgB;MACpB,IAAI5B,IAAgB;MAEpB,SAAS6B,eAAeA,CAACC,CAAS,EAAE;QAChC,IAAIF,QAAQ,GAAG,OAAO,GAAGE,CAAC;QAC1BF,QAAQ,GAAG,KAAK,GAAGA,QAAQ,CAACG,MAAM,CAACH,QAAQ,CAACI,MAAM,GAAG,CAAC,CAAC;QACvD,OAAOJ,QAAQ;MACnB;MAEA,KAAK,IAAIE,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGJ,IAAI,EAAEI,CAAC,EAAE,EAAE;QAC3BF,QAAQ,GAAGC,eAAe,CAACC,CAAC,CAAC;QAE7B,IAAIL,YAAY,IAAIQ,MAAM,CAACC,cAAc,CAACC,IAAI,CAACV,YAAY,EAAEG,QAAQ,CAAC,EAAE;UACpE5B,IAAI,GAAGyB,YAAY,CAACG,QAAQ,CAAC;QACjC,CAAC,MAAM;UACH5B,IAAI,GAAG;YACHoC,KAAK,EAAE;UACX,CAAC;QACL;QACAT,OAAO,CAACU,IAAI,CAACrC,IAAI,CAAC;MACtB;MAEA,OAAO2B,OAAO;IAClB;EAAC;IAAA5C,GAAA;IAAAC,KAAA,EAED,SAAAsD,YAAmBb,YAA+B,EAAE;MAChD,IAAMc,MAAM,GAAG,IAAAC,iBAAA,EAAUf,YAAY,EAAE,UAAAgB,IAAA,EAAa;QAAA,IAAXL,KAAK,GAAAK,IAAA,CAALL,KAAK;QAC1C,IAAIA,KAAK,KAAK,WAAW,EAAE;UACvB,OAAO,WAAW;QACtB,CAAC,MAAM,IAAIA,KAAK,KAAK,SAAS,EAAE;UAC5B,OAAO,SAAS;QACpB,CAAC,MAAM;UACH,OAAO,aAAa;QACxB;MACJ,CAAC,CAAC;MAEF,IAAMM,GAAG,GAAGjB,YAAY,CAACO,MAAM;MAE/B,OAAO;QACHpB,IAAI,EAAE,CAAC2B,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,IAAIG,GAAG;QACtC7B,EAAE,EAAE,CAAC6B,GAAG,IAAIH,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,IAAIG;MAC/C,CAAC;IACL;EAAC;EAAA,OAAA/D,KAAA;AAAA;AA1HgBA,KAAK,CACfW,SAAS,GAAG,iBAAiB;AADnBX,KAAK,CAEfe,SAAS,GAAG,MAAM;AA2HtB,SAASiD,WAAWA,CAAA,EAAG;EAC1B,OAAO,IAAA5B,eAAM,EAAC,CAAC,CAACK,OAAO,CAAC,KAAK,CAAC,CAACwB,MAAM,CAACC,0BAAW,CAAC;AACtD;AAEO,IAAMC,yBAAyB,GAAAlE,OAAA,CAAAkE,yBAAA,GAAG,IAAAC,mBAAW,EAAC,CAAC,GAChD,YAAM;EACF,OAAO3D,cAAK,CAACH,OAAO,CAAC;IACjBM,MAAM,EAAE,KAAK;IACbF,GAAG,EAAE;EACT,CAAC,CAAC;AAMN,CAAC,GACD;EAAA,OAAMe,OAAO,CAAC4C,OAAO,CAAC,EAAE,CAAC;AAAA"}
1
+ {"version":3,"names":["_axios","_interopRequireDefault","require","_moment","_odinConstants","_config","obj","__esModule","default","Utils","exports","_classCallCheck","_createClass","key","value","request","path","saveCancelToken","axios","url","ODIN_PATH","method","responseType","withCredentials","ODIN_AUTH","cancelToken","CancelToken","cancel","then","response","data","error","_error$response","isCancel","Promise","reject","isRequestCanceled","checkStatus","cluster","listMetrics","concat","getMetric","metric","from","to","saveCT","moment","toISOString","getMetricOfThisDay","date","startTime","startOf","endTime","add","toDate","prepareAvailabilityData","availability","size","asArray","property","getPropertyName","i","substr","length","Object","hasOwnProperty","call","state","push","computeStat","counts","_countBy","_ref","sum","currentDate","format","DATE_FORMAT","fetchClustersAvailability","hasOdinPage","resolve"],"sources":["odin-utils.ts"],"sourcesContent":["import axios, {Canceler} from 'axios';\nimport _ from 'lodash';\nimport moment from 'moment';\n\nimport {DATE_FORMAT} from './odin-constants';\nimport {hasOdinPage} from '../../config';\n\ntype SaveCancelToken = ({cancel}: {cancel: Canceler}) => void;\ntype Availability = {[key: string]: MetricData};\n\nexport interface MetricListItem {\n display_name: string;\n name: string;\n}\n\nexport interface MetricData {\n message?: string;\n state: 'available' | 'unavailable' | 'partially_available' | 'no_data';\n}\n\nexport default class Utils {\n static ODIN_PATH = '/api/odin/proxy';\n static ODIN_AUTH = 'none';\n\n static request<T = unknown>(path: string, saveCancelToken?: SaveCancelToken): Promise<T> {\n return axios\n .request({\n url: Utils.ODIN_PATH + path,\n method: 'GET',\n responseType: 'json',\n withCredentials: Utils.ODIN_AUTH === 'domain',\n cancelToken: new axios.CancelToken((cancel) => {\n if (typeof saveCancelToken === 'function') {\n saveCancelToken({cancel});\n }\n }),\n })\n .then((response) => {\n return response.data;\n })\n .catch((error) => {\n if (axios.isCancel(error)) {\n return Promise.reject(error);\n }\n return Promise.reject(error.response?.data || error);\n });\n }\n\n static isRequestCanceled(error: any) {\n return axios.isCancel(error);\n }\n\n static checkStatus(cluster: string) {\n return Utils.request('/exists/' + cluster);\n }\n\n static listMetrics(cluster: string) {\n return Utils.request<Array<MetricListItem>>(`/service_list/${cluster}`);\n }\n\n static getMetric(\n cluster: string,\n metric: string,\n from: Date,\n to: Date,\n saveCT: SaveCancelToken,\n ) {\n return Utils.request<Availability>(\n '/availability/' +\n cluster +\n '?metric=' +\n metric +\n '&start_time=' +\n moment(from).toISOString() +\n '&end_time=' +\n moment(to).toISOString() +\n '&return_state_without_message=0',\n saveCT,\n );\n }\n\n static getMetricOfThisDay(\n cluster: string,\n metric: string,\n date: string | null,\n saveCancelToken: SaveCancelToken,\n ) {\n const startTime = moment(date).startOf('day');\n const endTime = moment(startTime).add(1, 'day');\n return Utils.getMetric(\n cluster,\n metric,\n startTime.toDate(),\n endTime.toDate(),\n saveCancelToken,\n );\n }\n\n static prepareAvailabilityData(availability: Availability, size: number): Array<MetricData> {\n const asArray: Array<MetricData> = [];\n let property: string;\n let data: MetricData;\n\n function getPropertyName(i: number) {\n let property = '00000' + i;\n property = 'at_' + property.substr(property.length - 5);\n return property;\n }\n\n for (let i = 0; i < size; i++) {\n property = getPropertyName(i);\n\n if (availability && Object.hasOwnProperty.call(availability, property)) {\n data = availability[property];\n } else {\n data = {\n state: 'no_data',\n };\n }\n asArray.push(data);\n }\n\n return asArray;\n }\n\n static computeStat(availability: Array<MetricData>) {\n const counts = _.countBy(availability, ({state}) => {\n if (state === 'available') {\n return 'available';\n } else if (state === 'no_data') {\n return 'no_data';\n } else {\n return 'unavailable';\n }\n });\n\n const sum = availability.length;\n\n return {\n from: (counts['available'] || 0) / sum,\n to: (sum - (counts['unavailable'] || 0)) / sum,\n };\n }\n}\n\nexport function currentDate() {\n return moment().startOf('day').format(DATE_FORMAT);\n}\n\nexport const fetchClustersAvailability = hasOdinPage()\n ? () => {\n return axios.request({\n method: 'get',\n url: '/api/odin/clusters/availability',\n }) as Promise<\n {\n id: string;\n availability?: 1 | undefined;\n }[]\n >;\n }\n : () => Promise.resolve([]);\n"],"mappings":"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"}
@@ -51,7 +51,7 @@ export interface YTCoreConfig {
51
51
  * Odin is a service for monitoring the availability of YTsaurus clusters
52
52
  * This parameter sets service base url and enables UI page
53
53
  */
54
- odinBaseUrl?: string;
54
+ odinBaseUrl?: Record<string, string> | string;
55
55
 
56
56
  /**
57
57
  * The OAuthRobot should have read/write access to mapNodePath
@@ -8,6 +8,9 @@ export interface ServerFactory {
8
8
  renderLayout(params: AppLayoutConfig, req: Request, res: Response): Promise<string>;
9
9
  }
10
10
  export declare function rememberApp(v: ExpressKit): void;
11
+ /**
12
+ * @deprecated use req.ctx.config instead of App().config
13
+ */
11
14
  export declare function getApp(): ExpressKit;
12
15
  export declare function configureServerFactory(overrides: Partial<ServerFactory>): void;
13
16
  declare const _default: ServerFactory;
@@ -11,6 +11,10 @@ export function rememberApp(v) {
11
11
  }
12
12
  app = v;
13
13
  }
14
+
15
+ /**
16
+ * @deprecated use req.ctx.config instead of App().config
17
+ */
14
18
  export function getApp() {
15
19
  return app;
16
20
  }
@@ -1 +1 @@
1
- {"version":3,"names":["isLocalClusterId","renderLayout","isLocalModeByEnvironment","app","rememberApp","v","Error","getApp","serverFactory","getExtraRootPages","cluster","getHomeRedirectedUrl","Promise","resolve","undefined","params","_asyncToGenerator","_regeneratorRuntime","mark","_callee","wrap","_callee$","_context","prev","next","abrupt","sent","stop","configureServerFactoryItem","k","redefinition","configureServerFactory","overrides","_forEach","_v","key","Proxy","set"],"sources":["ServerFactory.ts"],"sourcesContent":["import type {Request, Response} from 'express';\nimport type {ExpressKit} from '@gravity-ui/expresskit';\nimport _ from 'lodash';\nimport {isLocalClusterId} from '../shared/utils';\nimport {ConfigData} from '../shared/yt-types';\nimport renderLayout, {AppLayoutConfig} from './render-layout';\nimport {isLocalModeByEnvironment} from './utils';\n\nexport interface ServerFactory {\n getExtraRootPages(): Array<string>;\n isLocalClusterId(cluster: string): boolean;\n getHomeRedirectedUrl(cluster: string | undefined, req: Request): Promise<string | undefined>;\n renderLayout(params: AppLayoutConfig, req: Request, res: Response): Promise<string>;\n}\n\nlet app: ExpressKit;\n\nexport function rememberApp(v: ExpressKit) {\n if (app) {\n throw new Error('The method must not be called more than once');\n }\n app = v;\n}\n\nexport function getApp() {\n return app!;\n}\n\nconst serverFactory: ServerFactory = {\n getExtraRootPages() {\n return [];\n },\n isLocalClusterId(cluster) {\n return isLocalModeByEnvironment() || isLocalClusterId(cluster);\n },\n getHomeRedirectedUrl() {\n return Promise.resolve(undefined);\n },\n async renderLayout(params) {\n return await renderLayout<ConfigData>(params);\n },\n};\n\nfunction configureServerFactoryItem<K extends keyof ServerFactory>(\n k: K,\n redefinition: ServerFactory[K],\n) {\n serverFactory[k] = redefinition;\n}\n\nexport function configureServerFactory(overrides: Partial<ServerFactory>) {\n _.forEach(overrides, (_v, k) => {\n const key = k as keyof ServerFactory;\n configureServerFactoryItem(key, overrides[key]!);\n });\n}\n\nexport default new Proxy(serverFactory, {\n set: () => {\n throw new Error('Use configureUIFactory(...) method instead of direct modifications');\n },\n});\n"],"mappings":";;;AAGA,SAAQA,gBAAgB,IAAhBA,iBAAgB,QAAO,iBAAiB;AAEhD,OAAOC,aAAY,MAAyB,iBAAiB;AAC7D,SAAQC,wBAAwB,QAAO,SAAS;AAShD,IAAIC,GAAe;AAEnB,OAAO,SAASC,WAAWA,CAACC,CAAa,EAAE;EACvC,IAAIF,GAAG,EAAE;IACL,MAAM,IAAIG,KAAK,CAAC,8CAA8C,CAAC;EACnE;EACAH,GAAG,GAAGE,CAAC;AACX;AAEA,OAAO,SAASE,MAAMA,CAAA,EAAG;EACrB,OAAOJ,GAAG;AACd;AAEA,IAAMK,aAA4B,GAAG;EACjCC,iBAAiB,WAAAA,kBAAA,EAAG;IAChB,OAAO,EAAE;EACb,CAAC;EACDT,gBAAgB,WAAAA,iBAACU,OAAO,EAAE;IACtB,OAAOR,wBAAwB,CAAC,CAAC,IAAIF,iBAAgB,CAACU,OAAO,CAAC;EAClE,CAAC;EACDC,oBAAoB,WAAAA,qBAAA,EAAG;IACnB,OAAOC,OAAO,CAACC,OAAO,CAACC,SAAS,CAAC;EACrC,CAAC;EACKb,YAAY,WAAAA,aAACc,MAAM,EAAE;IAAA,OAAAC,iBAAA,eAAAC,mBAAA,CAAAC,IAAA,UAAAC,QAAA;MAAA,OAAAF,mBAAA,CAAAG,IAAA,UAAAC,SAAAC,QAAA;QAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;UAAA;YAAAF,QAAA,CAAAE,IAAA;YAAA,OACVvB,aAAY,CAAac,MAAM,CAAC;UAAA;YAAA,OAAAO,QAAA,CAAAG,MAAA,WAAAH,QAAA,CAAAI,IAAA;UAAA;UAAA;YAAA,OAAAJ,QAAA,CAAAK,IAAA;QAAA;MAAA,GAAAR,OAAA;IAAA;EACjD;AACJ,CAAC;AAED,SAASS,0BAA0BA,CAC/BC,CAAI,EACJC,YAA8B,EAChC;EACEtB,aAAa,CAACqB,CAAC,CAAC,GAAGC,YAAY;AACnC;AAEA,OAAO,SAASC,sBAAsBA,CAACC,SAAiC,EAAE;EACtEC,QAAA,CAAUD,SAAS,EAAE,UAACE,EAAE,EAAEL,CAAC,EAAK;IAC5B,IAAMM,GAAG,GAAGN,CAAwB;IACpCD,0BAA0B,CAACO,GAAG,EAAEH,SAAS,CAACG,GAAG,CAAE,CAAC;EACpD,CAAC,CAAC;AACN;AAEA,eAAe,IAAIC,KAAK,CAAC5B,aAAa,EAAE;EACpC6B,GAAG,EAAE,SAAAA,IAAA,EAAM;IACP,MAAM,IAAI/B,KAAK,CAAC,oEAAoE,CAAC;EACzF;AACJ,CAAC,CAAC"}
1
+ {"version":3,"names":["isLocalClusterId","renderLayout","isLocalModeByEnvironment","app","rememberApp","v","Error","getApp","serverFactory","getExtraRootPages","cluster","getHomeRedirectedUrl","Promise","resolve","undefined","params","_asyncToGenerator","_regeneratorRuntime","mark","_callee","wrap","_callee$","_context","prev","next","abrupt","sent","stop","configureServerFactoryItem","k","redefinition","configureServerFactory","overrides","_forEach","_v","key","Proxy","set"],"sources":["ServerFactory.ts"],"sourcesContent":["import type {Request, Response} from 'express';\nimport type {ExpressKit} from '@gravity-ui/expresskit';\nimport _ from 'lodash';\nimport {isLocalClusterId} from '../shared/utils';\nimport {ConfigData} from '../shared/yt-types';\nimport renderLayout, {AppLayoutConfig} from './render-layout';\nimport {isLocalModeByEnvironment} from './utils';\n\nexport interface ServerFactory {\n getExtraRootPages(): Array<string>;\n isLocalClusterId(cluster: string): boolean;\n getHomeRedirectedUrl(cluster: string | undefined, req: Request): Promise<string | undefined>;\n renderLayout(params: AppLayoutConfig, req: Request, res: Response): Promise<string>;\n}\n\nlet app: ExpressKit;\n\nexport function rememberApp(v: ExpressKit) {\n if (app) {\n throw new Error('The method must not be called more than once');\n }\n app = v;\n}\n\n/**\n * @deprecated use req.ctx.config instead of App().config\n */\nexport function getApp() {\n return app!;\n}\n\nconst serverFactory: ServerFactory = {\n getExtraRootPages() {\n return [];\n },\n isLocalClusterId(cluster) {\n return isLocalModeByEnvironment() || isLocalClusterId(cluster);\n },\n getHomeRedirectedUrl() {\n return Promise.resolve(undefined);\n },\n async renderLayout(params) {\n return await renderLayout<ConfigData>(params);\n },\n};\n\nfunction configureServerFactoryItem<K extends keyof ServerFactory>(\n k: K,\n redefinition: ServerFactory[K],\n) {\n serverFactory[k] = redefinition;\n}\n\nexport function configureServerFactory(overrides: Partial<ServerFactory>) {\n _.forEach(overrides, (_v, k) => {\n const key = k as keyof ServerFactory;\n configureServerFactoryItem(key, overrides[key]!);\n });\n}\n\nexport default new Proxy(serverFactory, {\n set: () => {\n throw new Error('Use configureUIFactory(...) method instead of direct modifications');\n },\n});\n"],"mappings":";;;AAGA,SAAQA,gBAAgB,IAAhBA,iBAAgB,QAAO,iBAAiB;AAEhD,OAAOC,aAAY,MAAyB,iBAAiB;AAC7D,SAAQC,wBAAwB,QAAO,SAAS;AAShD,IAAIC,GAAe;AAEnB,OAAO,SAASC,WAAWA,CAACC,CAAa,EAAE;EACvC,IAAIF,GAAG,EAAE;IACL,MAAM,IAAIG,KAAK,CAAC,8CAA8C,CAAC;EACnE;EACAH,GAAG,GAAGE,CAAC;AACX;;AAEA;AACA;AACA;AACA,OAAO,SAASE,MAAMA,CAAA,EAAG;EACrB,OAAOJ,GAAG;AACd;AAEA,IAAMK,aAA4B,GAAG;EACjCC,iBAAiB,WAAAA,kBAAA,EAAG;IAChB,OAAO,EAAE;EACb,CAAC;EACDT,gBAAgB,WAAAA,iBAACU,OAAO,EAAE;IACtB,OAAOR,wBAAwB,CAAC,CAAC,IAAIF,iBAAgB,CAACU,OAAO,CAAC;EAClE,CAAC;EACDC,oBAAoB,WAAAA,qBAAA,EAAG;IACnB,OAAOC,OAAO,CAACC,OAAO,CAACC,SAAS,CAAC;EACrC,CAAC;EACKb,YAAY,WAAAA,aAACc,MAAM,EAAE;IAAA,OAAAC,iBAAA,eAAAC,mBAAA,CAAAC,IAAA,UAAAC,QAAA;MAAA,OAAAF,mBAAA,CAAAG,IAAA,UAAAC,SAAAC,QAAA;QAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;UAAA;YAAAF,QAAA,CAAAE,IAAA;YAAA,OACVvB,aAAY,CAAac,MAAM,CAAC;UAAA;YAAA,OAAAO,QAAA,CAAAG,MAAA,WAAAH,QAAA,CAAAI,IAAA;UAAA;UAAA;YAAA,OAAAJ,QAAA,CAAAK,IAAA;QAAA;MAAA,GAAAR,OAAA;IAAA;EACjD;AACJ,CAAC;AAED,SAASS,0BAA0BA,CAC/BC,CAAI,EACJC,YAA8B,EAChC;EACEtB,aAAa,CAACqB,CAAC,CAAC,GAAGC,YAAY;AACnC;AAEA,OAAO,SAASC,sBAAsBA,CAACC,SAAiC,EAAE;EACtEC,QAAA,CAAUD,SAAS,EAAE,UAACE,EAAE,EAAEL,CAAC,EAAK;IAC5B,IAAMM,GAAG,GAAGN,CAAwB;IACpCD,0BAA0B,CAACO,GAAG,EAAEH,SAAS,CAACG,GAAG,CAAE,CAAC;EACpD,CAAC,CAAC;AACN;AAEA,eAAe,IAAIC,KAAK,CAAC5B,aAAa,EAAE;EACpC6B,GAAG,EAAE,SAAAA,IAAA,EAAM;IACP,MAAM,IAAI/B,KAAK,CAAC,oEAAoE,CAAC;EACzF;AACJ,CAAC,CAAC"}