User interface for a YTsaurus platform cluster.
First of all you have to provide clusters-config.json
file with description of your cluster, the file should be placed in the root of the repository (see clusters-config.json.example
).
Additionally you have to provide secrets/yt-interface-secret.json
file with a token of a special user (UIRobot) for some service requests like handling settings and other, example:
{
// common oauth token, the token is used if there is no cluster-specific token in the file
"oauthToken": "special-user-secret-tocken",
"cluster_id1": {
// cluster_id1 specific oauth token
"oauthToken": "cluster1-special-user-secret-token"
},
"cluster_id2": {
// cluster_id2 specific oauth token
"oauthToken": "cluster2-special-user-secret-token"
}
}
To run the development environment you need to prepare and run nginx:
- Install nginx
- Copy file
deploy/nginx/yt.development.conf.example
to/etc/nginx/sites-enabled/yt.development.conf
- Modify
/etc/nginx/sites-enabled/yt.development.conf
- change
server_name
- replace all
/path/to/the/repo
to correct path
- change
sudo systemctl restart nginx
Install required dependencies:
$ npm deps:install
A simple way to start development is using your local-yt cluster. The command bellow suggests to start local-yt cluster as docker-container:
$ npm run dev:localmode
Another way is to provide clusters-config.json
and run the command like:
$ npm run dev:app
You also could run application without nginx, right on localhost port. All that you need to do is specify port:
LOCAL_DEV_PORT=8080 YT_AUTH_ALLOW_INSECURE=true ALLOW_PASSWORD_AUTH=true npm run dev:oss
There is ability to build docker-image:
$ docker build . -t ytsaurus-ui:my-tag
All application files in a resulting docker-image will be placed in /opt/app, so you have to mount /opt/app/cluster-config.json
and /opt/app/secrets/yt-interface-secret.json
.
-
YT_AUTH_ALLOW_INSECURE
- if defined allows insecure (over http) authentication, do not use it for production -
ALLOW_PASSWORD_AUTH
- If defined, the app requires a password for cluster access
There is yt-api command get_supported_feature and it is a good place to describe some features. But some cases require ability to turn on/off a feature manually on a cluster. Such feature flags are placed placed in:
-
//sys/@ui_config
(values affects all users) -
//sys/@ui_config_dev_overrides
(values affects only developers)
(see more detail in YTFRONT-2804)
It is supposed that a user is developer on a cluster if he has write
access to admins
group of the cluster.
Available flags (default values are highlighted in bold):
Flag name | Allowed values | Description |
---|---|---|
enable_per_bundle_tablet_accounting | true, false | Allows editing of resources of tablets through BundleEditorDialog YTFRONT-2851 |
enable_per_account_tablet_accounting | false, true | Allows editing of resources of tablets through AccountEditorDialog YTFRONT-2851 |
per_bundle_accounting_help_link | null, url as string | Help link for resources of tablets to display from AccountEditorDialog about moving the resources to bundles YTFRONT-2851 |
enable_maintenance_api_nodes | null, boolean | Allows to use add_maintenance /remove_maintenance commands from Comopnents/Nodes page YTFRONT-3792
|
enable_maintenance_api_proxies | null, boolean | Allows to use add_maintenance /remove_maintenance commands from Components/HTTP Proxies and Components/RPC Proxies pages YTFRONT-3792
|
chyt_controller_base_url | null, url as string | Base url for chyt-controller |
livy_controller_base_url | null, url as string | Base url for spyt-controller |
job_trace_url_template |
null, {title: string; url_template: string; enforce_for_trees?: Array<string>}
|
If defined adds Job trace item to meta-table on Job/Details page for a job with archive_features/has_trace == true and for jobs from a tree in enforce_for_trees , example: {title: 'Open im MyProfiling', url_template: 'https://my.profiling.service/{cluster}/{operationId}/{jobId}', enforce_for_trees: ['tree-with-traces'] }
|
query_tracker_default_aco |
null, {stage1: string; stage2: string; }
|
Sets the default ACO in Query Tracker requests for each stage |
By default the application uses base configuration from path_to_dist/server/configs/common.js
file. The behavior might be adjusted through APP_ENV
and APP_INSTALLATION
environment variables, see README.config.md for more details.
-
YT_AUTH_CLUSTER_ID
environment variable has been replaced byALLOW_PASSWORD_AUTH
. -
config.ytAuthCluster
option has been replaced byconfig.allowPasswordAuth
.
Here is an example of run & update of screenshot tests:
# Prerequsites: install docker and YTsaurus CLI
# https://www.docker.com/products/docker-desktop/
# https://ytsaurus.tech/docs/en/api/cli/install
# Terminal 1: launch local dev mode on 8080 port
LOCAL_DEV_PORT=8080 npm run dev:localmode:e2e
# Terminal 2: init local cluster
npm run e2e:localmode:init
# Terminal 2: mount repo in docker image and prepare everyting for tests run
# Make sure that you specify correct BASE_URL for e2e tests
# For linux use http://localhost:8080
# For macos use http://host.docker.internal:8080
print "Enter base url of your development stand: "; \
read BASE_URL; \
docker run --rm --network host -it -w /work \
-v $(pwd):/work \
-e BASE_URL=${BASE_URL} \
"ghcr.io/gravity-ui/node-nginx:ubuntu20-nodejs18" \
/bin/bash -c '
cd tests
npm ci
npx playwright install --with-deps chromium
cd ..
npm run e2e:localmode:screenshots:update
'