Local modifications to ClusterLabs/Anvil by Alteeve
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
Tsu-ba-me 24c05e740c fix(striker-ui): guess network base, mask in create manifest 11 months ago
..
.husky chore: commit husky changes to .gitignore file 3 years ago
components fix(striker-ui): guess network base, mask in create manifest 11 months ago
hooks fix(striker-ui): add hook to group confirm dialog methods 11 months ago
lib fix(striker-ui): disable network mapping on successful submission 11 months ago
out build(striker-ui): rebuild 11 months ago
pages fix(striker-ui): allow open VNC connection in new tab from dashboard 11 months ago
public chore(striker-ui): add symlink to image assets 3 years ago
styles refactor: remove unused css classes 3 years ago
theme fix(striker-ui): add font source code pro to theme 3 years ago
types fix(striker-ui): suggest default BCN, SN, IFN IPs for each subnode in create manifest 11 months ago
.env fix(striker-ui): migrate /cgi-bin->/api 1 year ago
.eslintignore build(striker-ui): ignore out/ when linting 3 years ago
.eslintrc.json chore(striker-ui): allow skip props in object destructure 2 years ago
.gitignore chore: rebuild web UI 3 years ago
.lintstagedrc.json chore(striker-ui): revise scripts for lint and quick-fix 3 years ago
.prettierrc.json feat(striker-ui): add minimal demo 3 years ago
Makefile.am build(striker-ui): remove unused, add new pages to Makefile 1 year ago
README.md docs(striker-ui): add minimal README to web UI 1 year ago
commitlint.config.js feat(striker-ui): add minimal demo 3 years ago
lsxdist build(striker-ui): revise Makefile.am to include new pages and src files 2 years ago
next-env.d.ts chore(striker-ui): regenerate next-env.d.ts 3 years ago
next.config.js fix(front-end): remove trailing slash setting 3 years ago
package-lock.json build(deps): bump @babel/traverse from 7.17.3 to 7.23.2 in /striker-ui 1 year ago
package.json build(deps): bump postcss and next in /striker-ui 1 year ago
tsconfig.json chore(striker-ui): enable 'incremental' in tsconfig 3 years ago

README.md

Anvil system striker web interface

Notes

  • All NPM commands must be executed at the root folder of this UI module, where the package.json is located.
  • For those unfamiliar with git and/or the web technologies involved, it's highly recommended to clone a fresh repo as a test workspace.

Development prerequisites

  • NodeJS LTS is recommended, version >= 14 is required.
  • NPM latest is recommended, version >= 6 is required.

"required" means this project was started with roughly the specified version; earlier version may work.

For Fedora, NPM is included as a dependency of NodeJS; running sudo dnf install nodejs should be enough.

Installation

Run npm install to download all production and development dependencies. The NPM packages will be collectively placed into a folder named node_modules in the root of this project.

Live development

Run npm run dev to start a local development server that listens on port 3000. Any source code changes after the dev server has started will trigger a quick partial rebuild, the changes will be reflected shortly in the browser.

However, it's highly recommended to perform a clear-cache reload, which is usually CTRL + F5, because changes may not always reflect correctly.

Production build

Run rm -rf out && npm run build to remove the existing build output and generate a new one. It's highly recommended to remove the old build before building a new one because the some of the generated files won't replace the old files, thus old files will remain when the whole output directory gets committed/copied.

The build is expected to be placed into the /var/www/html/ directory on a striker.

At the time of writing, the build is committed to the repository to keep the whole project's building process offline. NPM requires network to fetch dependencies before building. Ideally, the build shouldn't be included, but we cannot remove the it from repo until there's a reliable way to separate the download and build tasks.

Logs

At the time of writing, no logging library has been added due to other priorities. The recommended debug logging is to temporarily add any appropriate console functions to suspicious areas, i.e. before and after the location where an exception was thrown.

Test with striker API

Most of the API requires authentication to access. At the time of writing, the striker API can only produce cookies with its domain (including port) after successfully authenticating a user. Therefore, the striker UI must be accessed from the same location to allow the browser to read the session cookies.

There are 2 tested methods to achive same-domain:

  1. Make changes to the source and produce a production build. Copy the new build to the striker and access the UI by connecting to the striker.
  2. Install a proxy/load balance server, forward <domain>/ (root) to the server hosting the web UI, and forward <domain>/api/ to the API. When accessing the UI, the browser only accesses the proxy and will consider the two locations to be under the same domain. thus it will see the cookies produced by authentication. A recommended server with easy-to-understand configuration is nginx; it's available via dnf.