ironic-specs/specs/approved/ssh-console-support.rst

159 lines
3.2 KiB
ReStructuredText

..
This work is licensed under a Creative Commons Attribution 3.0 Unported
License.
http://creativecommons.org/licenses/by/3.0/legalcode
===========
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
.. NOTE: This section was not present at the time this spec was approved.
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