My apologies for these two errors, they slipped past me.
Thanks a lot for catching them, the interdiff is:
diff --git a/qa/qa_config.py b/qa/qa_config.py
index cff568d..2bf0ac6 100644
--- a/qa/qa_config.py
+++ b/qa/qa_config.py
@@ -296,10 +296,8 @@ class _QaConfig(object):
def ApplyPatches(data, patch_module, patches):
"""Applies any patches present, and returns the modified QA
configuration.
- First, patches from the patch directory are applied. They are ordered
- alphabetically, unless there is an ``order`` file present - any patches
- listed within are applied in that order, and any remaining ones in
- alphabetical order again.
+ First, patches from the patch directory are applied, ordered
alphabetically
+ by name.
@type data: dict (deserialized json)
@param data: The QA configuration
@@ -336,7 +334,6 @@ class _QaConfig(object):
try:
patches = _QaConfig.LoadPatches()
if patches:
- print patches
mod = __import__("jsonpatch", fromlist=[])
data = _QaConfig.ApplyPatches(data, mod, patches)
except IOError:
On Wed, Mar 19, 2014 at 10:19 AM, Michele Tartara <[email protected]>wrote:
> On Wed, Mar 19, 2014 at 9:55 AM, Hrvoje Ribicic <[email protected]> wrote:
> > This patch allows support for multiple patches placed in the "patch"
> > directory, which are executed in alphabetical order.
> >
> > Signed-off-by: Hrvoje Ribicic <[email protected]>
> > ---
> > qa/qa_config.py | 39 +++++++++++++++++++++++++++++++++++++--
> > 1 file changed, 37 insertions(+), 2 deletions(-)
> >
> > diff --git a/qa/qa_config.py b/qa/qa_config.py
> > index 4f93367..0340883 100644
> > --- a/qa/qa_config.py
> > +++ b/qa/qa_config.py
> > @@ -40,10 +40,11 @@ _VCLUSTER_MASTER_KEY = "vcluster-master"
> > _VCLUSTER_BASEDIR_KEY = "vcluster-basedir"
> > _ENABLED_DISK_TEMPLATES_KEY = "enabled-disk-templates"
> >
> > -# The path of an optional JSON Patch file (as per RFC6902) that
> modifies QA's
> > +# The constants related to JSON patching (as per RFC6902) that modifies
> QA's
> > # configuration.
> > _QA_BASE_PATH = os.path.dirname(__file__)
> > _QA_DEFAULT_PATCH = "qa-patch.json"
> > +_QA_PATCH_DIR = "patch"
> >
> > #: QA configuration (L{_QaConfig})
> > _config = None
> > @@ -284,8 +285,41 @@ class _QaConfig(object):
> > """
> > patches = {}
> > _QaConfig.LoadPatch(patches, _QA_DEFAULT_PATCH)
> > + patch_dir_path = os.path.join(_QA_BASE_PATH, _QA_PATCH_DIR)
> > + if os.path.exists(patch_dir_path):
> > + for filename in os.listdir(patch_dir_path):
> > + if filename.endswith(".json"):
> > + _QaConfig.LoadPatch(patches, os.path.join(_QA_PATCH_DIR,
> filename))
> > return patches
> >
> > + @staticmethod
> > + def ApplyPatches(data, patch_module, patches):
> > + """Applies any patches present, and returns the modified QA
> configuration.
> > +
> > + First, patches from the patch directory are applied. They are
> ordered
> > + alphabetically, unless there is an ``order`` file present - any
> patches
> > + listed within are applied in that order, and any remaining ones in
> > + alphabetical order again.
>
> Either specify in this patch that there is no support for order yet,
> but this will be the final state, or don't add any reference to it
> until the patch where it will actually be implemented.
>
> > +
> > + @type data: dict (deserialized json)
> > + @param data: The QA configuration
> > + @type patch_module: module
> > + @param patch_module: The json patch module, loaded dynamically
> > + @type patches: dict of string to dict
> > + @param patches: The dictionary of patch path to content
> > +
> > + @return: The modified configuration data.
> > +
> > + """
> > + for patch in sorted(patches):
> > + if patch != _QA_DEFAULT_PATCH:
> > + data = patch_module.apply_patch(data, patches[patch])
> > +
> > + if _QA_DEFAULT_PATCH in patches:
> > + data = patch_module.apply_patch(data, patches[_QA_DEFAULT_PATCH])
> > +
> > + return data
> > +
> > @classmethod
> > def Load(cls, filename):
> > """Loads a configuration file and produces a configuration object.
> > @@ -302,8 +336,9 @@ class _QaConfig(object):
> > try:
> > patches = _QaConfig.LoadPatches()
> > if patches:
> > + print patches
>
> Looks like a residual print statement from testing. I guess it has to
> be removed?
>
> > mod = __import__("jsonpatch", fromlist=[])
> > - data = mod.apply_patch(data, patches[_QA_DEFAULT_PATCH])
> > + data = _QaConfig.ApplyPatches(data, mod, patches)
> > except IOError:
> > pass
> > except ImportError:
> > --
> > 1.9.0.279.gdc9e3eb
> >
>
> Rest LGTM, thanks.
>
> Cheers,
> Michele
>
> --
> Google Germany GmbH
> Dienerstr. 12
> 80331 München
>
> Registergericht und -nummer: Hamburg, HRB 86891
> Sitz der Gesellschaft: Hamburg
> Geschäftsführer: Graham Law, Christine Elizabeth Flores
>