SSH Console

https://bugs.launchpad.net/ironic/+bug/1526305

This implements console driver – “ShellinaboxConsole” which supports console access for SSH driver (only for virsh virt_type).

Problem description

Currently there is no support to get the console for virtual machines in dev and test environments.

Proposed change

Implements a console driver – “ShellinaboxConsole” – that uses ssh+shellinabox to connect to console of virtual machines:

  • Use existing ironic/drivers/modules/console_utils module to start/stop shellinabox.

  • Add ssh_terminal_port property to CONSOLE_PROPERTIES. This is going to be port on which shellinabox listens locally.

  • Add new class ShellinaboxConsole inherited from base.ConsoleInterface in ironic/drivers/modules/ssh.py

  • Implement the following methods in ShellinaboxConsole class.
    • validate() - Validate the Node console info.
      • param task : a task from TaskManager.

      • raises : InvalidParameterValue.

      • raises : MissingParameterValue.

    • start_console() - Start a remote console for the node.

    • stop_console() - Stop the remote console session for the node.

    • get_console() - Get the type and connection information about the console.

  • Add self variable self.console in PXEAndSSHDriver and AgentAndSSHDriver.

Alternatives

None

Data model impact

None

State Machine Impact

None

REST API impact

None

Client (CLI) impact

None

RPC API impact

None

Driver API impact

None

Nova driver impact

None

Ramdisk impact

N/A

Security impact

None

Other end user impact

None

Scalability impact

None

Performance Impact

None

Other deployer impact

The following which is already part of driver_info field is required:
  • ssh_address - IP address or hostname of the node to ssh into.

  • ssh_username - Username to authenticate as.

  • ssh_virt_type - Virtualization software to use; must be virsh.

Additionally one field need to be provided with driver_info
  • ssh_terminal_port - Port to connect to, only required for console access.

Developer impact

None

Implementation

Assignee(s)

Primary assignee:

niu-zglinux

Work Items

Implement ShellinaboxConsole class inherited from base.ManagementInterface. Implement validate , start_console, stop_console, get_console. Add ability to enable pty console in devstack scripts, and leave the log console by default in order not to affect the gate logs.

Dependencies

None

Testing

Unit Testing will be added.

Upgrades and Backwards Compatibility

None

Documentation Impact

None

References

None