diff --git a/packages/custom-ytsaurus-ui.example/src/server/configs/common.ts b/packages/custom-ytsaurus-ui.example/src/server/configs/common.ts index e1cfe890f..7bbfe8e28 100644 --- a/packages/custom-ytsaurus-ui.example/src/server/configs/common.ts +++ b/packages/custom-ytsaurus-ui.example/src/server/configs/common.ts @@ -21,6 +21,7 @@ const cfg: Partial = { reHashFromNodeVersion: '[^~]+~(?[^+]+)', reShortNameFromAddress: '(?.*)(\\.[^.]+)(\\.yt\\.my\\.domain)', + reShortNameSystemPage: '(?.*)(\\.[^.]+)(\\.yt\\.my\\.domain)', reShortNameFromTabletNodeAddress: '(?[^-]+-[^-]+).*', reUnipikaAllowTaggedSources: [ diff --git a/packages/ui/src/server/configs/e2e/local.ts b/packages/ui/src/server/configs/e2e/local.ts index 01dc0fc0d..80902d69e 100644 --- a/packages/ui/src/server/configs/e2e/local.ts +++ b/packages/ui/src/server/configs/e2e/local.ts @@ -40,6 +40,7 @@ const e2eConfig: Partial = { }, reShortNameFromAddress: '(?^(loca)).*(?:\\d\\d\\d)', + reShortNameSystemPage: '(?^(local))', reShortNameFromTabletNodeAddress: '(?^(local))[^:]+(?:\\d\\d)', reUnipikaAllowTaggedSources: ['^https://yastatic\\.net/'], diff --git a/packages/ui/src/shared/ui-settings.ts b/packages/ui/src/shared/ui-settings.ts index 6b2ae4dbe..da57ee908 100644 --- a/packages/ui/src/shared/ui-settings.ts +++ b/packages/ui/src/shared/ui-settings.ts @@ -135,6 +135,12 @@ export interface UISettings { */ reShortNameFromTabletNodeAddress?: string; + /** + * Allows you to override the behavior of 'reShortNameSystemPage ` for masters / providers / schedulers / agents. + * @example reShortNameSystemPage: '(?.*)((\\.msk\\.my-domain\\.ru)|(\\.vla\\.my-domain\\.net))' + */ + reShortNameSystemPage?: string; + /** * Allows to define array of regexps for allowed urls of TaggedType of unipika to display media-content (audio/video/images). * If there are no matched items in the array the TaggedType-item will be displayed as a json-object. diff --git a/packages/ui/src/ui/pages/system/Masters/MasterGroup.js b/packages/ui/src/ui/pages/system/Masters/MasterGroup.js index dfc0660b5..528c22c8d 100644 --- a/packages/ui/src/ui/pages/system/Masters/MasterGroup.js +++ b/packages/ui/src/ui/pages/system/Masters/MasterGroup.js @@ -20,7 +20,7 @@ import map_ from 'lodash/map'; import './MasterGroup.scss'; import {ChangeMaintenanceButton} from './ChangeMaintenanceButton'; -import {calcShortNameByRegExp} from '../../../containers/Host/Host'; +import {makeShortSystemAddress} from '../helpers/makeShortSystemAddress'; const b = block('master-group'); @@ -107,7 +107,7 @@ class Instance extends Component {
- {calcShortNameByRegExp(addressWithoutPort) || addressWithoutPort} + {makeShortSystemAddress(addressWithoutPort) || addressWithoutPort}
diff --git a/packages/ui/src/ui/pages/system/SchedulersAndAgents/Scheduler/Scheduler.tsx b/packages/ui/src/ui/pages/system/SchedulersAndAgents/Scheduler/Scheduler.tsx index a83c9d213..15cb9c95b 100644 --- a/packages/ui/src/ui/pages/system/SchedulersAndAgents/Scheduler/Scheduler.tsx +++ b/packages/ui/src/ui/pages/system/SchedulersAndAgents/Scheduler/Scheduler.tsx @@ -10,7 +10,7 @@ import NodeQuad from '../../NodeQuad/NodeQuad'; import '../Schedulers.scss'; import {ChangeMaintenanceButton} from '../../Masters/ChangeMaintenanceButton'; -import {calcShortNameByRegExp} from '../../../../containers/Host/Host'; +import {makeShortSystemAddress} from '../../helpers/makeShortSystemAddress'; const b = block('system'); @@ -47,7 +47,7 @@ export default function Scheduler({host, state, maintenanceMessage, type}: Sched
- {calcShortNameByRegExp(address) || address} + {makeShortSystemAddress(address) || address}
diff --git a/packages/ui/src/ui/pages/system/helpers/makeShortSystemAddress.ts b/packages/ui/src/ui/pages/system/helpers/makeShortSystemAddress.ts new file mode 100644 index 000000000..af4f088f8 --- /dev/null +++ b/packages/ui/src/ui/pages/system/helpers/makeShortSystemAddress.ts @@ -0,0 +1,9 @@ +import {makeRegexpFromSettings} from '../../../../shared/utils'; +import {uiSettings} from '../../../config/ui-settings'; + +const reShortNameSystemPage = makeRegexpFromSettings(uiSettings.reShortNameSystemPage); + +export const makeShortSystemAddress = (address: string): string | undefined => { + const res = reShortNameSystemPage?.exec(address); + return res?.groups?.shortname; +}; diff --git a/packages/ui/tests/e2e/pages/system.spec.ts b/packages/ui/tests/e2e/pages/system.spec.ts new file mode 100644 index 000000000..a3bc7ffe4 --- /dev/null +++ b/packages/ui/tests/e2e/pages/system.spec.ts @@ -0,0 +1,20 @@ +import {expect, test} from '@playwright/test'; +import {makeClusterUrl} from '../../utils'; + +test('System: check short name', async ({page}) => { + const url = makeClusterUrl(`system/general`); + await page.goto(url); + + await page.waitForSelector('.system'); + await page.evaluate(() => { + const allMastersContainer = document.querySelector('.system-master__all-masters'); + if (!allMastersContainer) { + const button = document.querySelector('.collapsible-section__title'); + if (button) button.click(); + } + }); + + const mastersNameElements = await page.$$('.master-group__host-name'); + const firstMasterName = await mastersNameElements[0].innerText(); + expect(firstMasterName).toEqual('local'); +});