On Fri, Nov 6, 2015 at 12:07 PM, 'Helga Velroyen' via ganeti-devel < [email protected]> wrote:
> The issue that was fixed with the previous patch would > have been detected earlier if the QA would actually > run a 'verify' after the modify operations. For 'verify' > to not raise false negatives, we need to first reduce > the candidate pool size, because otherwise QA fails > with a warning about the mininmum pool size being > violated. > > Signed-off-by: Helga Velroyen <[email protected]> > --- > qa/qa_config.py | 18 ++++++++++++++++++ > qa/qa_node.py | 13 +++++++++++++ > 2 files changed, 31 insertions(+) > > diff --git a/qa/qa_config.py b/qa/qa_config.py > index 276b92c..78e8865 100644 > --- a/qa/qa_config.py > +++ b/qa/qa_config.py > @@ -497,6 +497,17 @@ class _QaConfig(object): > """ > return self["nodes"][0] > > + def GetAllNodes(self): > + """Returns the list of nodes. > + > + This is not intended to 'acquire' those nodes. For that, > + C{AcquireManyNodes} is more inteded. However, often it is > s/inteded/intended, but wouldn't be "suited" a better word? > + helpful to know the total number of nodes available to > + adjust cluster parameters and that's where this function > + is useful. > + """ > + return self["nodes"] > + > def GetInstanceCheckScript(self): > """Returns path to instance check script or C{None}. > > @@ -851,6 +862,13 @@ def GetMasterNode(): > return GetConfig().GetMasterNode() > > > +def GetAllNodes(): > + """Wrapper for L{_QaConfig.GetAllNodeNames}. > + > + """ > + return GetConfig().GetAllNodes() > + > + > Wrapper for GetAllNodeNames or GetAllNodes? > def AcquireInstance(_cfg=None): > """Returns an instance which isn't in use. > > diff --git a/qa/qa_node.py b/qa/qa_node.py > index b752932..d1d1403 100644 > --- a/qa/qa_node.py > +++ b/qa/qa_node.py > @@ -252,6 +252,16 @@ def TestNodeEvacuate(node, node2): > def TestNodeModify(node): > """gnt-node modify""" > > + default_pool_size = 10 > + nodes = qa_config.GetAllNodes() > + test_pool_size = len(nodes) - 1 > + > + # Reduce the number of master candidates, because otherwise all > + # subsequent 'gnt-cluster verify' commands fail due to not enough > + # master candidates. > + AssertCommand(["gnt-cluster", "modify", > + "--candidate-pool-size=%s" % test_pool_size]) > + > # make sure enough master candidates will be available by disabling the > # master candidate role first with --auto-promote > AssertCommand(["gnt-node", "modify", "--master-candidate=no", > @@ -262,6 +272,7 @@ def TestNodeModify(node): > for value in ["yes", "no"]: > AssertCommand(["gnt-node", "modify", "--force", > "--%s=%s" % (flag, value), node.primary]) > + AssertCommand(["gnt-cluster", "verify"]) > > AssertCommand(["gnt-node", "modify", "--master-candidate=yes", > node.primary]) > > @@ -270,6 +281,8 @@ def TestNodeModify(node): > node.primary]) > > AssertRedirectedCommand(["gnt-cluster", "verify"]) > + AssertCommand(["gnt-cluster", "modify", > + "--candidate-pool-size=%s" % default_pool_size]) > > > def _CreateOobScriptStructure(): > -- > 2.6.0.rc2.230.g3dd15c0 > > -- Lisa Velden Software Engineer [email protected] Google Germany GmbH Dienerstraße 12 80331 München Geschäftsführer: Matthew Scott Sucherman, Paul Terence Manicle Registergericht und -nummer: Hamburg, HRB 86891 Sitz der Gesellschaft: Hamburg
