<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:#0563C1;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri",sans-serif;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="#0563C1" vlink="#954F72">
<div class="WordSection1">
<p class="MsoNormal">Hello,<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">running Zuul version: 2.1.1.dev131, I want to configure multiple gerrit<o:p></o:p></p>
<p class="MsoNormal">connections, so gerrit account reporting back will differ based on pipeline.<o:p></o:p></p>
<p class="MsoNormal">Having just one gerrit account (connection) works without problems.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Original /etc/zuul/zuul.conf contained just one gerrit connection as below<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">>><o:p> </o:p></p>
<p class="MsoNormal">[gerrit]<o:p></o:p></p>
<p class="MsoNormal">server=review.openstack.org<o:p></o:p></p>
<p class="MsoNormal">user=intel-nfv-ci<o:p></o:p></p>
<p class="MsoNormal">sshkey=/var/lib/zuul/ssh/id_rsa<o:p></o:p></p>
<p class="MsoNormal">>><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">"gerrit" is used in /etc/zuul/layout/layout.conf<o:p></o:p></p>
<p class="MsoNormal">and everything works well.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">I thought the solution is to add additional connection section into<o:p></o:p></p>
<p class="MsoNormal">/etc/zuul/zuul.conf and use connection in laoyut.yaml itself.<o:p></o:p></p>
<p class="MsoNormal">I have troubles with that.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">After adding next section, e.g. my_gerrit into /etc/zuul/zuul.conf<o:p></o:p></p>
<p class="MsoNormal">>><o:p> </o:p></p>
<p class="MsoNormal">[my_gerrit]<o:p></o:p></p>
<p class="MsoNormal">server=review.openstack.org<o:p></o:p></p>
<p class="MsoNormal">user=intel-networking-ci<o:p></o:p></p>
<p class="MsoNormal">sshkey=/var/lib/zuul/ssh/id_rsa_intel-networking-ci@review.openstack.org<o:p></o:p></p>
<p class="MsoNormal">>><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">and using "my_gerrit" in /etc/zuul/layout/layout.yaml<o:p></o:p></p>
<p class="MsoNormal">zuul refuses to start, and also validation via<o:p></o:p></p>
<p class="MsoNormal">zuul-server -t fails.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">I ended with configuration of /etc/zuul/zuul.conf as follows (I added<o:p></o:p></p>
<p class="MsoNormal">"connection" string and "driver" parameter to both my gerrit connections)<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">>><o:p> </o:p></p>
<p class="MsoNormal">[connection gerrit]<o:p></o:p></p>
<p class="MsoNormal">driver=gerrit<o:p></o:p></p>
<p class="MsoNormal">server=review.openstack.org<o:p></o:p></p>
<p class="MsoNormal">user=intel-nfv-ci<o:p></o:p></p>
<p class="MsoNormal">sshkey=/var/lib/zuul/ssh/id_rsa<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">[connection my_gerrit]<o:p></o:p></p>
<p class="MsoNormal">driver=gerrit<o:p></o:p></p>
<p class="MsoNormal">server=review.openstack.org<o:p></o:p></p>
<p class="MsoNormal">user=intel-networking-ci<o:p></o:p></p>
<p class="MsoNormal">sshkey=/var/lib/zuul/ssh/id_rsa_intel-networking-ci@review.openstack.org<o:p></o:p></p>
<p class="MsoNormal">>><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">No change. Still, zuul-server doesn't know about "my_gerrit"<o:p></o:p></p>
<p class="MsoNormal">So now, I have /etc/zuul/zuul.conf with 2 gerrit connections defined,<o:p></o:p></p>
<p class="MsoNormal">but the 2nd - my_gerrit I am unable to use in /etc/zuul/layout/layout.yaml<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">excerpt from working /etc/zuul/layout/layout.yaml<o:p></o:p></p>
<p class="MsoNormal">>><o:p> </o:p></p>
<p class="MsoNormal">    source: gerrit<o:p></o:p></p>
<p class="MsoNormal">    trigger:<o:p></o:p></p>
<p class="MsoNormal">      gerrit:<o:p></o:p></p>
<p class="MsoNormal">        - event: patchset-created<o:p></o:p></p>
<p class="MsoNormal">   success:<o:p></o:p></p>
<p class="MsoNormal">      gerrit:<o:p></o:p></p>
<p class="MsoNormal">        verified: 1<o:p></o:p></p>
<p class="MsoNormal">>><o:p> </o:p></p>
<p class="MsoNormal">This works well.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">excerpt from non-working /etc/zuul/layout/layout.yaml<o:p></o:p></p>
<p class="MsoNormal">>><o:p> </o:p></p>
<p class="MsoNormal">    source: gerrit<o:p></o:p></p>
<p class="MsoNormal">    trigger:<o:p></o:p></p>
<p class="MsoNormal">      gerrit:<o:p></o:p></p>
<p class="MsoNormal">        - event: patchset-created<o:p></o:p></p>
<p class="MsoNormal">    success:<o:p></o:p></p>
<p class="MsoNormal">      my_gerrit:<o:p></o:p></p>
<p class="MsoNormal">        verified: 1<o:p></o:p></p>
<p class="MsoNormal">>><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">zuul-server -t<o:p></o:p></p>
<p class="MsoNormal">Traceback (most recent call last):<o:p></o:p></p>
<p class="MsoNormal">  File "/usr/local/bin/zuul-server", line 10, in <module><o:p></o:p></p>
<p class="MsoNormal">    sys.exit(main())<o:p></o:p></p>
<p class="MsoNormal">  File "/usr/local/lib/python2.7/dist-packages/zuul/cmd/server.py", line 218, in main<o:p></o:p></p>
<p class="MsoNormal">    sys.exit(server.test_config(path))<o:p></o:p></p>
<p class="MsoNormal">  File "/usr/local/lib/python2.7/dist-packages/zuul/cmd/server.py", line 96, in test_config<o:p></o:p></p>
<p class="MsoNormal">    self.connections)<o:p></o:p></p>
<p class="MsoNormal">  File "/usr/local/lib/python2.7/dist-packages/zuul/scheduler.py", line 286, in testConfig<o:p></o:p></p>
<p class="MsoNormal">    return self._parseConfig(config_path, connections)<o:p></o:p></p>
<p class="MsoNormal">  File "/usr/local/lib/python2.7/dist-packages/zuul/scheduler.py", line 402, in _parseConfig<o:p></o:p></p>
<p class="MsoNormal">    validator.validate(data, connections)<o:p></o:p></p>
<p class="MsoNormal">  File "/usr/local/lib/python2.7/dist-packages/zuul/layoutvalidator.py", line 328, in validate<o:p></o:p></p>
<p class="MsoNormal">    schema(data)<o:p></o:p></p>
<p class="MsoNormal">  File "/usr/local/lib/python2.7/dist-packages/voluptuous.py", line 337, in __call__<o:p></o:p></p>
<p class="MsoNormal">    return self._compiled([], data)<o:p></o:p></p>
<p class="MsoNormal">  File "/usr/local/lib/python2.7/dist-packages/voluptuous.py", line 635, in validate_dict<o:p></o:p></p>
<p class="MsoNormal">    return base_validate(path, iteritems(data), out)<o:p></o:p></p>
<p class="MsoNormal">  File "/usr/local/lib/python2.7/dist-packages/voluptuous.py", line 471, in validate_mapping<o:p></o:p></p>
<p class="MsoNormal">    raise MultipleInvalid(errors)<o:p></o:p></p>
<p class="MsoNormal">voluptuous.MultipleInvalid: extra keys not allowed @ data['pipelines'][0]['success']['my_gerrit']<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">I tried to modify, source:, trigger:, success:<o:p></o:p></p>
<p class="MsoNormal">seems anything except 1st gerrit connection "gerrit" is not knownn to zuul.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">excerpt from non-working /etc/zuul/layout/layout.yaml<o:p></o:p></p>
<p class="MsoNormal">>><o:p> </o:p></p>
<p class="MsoNormal">    source: my_gerrit<o:p></o:p></p>
<p class="MsoNormal">    trigger:<o:p></o:p></p>
<p class="MsoNormal">      my_gerrit:<o:p></o:p></p>
<p class="MsoNormal">        - event: patchset-created<o:p></o:p></p>
<p class="MsoNormal">    success:<o:p></o:p></p>
<p class="MsoNormal">      gerrit:<o:p></o:p></p>
<p class="MsoNormal">        verified: 1<o:p></o:p></p>
<p class="MsoNormal">>><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">zuul-server -t<o:p></o:p></p>
<p class="MsoNormal">Traceback (most recent call last):<o:p></o:p></p>
<p class="MsoNormal">  File "/usr/local/bin/zuul-server", line 10, in <module><o:p></o:p></p>
<p class="MsoNormal">    sys.exit(main())<o:p></o:p></p>
<p class="MsoNormal">  File "/usr/local/lib/python2.7/dist-packages/zuul/cmd/server.py", line 218, in main<o:p></o:p></p>
<p class="MsoNormal">    sys.exit(server.test_config(path))<o:p></o:p></p>
<p class="MsoNormal">  File "/usr/local/lib/python2.7/dist-packages/zuul/cmd/server.py", line 96, in test_config<o:p></o:p></p>
<p class="MsoNormal">    self.connections)<o:p></o:p></p>
<p class="MsoNormal">  File "/usr/local/lib/python2.7/dist-packages/zuul/scheduler.py", line 286, in testConfig<o:p></o:p></p>
<p class="MsoNormal">    return self._parseConfig(config_path, connections)<o:p></o:p></p>
<p class="MsoNormal">  File "/usr/local/lib/python2.7/dist-packages/zuul/scheduler.py", line 444, in _parseConfig<o:p></o:p></p>
<p class="MsoNormal">    params)<o:p></o:p></p>
<p class="MsoNormal">  File "/usr/local/lib/python2.7/dist-packages/zuul/scheduler.py", line 384, in _getReporterDriver<o:p></o:p></p>
<p class="MsoNormal">    return self._getDriver('reporter', connection_name, driver_config)<o:p></o:p></p>
<p class="MsoNormal">  File "/usr/local/lib/python2.7/dist-packages/zuul/scheduler.py", line 369, in _getDriver<o:p></o:p></p>
<p class="MsoNormal">    driver = drivers[dtype][driver_name].split(':')<o:p></o:p></p>
<p class="MsoNormal">KeyError: 'my_gerrit'<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">I tried vice versa, to keep just "my_gerrit" in /etc/zuul/zuul.conf<o:p></o:p></p>
<p class="MsoNormal">I got similar issue - that zuul does not know "gerrit" now<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">zuul-server -t<o:p></o:p></p>
<p class="MsoNormal">Traceback (most recent call last):<o:p></o:p></p>
<p class="MsoNormal">  File "/usr/local/bin/zuul-server", line 10, in <module><o:p></o:p></p>
<p class="MsoNormal">    sys.exit(main())<o:p></o:p></p>
<p class="MsoNormal">  File "/usr/local/lib/python2.7/dist-packages/zuul/cmd/server.py", line 218, in main<o:p></o:p></p>
<p class="MsoNormal">    sys.exit(server.test_config(path))<o:p></o:p></p>
<p class="MsoNormal">  File "/usr/local/lib/python2.7/dist-packages/zuul/cmd/server.py", line 96, in test_config<o:p></o:p></p>
<p class="MsoNormal">    self.connections)<o:p></o:p></p>
<p class="MsoNormal">  File "/usr/local/lib/python2.7/dist-packages/zuul/scheduler.py", line 286, in testConfig<o:p></o:p></p>
<p class="MsoNormal">    return self._parseConfig(config_path, connections)<o:p></o:p></p>
<p class="MsoNormal">  File "/usr/local/lib/python2.7/dist-packages/zuul/scheduler.py", line 402, in _parseConfig<o:p></o:p></p>
<p class="MsoNormal">    validator.validate(data, connections)<o:p></o:p></p>
<p class="MsoNormal">  File "/usr/local/lib/python2.7/dist-packages/zuul/layoutvalidator.py", line 328, in validate<o:p></o:p></p>
<p class="MsoNormal">    schema(data)<o:p></o:p></p>
<p class="MsoNormal">  File "/usr/local/lib/python2.7/dist-packages/voluptuous.py", line 337, in __call__<o:p></o:p></p>
<p class="MsoNormal">    return self._compiled([], data)<o:p></o:p></p>
<p class="MsoNormal">  File "/usr/local/lib/python2.7/dist-packages/voluptuous.py", line 635, in validate_dict<o:p></o:p></p>
<p class="MsoNormal">    return base_validate(path, iteritems(data), out)<o:p></o:p></p>
<p class="MsoNormal">  File "/usr/local/lib/python2.7/dist-packages/voluptuous.py", line 471, in validate_mapping<o:p></o:p></p>
<p class="MsoNormal">    raise MultipleInvalid(errors)<o:p></o:p></p>
<p class="MsoNormal">voluptuous.MultipleInvalid: extra keys not allowed @ data['pipelines'][0]['success']['gerrit']<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Is it known this scenario shouldn't work or am I doing something wrong?<o:p></o:p></p>
<p class="MsoNormal">Any ideas?<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Thanks,<o:p></o:p></p>
<p class="MsoNormal">Vaclav<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<p>--------------------------------------------------------------<br>
Intel Research and Development Ireland Limited<br>
Registered in Ireland<br>
Registered Office: Collinstown Industrial Park, Leixlip, County Kildare<br>
Registered Number: 308263</p>


<p>This e-mail and any attachments may contain confidential material for the
sole use of the intended recipient(s). Any review or distribution by others is
strictly prohibited. If you are not the intended recipient, please contact the
sender and delete all copies.</p>

<p></p>
</body>
</html>