Hello Doron Fediuck, Amador Pahim, Dan Kenigsberg,
I'd like you to do a code review. Please visit
http://gerrit.ovirt.org/21839
to review the following change.
Change subject: Allow setting just a single value in MoM policy
......................................................................
Allow setting just a single value in MoM policy
This patch prevents a policy coruption that could have happened
when the 01-parameters policy was updated with just a single
value. If there were more values defined, the variables were lost
and the policy ended up broken.
This patch defines the variables in a file that is not touched
by the setMOMPolicyParameters and uses (set name value) syntax
in the generated policy part.
It also remembers the old setting and puts all the values to
the policy part when it is autogenerated.
Related to:
https://bugzilla.redhat.com/show_bug.cgi?id=1025780
Change-Id: I7bb1001a05e670e393b2cc0ab4b271b3b333d2e8
Signed-off-by: Martin Sivak <msivak(a)redhat.com>
Reviewed-on:
http://gerrit.ovirt.org/21225
Reviewed-by: Amador Pahim <apahim(a)redhat.com>
Reviewed-by: Doron Fediuck <dfediuck(a)redhat.com>
Reviewed-by: Dan Kenigsberg <danken(a)redhat.com>
---
M debian/vdsm.install
M vdsm/Makefile.am
A vdsm/mom.d/00-defines.policy
D vdsm/mom.d/00-python.policy
M vdsm/mom.d/01-parameters.policy
M vdsm/momIF.py
6 files changed, 17 insertions(+), 10 deletions(-)
git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/39/21839/1
diff --git a/debian/vdsm.install b/debian/vdsm.install
index 6de089e..89b6e6c 100644
--- a/debian/vdsm.install
+++ b/debian/vdsm.install
@@ -14,7 +14,7 @@
./etc/sysctl.d/vdsm.conf
./etc/vdsm/logger.conf
./etc/vdsm/mom.conf
-./etc/vdsm/mom.d/00-python.policy
+./etc/vdsm/mom.d/00-defines.policy
./etc/vdsm/mom.d/01-parameters.policy
./etc/vdsm/mom.d/02-balloon.policy
./etc/vdsm/mom.d/03-ksm.policy
diff --git a/vdsm/Makefile.am b/vdsm/Makefile.am
index 26be4dc..5ab291e 100644
--- a/vdsm/Makefile.am
+++ b/vdsm/Makefile.am
@@ -110,7 +110,7 @@
logger.conf.in \
mk_sysprep_floppy.in \
mom.conf.in \
- mom.d/00-python.policy \
+ mom.d/00-defines.policy \
mom.d/01-parameters.policy \
mom.d/02-balloon.policy \
mom.d/03-ksm.policy \
diff --git a/vdsm/mom.d/00-defines.policy b/vdsm/mom.d/00-defines.policy
new file mode 100644
index 0000000..93b70ee
--- /dev/null
+++ b/vdsm/mom.d/00-defines.policy
@@ -0,0 +1,9 @@
+# This file defines python constans that make it easier to convert data
+# received by setMOMPolicyParameters
+(defvar False 0)
+(defvar True 1)
+
+# Define variables for configurable options here
+(defvar ksmEnabled 1)
+(defvar balloonEnabled 0)
+
diff --git a/vdsm/mom.d/00-python.policy b/vdsm/mom.d/00-python.policy
deleted file mode 100644
index face6fa..0000000
--- a/vdsm/mom.d/00-python.policy
+++ /dev/null
@@ -1,4 +0,0 @@
-# This file defines python constans that make it easier to convert data
-# received by setMOMPolicyParameters
-(defvar False 0)
-(defvar True 1)
diff --git a/vdsm/mom.d/01-parameters.policy b/vdsm/mom.d/01-parameters.policy
index 980e71c..e69de29 100644
--- a/vdsm/mom.d/01-parameters.policy
+++ b/vdsm/mom.d/01-parameters.policy
@@ -1 +0,0 @@
-(defvar balloonEnabled 0)
diff --git a/vdsm/momIF.py b/vdsm/momIF.py
index 8b62657..c1e00ef 100644
--- a/vdsm/momIF.py
+++ b/vdsm/momIF.py
@@ -46,6 +46,7 @@
self.log = logging.getLogger("MOM")
self.log.info("Starting up MOM")
self._mom = mom.MOM(momconf)
+ self._policy = {}
threading.Thread.__init__(self, target=self._mom.run, name="MOM")
self.start()
@@ -64,14 +65,16 @@
def setPolicyParameters(self, key_value_store):
# mom.setNamedPolicy will raise an exception on failure.
+
# Prepare in-memory policy file with tuning variables
# this might need to convert certain python types to proper MoM
# policy language
+ self._policy.update(key_value_store)
- # Python bool values are defined in 00-python.policy so need no
+ # Python bool values are defined in 00-defines.policy so need no
# conversion here
- policy_string = "\n".join(["(defvar %s %r)" % (k, v)
- for k, v in key_value_store.iteritems()])
+ policy_string = "\n".join(["(set %s %r)" % (k, v)
+ for k, v in self._policy.iteritems()])
self._mom.setNamedPolicy(config.get("mom", "tuning_policy"),
policy_string)
--
To view, visit
http://gerrit.ovirt.org/21839
To unsubscribe, visit
http://gerrit.ovirt.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I7bb1001a05e670e393b2cc0ab4b271b3b333d2e8
Gerrit-PatchSet: 1
Gerrit-Project: vdsm
Gerrit-Branch: ovirt-3.3
Gerrit-Owner: Martin Sivák <msivak(a)redhat.com>
Gerrit-Reviewer: Amador Pahim <apahim(a)redhat.com>
Gerrit-Reviewer: Dan Kenigsberg <danken(a)redhat.com>
Gerrit-Reviewer: Doron Fediuck <dfediuck(a)redhat.com>