Project

General

Profile

HostUnification » History » Version 20

Justin Sherrill, 05/05/2015 09:21 AM

1 1 Justin Sherrill
h1. Host Unification
2 2 Justin Sherrill
3 2 Justin Sherrill
4 6 Justin Sherrill
h2. Goals
5 1 Justin Sherrill
6 6 Justin Sherrill
h3. Main Goal
7 6 Justin Sherrill
8 1 Justin Sherrill
* Unify "Content Hosts" and Hosts so that they are one object based on a 'Host'.  The content and subscription portions simply become attributes/concerns/aspects of a Host object.
9 2 Justin Sherrill
10 6 Justin Sherrill
h3. Secondary Goals
11 1 Justin Sherrill
12 6 Justin Sherrill
* Create a supported API for katello content and subscription aspects of a host
13 14 Justin Sherrill
* Plan and implement a generic way for Host objects to be split up and be plugable.  The host would have different aspects such as Puppet, Provisioning, & Content, any of which are optional.
14 13 Justin Sherrill
* Migrate Content Hosts to scoped search
15 13 Justin Sherrill
* Split apart content and subscription information & logic
16 1 Justin Sherrill
17 13 Justin Sherrill
h4. Non-Goals
18 6 Justin Sherrill
19 6 Justin Sherrill
* Unified host UI
20 2 Justin Sherrill
21 3 Justin Sherrill
h2. Design
22 2 Justin Sherrill
23 2 Justin Sherrill
h4. Ideal Design
24 2 Justin Sherrill
We have presented two designs, one design based somewhat on this discussion:
25 2 Justin Sherrill
26 2 Justin Sherrill
https://groups.google.com/forum/#!searchin/foreman-dev/shim/foreman-dev/9ByQmAtKokQ/W2V924xqtYUJ
27 2 Justin Sherrill
28 4 Justin Sherrill
!http://projects.theforeman.org/attachments/download/1239/aspect.png!
29 2 Justin Sherrill
30 2 Justin Sherrill
The goal is to open a pull request with this design implemented for the Puppet related portion and if feedback is positive to proceed with the Content and Subscription portions.
31 2 Justin Sherrill
32 2 Justin Sherrill
h4. Fallback design:
33 2 Justin Sherrill
34 2 Justin Sherrill
If this does not go favourably, we present this alternative design which is very similar but simpler in nature:
35 2 Justin Sherrill
36 1 Justin Sherrill
!http://projects.theforeman.org/attachments/download/1229/simple.png!
37 3 Justin Sherrill
38 9 Justin Sherrill
Host Group attributes today (Content view, Lifecycle Environment) would remain on the Host Group Object
39 9 Justin Sherrill
40 3 Justin Sherrill
41 3 Justin Sherrill
h2. Api/Cli changes
42 3 Justin Sherrill
43 3 Justin Sherrill
At a minimum, no api/cli changes would be needed and all functionality could remain with the proposed designs using existing controllers and cli commands.  However given that the current katello systems controller is 'deprecated', we greatly need to plan for a supported api.  Based on the discussions here: https://groups.google.com/forum/#!topic/foreman-dev/4Y4qxyknMwI
44 3 Justin Sherrill
45 5 Justin Sherrill
There are currently two designs:
46 5 Justin Sherrill
47 7 Justin Sherrill
h3. Unified Api Design
48 1 Justin Sherrill
49 7 Justin Sherrill
From a user perspective all aspects would appear as a single resource and would all be contained within that resource.  include[] could be passed on index and show to include the various aspects:
50 1 Justin Sherrill
51 7 Justin Sherrill
<pre>
52 7 Justin Sherrill
   GET /api/v2/hosts?search="content_attr=foo"&include[]=content
53 7 Justin Sherrill
   GET /api/v2/hosts/:id?include[]=content
54 7 Justin Sherrill
   GET /api/v2/hosts/:id?include[]=subscriptions
55 7 Justin Sherrill
   PUT /api/v2/hosts/:id/packages/install
56 7 Justin Sherrill
</pre>
57 1 Justin Sherrill
58 7 Justin Sherrill
<pre>
59 7 Justin Sherrill
  PUT /api/v2/hosts/3/  {'content_view_id': 5}
60 7 Justin Sherrill
</pre>
61 7 Justin Sherrill
62 7 Justin Sherrill
Hammer commands:
63 7 Justin Sherrill
64 7 Justin Sherrill
<pre>
65 7 Justin Sherrill
  hammer host details --id=3
66 7 Justin Sherrill
  hammer host update --content-view=myView
67 7 Justin Sherrill
  hammer host errata apply --host-id=3 --errata-ids=RHSA-2014:3
68 7 Justin Sherrill
</pre>
69 7 Justin Sherrill
70 7 Justin Sherrill
71 3 Justin Sherrill
h2. User Stories (P1): 
72 3 Justin Sherrill
73 1 Justin Sherrill
(1 man sprint = 20 points)
74 1 Justin Sherrill
75 5 Justin Sherrill
* As a user, I should be able to create a host without a puppet environment (2)
76 11 Justin Sherrill
  OR
