# ovirt-engine-ui-extensions **Repository Path**: mirrors_oVirt/ovirt-engine-ui-extensions ## Basic Information - **Project Name**: ovirt-engine-ui-extensions - **Description**: UI Plugins that provides various extensions to the oVirt Administration Portal. - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-02-13 - **Last Updated**: 2026-04-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README = oVirt UI Extensions image:https://copr.fedorainfracloud.org/coprs/ovirt/ovirt-master-snapshot/package/ovirt-engine-ui-extensions/status_image/last_build.png[link="https://copr.fedorainfracloud.org/coprs/ovirt/ovirt-master-snapshot/package/ovirt-engine-ui-extensions/"] == Introduction This project contains http://www.ovirt.org/develop/release-management/features/ux/uiplugins43.html[UI plugins] that provides various extensions to http://www.ovirt.org/[oVirt] administration UI. This extension is installed during oVirt Engine installation and upgraded via `engine-setup`. This means no manual steps are required in order to install this extension in an production environment. == Setting up development environment === Prerequisites * Install https://nodejs.org/[Node.js] (LTS). https://github.com/creationix/nvm[nvm] can be used to manage multiple Node.js versions. Run `node -v` to check the current Node.js version. * Install https://yarnpkg.com/[Yarn] package manager. * Build and configure oVirt Engine according to its https://github.com/oVirt/ovirt-engine#developer-mode-installation[developer instructions]. * Checkout the sources from https://github.com/oVirt/ovirt-engine-ui-extensions[GitHub]. NOTE: Required versions of `nodejs` and `yarn` can be seen in https://github.com/oVirt/ovirt-engine-ui-extensions/blob/master/packaging/spec.in[the current rpm spec template]. === Setting up the extension * `yarn install` to install dependencies * `yarn lint` to lint the source code * `yarn test` to run tests (single run) * `yarn test:watch` for continuous testing (watch & rerun tests on change) * `yarn dev` for development build * `yarn dev:watch` for continuous development (watch & rebuild on change) * `yarn build` for production build === Setting up Engine Build the extension with `yarn dev` or `yarn build` to generate `${PLUGIN_REPO}/dist`. Symlink the extension's plugin resources to `ui-plugins` directory of your developer engine as follows: ```console % cd ${PREFIX}/share/ovirt-engine/ui-plugins/ % ln -s ${PLUGIN_REPO}/dist/ui-extensions.json ui-extensions.json % ln -s ${PLUGIN_REPO}/dist/ui-extensions-resources ui-extensions-resources ``` Symlink the extensions's ansible resources to `playbooks` directory of your developer engine as follows: ```console % cd ${PREFIX}/share/ovirt-engine/ansible-runner-service-project/project % ln -s ${PLUGIN_REPO}/ansible-playbooks/* ``` NOTE: If you add additional playbook yml files after the initial symlink, the process will need to be repeated. === Accessing the plugins Open WebAdmin in your browser, you should land on *Dashboard* place automatically: https://engine.example:8443/ovirt-engine/webadmin/ == Internationalization and Localization === Introduction This project has the ability to render in different languages. Internally all the different locales are saved in the intl/locales/ folder. The strings provided in these files are accessible through the `msg` object created in `intl-messages.js`. The locale is set in the `app-init.js` service based on the locale provided by the ovirt-engine application. The following languages are currently supported: - Czech (Czechia) - German (Germany) - English (United States) - Spanish (Spain) - French (France) - Italian (Italy) - Japanese (Japan) - Korean (South Korea) - Portuguese (Brazil) - Simplified Chinese (China) - Georgian (Georgia) === Weblate setup `intl/locales/en-US.json` is the file that is used as the base for all the strings. To add new strings 2 steps need to be taken: 1. Add a new entry to `intl/messages.js` as a uniquely named object containing an `id`, `defaultMessage` and `description` fields. This object name should match the parameter used for the `msg` object. 2. Add at least the English translation in `intl/locales/en-US.json` with the id used in the previous step. After these steps the string will be available for the translators to be translated on Weblate. The Weblate site, https://translate.ovirt.tech/projects/ovirt-engine-ui-extensions/ui-extension/, is linked to a branch on github to collect changes for periodic and bundled updates to the string resources. == Instructions for maintainers === Managing dependencies Dependencies not related to production build (not needed for `yarn build`) should go into `devDependencies`. Try to keep as few `dependencies` as possible. Whenever `dependencies` are changed, they need to be pre-seeded to https://github.com/oVirt/ovirt-engine-nodejs-modules[ovirt-engine-nodejs-modules] for CI to pass offline builds. === Package versioning * alpha and beta builds (pre-releases): `x.y.z-0.N` where version stays the same * RC and GA builds (releases): `x.y.z-N` where version grows between releases `version` in `package.json` is reflected into the RPM `x.y.z` version. === Release process Only covers release builds (RC and GA). ==== Stable branches To create new stable branch: . create new branch on the GitHub repo . rebase on top of the newly created branch Then, update the master branch: * submit pull request with following changes: ** `package.json` - bump `version` ** `packaging/spec.in` - reset `Release` number to `1` and update `%changelog` TODO: Do any changes need to be made to copr, for builds, or a github actions, for CI, if a new stable branch is added? ==== Releases To perform new release: . switch to appropriate stable branch . submit pull request that prepares the branch for release: .. `package.json` - ensure proper `version` (e.g. bump `.z` component) .. `packaging/spec.in` - ensure proper `Release` number and update `%changelog` . pull changes from remote . tag release-prep patch and push the tag to remote: .. `git tag -a ` .. `git push origin ` . trigger CI build on release-prep patch . update oVirt release config in `releng-tools` repo Tag name example: `ovirt-engine-ui-extensions-1.0.0-1` == Building RPM === GitHub pull request GitHub actions that run CI on each pull request do a full rpm build. To access the RPMs for a pull request, open the checks tab. If the offline / `ovirt-engine-nodejs-modules` check passed, the artifacts should be available on that page or on the action run's page. === Manual build Alternatively, a RPM can be built locally using the `packaging/build.sh` script. To build online (skipping `ovirt-engine-nodejs-modules`), you will need to install the packages listed in the `packaging/spec.in` file `BuildRequires` lines. As of 2022-Feb-15, install: ```console % sudo dnf install git jq rpmlit rpm-build yarn nodejs ``` Then build with the command: ```console % OFFLINE_BUILD=0 ./packaging/build.sh ``` Upon a successful build, the RPMs will be located in the `exported-artifacts/` folder.