Statistics
| Branch: | Tag: | Revision:

root / image_creator / main.py @ 3b2f6619

History | View | Annotate | Download (2.3 kB)

1 d57775d4 Nikos Skalkotos
# Copyright 2011 GRNET S.A. All rights reserved.
2 d57775d4 Nikos Skalkotos
#
3 d57775d4 Nikos Skalkotos
# Redistribution and use in source and binary forms, with or
4 d57775d4 Nikos Skalkotos
# without modification, are permitted provided that the following
5 d57775d4 Nikos Skalkotos
# conditions are met:
6 d57775d4 Nikos Skalkotos
#
7 d57775d4 Nikos Skalkotos
#   1. Redistributions of source code must retain the above
8 d57775d4 Nikos Skalkotos
#      copyright notice, this list of conditions and the following
9 d57775d4 Nikos Skalkotos
#      disclaimer.
10 d57775d4 Nikos Skalkotos
#
11 d57775d4 Nikos Skalkotos
#   2. Redistributions in binary form must reproduce the above
12 d57775d4 Nikos Skalkotos
#      copyright notice, this list of conditions and the following
13 d57775d4 Nikos Skalkotos
#      disclaimer in the documentation and/or other materials
14 d57775d4 Nikos Skalkotos
#      provided with the distribution.
15 d57775d4 Nikos Skalkotos
#
16 d57775d4 Nikos Skalkotos
# THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
17 d57775d4 Nikos Skalkotos
# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 d57775d4 Nikos Skalkotos
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
19 d57775d4 Nikos Skalkotos
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
20 d57775d4 Nikos Skalkotos
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21 d57775d4 Nikos Skalkotos
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22 d57775d4 Nikos Skalkotos
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
23 d57775d4 Nikos Skalkotos
# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
24 d57775d4 Nikos Skalkotos
# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25 d57775d4 Nikos Skalkotos
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
26 d57775d4 Nikos Skalkotos
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27 d57775d4 Nikos Skalkotos
# POSSIBILITY OF SUCH DAMAGE.
28 d57775d4 Nikos Skalkotos
#
29 d57775d4 Nikos Skalkotos
# The views and conclusions contained in the software and
30 d57775d4 Nikos Skalkotos
# documentation are those of the authors and should not be
31 d57775d4 Nikos Skalkotos
# interpreted as representing official policies, either expressed
32 d57775d4 Nikos Skalkotos
# or implied, of GRNET S.A.
33 d57775d4 Nikos Skalkotos
34 aa2062ba Nikos Skalkotos
from image_creator import get_os_class
35 d57775d4 Nikos Skalkotos
from image_creator.disk import Disk
36 d57775d4 Nikos Skalkotos
import sys
37 d57775d4 Nikos Skalkotos
import os
38 d57775d4 Nikos Skalkotos
39 8c574358 Nikos Skalkotos
40 d57775d4 Nikos Skalkotos
def main():
41 d57775d4 Nikos Skalkotos
    if len(sys.argv) != 3:
42 d57775d4 Nikos Skalkotos
        sys.exit("Usage: %s <source> <output_file>" %
43 d57775d4 Nikos Skalkotos
                        os.path.basename(sys.argv[0]))
44 d57775d4 Nikos Skalkotos
    source = sys.argv[1]
45 d57775d4 Nikos Skalkotos
    dest = sys.argv[2]
46 d57775d4 Nikos Skalkotos
47 d57775d4 Nikos Skalkotos
    disk = Disk(source)
48 d57775d4 Nikos Skalkotos
    try:
49 d57775d4 Nikos Skalkotos
        dev = disk.get_device()
50 0d5a999d Nikos Skalkotos
        dev.mount()
51 aa2062ba Nikos Skalkotos
        osclass = get_os_class(dev.distro, dev.ostype)
52 aa2062ba Nikos Skalkotos
        image_os = osclass(dev.root, dev.g)
53 aa2062ba Nikos Skalkotos
        metadata = image_os.get_metadata()
54 3b2f6619 Nikos Skalkotos
        for key in metadata.keys():
55 3b2f6619 Nikos Skalkotos
            print "%s=%s" % (key, metadata[key])
56 0d5a999d Nikos Skalkotos
        image_os.data_cleanup()
57 8c574358 Nikos Skalkotos
        dev.umount()
58 3b2f6619 Nikos Skalkotos
        #dev.shrink()
59 0d5a999d Nikos Skalkotos
60 d57775d4 Nikos Skalkotos
    finally:
61 d57775d4 Nikos Skalkotos
        disk.cleanup()
62 d57775d4 Nikos Skalkotos
63 d57775d4 Nikos Skalkotos
if __name__ == '__main__':
64 d57775d4 Nikos Skalkotos
    main()
65 d57775d4 Nikos Skalkotos
66 d57775d4 Nikos Skalkotos
# vim: set sta sts=4 shiftwidth=4 sw=4 et ai :