Martin Sivák has uploaded a new change for review.

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.

Change-Id: I7bb1001a05e670e393b2cc0ab4b271b3b333d2e8
Signed-off-by: Martin Sivak <msi...@redhat.com>
---
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
4 files changed, 15 insertions(+), 9 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/25/21225/1

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 97803d5..e69de29 100644
--- a/vdsm/mom.d/01-parameters.policy
+++ b/vdsm/mom.d/01-parameters.policy
@@ -1,2 +0,0 @@
-(defvar balloonEnabled 0)
-(defvar ksmEnabled 1)
diff --git a/vdsm/momIF.py b/vdsm/momIF.py
index 8b62657..7b83ad1 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/21225
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I7bb1001a05e670e393b2cc0ab4b271b3b333d2e8
Gerrit-PatchSet: 1
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Martin Sivák <msi...@redhat.com>
_______________________________________________
vdsm-patches mailing list
vdsm-patches@lists.fedorahosted.org
https://lists.fedorahosted.org/mailman/listinfo/vdsm-patches

Reply via email to