<div dir="ltr"><div>Hi Thomas,</div><div><br></div><div><br></div><div>Thanks for bringing up this interesting and important topic.</div><div></div><div><br></div><div>I agree with you suggestions, because IIUC policy.yaml is a generally preferred option,<br></div><div>and I personally prefer to use yaml instead of json because of its readability.<br></div><div><br></div><div>Unfortunately I've never touched packaging stuff, so I can't give any feedback from a packaging perspective</div><div>at the moment. I'll leave this for other teams like ubuntu packaging team or rdo packaging team.</div><div>However let me put some of my thoughts about the described details from a puppet perspective.<br></div><div><br></div><div>> 
So, my proposal is the following: before the final release of OpenStack,<br>> I will modify all Debian OpenStack packages to generate (and package)<br>
> both policy.json and policy.yaml. Then puppet-openstack can switch over<br>
> to the .yaml file, and uncomment only the parts that the operator sees<br>
> as relevant.<br>
</div><div>What I think is important from a puppet perspective is that we should handle transition correctly.</div><div>I mean, we should not use yaml format until the distro packaging actually provides a yaml file.<br></div><div>My current idea is to implement a parameter like nova::params::policy_format, which is (or whose default is)</div><div>decided based on os family and distro, so that we use the correct format according to transition status.</div><br><div>
> I also would like to add a policy.d folder by default in each package,<br>> where operators can override stuff. Just having the folder will be a<br>
> sign to operators that they are invited to write stuff in there, and<br>
> that it will not be overwritten by a package upgrade.</div><div>This sounds like a really good idea.<br>

</div><div>It seems like oslo.policy doesn't care about the actual format of files under policy.d,</div><div>so if we only touch files there, I guess that we can start with a yaml file, without considering</div><div>the file format actually provided in distro packages.</div><div><br></div><div>Thank you,</div><div>Takashi Kajinami<br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Apr 29, 2020 at 5:18 AM Thomas Goirand <<a href="mailto:zigo@debian.org">zigo@debian.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hi team!<br>
<br>
In the light of the discussion that recently happened in<br>
#openstack-nova, it looks like switching from a .json file to a .yaml<br>
file is what we should do. Indeed, the file generated in .json format,<br>
if used pristine with the nova.conf and without enforcing scope, makes a<br>
nova-api service that simply doesn't work.<br>
<br>
Please read <a href="https://bugs.launchpad.net/nova/+bug/1875418" rel="noreferrer" target="_blank">https://bugs.launchpad.net/nova/+bug/1875418</a> for more insights.<br>
<br>
The issue is that both packages are generating a .json (at least in<br>
Debian and Ubuntu) and puppet expect a policy.json, not a policy.yaml.<br>
<br>
With the policy.yaml, we don't have the same problem as by default, all<br>
policies are commented out. Operators just need to uncomment to activate.<br>
<br>
So, my proposal is the following: before the final release of OpenStack,<br>
I will modify all Debian OpenStack packages to generate (and package)<br>
both policy.json and policy.yaml. Then puppet-openstack can switch over<br>
to the .yaml file, and uncomment only the parts that the operator sees<br>
as relevant.<br>
<br>
I also would like to add a policy.d folder by default in each package,<br>
where operators can override stuff. Just having the folder will be a<br>
sign to operators that they are invited to write stuff in there, and<br>
that it will not be overwritten by a package upgrade.<br>
<br>
Then what I would like to do, is get puppet-openstack to only write<br>
there, for example in /etc/nova/policy.d/my-custom-policy.yaml. The file<br>
in /etc/nova/policy.yaml will be marked as "CONFFILE" in Debian, meaning<br>
that dpkg will prompt for changes on upgrades, while what's in the<br>
policy.d will remain.<br>
<br>
Last, I do believe that the yaml files are a way more easy to handle<br>
with puppet than the .json counterpart. Indeed, we could use something<br>
like the .ini management thing, with the : (Semicolumn) sign replacing<br>
the = (equal) sign. Moreover, the .yaml files contain comments which the<br>
.json files are lacking, making it auto-documented for operators.<br>
<br>
The only reason why I didn't use .yaml files earlier in the Debian<br>
packages was that, somehow, loading them with the API didn't work. I<br>
confirm that now it looks like working (though I'd have to test if<br>
changing a value is taken into account, I didn't do that yet).<br>
<br>
Your thoughts everyone?<br>
<br>
Cheers,<br>
<br>
Thomas Goirand (zigo)<br>
<br>
<br>
</blockquote></div><br clear="all"><br>-- <br><div dir="ltr" class="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div>----------</div><div>Takashi Kajinami<br></div><div>Senior Software Maintenance Engineer<span style="font-family:arial,helvetica,sans-serif"></span><br><div style="outline:currentcolor none medium"><div dir="ltr">Customer Experience and Engagement<br>Red Hat</div><div>e-mail: <a href="mailto:tkajinam@redhat.com" target="_blank">tkajinam@redhat.com</a></div><div dir="ltr"><br></div></div></div></div></div></div></div>