77 5 Justin Sherrill
* As a developer, I want to split out all puppet concerns to their own 'aspect' (10)
78 11 Justin Sherrill
79 3 Justin Sherrill
* As a  user, i expect host create/update/delete to be dynflowed (wrapping the  AR action), via foreman_tasks or in core to allow plugins to hook into  CUD to interact with backend services (4)
80 3 Justin Sherrill
* As a developer, i want to migrate the existing content host model to the new unified models for content and subscriptions (10)
81 3 Justin Sherrill
* As a developer, I want to migrate all the existing content host dynflow  actions to use the new unified model (4)
82 3 Justin Sherrill
* As a user, i want an upgrade provided to move existing content-hosts to the new unified models (4)
83 3 Justin Sherrill
* As a developer, I want to pull system packages into the database (3)
84 3 Justin Sherrill
* As a user, I should be able to search hosts by content attributes (2)
85 3 Justin Sherrill
* As a user, I should be able to search hosts by subscription attributes (2)
86 3 Justin Sherrill
* As a user, I expect subscription facts to live alongside puppet facts.  (4)
87 10 Justin Sherrill
* As a user, I should be able to add & remove hosts to host collections instead of content-hosts (5)
88 10 Justin Sherrill
* As a user, bulk actions should be based off hosts instead of content hosts (4)
89 10 Justin Sherrill
* As a  user, I should be able to register a host with subscription-manager via username and password with the new data model, and a Host should be created (4)
90 10 Justin Sherrill
* As a user, I should be able to register a host with subscription-manager via activation key with the new data model, and a Host should be created (4)
91 10 Justin Sherrill
* As a user, I should be able to register with subscription-manager to an existing host that has never registered with sub-man before (3)
92 10 Justin Sherrill
* As a user, I should be able to register with subscription-manager to an existing host that has previously registered with subscription-manager, and have the old registration be removed, generating a new UUID (3)
93 3 Justin Sherrill
* As a user, virt-who should continue to work with the new unified model, including hypervisor registration.  An hypervisor registered through virt-who would have content capabilities. (5)
94 5 Justin Sherrill
* As a user, i expect package profile uploading to continue to work under the unified model (2)
95 3 Justin Sherrill
* As a user, i expect client actions (errata install, package install, etc..) to continue to work under the unified model (3)
96 3 Justin Sherrill
* As a user, i expect the subscription and content aspects of hosts to be identified by their host id, not a uuid (3)
97 3 Justin Sherrill
* As a user, i expect to be able to find the uuid of a host with subscriptions within the UI/hammer  (1)
98 3 Justin Sherrill
* As a user, i expect to be able to search hosts by applicable errata (.5)
99 3 Justin Sherrill
* As a user, i expect to be able to search hosts by installed package (.5)
100 1 Justin Sherrill
* As a user, i expect to be able to search hosts by subscription facts (.5)
101 3 Justin Sherrill
* As a user, i expect existing apis (and thus hammer commands and the UI) to continue to work under the new model, if new apis are not added (8)
102 20 Justin Sherrill
* As a user, I expect to see an error when attempting to migrate hosts to another environment if they are registered with subscription-manager (2)
103 20 Justin Sherrill
* As a user, I expect the ability to unsubscribe a host registered with subscription-manager, yet leave the host record intact (2)
104 20 Justin Sherrill
* As a user, I expect any subscription action performed on a host that is not registered to candlepin to throw a warning suggesting that it be registered (2)
105 20 Justin Sherrill
* As a user, I expect any content action performed on a host that is not registered in pulp to throw a warning suggesting how it be registered (2)
106 3 Justin Sherrill
107 17 Justin Sherrill
h2. User Stories (P2)
108 3 Justin Sherrill
109 12 Justin Sherrill
* As a developer, I want an api to inject new apipie params into the params of host & hostgroup Create/Update (5)
110 12 Justin Sherrill
* As a developer, I want an api to define different rabl 'views' of a host/hostgroup (5)
111 12 Justin Sherrill
* As a user, I want to be able to specify what views to render for my host (3)
112 1 Justin Sherrill
* As a user, i expect an api for interacting with content and subscription aspects of hosts (6)
113 1 Justin Sherrill
* As  a developer, the content hosts UI needs to utilize new v2 apis for interacting with the subscription and content aspects of a host (8)
114 20 Justin Sherrill
* As a user, I want the ability to force unsubscribe hosts registered with subscription manager when attempting to migrate them across organizations (3)
115 20 Justin Sherrill
116 16 Justin Sherrill
117 12 Justin Sherrill
* As a hammer developer, I want to be able to inject attributes to display on an info command (4)
118 12 Justin Sherrill
* As a hammer developer, I want to be able to inject parameters into the GET request of a particular info command (8)
119 1 Justin Sherrill
* As a user, I want to see content and subscription related items when running 'hammer host info' (1)
120 10 Justin Sherrill
* As a user, i expect the following hammer commands to be migrated:
121 15 Justin Sherrill
** hammer content-host errata apply                      (.5)
122 15 Justin Sherrill
** hammer content-host errata info                     (.5)
123 15 Justin Sherrill
** hammer content-host errata list                        (.5)
124 15 Justin Sherrill
** hammer content-host package install                (.5)
125 15 Justin Sherrill
** hammer content-host package remove               (.5)
126 15 Justin Sherrill
** hammer content-host package upgrade           e (.5)
127 15 Justin Sherrill
** hammer content-host package upgrade-all         (.5)
128 15 Justin Sherrill
** hammer content-host package-group install      (.5)
129 15 Justin Sherrill
** hammer content-host package-group remove      (.5)
130 15 Justin Sherrill
** hammer content-host update   (for updating content view, lifecycle environment) (.5) 
131 15 Justin Sherrill
** hammer content-host update  (for updating service-level, release-version) (.5)
132 15 Justin Sherrill
** hammer host puppet-classes (.5)
133 15 Justin Sherrill
** hammer host puppetrun (.5)
134 5 Justin Sherrill
135 1 Justin Sherrill
136 18 Justin Sherrill
h2 User Stories (P3)
137 1 Justin Sherrill
* As a developer, I want to pull in subscriptions and related hosts into the database (7)
138 1 Justin Sherrill
* As a user, I expect to search for hosts by their subscriptions (.5)