Some time ago I blogged about the possibility to link to vCloud Availability Portal directly from vCloud Director UI (here and here). This was done by inserting custom links into the vCloud Director Flex UI.
vCloud Director 9.x tenant HTML5 UI provides much richer possibilities to embed additional links, pages and full websites. My colleague Kelby Valenti wrote two whitepapers and one blog post how to do so.
VMware also already released one service that integrates its UI into vCloud Director – vRealize Operations Tenant App.
In the below screenshot you can see VCD UI extended with five new sections that appear as additional menu options next to Datacenters, Libraries and Administration:
Stub Module – default example included in the UI Extensibility SDK providing static page example (Terms of Service, etc.).
Blog – this blog embedded as iframe.
Documentation – Static page with links to vCloud Director documentation.
The last module is the vCloud Availability 2.0 portal – the subject of this article:
It is also embedded using iframe.
I am attaching the source files so you can download and adapt them for your purposes. You will also need the SDK and I recommend deployment automation created by Kelby as described in his blog post listed above.
- The actual link to the portal is in the src/main/vcav.component.ts file. In my case it is
https://portal.proxy.cpsbu.localso replace it with the correct link for your environment.
- For security reasons the vCloud Availability portal prohibits being rendered in browser frame by setting X-Frame-Options header to DENY. To work around this limitation I am replacing the header with X-Frame-Options: ALLOW-FROM <VCD-url> on the existing load balancer that is load balancing my two vCloud Availability Portal nodes as well as redirecting external port 443 to appliances’ port 8443. This is done with NSX Edge Gateway, SSL termination and the following application rule:
- The link to the portal is also passing the vCloud Director session authentication token for Single Sign-On. Note that however in the current release (2.0.1) this functionality is broken.