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