[Kimchi-devel] [PATCH] Supports Kimchi on LE systems v2

Paulo Ricardo Paz Vital pvital at gmail.com
Tue Jan 27 13:25:39 UTC 2015


Aline, the point is not the kdb_bus used to configure the keyboard, but the
type.

Ramon, I guess you can update, on osinfo.py file, the common_spec
dictionary to add the kdb_type value - this will be common to all cases.
Then, you can add a new key into power specs specific to ppc64le that have
this different value. Anyway, a little modification on vmtemplate.py will
be necessary to use the new variable/key.

On Tue Jan 27 2015 at 2:14:15 PM Aline Manera <alinefm at linux.vnet.ibm.com>
wrote:

>
> On 27/01/2015 10:38, Ramon Medeiros wrote:
> > Changes
> >
> > v2:
> >
> > Improve coding by removing duplicated actions
> > Fix typo
> >
> > On LE systems, some changes on libvirt xml is needed. The input device
> > for keyboard is not kbd anymore, the architecture is still ppc64 and the
> > qemu binary is not qemu-kvm as in the other archs.
> >
> > Signed-off-by: Ramon Medeiros <ramonn at linux.vnet.ibm.com>
> > ---
> >   src/kimchi/config.py.in  | 11 +++++++++--
> >   src/kimchi/osinfo.py     |  6 +++++-
> >   src/kimchi/vmtemplate.py | 11 +++++++++--
> >   3 files changed, 23 insertions(+), 5 deletions(-)
> >
> > diff --git a/src/kimchi/config.py.in b/src/kimchi/config.py.in
> > index 83a5dd0..d5e0f6c 100644
> > --- a/src/kimchi/config.py.in
> > +++ b/src/kimchi/config.py.in
> > @@ -68,12 +68,19 @@ def find_qemu_binary(find_emulator=False):
> >           raise Exception("Unable to get qemu binary location: %s" % e)
> >       try:
> >           xml = connect.getCapabilities()
> > +
> > +        # On Little Endian system, the qemu binary is
> > +        # qemu-system-ppc64, not qemu-system-ppc64le as expected
> > +        arch = platform.machine()
> > +        if arch == "ppc64le":
> > +            arch = "ppc64"
> > +
> >           if find_emulator:
> >               expr = "/capabilities/guest/arch[@name='%s']\
> > -                    /emulator" % platform.machine()
> > +                    /emulator" % arch
> >           else:
> >               expr = "/capabilities/guest/arch[@name='%s']\
> > -                    /domain[@type='kvm']/emulator" % platform.machine()
> > +                    /domain[@type='kvm']/emulator" % arch
> >           res = xpath_get_text(xml, expr)
> >           location = res[0]
> >       except Exception, e:
> > diff --git a/src/kimchi/osinfo.py b/src/kimchi/osinfo.py
> > index 0e16b50..9bfd148 100644
> > --- a/src/kimchi/osinfo.py
> > +++ b/src/kimchi/osinfo.py
> > @@ -29,7 +29,7 @@ from kimchi.config import paths
> >
> >
> >   SUPPORTED_ARCHS = {'x86': ('i386', 'i686', 'x86_64'),
> > -                   'power': ('ppc', 'ppc64')}
> > +                   'power': ('ppc', 'ppc64', 'ppc64le')}
>
> In osinfo.py we have a dict for each supported arch.
>
> template_specs = {'x86': {'old': dict(common_spec, disk_bus='ide',
>                                        nic_model='e1000',
> sound_model='ich6'),
>                            'modern': dict(common_spec, disk_bus='virtio',
> nic_model='virtio',
> sound_model='ich6')},
>                    'power': {'old': dict(common_spec, disk_bus='scsi',
> nic_model='spapr-vlan',
> cdrom_bus='scsi',
>                                          kbd_bus='usb', mouse_bus='usb',
>                                          tablet_bus='usb', memory=1280),
>                              'modern': dict(common_spec, disk_bus='virtio',
> nic_model='virtio',
> cdrom_bus='scsi', kbd_bus='usb',
>                                             mouse_bus='usb',
> tablet_bus='usb',
>                                             memory=1280)}}
>
> You should add the new ppc64le there with the right bus values.
> So for ppc64el we should point the kbd_bus="keyboard"
>
> And vmtemplate.py will not change.
>
> >
> >
> >   common_spec = {'cpus': 1, 'memory': 1024, 'disks': [{'index': 0,
> 'size': 10}],
> > @@ -94,6 +94,10 @@ def lookup(distro, version):
> >       params['os_version'] = version
> >       arch = _get_arch()
> >
> > +    # set up arch to ppc64 instead of ppc64le due to libvirt
> compatibility
> > +    if params["arch"] == "ppc64le":
> > +        params["arch"] = "ppc64"
> > +
> >       if distro in modern_version_bases[arch]:
> >           if LooseVersion(version) >= LooseVersion(
> >                   modern_version_bases[arch][distro]):
> > diff --git a/src/kimchi/vmtemplate.py b/src/kimchi/vmtemplate.py
> > index e41a959..bcfbab6 100644
> > --- a/src/kimchi/vmtemplate.py
> > +++ b/src/kimchi/vmtemplate.py
> > @@ -245,9 +245,16 @@ class VMTemplate(object):
> >           mouse = """
> >               <input type='mouse' bus='%(mouse_bus)s'/>
> >           """
> > +
> > +        # PPC64EL does not uses kbd
> > +        self.info["kbd_type"] = "kbd"
> > +        if os.uname()[4] == "ppc64le":
> > +           self.info["kbd_type"] = "keyboard"
> > +
> >           keyboard = """
> > -            <input type='kbd' bus='%(kbd_bus)s'> </input>
> > -        """
> > +            <input type='%(kbd_type)s' bus='%(kbd_bus)s'> </input>
> > +        """
> > +
> >           tablet = """
> >               <input type='tablet' bus='%(kbd_bus)s'> </input>
> >           """
>
> _______________________________________________
> Kimchi-devel mailing list
> Kimchi-devel at ovirt.org
> http://lists.ovirt.org/mailman/listinfo/kimchi-devel
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.ovirt.org/pipermail/kimchi-devel/attachments/20150127/34f11597/attachment.html>


More information about the Kimchi-devel mailing list