diff --git a/ChangeLog b/ChangeLog index 60271d5bc8c8a7615ad8d212f553f0a44fe77ac7..67b0dc2961cc0242afedf339af69d3352427e35d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,6 +1,16 @@ +2013-08-23, v0.5.1 + * Allow more characters in the cloud name + * Fix various bugs + * Handle kamaki config errors + +2013-08-04, v0.5 + * Add support for sysprep-parameters + * Add support for syspreping Windows media + * Code cleanup + 2013-07-31, v0.4.4 * Fix a bug where the system tried to use file scrubbing without - checking if it was supported + checking if it was supported 2013-07-18, v0.4.3 * Force TERM=linux when working on xterm. This makes dialog behave diff --git a/docs/conf.py b/docs/conf.py index 0f38fb5442975f55e7db698a7d39f92ad9483a81..8392d22492670dd9d22b8030830ef5af5618abd6 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -50,9 +50,9 @@ copyright = u'2012, 2013 GRNET S.A. All rights reserved' # built documents. # # The short X.Y version. -version = '0.4.4' +version = '0.5.1' # The full version, including alpha/beta/rc tags. -release = '0.4.4' +release = '0.5.1' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. diff --git a/image_creator/dialog_util.py b/image_creator/dialog_util.py index ec5be5ff8998bf0f1f432c16ab02043fc0a0572f..af5e4254c5cd3eaf2903848465e68c393d9229e2 100644 --- a/image_creator/dialog_util.py +++ b/image_creator/dialog_util.py @@ -180,10 +180,10 @@ def extract_image(session): def _check_cloud(session, name, description, url, token): """Checks if the provided info for a cloud are valid""" d = session['dialog'] - regexp = re.compile('^[a-zA-Z0-9_]+$') + regexp = re.compile('^[~@#$:\-\w]+$') if not re.match(regexp, name): - d.msgbox("Allowed characters for name: [a-zA-Z0-9_]", width=WIDTH) + d.msgbox("Allowed characters for name: a-zA-Z0-9_~@#$:-", width=WIDTH) return False if len(url) == 0: diff --git a/image_creator/dialog_wizard.py b/image_creator/dialog_wizard.py index 0856d8ae1a7768cfaa6d03324ea6991b94497ed6..ffabecf0b6f66a0efe81f65d4179baabed72ab96 100644 --- a/image_creator/dialog_wizard.py +++ b/image_creator/dialog_wizard.py @@ -414,7 +414,8 @@ def create_image(session): out.clear() #Sysprep - image.os.sysprep_params.update(wizard['SysprepParams']) + if 'SysprepParams' in wizard: + image.os.sysprep_params.update(wizard['SysprepParams']) image.os.do_sysprep() metadata = image.os.meta diff --git a/image_creator/image.py b/image_creator/image.py index 686fad621f7e7897c8a44e560b9ee4060fd43299..7eb8ad84d567bfc602bc6a01afee5f03ba9ffcb8 100644 --- a/image_creator/image.py +++ b/image_creator/image.py @@ -293,7 +293,12 @@ class Image(object): return self.size part_dev = "%s%d" % (self.guestfs_device, last_part['part_num']) - self.g.e2fsck_f(part_dev) + + if self.check_guestfs_version(1, 15, 17) >= 0: + self.g.e2fsck(part_dev, forceall=1) + else: + self.g.e2fsck_f(part_dev) + self.g.resize2fs_M(part_dev) out = self.g.tune2fs_l(part_dev) diff --git a/image_creator/kamaki_wrapper.py b/image_creator/kamaki_wrapper.py index c515fa65764bc18557747e0b13bdcc157840e180..36695266685b1667d231eda279ee8124e1a7bcd7 100644 --- a/image_creator/kamaki_wrapper.py +++ b/image_creator/kamaki_wrapper.py @@ -38,6 +38,8 @@ The library is used to upload images to and register them with a Synnefo deployment. """ +import sys + from os.path import basename from kamaki.cli.config import Config @@ -46,8 +48,11 @@ from kamaki.clients.image import ImageClient from kamaki.clients.pithos import PithosClient from kamaki.clients.astakos import AstakosClient - -config = Config() +try: + config = Config() +except Exception as e: + sys.stderr.write("Kamaki config error: %s\n" % str(e)) + sys.exit(1) class Kamaki(object): diff --git a/image_creator/os_type/__init__.py b/image_creator/os_type/__init__.py index 19e63fc520bef1164fa90702a7b758c747842ff5..529856996516defa28dd9f4e5f9cdd5a07ac0e0a 100644 --- a/image_creator/os_type/__init__.py +++ b/image_creator/os_type/__init__.py @@ -320,6 +320,10 @@ class OSBase(object): * exclude: Exclude all files that follow this pattern. """ + if not self.image.g.is_dir(directory): + self.out.warn("Directory: `%s' does not exist!" % directory) + return + maxdepth = None if 'maxdepth' not in kargs else kargs['maxdepth'] if maxdepth == 0: return diff --git a/image_creator/os_type/unix.py b/image_creator/os_type/unix.py index 8779b76632e5ab9b0d4db06297c5bada9c57fb9d..7255f444c7b2f11c6a1b027756c539e2eab9f2e8 100644 --- a/image_creator/os_type/unix.py +++ b/image_creator/os_type/unix.py @@ -108,9 +108,7 @@ class Unix(OSBase): def cleanup_mail(self): """Remove all files under /var/mail and /var/spool/mail""" - if self.image.g.is_dir('/var/spool/mail'): - self._foreach_file('/var/spool/mail', self.image.g.rm_rf, - maxdepth=1) + self._foreach_file('/var/spool/mail', self.image.g.rm_rf, maxdepth=1) self._foreach_file('/var/mail', self.image.g.rm_rf, maxdepth=1) diff --git a/image_creator/version.py b/image_creator/version.py index dc31a71b9c8051ec474da51c286fd24c7d1fb4eb..59db0cb90748764ad97a7b99440c947213b47288 100644 --- a/image_creator/version.py +++ b/image_creator/version.py @@ -1,8 +1,7 @@ - -__version__ = "0.4.4next" +__version__ = "0.5.1" +__version_info__ = ['0', '5', '1'] __version_vcs_info__ = { - 'branch': 'develop', - 'revid': 'c5effe0', - 'revno': 370} -__version_user_email__ = "skalkoto@grnet.gr" -__version_user_name__ = "Nikos Skalkotos" + 'branch': 'hotfix-0.5.1', + 'revid': 'b25b422', + 'revno': 393} +__version_user_info__ = "skalkoto@darkstar.admin.grnet.gr" diff --git a/version b/version index 15c226a41b0f7714998ef238e8de5d7a3326dc74..4b9fcbec101a6ff8ec68e0f95131ccda4861407f 100644 --- a/version +++ b/version @@ -1 +1 @@ -0.4.4next +0.5.1