SlideShare a Scribd company logo
Customizing the CloudStack UI
Make UI your own!
Abhishek Kumar
Software Engineer, ShapeBlue
Agenda
• Introduction
• CloudStack UI
• New UI
• UI customisation
• Basic UI customsation
• Theme customisation
• Links to contextual help
• Plugin support
• Demo
• Advanced UI customisation
• Process
• Examples – icon/image changes, localization, other modifications
• Demo
CloudStack UI
1-1
• Functional, roles-based UI
• Supports most of the over 600 of
CloudStack API
• New, modern UI based on Vue.js and
ANT design framework added in 4.15.0
release
• Old UI deprecated in 4.15.0 and will be
removed in next LTS release 4.16.0
New UI
• Modern, intuitive
• Legacy UI had become obsolete
• Difficult to maintain with always
growing feature in CloudStack
• Matches legacy UI functionality and
features
• Based on Vue.js, Ant design
• API auto-discovery of new CloudStack
functionality
• Support desktop, tablet and mobile
screen form factors
1-2
Customizing UI
• Important for cloud operators
• Not everyone has same use-case
• Theme customization – different
branding, images, etc
• Changes after new UI
ShapeBlue blogs - Customising the CloudStack UI
https://www.shapeblue.com/customising-the-cloudstack-ui/
1-3
Basic UI customisation
For everyone
• Customisation with the help of configuration
file on the management server -
/etc/cloudstack/management/config.json
• No specific knowledge of programming
• Includes:
• Theme customisations
• Links to contextual help
• Plugin support
2-1
Theme customisations
• Customise colors, images, headers, etc.
• Changes will reflect instantly after refresh
{
"apiBase": "/client/api",
"docBase": "http://docs.cloudstack.apache.org/en/latest",
"appTitle": "Shapeblue Cloud",
...
"logo": "assets/customlogo.svg",
...
"theme": {
...
"@primary-": "#dd55ff",
...
"@warning-color": "#ff2a7f",
...
"@text-color": "#37c8ab
",
...
2-2
Links to contextual help
• New UI shows contextual help links in
different UI sections and forms
• By default, links point to CloudStack
documentation -
http://docs.cloudstack.apache.org/en/latest
• Can be customized with the configurations –
docBase and docHelpMappings
{
...
"docBase": http://mycustomwebsite.com,
...
"docHelpMappings": {
"adminguide/virtual_machines.html": "custom_vm_page.html",
"adminguide/templates.html": "custom_templates_page.html"
},
...
}
2-3
Plugin support
• Useful for displaying custom content
• Uses iFrame to display custom HTML page or
an external HTTP service
• Custom HTML file can be placed at
/usr/share/cloudstack-management/webapp
{
...
plugins: [
{
"name": "ExamplePlugin",
"icon": "appstore",
"path": "example.html"
},
{
"name": "ExamplePlugin1",
"icon": "appstore",
"path": "https://cloudstack.apache.org/"
}
]
...
}
2-4
Demo: Basic UI customisation
Advanced UI customization
Needs some programming knowledge
• Possible by changing source code files
• May look difficult but not very difficult
• Needs some understanding of Javascript,
Vue.js and nodejs
• UI code is located under ui in CloudStack
source
Documentation on UI development available in
the source/Github,
https://github.com/apache/cloudstack/blob/mas
ter/ui/docs/development.md
3-1
Advanced UI customisation: How it works?
• Get source code
Download from CloudStack website (for 4.15.1 onwards) or clone from git
repository
• Setup environment
Install dependencies, npm packages
• Build
Build using npm
• Copy built binaries
Built binaries can be copied to the management server host(s)
sudo apt-get install npm nodejs
# Install system-wide dev tools
sudo npm install -g @vue/cli npm-check-updates
npm install
npm run build
scp -rp ./ {user-on-management-server}@{management-
server}:/usr/share/cloudstack-management/webapp/
# Access UI at {management-server}:8080/client in browser
3-2
• Add custom icon in icons directory in source code
cloudstack/ui/src/assets/icons
• Change icon path in corresponding section Javascript file
Can be the path of a custom icon or name of a predefined Ant design
icons, https://vue.ant.design/components/icon/
• Build
Build UI with npm
• Copy built binaries
Built binaries can be copied
to the management server host(s)
Icon changes
3-3-1
• Make a copy of the English translation file and
replace strings
Translation json files are stored in source code at
cloudstack/ui/public/locales/
• Add option for new language in translation menu
file
A new menu entry to be added in
cloudstack/ui/src/components/header/TranslationMe
nu.vue
• Build and copy
Localization
...
:selectedKeys="[language]"
@click="onClick">
<a-menu-item key="en" value="enUS">English</a-menu-item>
+ <a-menu-item key="zz" value="hi">New Language</a-menu-item>
<a-menu-item key="hi" value="hi">हिन्दी</a-menu-item>
<a-menu-item key="ja_JP" value="jpJP">日本語</a-menu-item>
<a-menu-item key="ko_KR" value="koKR">한국어</a-menu-item>
...
⇒ ls cloudstack/ui/public/locales/ -lr
total 3112
-rw-rw-r-- 1 shwstppr shwstppr 196471 Feb 25 11:42 zz.json
-rw-rw-r-- 1 shwstppr shwstppr 186117 Feb 16 15:55 zh_CN.json
-rw-rw-r-- 1 shwstppr shwstppr 354705 Feb 16 15:55 ru_RU.json
...
3-3-2
• Make changes to concerned section Javascript or Vue
file
• Build and copy
Other modifications
...
actions: [
{
api: 'registerTemplate',
icon: 'plus',
label: 'label.action.register.template',
docHelp: 'adminguide/templates.html#uploading-templates-from-a-
remote-http-server',
listView: true,
popup: true,
+ show: (record, store) => {
+ return (['Admin',
'DomainAdmin'].includes(store.userInfo.roletype))
+ },
component: () =>
import('@/views/image/RegisterOrUploadTemplate.vue')
},
...
3-3-3
Demo: Advanced UI customisation
Possible future improvements
Add support for basic UI customisation within UI – an idea shared by Hoang Nguyen
Q & A
Thank You
Reach me at:
Twitter: @shwstppr
Email: abhishek.kumar@shapeblue.com

More Related Content

PDF
New stuff in CloudStack!
PDF
Paul Angus: CloudStack new UI (Primate)
PDF
Giles Sirett: Introduction and CloudStack news
PDF
Designing Lean CloudStack Environments for the Edge - IndiQus - CloudStack E...
PPTX
vBACD - Deploying Infrastructure-as-a-Service with CloudStack - 2/28
PDF
Dag Sonstebo - CloudStack usage service
PPTX
CloudStack EU user group - Trillian
PPTX
CloudStack news
New stuff in CloudStack!
Paul Angus: CloudStack new UI (Primate)
Giles Sirett: Introduction and CloudStack news
Designing Lean CloudStack Environments for the Edge - IndiQus - CloudStack E...
vBACD - Deploying Infrastructure-as-a-Service with CloudStack - 2/28
Dag Sonstebo - CloudStack usage service
CloudStack EU user group - Trillian
CloudStack news

What's hot (20)

PDF
Paul Angus - CloudStack Backup and Recovery Framework
PPTX
Cloudstack container service
PDF
Sven Vogel: Running CloudStack and OpenShift with NetApp on KVM
PDF
Paul Angus – Backup & Recovery in CloudStack
PPTX
Improving CloudStack for operators
PDF
CloudStack UI
PPTX
Dynamic roles in cloudstack
PDF
CloudStack and testing
PPTX
CloudStack Container Service
PPTX
Nested CloudStack with VMware
PPTX
Cloudstack: the best kept secret in the cloud
PPTX
Introduction and CloudStack news
PPTX
Using the KVMhypervisor in CloudStack
PDF
CSEUG introduction
PDF
CCCNA17 Introduction
PDF
Managing Ceph operational complexity with Juju
PDF
CCCNA17 CloudStack upgrade best practices
PPTX
CloudStack news
PDF
CCCNA17 Dynamic Roles in CloudStack
PPTX
CloudStack EU user group - CloudStack news
Paul Angus - CloudStack Backup and Recovery Framework
Cloudstack container service
Sven Vogel: Running CloudStack and OpenShift with NetApp on KVM
Paul Angus – Backup & Recovery in CloudStack
Improving CloudStack for operators
CloudStack UI
Dynamic roles in cloudstack
CloudStack and testing
CloudStack Container Service
Nested CloudStack with VMware
Cloudstack: the best kept secret in the cloud
Introduction and CloudStack news
Using the KVMhypervisor in CloudStack
CSEUG introduction
CCCNA17 Introduction
Managing Ceph operational complexity with Juju
CCCNA17 CloudStack upgrade best practices
CloudStack news
CCCNA17 Dynamic Roles in CloudStack
CloudStack EU user group - CloudStack news
Ad

Similar to Customising the CloudStack UI - CloudStack European User Group Virtual, May 2021 (20)

PPTX
Office 365 Saturday (Sydney) - SharePoint framework – build integrated user e...
PPTX
Using and extending Alfresco Content Application
PDF
SPUnite17 Building Great Client Side Web Parts with SPFx
PDF
SPUnite17 Become a Developer Hero by Building Office Add ins
PPTX
Short-Training asp.net vNext
PDF
2.28.17 Introducing DSpace 7 Webinar Slides
PDF
How Macroscope is customized, built and deployed
PPT
Creation&imitation
PDF
SPS Paris: Building great client-side web parts with spfx, pnp-js-core, React...
PDF
D1 - Building Great Client-side Web Parts with SPFx, PnP-JS-Core, ReactJS and...
PPTX
Innovations in Sencha Tooling and Framework
PDF
The App Developer's Kubernetes Toolbox
PDF
Staging Drupal 8 31 09 1 3
PPTX
Introduction to SharePoint Framework (SPFx)
PDF
Unlocking the power of the APEX Plugin Architecture
PPTX
PPTX
Expo Router V2
PDF
Dependencies, dependencies, dependencies
PPTX
CCI 2017 - Introduzione a SharePoint Framework (SPFx) - Fabio Franzini
PDF
Cloud Foundry Summit Europe 2018 - Deveveloper Experience with Cloud Foundry ...
Office 365 Saturday (Sydney) - SharePoint framework – build integrated user e...
Using and extending Alfresco Content Application
SPUnite17 Building Great Client Side Web Parts with SPFx
SPUnite17 Become a Developer Hero by Building Office Add ins
Short-Training asp.net vNext
2.28.17 Introducing DSpace 7 Webinar Slides
How Macroscope is customized, built and deployed
Creation&imitation
SPS Paris: Building great client-side web parts with spfx, pnp-js-core, React...
D1 - Building Great Client-side Web Parts with SPFx, PnP-JS-Core, ReactJS and...
Innovations in Sencha Tooling and Framework
The App Developer's Kubernetes Toolbox
Staging Drupal 8 31 09 1 3
Introduction to SharePoint Framework (SPFx)
Unlocking the power of the APEX Plugin Architecture
Expo Router V2
Dependencies, dependencies, dependencies
CCI 2017 - Introduzione a SharePoint Framework (SPFx) - Fabio Franzini
Cloud Foundry Summit Europe 2018 - Deveveloper Experience with Cloud Foundry ...
Ad

More from ShapeBlue (20)

PPTX
The Yotta x CloudStack Advantage: Scalable, India-First Cloud
PPTX
Simplifying End-to-End Apache CloudStack Deployment with a Web-Based Automati...
PPTX
Extensions Framework (XaaS) - Enabling Orchestrate Anything
PDF
CloudStack GPU Integration - Rohit Yadav
PPTX
Building and Operating a Private Cloud with CloudStack and LINBIT CloudStack ...
PDF
Ampere Offers Energy-Efficient Future For AI And Cloud
PDF
Empowering Cloud Providers with Apache CloudStack and Stackbill
PDF
Apache CloudStack 201: Let's Design & Build an IaaS Cloud
PDF
Meetup Kickoff & Welcome - Rohit Yadav, CSIUG Chairman
PDF
Fully Open-Source Private Clouds: Freedom, Security, and Control
PPTX
Pushing the Limits: CloudStack at 25K Hosts
PPTX
Stretching CloudStack over multiple datacenters
PPTX
Proposed Feature: Monitoring and Managing Cloud Usage Costs in Apache CloudStack
PPSX
CloudStack + KVM: Your Local Cloud Lab
PDF
I’d like to resell your CloudStack services, but...
PDF
Storage Setup for LINSTOR/DRBD/CloudStack
PDF
Apache CloudStack 101 - Introduction, What’s New and What’s Coming
PDF
Development of an Оbject Storage Plugin for CloudStack, Christian Reichert, s...
PDF
VM-HA with CloudStack and Linstor, Rene Peinthor
PDF
How We Use CloudStack to Provide Managed Hosting, Swen Brüseke, proIO
The Yotta x CloudStack Advantage: Scalable, India-First Cloud
Simplifying End-to-End Apache CloudStack Deployment with a Web-Based Automati...
Extensions Framework (XaaS) - Enabling Orchestrate Anything
CloudStack GPU Integration - Rohit Yadav
Building and Operating a Private Cloud with CloudStack and LINBIT CloudStack ...
Ampere Offers Energy-Efficient Future For AI And Cloud
Empowering Cloud Providers with Apache CloudStack and Stackbill
Apache CloudStack 201: Let's Design & Build an IaaS Cloud
Meetup Kickoff & Welcome - Rohit Yadav, CSIUG Chairman
Fully Open-Source Private Clouds: Freedom, Security, and Control
Pushing the Limits: CloudStack at 25K Hosts
Stretching CloudStack over multiple datacenters
Proposed Feature: Monitoring and Managing Cloud Usage Costs in Apache CloudStack
CloudStack + KVM: Your Local Cloud Lab
I’d like to resell your CloudStack services, but...
Storage Setup for LINSTOR/DRBD/CloudStack
Apache CloudStack 101 - Introduction, What’s New and What’s Coming
Development of an Оbject Storage Plugin for CloudStack, Christian Reichert, s...
VM-HA with CloudStack and Linstor, Rene Peinthor
How We Use CloudStack to Provide Managed Hosting, Swen Brüseke, proIO

Recently uploaded (20)

PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PDF
Review of recent advances in non-invasive hemoglobin estimation
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
DOCX
The AUB Centre for AI in Media Proposal.docx
PDF
KodekX | Application Modernization Development
PDF
Encapsulation theory and applications.pdf
PDF
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PDF
Approach and Philosophy of On baking technology
PDF
Network Security Unit 5.pdf for BCA BBA.
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PDF
Empathic Computing: Creating Shared Understanding
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PDF
Spectral efficient network and resource selection model in 5G networks
PPTX
Programs and apps: productivity, graphics, security and other tools
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PPT
Teaching material agriculture food technology
Diabetes mellitus diagnosis method based random forest with bat algorithm
Review of recent advances in non-invasive hemoglobin estimation
Advanced methodologies resolving dimensionality complications for autism neur...
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
The AUB Centre for AI in Media Proposal.docx
KodekX | Application Modernization Development
Encapsulation theory and applications.pdf
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Approach and Philosophy of On baking technology
Network Security Unit 5.pdf for BCA BBA.
Mobile App Security Testing_ A Comprehensive Guide.pdf
Digital-Transformation-Roadmap-for-Companies.pptx
Empathic Computing: Creating Shared Understanding
Building Integrated photovoltaic BIPV_UPV.pdf
Spectral efficient network and resource selection model in 5G networks
Programs and apps: productivity, graphics, security and other tools
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
Teaching material agriculture food technology

Customising the CloudStack UI - CloudStack European User Group Virtual, May 2021

  • 1. Customizing the CloudStack UI Make UI your own! Abhishek Kumar Software Engineer, ShapeBlue
  • 2. Agenda • Introduction • CloudStack UI • New UI • UI customisation • Basic UI customsation • Theme customisation • Links to contextual help • Plugin support • Demo • Advanced UI customisation • Process • Examples – icon/image changes, localization, other modifications • Demo
  • 3. CloudStack UI 1-1 • Functional, roles-based UI • Supports most of the over 600 of CloudStack API • New, modern UI based on Vue.js and ANT design framework added in 4.15.0 release • Old UI deprecated in 4.15.0 and will be removed in next LTS release 4.16.0
  • 4. New UI • Modern, intuitive • Legacy UI had become obsolete • Difficult to maintain with always growing feature in CloudStack • Matches legacy UI functionality and features • Based on Vue.js, Ant design • API auto-discovery of new CloudStack functionality • Support desktop, tablet and mobile screen form factors 1-2
  • 5. Customizing UI • Important for cloud operators • Not everyone has same use-case • Theme customization – different branding, images, etc • Changes after new UI ShapeBlue blogs - Customising the CloudStack UI https://www.shapeblue.com/customising-the-cloudstack-ui/ 1-3
  • 6. Basic UI customisation For everyone • Customisation with the help of configuration file on the management server - /etc/cloudstack/management/config.json • No specific knowledge of programming • Includes: • Theme customisations • Links to contextual help • Plugin support 2-1
  • 7. Theme customisations • Customise colors, images, headers, etc. • Changes will reflect instantly after refresh { "apiBase": "/client/api", "docBase": "http://docs.cloudstack.apache.org/en/latest", "appTitle": "Shapeblue Cloud", ... "logo": "assets/customlogo.svg", ... "theme": { ... "@primary-": "#dd55ff", ... "@warning-color": "#ff2a7f", ... "@text-color": "#37c8ab ", ... 2-2
  • 8. Links to contextual help • New UI shows contextual help links in different UI sections and forms • By default, links point to CloudStack documentation - http://docs.cloudstack.apache.org/en/latest • Can be customized with the configurations – docBase and docHelpMappings { ... "docBase": http://mycustomwebsite.com, ... "docHelpMappings": { "adminguide/virtual_machines.html": "custom_vm_page.html", "adminguide/templates.html": "custom_templates_page.html" }, ... } 2-3
  • 9. Plugin support • Useful for displaying custom content • Uses iFrame to display custom HTML page or an external HTTP service • Custom HTML file can be placed at /usr/share/cloudstack-management/webapp { ... plugins: [ { "name": "ExamplePlugin", "icon": "appstore", "path": "example.html" }, { "name": "ExamplePlugin1", "icon": "appstore", "path": "https://cloudstack.apache.org/" } ] ... } 2-4
  • 10. Demo: Basic UI customisation
  • 11. Advanced UI customization Needs some programming knowledge • Possible by changing source code files • May look difficult but not very difficult • Needs some understanding of Javascript, Vue.js and nodejs • UI code is located under ui in CloudStack source Documentation on UI development available in the source/Github, https://github.com/apache/cloudstack/blob/mas ter/ui/docs/development.md 3-1
  • 12. Advanced UI customisation: How it works? • Get source code Download from CloudStack website (for 4.15.1 onwards) or clone from git repository • Setup environment Install dependencies, npm packages • Build Build using npm • Copy built binaries Built binaries can be copied to the management server host(s) sudo apt-get install npm nodejs # Install system-wide dev tools sudo npm install -g @vue/cli npm-check-updates npm install npm run build scp -rp ./ {user-on-management-server}@{management- server}:/usr/share/cloudstack-management/webapp/ # Access UI at {management-server}:8080/client in browser 3-2
  • 13. • Add custom icon in icons directory in source code cloudstack/ui/src/assets/icons • Change icon path in corresponding section Javascript file Can be the path of a custom icon or name of a predefined Ant design icons, https://vue.ant.design/components/icon/ • Build Build UI with npm • Copy built binaries Built binaries can be copied to the management server host(s) Icon changes 3-3-1
  • 14. • Make a copy of the English translation file and replace strings Translation json files are stored in source code at cloudstack/ui/public/locales/ • Add option for new language in translation menu file A new menu entry to be added in cloudstack/ui/src/components/header/TranslationMe nu.vue • Build and copy Localization ... :selectedKeys="[language]" @click="onClick"> <a-menu-item key="en" value="enUS">English</a-menu-item> + <a-menu-item key="zz" value="hi">New Language</a-menu-item> <a-menu-item key="hi" value="hi">हिन्दी</a-menu-item> <a-menu-item key="ja_JP" value="jpJP">日本語</a-menu-item> <a-menu-item key="ko_KR" value="koKR">한국어</a-menu-item> ... ⇒ ls cloudstack/ui/public/locales/ -lr total 3112 -rw-rw-r-- 1 shwstppr shwstppr 196471 Feb 25 11:42 zz.json -rw-rw-r-- 1 shwstppr shwstppr 186117 Feb 16 15:55 zh_CN.json -rw-rw-r-- 1 shwstppr shwstppr 354705 Feb 16 15:55 ru_RU.json ... 3-3-2
  • 15. • Make changes to concerned section Javascript or Vue file • Build and copy Other modifications ... actions: [ { api: 'registerTemplate', icon: 'plus', label: 'label.action.register.template', docHelp: 'adminguide/templates.html#uploading-templates-from-a- remote-http-server', listView: true, popup: true, + show: (record, store) => { + return (['Admin', 'DomainAdmin'].includes(store.userInfo.roletype)) + }, component: () => import('@/views/image/RegisterOrUploadTemplate.vue') }, ... 3-3-3
  • 16. Demo: Advanced UI customisation
  • 17. Possible future improvements Add support for basic UI customisation within UI – an idea shared by Hoang Nguyen
  • 18. Q & A Thank You Reach me at: Twitter: @shwstppr Email: abhishek.kumar@shapeblue.com