Nova Server VNC Console Attribute

Launchpad blueprint:

https://blueprints.launchpad.net/heat/+spec/vnc-console-attr

Problem description

As an end user, if I want to retrieve the vnc console url of a server resource in heat stack, I need to combine heat resource-list and nova get-vnc-console to get the result. For example:

heat resource-list <stack_name> # get physical_resource_id
nova get-vnc-console <physical_resource_id> <vnc_console_type>

We should provide a way for template developers to show console url(for example, vnc, rdp and spice) in stack outputs.

Usage Scenario

Get novnc console url:

heat_template_version: 2013-05-23
resources:
  server:
    type: "OS::Nova::Server"
    properties:
      image: fedora
      key_name: heat_key
      flavor: m1.small
outputs:
  vnc_console_url:
    value:
      get_attr: [server, console_urls, novnc]

So the novnc console url can be retrieved via heat output-show <stack> vnc_console_url.

Get xvpvnc console url:

heat_template_version: 2013-05-23
resources:
  server:
    type: "OS::Nova::Server"
    properties:
      image: fedora
      key_name: heat_key
      flavor: m1.small
outputs:
  vnc_console_url:
    value:
      get_attr: [server, console_urls, xvpvnc]

So the xvpvnc console url can be retrieved via heat output-show <stack> vnc_console_url.

Get spice console url:

heat_template_version: 2013-05-23
resources:
  server:
    type: "OS::Nova::Server"
    properties:
      image: fedora
      key_name: heat_key
      flavor: m1.small
outputs:
  spice_console_url:
    value:
      get_attr: [server, console_urls, spice-html5]

Proposed change

Add composite attribute console_urls to OS::Nova::Server resource. When get_attr is invoked, return the console URL according the key supplied to this attribute, or URLs for all supported types when no key is provided. Gracefully deal with the case when the type of the console being asked for is not available in current deployment.

Alternatives

None

Implementation

Assignee(s)

Primary assignee:
pshchelo

Milestones

Target Milestone for completion:
Kilo-1

Work Items

  • implement get_console_urls method in Nova client plugin;
  • add console_urls attribute to OS::Nova::Server resource.

Dependencies

No dependency on other spec or additional library.