[Kimchi-devel] [PATCH] Add image probe function

Sheldon shaohef at linux.vnet.ibm.com
Fri Jun 27 01:04:26 UTC 2014


On 06/27/2014 09:00 AM, Sheldon wrote:
> On 06/27/2014 05:28 AM, Aline Manera wrote:
>> On 06/18/2014 06:35 AM, lvroyce at linux.vnet.ibm.com wrote:
>>> From: Royce Lv <lvroyce at linux.vnet.ibm.com>
>>>
>>> Image file probe will be used in identify image file os info and
>>> generate reasonable configuration for it.
>>> This will be useful when import image and create a vm from it.
>>
>> Do you mean to use libguestfs instead of our own code - isoinfo.py?
> No.
> The isoinfo.py can be replaced by linux shell command, such as "file" 
> or "iso" related command.
> But I think it is not necessary to replace it.
> Not sure the libguestfs can also support the same function of 
> isoinfo.py. If it can we can replace the
> isoinfo.py
>
>
> Here, I think
> */We should support create VM from an image. /*
> *Create a VM from image is faster than ISO. *
> So when we  create a image from image, we had better to know the OS 
> distro and version.
>
> There are several sources of an image.
> 1.  local image
>
> 2. remote image.  Same as Openstack glance.
> Now all OS distro support both remote ISO and image.
>
> 3.  create one from a VM.
> User may take several snapshots for a VM.
> this way we had better to merge all snapshots to one.
>
>
> Maybe we should support a image-template pool.
> move the above type images to this pool.
>
>
for remote image  should we support steaming install?
>
>
>>
>>>
>>> Signed-off-by: Royce Lv <lvroyce at linux.vnet.ibm.com>
>>> ---
>>>   docs/README.md          |  9 ++++++---
>>>   src/kimchi/exception.py |  2 ++
>>>   src/kimchi/imageinfo.py | 42 
>>> ++++++++++++++++++++++++++++++++++++++++++
>>>   3 files changed, 50 insertions(+), 3 deletions(-)
>>>   create mode 100644 src/kimchi/imageinfo.py
>>>
>>> diff --git a/docs/README.md b/docs/README.md
>>> index c658637..c341a5d 100644
>>> --- a/docs/README.md
>>> +++ b/docs/README.md
>>> @@ -53,7 +53,8 @@ Install Dependencies
>>>                           PyPAM m2crypto python-jsonschema rpm-build \
>>>                           qemu-kvm python-psutil python-ethtool sos \
>>>                           python-ipaddr python-lxml nfs-utils \
>>> -                        iscsi-initiator-utils libxslt pyparted nginx
>>> +                        iscsi-initiator-utils libxslt pyparted nginx \
>>> +                        python-libguestfs libguestfs-tools
>>>        # If using RHEL6, install the following additional packages:
>>>        $ sudo yum install python-unittest2 python-ordereddict
>>>        # Restart libvirt to allow configuration changes to take effect
>>> @@ -75,7 +76,8 @@ for more information on how to configure your 
>>> system to access this repository.
>>>                              python-pam python-m2crypto 
>>> python-jsonschema \
>>>                              qemu-kvm libtool python-psutil 
>>> python-ethtool \
>>>                              sosreport python-ipaddr python-lxml 
>>> nfs-common \
>>> -                           open-iscsi lvm2 xsltproc python-parted 
>>> nginx
>>> +                           open-iscsi lvm2 xsltproc python-parted 
>>> nginx \
>>> +                           python-guestfs libguestfs-tools
>>>
>>>       Packages version requirement:
>>>           python-jsonschema >= 1.3.0
>>> @@ -89,7 +91,8 @@ for more information on how to configure your 
>>> system to access this repository.
>>>                             python-pam python-M2Crypto 
>>> python-jsonschema \
>>>                             rpm-build kvm python-psutil 
>>> python-ethtool \
>>>                             python-ipaddr python-lxml nfs-client 
>>> open-iscsi \
>>> -                          libxslt-tools python-xml python-parted
>>> +                          libxslt-tools python-xml python-parted \
>>> +                          python-libguestfs guestfs-tools
>>>
>>>       Packages version requirement:
>>>           python-psutil >= 0.6.0
>>> diff --git a/src/kimchi/exception.py b/src/kimchi/exception.py
>>> index fcf60cc..a983d46 100644
>>> --- a/src/kimchi/exception.py
>>> +++ b/src/kimchi/exception.py
>>> @@ -88,6 +88,8 @@ class InvalidOperation(KimchiException):
>>>   class IsoFormatError(KimchiException):
>>>       pass
>>>
>>> +class ImageFormatError(KimchiException):
>>> +    pass
>>>
>>>   class TimeoutExpired(KimchiException):
>>>       pass
>>> diff --git a/src/kimchi/imageinfo.py b/src/kimchi/imageinfo.py
>>> new file mode 100644
>>> index 0000000..d57ecac
>>> --- /dev/null
>>> +++ b/src/kimchi/imageinfo.py
>>> @@ -0,0 +1,42 @@
>>> +#
>>> +# Kimchi
>>> +#
>>> +# Copyright IBM Corp, 2013
>>> +#
>>> +# This library is free software; you can redistribute it and/or
>>> +# modify it under the terms of the GNU Lesser General Public
>>> +# License as published by the Free Software Foundation; either
>>> +# version 2.1 of the License, or (at your option) any later version.
>>> +#
>>> +# This library is distributed in the hope that it will be useful,
>>> +# but WITHOUT ANY WARRANTY; without even the implied warranty of
>>> +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
>>> +# Lesser General Public License for more details.
>>> +#
>>> +# You should have received a copy of the GNU Lesser General Public
>>> +# License along with this library; if not, write to the Free Software
>>> +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  
>>> 02110-1301 USA
>>> +
>>> +import sys
>>> +import guestfs
>>> +
>>> +
>>> +def probe_image(image_path):
>>> +    g = guestfs.GuestFS(python_return_dict=True)
>>> +    g.add_drive_opts(image_path, readonly=1)
>>> +    g.launch()
>>> +
>>> +    roots = g.inspect_os()
>>> +    if len(roots) == 0:
>>> +        raise ImageFormatError("No os found in given image.")
>>> +
>>> +    for root in roots:
>>> +        version = "%d.%d" % (g.inspect_get_major_version(root),
>>> + g.inspect_get_minor_version(root))
>>> +        distro = "%s" % (g.inspect_get_distro(root))
>>> +
>>> +    return (distro, version)
>>> +
>>> +
>>> +if __name__ == '__main__':
>>> +    print probe_image(sys.argv[1])
>>
>> _______________________________________________
>> Kimchi-devel mailing list
>> Kimchi-devel at ovirt.org
>> http://lists.ovirt.org/mailman/listinfo/kimchi-devel
>>
>>
>>
>
>
> -- 
> Thanks and best regards!
>
> Sheldon Feng(???)<shaohef at linux.vnet.ibm.com>
> IBM Linux Technology Center
>
>
> _______________________________________________
> Kimchi-devel mailing list
> Kimchi-devel at ovirt.org
> http://lists.ovirt.org/mailman/listinfo/kimchi-devel


-- 
Thanks and best regards!

Sheldon Feng(???)<shaohef at linux.vnet.ibm.com>
IBM Linux Technology Center

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.ovirt.org/pipermail/kimchi-devel/attachments/20140627/d8896fbc/attachment.html>


More information about the Kimchi-devel mailing list