cloudstack-mirror/ui
Pearl Dsilva 4244c2cc10
Some checks failed
Build / build (push) Has been cancelled
Simulator CI / build (component/find_hosts_for_migration component/test_acl_isolatednetwork component/test_acl_isolatednetwork_delete component/test_acl_listsnapshot) (push) Has been cancelled
Simulator CI / build (component/test_acl_listvm component/test_acl_listvolume) (push) Has been cancelled
Simulator CI / build (component/test_acl_sharednetwork component/test_acl_sharednetwork_deployVM-impersonation component/test_user_private_gateway component/test_user_shared_network) (push) Has been cancelled
Simulator CI / build (component/test_affinity_groups_projects component/test_allocation_states component/test_assign_vm) (push) Has been cancelled
Simulator CI / build (component/test_concurrent_snapshots_limit component/test_cpu_domain_limits component/test_cpu_limits component/test_cpu_max_limits component/test_cpu_project_limits component/test_deploy_vm_userdata_multi_nic) (push) Has been cancelled
Simulator CI / build (component/test_egress_fw_rules component/test_invalid_gw_nm component/test_ip_reservation) (push) Has been cancelled
Simulator CI / build (component/test_lb_secondary_ip component/test_list_nics component/test_list_pod component/test_memory_limits) (push) Has been cancelled
Simulator CI / build (component/test_mm_domain_limits component/test_mm_max_limits component/test_mm_project_limits component/test_network_offering component/test_non_contiguous_vlan) (push) Has been cancelled
Simulator CI / build (component/test_persistent_networks component/test_project_configs component/test_project_limits component/test_project_resources) (push) Has been cancelled
Simulator CI / build (component/test_project_usage component/test_protocol_number_security_group component/test_public_ip component/test_resource_limits component/test_resource_limit_tags) (push) Has been cancelled
Simulator CI / build (component/test_regions_accounts component/test_routers component/test_snapshots component/test_stopped_vm component/test_tags component/test_templates component/test_updateResourceCount component/test_update_vm) (push) Has been cancelled
Simulator CI / build (component/test_volumes component/test_vpc component/test_vpc_distributed_routing_offering component/test_vpc_network component/test_vpc_offerings component/test_vpc_routers component/test_vpn_users component/test_vpc_network_lbrules) (push) Has been cancelled
Simulator CI / build (smoke/test_accounts smoke/test_account_access smoke/test_affinity_groups smoke/test_affinity_groups_projects smoke/test_annotations smoke/test_async_job smoke/test_attach_multiple_volumes smoke/test_backup_recovery_dummy smoke/test_certauthority… (push) Has been cancelled
Simulator CI / build (smoke/test_cluster_drs smoke/test_dynamicroles smoke/test_enable_account_settings_for_domain smoke/test_enable_role_based_users_in_projects smoke/test_events_resource smoke/test_global_settings smoke/test_guest_vlan_range smoke/test_host_mainten… (push) Has been cancelled
Simulator CI / build (smoke/test_list_accounts smoke/test_list_disk_offerings smoke/test_list_domains smoke/test_list_hosts smoke/test_list_service_offerings smoke/test_list_storage_pools smoke/test_list_volumes) (push) Has been cancelled
Simulator CI / build (smoke/test_network smoke/test_network_acl smoke/test_network_ipv6 smoke/test_network_permissions smoke/test_nic smoke/test_nic_adapter_type smoke/test_non_contigiousvlan smoke/test_object_stores smoke/test_outofbandmanagement smoke/test_outofban… (push) Has been cancelled
Simulator CI / build (smoke/test_router_dhcphosts smoke/test_router_dns smoke/test_router_dnsservice smoke/test_routers smoke/test_routers_iptables_default_policy smoke/test_routers_network_ops smoke/test_scale_vm smoke/test_secondary_storage smoke/test_service_offer… (push) Has been cancelled
Coverage Check / codecov (push) Has been cancelled
PR Merge Conflict Check / triage (push) Has been cancelled
License Check / build (push) Has been cancelled
UI Build / build (push) Has been cancelled
UI: Allow selecting network for VNF nics if template is a non deploy-as-is template (#13423)
* Allow selecting network for VNF nics if template nics > 0 and is a non-deploy as is template

* delpoy as is param not required

---------

Co-authored-by: Pearl Dsilva <pearl1954@gmail.com>
2026-06-18 08:30:20 +02:00
..
docs Fix spelling in docs and code comments only (#8774) 2024-03-25 14:38:01 +01:00
nginx docker: add container build files and instructions (#22) 2021-01-20 07:06:14 +05:30
public Fix local upload from browser failing due to ssvm cert not trusted (#13204) 2026-05-26 13:27:33 +05:30
src UI: Allow selecting network for VNF nics if template is a non deploy-as-is template (#13423) 2026-06-18 08:30:20 +02:00
tests UI: Show applied search filters (#9520) 2026-01-29 15:17:11 +01:00
.babelrc pre-commit: apply end-of-file-fixer to all files (#7551) 2023-08-02 13:47:21 +02:00
.editorconfig editorconf: Remove CRLF editor config (#23) 2021-01-20 07:06:14 +05:30
.env.local.example README updates and CS_URL fix 2021-01-20 07:06:13 +05:30
.env.local.https.example vue: allow both http and https configuration (#2) 2021-01-20 07:06:14 +05:30
.env.primate-qa ui: show zones and offerings to users (#7557) 2023-05-25 13:44:44 +02:00
.env.qa Merge branch '4.19' into 4.20 2025-05-16 15:51:37 +02:00
.gitattributes pre-commit: apply end-of-file-fixer to all files (#7551) 2023-08-02 13:47:21 +02:00
.gitignore local versions of .env ignored (#6256) 2022-04-13 09:46:07 -03:00
.prettierrc primate: initial UI v0.1 2021-01-20 07:06:11 +05:30
babel.config.js Explore Test Automation (#320) 2021-01-20 07:06:24 +05:30
docker.sh Possiblity to choose between docker and podman from the command line (#5217) 2021-08-19 13:13:34 +05:30
Dockerfile Removed deprecated instruction MAINTAINER (#8846) 2024-09-20 09:28:46 +02:00
index.html Use lowercase HTTP header field names so we are compatible with HTTP/2 (#7006) 2023-01-23 11:17:54 +01:00
jest.config.js Generate coverage for Simulator based integration tests & ui tests in github actions (#7784) 2023-09-11 14:14:12 +05:30
jsconfig.json primate: initial UI v0.1 2021-01-20 07:06:11 +05:30
LICENSE Create LICENSE 2021-01-20 07:06:13 +05:30
package-lock.json ui: bump UI dependencies versions (#8923) 2024-04-17 09:08:56 +02:00
package.json Notify users when upgrades are available or restart is required for network or VPC (#7610) 2024-09-04 09:23:57 +02:00
postbuild.sh ui: prevent same string docHelp override (#5014) 2021-05-12 16:20:17 +05:30
prebuild.sh ui: prevent same string docHelp override (#5014) 2021-05-12 16:20:17 +05:30
README.md Merge LTS branch '4.19' into main 2024-04-18 08:54:58 +02:00
theme.config.js UI: Upgrade to Vue3 library (#5151) 2022-03-09 09:47:09 -03:00
vue.config.js 4.19 fix saml account selector (#10311) 2025-04-14 12:59:43 +02:00
webstorm.config.js src: add apache v2.0 license header to files 2021-01-20 07:06:14 +05:30

CloudStack UI

A modern role-based progressive CloudStack UI based on Vue.js and Ant Design.

Screenshot

Getting Started

Install node: (Debian/Ubuntu)

curl -sL https://deb.nodesource.com/setup_16.x | sudo -E bash -
sudo apt-get install -y nodejs
# Or use distro provided: sudo apt-get install npm nodejs

Install node: (CentOS/Fedora/RHEL)

curl -sL https://rpm.nodesource.com/setup_16.x | sudo bash -
sudo yum install nodejs

Install node: (Mac OS)

brew install node@16

Optionally, you may also install system-wide dev tools:

sudo npm install -g @vue/cli npm-check-updates

Development

Clone the repository:

git clone https://github.com/apache/cloudstack.git
cd cloudstack/ui
npm install

Override the default CS_URL to a running CloudStack management server:

cp .env.local.example .env.local
Change the `CS_URL` in the `.env.local` file

To configure https, you may use .env.local.https.example.

To use the community Simulator QA server you can do this:

echo "CS_URL=https://qa.cloudstack.cloud" > .env.local

Build and run:

npm run serve
# Or run: npm start

Upgrade dependencies to the latest versions:

ncu -u

Run Lint and Unit Tests:

npm run lint
npm run test:unit

Fix issues and vulnerabilities:

npm audit

A basic development guide and explaination of the basic components can be found here

Production

Fetch dependencies and build:

npm install
npm run build

This creates a static webpack application in dist/, which can then be served from any web server or CloudStack management server (jetty).

To use CloudStack management server (jetty), you may copy the built UI to the webapp directory on the management server host. For example:

npm install
npm run build
cd dist
mkdir -p /usr/share/cloudstack-management/webapp/
cp -vr . /usr/share/cloudstack-management/webapp/
# Access UI at {management-server}:8080/client in browser

If the webapp directory is changed, please change the webapp.dir in the /etc/cloudstack/management/server.properties and restart the management server host.

To use a separate webserver, note that the API server is accessed through the path /client, which needs be forwarded to an actual CloudStack instance.

For example, a simple way to serve UI with nginx can be implemented with the following nginx configuration (to be put into /etc/nginx/conf.d/default.conf or similar):

server {
    listen       80;
    server_name  localhost;
    location / {
        # /src/ui/dist contains the built UI webpack
        root   /src/ui/dist;
        index  index.html;
    }
    location /client/ {
        # http://127.0.0.1:800 should be replaced your CloudStack management
        # server's actual URI
        proxy_pass   http://127.0.0.1:8000;
    }
}

Docker

A production-ready Docker container can also be built with the provided Dockerfile and build script.

Make sure Docker is installed, then run:

bash docker.sh

Change the example configuration in nginx/default.conf according to your needs.

Run UI:

docker run -ti --rm -p 8080:80 -v $(pwd)/nginx:/etc/nginx/conf.d:ro cloudstack-ui:latest

Packaging

The following is tested to work on any Ubuntu 18.04/20.04 base installation or docker container:

# Install nodejs (lts)
curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash -
sudo apt-get install -y nodejs debhelper rpm
# Install build tools
npm install -g @vue/cli webpack eslint
# Clone this repository and run package.sh
cd <cloned-repository>/packaging
bash -x package.sh

Documentation

Attributions

The UI uses the following:

History

The modern UI, originally called Primate, was created by Rohit Yadav over several weekends during late 2018 and early 2019. During ApacheCon CCCUS19, on 9th September 2019, Primate was introduced and demoed as part of the talk Modern UI for CloudStack (video). Primate was accepted by the Apache CloudStack project on 21 Oct 2019. The original repo was merged with the main apache/cloudstack repo on 20 Jan 2021.

License

Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.