[RFC] Addition attribute required to specify console type for VM(s)/ template(s) for s390x specific architecture only.

Hi All, Currently on x86 or ppc, console type does not need to be passed from API and hence we do not have API to specify type of console in VM(s)/ template(s). On s390x architecture, two type of console sclp or virtio are supported. And hence we need to update VM(s)/template(s) API to have attribute to get and modify type of console. console (s390x only): Specify the console parameter. type: sclp/virtio. If not provided, default sclp. Below are the list of current API and proposed API which need to have addition parameter 'console' and its type: 1) GET list of VMs and its attribute and Create VM. *Current:* Collection: Virtual Machines URI: /plugins/kimchi/vms Methods: GET: Retrieve a summarized list of all defined Virtual Machines POST: Create a new Virtual Machine name (optional): The name of the VM. Used to identify the VM in this API. If omitted, a name will be chosen based on the template used. persistent: If 'true', vm will persist after a Power Off or host reboot. All virtual machines created by Kimchi are persistent. template: The URI of a Template to use when building the VM storagepool (optional): Assign a specific Storage Pool to the new VM graphics (optional): Specify the graphics parameter for this vm type: The type of graphics. It can be VNC or spice or None. vnc: Graphical display using the Virtual Network Computing protocol spice: Graphical display using the Simple Protocol for Independent Computing Environments null: Graphics is disabled or type not supported listen: The network which the vnc/spice server listens on. description: VM description title: VM title *Proposed:* Collection: Virtual Machines URI: /plugins/kimchi/vms Methods: GET: Retrieve a summarized list of all defined Virtual Machines POST: Create a new Virtual Machine name (optional): The name of the VM. Used to identify the VM in this API. If omitted, a name will be chosen based on the template used. persistent: If 'true', vm will persist after a Power Off or host reboot. All virtual machines created by Kimchi are persistent. template: The URI of a Template to use when building the VM storagepool (optional): Assign a specific Storage Pool to the new VM graphics (optional): Specify the graphics paramenter for this vm type: The type of graphics. It can be VNC or spice or None. vnc: Graphical display using the Virtual Network Computing protocol spice: Graphical display using the Simple Protocol for Independent Computing Environments null: Graphics is disabled or type not supported listen: The network which the vnc/spice server listens on. * console (s390x only): Specify the console parameter for this vm.** ** type: sclp/virtio.** ** If not provided, default sclp.* description: VM description title: VM title 2) GET details of a VM. *Current:* Resource: Virtual Machine URI: /plugins/kimchi/vms/:name Methods: GET: Retrieve the full description of a Virtual Machine name: The name of the VM. Used to identify the VM in this API state: Indicates the current state in the VM lifecycle running: The VM is powered on paused: The VMs virtual CPUs are paused shutoff: The VM is powered off stats: Virtual machine statistics: cpu_utilization: A number between 0 and 100 which indicates the percentage of CPU utilization. mem_utilization: A number between 0 and 100 which indicates the percentage of memory utilization. net_throughput: Expresses total network throughput for reads and writes across all virtual interfaces (kb/s). net_throughput_peak: The highest recent value of 'net_throughput'. io_throughput: Expresses the total IO throughput for reads and writes across all virtual disks (kb/s). io_throughput_peak: The highest recent value of 'io_throughput'. uuid: UUID of the VM. memory: The memory parameters of the VM in the unit of MiB. current: The amount of memory that is assigned to the VM. maxmemory: The maximum total of memory that the VM can have. Amount over current will be used exclusively for memory hotplug cpu_info: CPU-specific information. vcpus: The number of CPUs assigned to the VM maxvcpus: The maximum number of CPUs that can be assigned to the VM topology: Processor topology, includes: sockets - The maximum number of sockets to use. cores - The number of cores per socket. threads - The number of threads per core. screenshot: A link to a recent capture of the screen in PNG format icon: A link to an icon that represents the VM graphics: A dict to show detail of VM graphics. type: The type of graphics. It can be VNC or spice or None. vnc: Graphical display using the Virtual Network Computing protocol spice: Graphical display using the Simple Protocol for Independent Computing Environments null: Graphics is disabled or type not supported listen: The network which the vnc/spice server listens on. port: The real port number of the graphics, vnc or spice. Users can use this port to connect to the vm with general vnc/spice clients. passwd: console password passwdValidTo: lifetime for the console password. users: A list of system users who have permission to access the VM. Default is: empty (i.e. only root-users may access). groups: A list of system groups whose users have permission to access the VM. Default is: empty (i.e. no groups given access). bootorder: list of devices in boot order description: VM description title: VM title *Proposed:* Resource: Virtual Machine URI: /plugins/kimchi/vms/:name Methods: GET: Retrieve the full description of a Virtual Machine name: The name of the VM. Used to identify the VM in this API state: Indicates the current state in the VM lifecycle running: The VM is powered on paused: The VMs virtual CPUs are paused shutoff: The VM is powered off stats: Virtual machine statistics: cpu_utilization: A number between 0 and 100 which indicates the percentage of CPU utilization. mem_utilization: A number between 0 and 100 which indicates the percentage of memory utilization. net_throughput: Expresses total network throughput for reads and writes across all virtual interfaces (kb/s). net_throughput_peak: The highest recent value of 'net_throughput'. io_throughput: Expresses the total IO throughput for reads and writes across all virtual disks (kb/s). io_throughput_peak: The highest recent value of 'io_throughput'. uuid: UUID of the VM. memory: The memory parameters of the VM in the unit of MiB. current: The amount of memory that is assigned to the VM. maxmemory: The maximum total of memory that the VM can have. Amount over current will be used exclusively for memory hotplug cpu_info: CPU-specific information. vcpus: The number of CPUs assigned to the VM maxvcpus: The maximum number of CPUs that can be assigned to the VM topology: Processor topology, includes: sockets - The maximum number of sockets to use. cores - The number of cores per socket. threads - The number of threads per core. screenshot: A link to a recent capture of the screen in PNG format icon: A link to an icon that represents the VM graphics: A dict to show detail of VM graphics. type: The type of graphics. It can be VNC or spice or None. vnc: Graphical display using the Virtual Network Computing protocol spice: Graphical display using the Simple Protocol for Independent Computing Environments null: Graphics is disabled or type not supported listen: The network which the vnc/spice server listens on. port: The real port number of the graphics, vnc or spice. Users can use this port to connect to the vm with general vnc/spice clients. passwd: console password passwdValidTo: lifetime for the console password. * console (s390x only, optional): Specify the console parameter for this vm.** ** type: sclp/virtio.** ** If not provided, default sclp.* users: A list of system users who have permission to access the VM. Default is: empty (i.e. only root-users may access). groups: A list of system groups whose users have permission to access the VM. Default is: empty (i.e. no groups given access). bootorder: list of devices in boot order description: VM description title: VM title 3) Update a VM details *Current:* Resource: Virtual Machine URI: /plugins/kimchi/vms/:name Method: PUT: update the parameters of existing VM name: New name for this VM (only applied for shutoff VM) users: New list of system users. groups: New list of system groups. memory: New memory parameters of the VM in the unit of MiB. Provide one or both. current: New amount of memory that will be assigned to the VM. maxmemory: New maximum total of memory that the VM can have. graphics: A dict to show detail of VM graphics. passwd (optional): console password. When omitted a random password willbe generated. passwdValidTo (optional): lifetime for the console password. When omitted the password will be valid just for 30 seconds. type (optional): graphics type. VNC or Spice. cpu_info (optional): CPU-specific information. maxvcpus (optional): The maximum number of vCPUs that can be assigned to the VM. If topology is specified, maxvcpus must be a product of sockets, cores and threads. vcpus (optional): The number of vCPUs assigned to the VM. Default is 1, unless a CPU topology is specified. In that case, vcpus must be a multiple of a product of cores and threads, and will default to maxvcpus value. topology (optional): Specify sockets, threads, and cores to run the virtual CPU threads on. All three are required. sockets - The maximum number of sockets to use. cores - The number of cores per socket. threads - The number of threads per core. bootorder: guest bootorder, types accepted: hd, cdrom, network or fd bootmenu: prompts guest bootmenu. Bool type. description: VM description title: VM title *Proposed:* Resource: Virtual Machine URI: /plugins/kimchi/vms/:name Method: PUT: update the parameters of existing VM name: New name for this VM (only applied for shutoff VM) users: New list of system users. groups: New list of system groups. memory: New memory parameters of the VM in the unit of MiB. Provide one or both. current: New amount of memory that will be assigned to the VM. maxmemory: New maximum total of memory that the VM can have. graphics: A dict to show detail of VM graphics. passwd (optional): console password. When omitted a random password willbe generated. passwdValidTo (optional): lifetime for the console password. When omitted the password will be valid just for 30 seconds. type (optional): graphics type. VNC or Spice. * console (s390x only, optional): Specify the console parameter for this vm.** ** type: sclp/virtio.** ** If not provided, default sclp.* cpu_info (optional): CPU-specific information. maxvcpus (optional): The maximum number of vCPUs that can be assigned to the VM. If topology is specified, maxvcpus must be a product of sockets, cores and threads. vcpus (optional): The number of vCPUs assigned to the VM. Default is 1, unless a CPU topology is specified. In that case, vcpus must be a multiple of a product of cores and threads, and will default to maxvcpus value. topology (optional): Specify sockets, threads, and cores to run the virtual CPU threads on. All three are required. sockets - The maximum number of sockets to use. cores - The number of cores per socket. threads - The number of threads per core. bootorder: guest bootorder, types accepted: hd, cdrom, network or fd bootmenu: prompts guest bootmenu. Bool type. description: VM description title: VM title 4) Get templates and create a template. * **Current:* Collection: Templates URI: /plugins/kimchi/templates Methods: GET: Retrieve a summarized list of all defined Templates POST: Create a new Template name: The name of the Template. Used to identify the Template in this API source_media: dictionary. The type of media to be used in the installation. type: the type of the media. Values: 'netboot' and 'disk'. path: applicable for type = 'disk' only. Indicates the path of the source media. os_distro (optional): The operating system distribution os_version (optional): The version of the operating system distribution memory (optional): The memory parameters of the template, specify one or both. Default values are 1024MiB: current: The amount of memory that will be assigned to the VM. maxmemory: The maximum total of memory that the VM can have. Amount over current will be used exclusively for memory hotplug networks (optional): list of networks will be assigned to the new VM. Default is '[default]' disks (optional): An array of requested disks with the following optional fields (either size or volume must be specified): index: The device index size: The device size in GB format: Format of the image. Valid formats: qcow, qcow2, qed, raw, vmdk, vpc pool: Storage pool information name: URI of the storagepool where disk will be created graphics (optional): The graphics paramenters of this template type: The type of graphics. It can be VNC or spice or None. vnc: Graphical display using the Virtual Network Computing protocol spice: Graphical display using the Simple Protocol for Independent Computing Environments null: Graphics is disabled or type not supported listen: The network which the vnc/spice server listens on. cpu_info (optional): CPU-specific information. maxvcpus (optional): The maximum number of vCPUs that can be assigned to the VM. If topology is specified, maxvcpus must be a product of sockets, cores and threads. vcpus (optional): The number of vCPUs assigned to the VM. Default is 1, unless a CPU topology is specified. In that case, vcpus must be a multiple of a product of cores and threads, and will default to maxvcpus value. topology (optional): Specify sockets, threads, and cores to run the virtual CPU threads on. All three are required. sockets - The maximum number of sockets to use. cores - The number of cores per socket. threads - The number of threads per core. *Proposed:* Collection: Templates URI: /plugins/kimchi/templates Methods: GET: Retrieve a summarized list of all defined Templates POST: Create a new Template name: The name of the Template. Used to identify the Template in this API source_media: dictionary. The type of media to be used in the installation. type: the type of the media. Values: 'netboot' and 'disk'. path: applicable for type = 'disk' only. Indicates the path of the source media. os_distro (optional): The operating system distribution os_version (optional): The version of the operating system distribution memory (optional): The memory parameters of the template, specify one or both. Default values are 1024MiB: current: The amount of memory that will be assigned to the VM. maxmemory: The maximum total of memory that the VM can have. Amount over current will be used exclusively for memory hotplug networks (optional): list of networks will be assigned to the new VM. Default is '[default]' disks (optional): An array of requested disks with the following optional fields (either size or volume must be specified): index: The device index size: The device size in GB format: Format of the image. Valid formats: qcow, qcow2, qed, raw, vmdk, vpc pool: Storage pool information name: URI of the storagepool where disk will be created graphics (optional): The graphics paramenters of this template type: The type of graphics. It can be VNC or spice or None. vnc: Graphical display using the Virtual Network Computing protocol spice: Graphical display using the Simple Protocol for Independent Computing Environments null: Graphics is disabled or type not supported listen: The network which the vnc/spice server listens on. * console (s390x only, optional): Specify the console parameter for this template.** ** type:sclp/virtio.** ** If not provided, default sclp.* cpu_info (optional): CPU-specific information. maxvcpus (optional): The maximum number of vCPUs that can be assigned to the VM. If topology is specified, maxvcpus must be a product of sockets, cores and threads. vcpus (optional): The number of vCPUs assigned to the VM. Default is 1, unless a CPU topology is specified. In that case, vcpus must be a multiple of a product of cores and threads, and will default to maxvcpus value. topology (optional): Specify sockets, threads, and cores to run the virtual CPU threads on. All three are required. sockets - The maximum number of sockets to use. cores - The number of cores per socket. threads - The number of threads per core. 5) Get a template details. *Current:-* Resource: Template URI: /plugins/kimchi/templates/:name Methods: GET: Retrieve the full description of a Template name: A name for this template folder: A virtual path which can be used to organize Templates in a user interface. The format is an array of path components. icon: A URI to a PNG image representing this template os_distro: The operating system distribution os_version: The version of the operating system distribution memory: The memory parameters of the template, that will be assigned to the VM in the unit of MiB. current: The amount of memory that will be assigned to the VM. maxmemory: The maximum total of memory that the VM can have. Amount over current will be used exclusively for memory hotplug cdrom: A volume name or URI to an ISO image storagepool: URI of the storagepool where template allocates vm storage. networks (optional): list of networks will be assigned to the new VM. interfaces (optional): list of host network interfaces will be assigned to the new VM. Only applicable for s390x or s390 architecture. type: Type of host network interface. Type should be 'macvtap' for host network interface (Ethernet, Bond, VLAN) to be connected as direct MacVTap; or 'ovs' for openvswitch host network interface to be connected as virtual switch to a VM. name: The host network interface. It should be the host network interface (Ethernet, Bond, VLAN) for type 'macvtap' or host openvswitch bridge interface for type 'ovs'. mode (optional): Only applicable for interface type macvtap, to indicates whether packets will be delivered directly to target device(bridge) or to the external bridge(vepa-capable bridge). bridge: If packets have a destination on the host from which they originated, they are delivered directly to the target. For direct delivery, both origin and destination devices need to be in bridge mode. If either the origin or destination is in vepa mode, VEPA-capable bridge is required. vepa: All packets are sent to the external bridge. If packets have a destination on the host from which they originated, the VEPA-capable bridge will return the packets to the host. disks: An array of requested disks with the following optional fields (either size or volume must be specified): index: The device index size: The device size in GB volume: A volume name that contains the initial disk contents format: Format of the image. Valid formats: qcow, qcow2, qed, raw, vmdk, vpc. pool: Information about the pool where disk or volume will be created name: URI of the storagepool type: Type of the storagepool (dir, nfs, scsci, iscsi, etc) graphics: A dict of graphics paramenters of this template type: The type of graphics. It can be VNC or spice or None. vnc: Graphical display using the Virtual Network Computing protocol spice: Graphical display using the Simple Protocol for Independent Computing Environments null: Graphics is disabled or type not supported listen: The network which the vnc/spice server listens on. invalid: A dict indicates which paramenters of this template are invalid. networks (optional): An array of invalid network names. cdrom (optional): An array of invalid cdrom names. disks (optional): An array of invalid volume names. storagepools (optional): An array of invalid storagepool names. cpu_info: CPU-specific information. vcpus: The number of CPUs assigned to the VM maxvcpus: The maximum number of CPUs that can be assigned to the VM topology: Processor topology, includes: sockets - The maximum number of sockets to use. cores - The number of cores per socket. threads - The number of threads per core. *Proposed:-* Resource: Template URI: /plugins/kimchi/templates/:name Methods: GET: Retrieve the full description of a Template name: A name for this template folder: A virtual path which can be used to organize Templates in a user interface. The format is an array of path components. icon: A URI to a PNG image representing this template os_distro: The operating system distribution os_version: The version of the operating system distribution memory: The memory parameters of the template, that will be assigned to the VM in the unit of MiB. current: The amount of memory that will be assigned to the VM. maxmemory: The maximum total of memory that the VM can have. Amount over current will be used exclusively for memory hotplug cdrom: A volume name or URI to an ISO image storagepool: URI of the storagepool where template allocates vm storage. networks (optional): list of networks will be assigned to the new VM. interfaces (optional): list of host network interfaces will be assigned to the new VM. Only applicable for s390x or s390 architecture. type: Type of host network interface. Type should be 'macvtap' for host network interface (Ethernet, Bond, VLAN) to be connected as direct MacVTap; or 'ovs' for openvswitch host network interface to be connected as virtual switch to a VM. name: The host network interface. It should be the host network interface (Ethernet, Bond, VLAN) for type 'macvtap' or host openvswitch bridge interface for type 'ovs'. mode (optional): Only applicable for interface type macvtap, to indicates whether packets will be delivered directly to target device(bridge) or to the external bridge(vepa-capable bridge). bridge: If packets have a destination on the host from which they originated, they are delivered directly to the target. For direct delivery, both origin and destination devices need to be in bridge mode. If either the origin or destination is in vepa mode, VEPA-capable bridge is required. vepa: All packets are sent to the external bridge. If packets have a destination on the host from which they originated, the VEPA-capable bridge will return the packets to the host. disks: An array of requested disks with the following optional fields (either size or volume must be specified): index: The device index size: The device size in GB volume: A volume name that contains the initial disk contents format: Format of the image. Valid formats: qcow, qcow2, qed, raw, vmdk, vpc. pool: Information about the pool where disk or volume will be created name: URI of the storagepool type: Type of the storagepool (dir, nfs, scsci, iscsi, etc) graphics: A dict of graphics paramenters of this template type: The type of graphics. It can be VNC or spice or None. vnc: Graphical display using the Virtual Network Computing protocol spice: Graphical display using the Simple Protocol for Independent Computing Environments null: Graphics is disabled or type not supported listen: The network which the vnc/spice server listens on. * console (s390x only, optional): Specify the console parameter for this template.** ** type:sclp/virtio.** ** If not provided, default sclp.* invalid: A dict indicates which paramenters of this template are invalid. networks (optional): An array of invalid network names. cdrom (optional): An array of invalid cdrom names. disks (optional): An array of invalid volume names. storagepools (optional): An array of invalid storagepool names. cpu_info: CPU-specific information. vcpus: The number of CPUs assigned to the VM maxvcpus: The maximum number of CPUs that can be assigned to the VM topology: Processor topology, includes: sockets - The maximum number of sockets to use. cores - The number of cores per socket. threads - The number of threads per core. 6) Update existing template. *Current:* Resource: Template URI: /plugins/kimchi/templates/:name Method: PUT: update the parameters of existed template name: A name for this template folder: A virtual path which can be used to organize Templates in the user interface. The format is an array of path components. icon: A URI to a PNG image representing this template os_distro: The operating system distribution os_version: The version of the operating system distribution memory: The memory parameters of the template, specify one or both of: current: The amount of memory that will be assigned to the VM. maxmemory: The maximum total of memory that the VM can have. Amount over current will be used exclusively for memory hotplug cdrom: A volume name or URI to an ISO image networks (optional): list of networks will be assigned to the new VM. interfaces (optional): list of host network interfaces will be assigned to the new VM. Only applicable for s390x or s390 architecture. type: Type of host network interface. Type should be 'macvtap' for host network interface (Ethernet, Bond, VLAN) to be connected as direct MacVTap; or 'ovs' for openvswitch host network interface to be connected as virtual switch to a VM. name: The host network interface. It should be the host network interface (Ethernet, Bond, VLAN) for type 'macvtap' or host openvswitch bridge interface for type 'ovs'. mode (optional): Only applicable for interface type macvtap, to indicates whether packets will be delivered directly to target device(bridge) or to the external bridge(vepa-capable bridge). bridge: If packets have a destination on the host from which they originated, they are delivered directly to the target. For direct delivery, both origin and destination devices need to be in bridge mode. If either the origin or destination is in vepa mode, VEPA-capable bridge is required. vepa: All packets are sent to the external bridge. If packets have a destination on the host from which they originated, the VEPA-capable bridge will return the packets to the host. disks: An array of requested disks with the following optional fields (either size or volume must be specified): index: The device index size: The device size in GB volume: A volume name that contains the initial disk contents format: Format of the image. Valid formats: qcow, qcow2, qed, raw, vmdk, vpc. pool: Storage pool information name: URI of the storagepool where template allocates vm disk. graphics (optional): A dict of graphics paramenters of this template type: The type of graphics. It can be VNC or spice or None. vnc: Graphical display using the Virtual Network Computing protocol spice: Graphical display using the Simple Protocol for Independent Computing Environments null: Graphics is disabled or type not supported listen: The network which the vnc/spice server listens on. cpu_info (optional): CPU-specific information. maxvcpus (optional): The maximum number of vCPUs that can be assigned to the VM. If topology is specified, maxvcpus must be a product of sockets, cores and threads. vcpus (optional): The number of vCPUs assigned to the VM. Default is 1, unless a CPU topology is specified. In that case, vcpus must be a multiple of a product of cores and threads, and will default to maxvcpus value. topology (optional): Specify sockets, threads, and cores to run the virtual CPU threads on. All three are required. sockets - The maximum number of sockets to use. cores - The number of cores per socket. threads - The number of threads per core. *Proposed:-* Resource: Template URI: /plugins/kimchi/templates/:name Method: PUT: update the parameters of existed template name: A name for this template folder: A virtual path which can be used to organize Templates in the user interface. The format is an array of path components. icon: A URI to a PNG image representing this template os_distro: The operating system distribution os_version: The version of the operating system distribution memory: The memory parameters of the template, specify one or both of: current: The amount of memory that will be assigned to the VM. maxmemory: The maximum total of memory that the VM can have. Amount over current will be used exclusively for memory hotplug cdrom: A volume name or URI to an ISO image networks (optional): list of networks will be assigned to the new VM. interfaces (optional): list of host network interfaces will be assigned to the new VM. Only applicable for s390x or s390 architecture. type: Type of host network interface. Type should be 'macvtap' for host network interface (Ethernet, Bond, VLAN) to be connected as direct MacVTap; or 'ovs' for openvswitch host network interface to be connected as virtual switch to a VM. name: The host network interface. It should be the host network interface (Ethernet, Bond, VLAN) for type 'macvtap' or host openvswitch bridge interface for type 'ovs'. mode (optional): Only applicable for interface type macvtap, to indicates whether packets will be delivered directly to target device(bridge) or to the external bridge(vepa-capable bridge). bridge: If packets have a destination on the host from which they originated, they are delivered directly to the target. For direct delivery, both origin and destination devices need to be in bridge mode. If either the origin or destination is in vepa mode, VEPA-capable bridge is required. vepa: All packets are sent to the external bridge. If packets have a destination on the host from which they originated, the VEPA-capable bridge will return the packets to the host. disks: An array of requested disks with the following optional fields (either size or volume must be specified): index: The device index size: The device size in GB volume: A volume name that contains the initial disk contents format: Format of the image. Valid formats: qcow, qcow2, qed, raw, vmdk, vpc. pool: Storage pool information name: URI of the storagepool where template allocates vm disk. graphics (optional): A dict of graphics paramenters of this template type: The type of graphics. It can be VNC or spice or None. vnc: Graphical display using the Virtual Network Computing protocol spice: Graphical display using the Simple Protocol for Independent Computing Environments null: Graphics is disabled or type not supported listen: The network which the vnc/spice server listens on. * console (s390x only, optional): Specify the console parameter for this template.** ** type:sclp/virtio.** ** If not provided, default sclp.* cpu_info (optional): CPU-specific information. maxvcpus (optional): The maximum number of vCPUs that can be assigned to the VM. If topology is specified, maxvcpus must be a product of sockets, cores and threads. vcpus (optional): The number of vCPUs assigned to the VM. Default is 1, unless a CPU topology is specified. In that case, vcpus must be a multiple of a product of cores and threads, and will default to maxvcpus value. topology (optional): Specify sockets, threads, and cores to run the virtual CPU threads on. All three are required. sockets - The maximum number of sockets to use. cores - The number of cores per socket. threads - The number of threads per core. Thanks, Archana Singh
participants (1)
-
Archana Singh