<div dir="ltr"><div id="magicdomid1105" class="" style="margin:0px;padding:0px 1px 0px 0px;color:rgb(0,0,0);font-family:Arial,sans-serif;font-size:12.727272033691406px;line-height:16.988636016845703px"><span class="" style="margin:0px;padding:1px 0px">All,</span></div>
<div id="magicdomid1106" class="" style="margin:0px;padding:0px 1px 0px 0px;color:rgb(0,0,0);font-family:Arial,sans-serif;font-size:12.727272033691406px;line-height:16.988636016845703px"><br style="margin:0px;padding:0px">
</div><div id="magicdomid1107" class="" style="margin:0px;padding:0px 1px 0px 0px;color:rgb(0,0,0);font-family:Arial,sans-serif;font-size:12.727272033691406px;line-height:16.988636016845703px"><span class="" style="margin:0px;padding:1px 0px">Over the course of the last development sprint for Foreman and Katello, two parallel tracks were investigated to learn the complexities of bringing content and entitlement management to Foreman. One approach started from scratch, using Katello entities and concepts as a foundation for creating basic content management workflows alongside Foreman. The other approach looked in to taking Katello as is and turning it into an engine that could be mounted alongside and integrated into Foreman concepts. What follows is a summary of those efforts up to this point, our recommendation going forward and a request for thoughts and feedback from the Foreman and Katello communities.</span></div>
<div id="magicdomid1108" class="" style="margin:0px;padding:0px 1px 0px 0px;color:rgb(0,0,0);font-family:Arial,sans-serif;font-size:12.727272033691406px;line-height:16.988636016845703px"><br style="margin:0px;padding:0px">
</div><div id="magicdomid1109" class="" style="margin:0px;padding:0px 1px 0px 0px;color:rgb(0,0,0);font-family:Arial,sans-serif;font-size:12.727272033691406px;line-height:16.988636016845703px"><span class="" style="margin:0px;padding:1px 0px"><u style="margin:0px;padding:0px">Foreman Content</u></span></div>
<div id="magicdomid1110" class="" style="margin:0px;padding:0px 1px 0px 0px;color:rgb(0,0,0);font-family:Arial,sans-serif;font-size:12.727272033691406px;line-height:16.988636016845703px"><span class="" style="margin:0px;padding:1px 0px"><a href="https://github.com/theforeman/foreman_content" style="margin:0px;padding:0px">https://github.com/theforeman/foreman_content</a></span></div>
<div id="magicdomid1111" class="" style="margin:0px;padding:0px 1px 0px 0px;color:rgb(0,0,0);font-family:Arial,sans-serif;font-size:12.727272033691406px;line-height:16.988636016845703px"><br style="margin:0px;padding:0px">
</div><div id="magicdomid1112" class="" style="margin:0px;padding:0px 1px 0px 0px;color:rgb(0,0,0);font-family:Arial,sans-serif;font-size:12.727272033691406px;line-height:16.988636016845703px"><span class="" style="margin:0px;padding:1px 0px">The engine introduces several new entities (and UI to manipulate them) and extends a few of the core entities with additional functionality.</span></div>
<div id="magicdomid1113" class="" style="margin:0px;padding:0px 1px 0px 0px;color:rgb(0,0,0);font-family:Arial,sans-serif;font-size:12.727272033691406px;line-height:16.988636016845703px"><br style="margin:0px;padding:0px">
</div><div id="magicdomid1114" class="" style="margin:0px;padding:0px 1px 0px 0px;color:rgb(0,0,0);font-family:Arial,sans-serif;font-size:12.727272033691406px;line-height:16.988636016845703px"><span class="" style="margin:0px;padding:1px 0px">Current state:</span></div>
<div id="magicdomid1115" class="" style="margin:0px;padding:0px 1px 0px 0px;color:rgb(0,0,0);font-family:Arial,sans-serif;font-size:12.727272033691406px;line-height:16.988636016845703px"><span class="" style="margin:0px;padding:1px 0px"> - Create a custom product (providers were dropped early on)</span></div>
<div id="magicdomid1116" class="" style="margin:0px;padding:0px 1px 0px 0px;color:rgb(0,0,0);font-family:Arial,sans-serif;font-size:12.727272033691406px;line-height:16.988636016845703px"><span class="" style="margin:0px;padding:1px 0px"> - Add repositories to a custom product (distributions, yum, or iso) for a given architecture</span></div>
<div id="magicdomid1117" class="" style="margin:0px;padding:0px 1px 0px 0px;color:rgb(0,0,0);font-family:Arial,sans-serif;font-size:12.727272033691406px;line-height:16.988636016845703px"><span class="" style="margin:0px;padding:1px 0px"> - Sync repositories</span></div>
<div id="magicdomid1118" class="" style="margin:0px;padding:0px 1px 0px 0px;color:rgb(0,0,0);font-family:Arial,sans-serif;font-size:12.727272033691406px;line-height:16.988636016845703px"><span class="" style="margin:0px;padding:1px 0px"> - Create a Content View definition</span></div>
<div id="magicdomid1119" class="" style="margin:0px;padding:0px 1px 0px 0px;color:rgb(0,0,0);font-family:Arial,sans-serif;font-size:12.727272033691406px;line-height:16.988636016845703px"><span class="" style="margin:0px;padding:1px 0px"> - publish a Content View</span></div>
<div id="magicdomid1120" class="" style="margin:0px;padding:0px 1px 0px 0px;color:rgb(0,0,0);font-family:Arial,sans-serif;font-size:12.727272033691406px;line-height:16.988636016845703px"><br style="margin:0px;padding:0px">
</div><div id="magicdomid1121" class="" style="margin:0px;padding:0px 1px 0px 0px;color:rgb(0,0,0);font-family:Arial,sans-serif;font-size:12.727272033691406px;line-height:16.988636016845703px"><span class="" style="margin:0px;padding:1px 0px">Work in progress:</span></div>
<div id="magicdomid1122" class="" style="margin:0px;padding:0px 1px 0px 0px;color:rgb(0,0,0);font-family:Arial,sans-serif;font-size:12.727272033691406px;line-height:16.988636016845703px"><span class="" style="margin:0px;padding:1px 0px"> - Aggregated Content Views</span></div>
<div id="magicdomid1123" class="" style="margin:0px;padding:0px 1px 0px 0px;color:rgb(0,0,0);font-family:Arial,sans-serif;font-size:12.727272033691406px;line-height:16.988636016845703px"><span class="" style="margin:0px;padding:1px 0px"> - Associate a host or a host group with a Content View</span></div>
<div id="magicdomid1124" class="" style="margin:0px;padding:0px 1px 0px 0px;color:rgb(0,0,0);font-family:Arial,sans-serif;font-size:12.727272033691406px;line-height:16.988636016845703px"><br style="margin:0px;padding:0px">
</div><div id="magicdomid1125" class="" style="margin:0px;padding:0px 1px 0px 0px;color:rgb(0,0,0);font-family:Arial,sans-serif;font-size:12.727272033691406px;line-height:16.988636016845703px"><span class="" style="margin:0px;padding:1px 0px"><u style="margin:0px;padding:0px">Katello as an Engine</u></span></div>
<div id="magicdomid1126" class="" style="margin:0px;padding:0px 1px 0px 0px;color:rgb(0,0,0);font-family:Arial,sans-serif;font-size:12.727272033691406px;line-height:16.988636016845703px"><span class="" style="margin:0px;padding:1px 0px"><a href="https://github.com/Katello/katello/tree/enginify" style="margin:0px;padding:0px">https://github.com/Katello/katello/tree/enginify</a></span></div>
<div id="magicdomid1127" class="" style="margin:0px;padding:0px 1px 0px 0px;color:rgb(0,0,0);font-family:Arial,sans-serif;font-size:12.727272033691406px;line-height:16.988636016845703px"><br style="margin:0px;padding:0px">
</div><div id="magicdomid1128" class="" style="margin:0px;padding:0px 1px 0px 0px;color:rgb(0,0,0);font-family:Arial,sans-serif;font-size:12.727272033691406px;line-height:16.988636016845703px"><span class="" style="margin:0px;padding:1px 0px">The current state of the branch brings to life the following workflow:</span></div>
<div id="magicdomid1129" class="" style="margin:0px;padding:0px 1px 0px 0px;color:rgb(0,0,0);font-family:Arial,sans-serif;font-size:12.727272033691406px;line-height:16.988636016845703px"><ul class="" style="margin:0px 0px 0px 1.5em;padding:0px">
<li style="margin:0px;padding:0px"><span class="" style="margin:0px;padding:1px 0px">Login with a Foreman user</span></li></ul></div><div id="magicdomid1130" class="" style="margin:0px;padding:0px 1px 0px 0px;color:rgb(0,0,0);font-family:Arial,sans-serif;font-size:12.727272033691406px;line-height:16.988636016845703px">
<ul class="" style="margin:0px 0px 0px 1.5em;padding:0px"><li style="margin:0px;padding:0px"><span class="" style="margin:0px;padding:1px 0px">Create a Foreman organization that is augmented with Katello organization fields such as a label</span></li>
</ul></div><div id="magicdomid1131" class="" style="margin:0px;padding:0px 1px 0px 0px;color:rgb(0,0,0);font-family:Arial,sans-serif;font-size:12.727272033691406px;line-height:16.988636016845703px"><ul class="" style="margin:0px 0px 0px 1.5em;padding:0px">
<li style="margin:0px;padding:0px"><span class="" style="margin:0px;padding:1px 0px">Create a custom provider</span></li></ul></div><div id="magicdomid1132" class="" style="margin:0px;padding:0px 1px 0px 0px;color:rgb(0,0,0);font-family:Arial,sans-serif;font-size:12.727272033691406px;line-height:16.988636016845703px">
<ul class="" style="margin:0px 0px 0px 1.5em;padding:0px"><li style="margin:0px;padding:0px"><span class="" style="margin:0px;padding:1px 0px">Create a custom product attached to the provider</span></li></ul></div><div id="magicdomid1133" class="" style="margin:0px;padding:0px 1px 0px 0px;color:rgb(0,0,0);font-family:Arial,sans-serif;font-size:12.727272033691406px;line-height:16.988636016845703px">
<ul class="" style="margin:0px 0px 0px 1.5em;padding:0px"><li style="margin:0px;padding:0px"><span class="" style="margin:0px;padding:1px 0px">Create a custom repository attached to the product</span></li></ul></div><div id="magicdomid1134" class="" style="margin:0px;padding:0px 1px 0px 0px;color:rgb(0,0,0);font-family:Arial,sans-serif;font-size:12.727272033691406px;line-height:16.988636016845703px">
<ul class="" style="margin:0px 0px 0px 1.5em;padding:0px"><li style="margin:0px;padding:0px"><span class="" style="margin:0px;padding:1px 0px">Attach a Foreman architecture to the repository</span></li></ul></div><div id="magicdomid1135" class="" style="margin:0px;padding:0px 1px 0px 0px;color:rgb(0,0,0);font-family:Arial,sans-serif;font-size:12.727272033691406px;line-height:16.988636016845703px">
<ul class="" style="margin:0px 0px 0px 1.5em;padding:0px"><li style="margin:0px;padding:0px"><span class="" style="margin:0px;padding:1px 0px">Sync the remote repository locally</span></li></ul></div><div id="magicdomid1136" class="" style="margin:0px;padding:0px 1px 0px 0px;color:rgb(0,0,0);font-family:Arial,sans-serif;font-size:12.727272033691406px;line-height:16.988636016845703px">
<ul class="" style="margin:0px 0px 0px 1.5em;padding:0px"><li style="margin:0px;padding:0px"><span class="" style="margin:0px;padding:1px 0px">Create a content view definition</span></li></ul></div><div id="magicdomid1137" class="" style="margin:0px;padding:0px 1px 0px 0px;color:rgb(0,0,0);font-family:Arial,sans-serif;font-size:12.727272033691406px;line-height:16.988636016845703px">
<ul class="" style="margin:0px 0px 0px 1.5em;padding:0px"><li style="margin:0px;padding:0px"><span class="" style="margin:0px;padding:1px 0px">Add a product and repository to the definition</span></li></ul></div><div id="magicdomid1138" class="" style="margin:0px;padding:0px 1px 0px 0px;color:rgb(0,0,0);font-family:Arial,sans-serif;font-size:12.727272033691406px;line-height:16.988636016845703px">
<ul class="" style="margin:0px 0px 0px 1.5em;padding:0px"><li style="margin:0px;padding:0px"><span class="" style="margin:0px;padding:1px 0px">Publish a content view from the definition</span></li></ul></div><div id="magicdomid1139" class="" style="margin:0px;padding:0px 1px 0px 0px;color:rgb(0,0,0);font-family:Arial,sans-serif;font-size:12.727272033691406px;line-height:16.988636016845703px">
<ul class="" style="margin:0px 0px 0px 1.5em;padding:0px"><li style="margin:0px;padding:0px"><span class="" style="margin:0px;padding:1px 0px">Associate a Foreman operating system with the content view at publish time</span></li>
</ul></div><div id="magicdomid1140" class="" style="margin:0px;padding:0px 1px 0px 0px;color:rgb(0,0,0);font-family:Arial,sans-serif;font-size:12.727272033691406px;line-height:16.988636016845703px"><ul class="" style="margin:0px 0px 0px 1.5em;padding:0px">
<li style="margin:0px;padding:0px"><span class="" style="margin:0px;padding:1px 0px">Generate a Foreman installation media for all repositories with distributions in them tied to the content views operating system at publish time</span></li>
</ul></div><div id="magicdomid1141" class="" style="margin:0px;padding:0px 1px 0px 0px;color:rgb(0,0,0);font-family:Arial,sans-serif;font-size:12.727272033691406px;line-height:16.988636016845703px"><ul class="" style="margin:0px 0px 0px 1.5em;padding:0px">
<li style="margin:0px;padding:0px"><span class="" style="margin:0px;padding:1px 0px">Create a promotion changeset, add the published content view to it and apply it to promote the view to an environent (e.g. Dev)</span></li>
</ul></div><div id="magicdomid1142" class="" style="margin:0px;padding:0px 1px 0px 0px;color:rgb(0,0,0);font-family:Arial,sans-serif;font-size:12.727272033691406px;line-height:16.988636016845703px"><ul class="" style="margin:0px 0px 0px 1.5em;padding:0px">
<li style="margin:0px;padding:0px"><span class="" style="margin:0px;padding:1px 0px">View the completed changeset in Changeset History</span></li></ul></div><div id="magicdomid1143" class="" style="margin:0px;padding:0px 1px 0px 0px;color:rgb(0,0,0);font-family:Arial,sans-serif;font-size:12.727272033691406px;line-height:16.988636016845703px">
<ul class="" style="margin:0px 0px 0px 1.5em;padding:0px"><li style="margin:0px;padding:0px"><span class="" style="margin:0px;padding:1px 0px">View contents of published and promoted content view in Content Search</span></li>
</ul></div><div id="magicdomid1144" class="" style="margin:0px;padding:0px 1px 0px 0px;color:rgb(0,0,0);font-family:Arial,sans-serif;font-size:12.727272033691406px;line-height:16.988636016845703px"><ul class="" style="margin:0px 0px 0px 1.5em;padding:0px">
<li style="margin:0px;padding:0px"><span class="" style="margin:0px;padding:1px 0px">Create a Foreman host</span></li></ul></div><div id="magicdomid1145" class="" style="margin:0px;padding:0px 1px 0px 0px;color:rgb(0,0,0);font-family:Arial,sans-serif;font-size:12.727272033691406px;line-height:16.988636016845703px">
<ul class="" style="margin:0px 0px 0px 1.5em;padding:0px"><li style="margin:0px;padding:0px"><span class="" style="margin:0px;padding:1px 0px">Attach a content environment and view to a host</span></li></ul></div><div id="magicdomid1146" class="" style="margin:0px;padding:0px 1px 0px 0px;color:rgb(0,0,0);font-family:Arial,sans-serif;font-size:12.727272033691406px;line-height:16.988636016845703px">
<ul class="" style="margin:0px 0px 0px 1.5em;padding:0px"><li style="margin:0px;padding:0px"><span class="" style="margin:0px;padding:1px 0px">Scope the available installation media based upon what content environment/view is associated with the host (i.e. make available simple install media and any created with the content view if one is selected)</span></li>
</ul></div><div id="magicdomid1147" class="" style="margin:0px;padding:0px 1px 0px 0px;color:rgb(0,0,0);font-family:Arial,sans-serif;font-size:12.727272033691406px;line-height:16.988636016845703px"><ul class="" style="margin:0px 0px 0px 1.5em;padding:0px">
<li style="margin:0px;padding:0px"><span class="" style="margin:0px;padding:1px 0px">Provision a host that uses that install media from the content view and the local repository</span></li></ul></div><div id="magicdomid1148" class="" style="margin:0px;padding:0px 1px 0px 0px;color:rgb(0,0,0);font-family:Arial,sans-serif;font-size:12.727272033691406px;line-height:16.988636016845703px">
<br style="margin:0px;padding:0px"></div><div id="magicdomid1149" class="" style="margin:0px;padding:0px 1px 0px 0px;color:rgb(0,0,0);font-family:Arial,sans-serif;font-size:12.727272033691406px;line-height:16.988636016845703px">
<span class="" style="margin:0px;padding:1px 0px">Major actions and things of note taken to achieve this:</span></div><div id="magicdomid1150" class="" style="margin:0px;padding:0px 1px 0px 0px;color:rgb(0,0,0);font-family:Arial,sans-serif;font-size:12.727272033691406px;line-height:16.988636016845703px">
<ul class="" style="margin:0px 0px 0px 1.5em;padding:0px"><li style="margin:0px;padding:0px"><span class="" style="margin:0px;padding:1px 0px">Use of Foreman organization augmented by Katello concepts</span></li></ul></div>
<div id="magicdomid1151" class="" style="margin:0px;padding:0px 1px 0px 0px;color:rgb(0,0,0);font-family:Arial,sans-serif;font-size:12.727272033691406px;line-height:16.988636016845703px"><ul class="" style="margin:0px 0px 0px 1.5em;padding:0px">
<li style="margin:0px;padding:0px"><span class="" style="margin:0px;padding:1px 0px">Use of Foreman user augmented with Katello user fields</span></li></ul></div><div id="magicdomid1152" class="" style="margin:0px;padding:0px 1px 0px 0px;color:rgb(0,0,0);font-family:Arial,sans-serif;font-size:12.727272033691406px;line-height:16.988636016845703px">
<ul class="" style="margin:0px 0px 0px 1.5em;padding:0px"><li style="margin:0px;padding:0px"><span class="" style="margin:0px;padding:1px 0px">Complete re-use of Katello UI concepts on Katello pages</span></li></ul></div>
<div id="magicdomid1153" class="" style="margin:0px;padding:0px 1px 0px 0px;color:rgb(0,0,0);font-family:Arial,sans-serif;font-size:12.727272033691406px;line-height:16.988636016845703px"><ul class="" style="margin:0px 0px 0px 1.5em;padding:0px">
<li style="margin:0px;padding:0px"><span class="" style="margin:0px;padding:1px 0px">Complete re-use of Katello's current integration with Pulp and Candlepin for Content and Subscription Management</span></li></ul></div>
<div id="magicdomid1154" class="" style="margin:0px;padding:0px 1px 0px 0px;color:rgb(0,0,0);font-family:Arial,sans-serif;font-size:12.727272033691406px;line-height:16.988636016845703px"><ul class="" style="margin:0px 0px 0px 1.5em;padding:0px">
<li style="margin:0px;padding:0px"><span class="" style="margin:0px;padding:1px 0px">Scoping of all Katello entities from a code and database level</span></li></ul></div><div id="magicdomid1155" class="" style="margin:0px;padding:0px 1px 0px 0px;color:rgb(0,0,0);font-family:Arial,sans-serif;font-size:12.727272033691406px;line-height:16.988636016845703px">
<ul class="" style="margin:0px 0px 0px 1.5em;padding:0px"><li style="margin:0px;padding:0px"><span class="" style="margin:0px;padding:1px 0px">Removal of Katello migrations in favor of a single migration that represents the current state of the Katello database</span></li>
</ul></div><div id="magicdomid1156" class="" style="margin:0px;padding:0px 1px 0px 0px;color:rgb(0,0,0);font-family:Arial,sans-serif;font-size:12.727272033691406px;line-height:16.988636016845703px"><ul class="" style="margin:0px 0px 0px 1.5em;padding:0px">
<li style="margin:0px;padding:0px"><span class="" style="margin:0px;padding:1px 0px">Continued usage of delayed jobs in the background</span></li></ul></div><div id="magicdomid1157" class="" style="margin:0px;padding:0px 1px 0px 0px;color:rgb(0,0,0);font-family:Arial,sans-serif;font-size:12.727272033691406px;line-height:16.988636016845703px">
<ul class="" style="margin:0px 0px 0px 1.5em;padding:0px"><li style="margin:0px;padding:0px"><span class="" style="margin:0px;padding:1px 0px">Connections to Foreman objects through shared database pattern</span></li></ul>
</div><div id="magicdomid1158" class="" style="margin:0px;padding:0px 1px 0px 0px;color:rgb(0,0,0);font-family:Arial,sans-serif;font-size:12.727272033691406px;line-height:16.988636016845703px"><ul class="" style="margin:0px 0px 0px 1.5em;padding:0px">
<li style="margin:0px;padding:0px"><span class="" style="margin:0px;padding:1px 0px">'Turning off' of Katello authorization (RBAC and authorization was not tackled)</span></li></ul></div><div id="magicdomid1159" class="" style="margin:0px;padding:0px 1px 0px 0px;color:rgb(0,0,0);font-family:Arial,sans-serif;font-size:12.727272033691406px;line-height:16.988636016845703px">
<br style="margin:0px;padding:0px"></div><div id="magicdomid1160" class="" style="margin:0px;padding:0px 1px 0px 0px;color:rgb(0,0,0);font-family:Arial,sans-serif;font-size:12.727272033691406px;line-height:16.988636016845703px">
<span class="" style="margin:0px;padding:1px 0px">Our recommendation, given the time invested in the Katello project to date, and the effort required to date to bring the above workflow to life is to go the route of enginifying Katello while taking lessons and feedback learned from foreman_content into consideration. After conversion, effort can then be undertaken to split apart the pieces of Katello into more focused pieces that target the major areas of content and entitlement management.</span></div>
<div id="magicdomid1160" class="" style="margin:0px;padding:0px 1px 0px 0px;color:rgb(0,0,0);font-family:Arial,sans-serif;font-size:12.727272033691406px;line-height:16.988636016845703px"><span class="" style="margin:0px;padding:1px 0px"><br>
</span></div><div id="magicdomid1160" class="" style="margin:0px;padding:0px 1px 0px 0px;color:rgb(0,0,0);font-family:Arial,sans-serif;font-size:12.727272033691406px;line-height:16.988636016845703px"><span class="" style="margin:0px;padding:1px 0px">Thanks.</span></div>
</div>