Project

General

Profile

ForemanIntegration » History » Version 1

Eric Helms, 01/07/2015 08:40 PM

1 1 Eric Helms
h1. ForemanIntegration
2
3
h3. Plugin definition and integration points (100%)
4
5
Pre-enginifcation:
6
* Katello and Foreman were maintaining support for plugins using their own defined ways and interfaces.
7
8
Katello 2.1/Foreman 1.7:
9
* Katello is now a plugin to Foreman.
10
11
h3. Authentication (100%)
12
13
Pre-enginifcation:
14
* Katello and Foreman maintained their own authentication systems and were linked up using Signo to provide single sign-on.
15
16
Katello 2.1/Foreman 1.7:
17
* Katello relies entirely on Foreman's authentication system.
18
19
h3. User Interface Menu (100%)
20
21
Pre-enginifcation:
22
* Katello maintained a separate UI with separate angular-based menu structure.
23
* Foreman maintained a separate UI with separate ERB based menu structure.
24
25
Katello 2.1/Foreman 1.7:
26
* Katello adds it's menu items to the Foreman infrastructure which are displayed as a single unified navigation structure.
27
28
h3. Command Line Interface (100%)
29
30
Pre-enginifcation:
31
* Katello maintained a python-based CLI tool that included some Foreman commands.
32
* Foreman started a CLI project called hammer that provided a bridge to the python CLI Katello had.
33
34
Katello 2.1/Foreman 1.7:
35
* Katello now provides a hammer plugin for CLI commands and no longer maintains the python CLI.
36
37
h3. Identity Management (95%)
38
39
Pre-enginifcation:
40
* Katello and Foreman had their own user and role models and authorization systems.
41
42
Katello 2.1/Foreman 1.7:
43
* Katello uses Foreman's users and adds the following:
44
** help_tips
45
** user notices
46
** search favorites
47
** search history
48
** preferences
49
* Katello uses Foreman's roles and authorization system entirely.
50
51
h3. Continuous Integration (95%)
52
53
Pre-enginifcation:
54
* Katello largely relied on Travis to handle testing of pull requests and merges to master.
55
* Foreman maintained a Jenkins server handling testing of pull requests, merges to master, plugins, and their deployment pipeline.
56
57
Katello 2.1/Foreman 1.7:
58
* Katello now uses the Foreman Jenkins to handle testing pull requests, merges to master, plugins, and the deployment pipeline.
59
* Foreman runs Katello unit tests on every PR to Foreman.
60
* Foreman and Katello both use and collaborate on a prprocessor for setting labels, checking PRs and automating Redmine interactions for PRs.
61
62
h3. RESTful API (80%)
63
64
Pre-enginifcation:
65
* Katello and Foreman maintained separate V1 APIs and specifications.
66
* Katello and Foreman maintained separate developing V2 APIs and specifications.
67
68
Katello 2.1/Foreman 1.7:
69
* Katello and Foreman worked on a joint V2 specification and implemented with some mis-communication along the way.
70
* V2 API for each roughly follows the same input and output formats with some differences found within specific APIs.
71
* Katello and Foreman API namespace are rooted separately - /katello and /api
72
73
h3. Packaging (70%)
74
75
Pre-enginifcation:
76
* Katello maintained it's own set of yum repos hosted at fedorapeople.org and carried it's own packages within individual git repositories.
77
* Foreman maintained it's own packaging repository for it's components and their own set of repos at yum.theforeman.org.
78
* Katello did not test packaging.
79
* Foreman maintained a testing and deployment pipeline for their packages before releasing them.
80
81
Katello 2.1/Foreman 1.7:
82
* Katello and Foreman have converged on the same SCL and duplicate packages pre-dominantly removed from Katello where Foreman provides.
83
* Both maintain separate yum repositories.
84
* Katello now employs a test pipeline for packages before releases them.
85
* Katello continues to maintain spec files and packaging within individual repositories, while Foreman utilizes foreman-packaging for itself, dependencies and plugins.
86
* Neither Katello or Foreman bats tests are run against each others changes.
87
88
h3. Organizations (60%)
89
90
Pre-enginifcation:
91
* Katello and Foreman had separate organization models with duplicated attributes
92
* Katello required all entities to belong to a single organization and for users to be in the context of an organization. Foreman allowed entities (except hosts) to belong to multiple organizations and allowed an 'Any Context' mode.
93
94
Katello 2.1/Foreman 1.7:
95
* Katello and Foreman use the same Organization model with Katello adding:
96
** relationships to Katello entities
97
** default_info
98
** description
99
** label
100
** default capsule
101
** Library lifecycle environment
102
** Default content view
103
* Katello still requires all entities to belong to a single organization and for users to be in the context of an organization. Foreman allow entities (except hosts) to belong to multiple organizations and allowed an 'Any Context' mode.
104
105
h3. Release and Project Management (60%)
106
107
Pre-enginifcation:
108
* Katello used Trello for project management.
109
* Katello wrapped Foreman releases within it's releases.
110
* Foreman used their own instance of Redmine for project management.
111
* Katello and Foreman both used 3 week sprints but with separate planning, retrospectives and planning.
112
* Katello releases were feature-based with some consideration of time since last release.
113
* Foreman releases were quarterly.
114
115
Katello 2.1/Foreman 1.7:
116
* Katello migrated to and now makes full use of the Foreman Redmine for project management.
117
* Katello and Foreman now have a single joint sprint demo.
118
* Katello releases are still partially feature-based and partially based on Foreman's schedule given Katello deploys Foreman during installation and thus requires a full Foreman release.
119
* Katello is planning to use 2.2 to sync up with Foreman timing wise for releases.
120
* Katello and Foreman still maintain separate planning and retrospectives.
121
122
123
h3. Installer Tooling (40%)
124
125
Pre-enginifcation:
126
* Katello maintained katello-configure and capsule-installer, a puppet based installer with tightly coupled puppet modules for installing Katello with Foreman.
127
* Foreman created kafo and maintained an installer based off of kafo using Puppet modules and compiling them together at build time.
128
129
Katello 2.1/Foreman 1.7:
130
* Katello maintains a Kafo based katello-installer which produces katello-installer, katello-devel-installer, and the capsule-installer which installs Katello with Foreman.
131
* Foreman maintains foreman-installer which produces foreman-installer and handles installing Foreman and a subset of plugins.
132
* The two installers are modeled similarly but are separate from one another.
133
* Katello cannot be added to an existing Foreman.
134
135
h3. Search Unification (30%)
136
137
Pre-enginifcation:
138
* Katello made use of Elasticsearch for indexing and searching through the API and UI in part due to data types coming from Pulp and the need for flexibility.
139
* Foreman uses scoped search and active record for searching.
140
141
Katello 2.1/Foreman 1.7:
142
* Katello continues to use elasticsearch but has converted some entities over to AR and scoped search.
143
* Katello has added scoped search autocomplete to those pages.
144
* Katello has not integrated the use of search history and bookmarks.
145
146
h3. System Management (25%)
147
148
Pre-enginifcation:
149
* Katello used a system model, API, and UI page for managing hosts. Foreman used a host model, API and UI for managing hosts.
150
* Katello systems and hosts had a loose connection between them even when they represented the same box.
151
152
Katello 2.1/Foreman 1.7:
153
* Katello uses 'Content Host' via the system model and API with it's own UI. Foreman uses their same host model, API and UI.
154
* Content hosts are created for hosts when the two are in the same organization and the hostname's match up and connected to one another at the model level.
155
* Host information shows up on a Provisioning tab of the content host page and subscription information shows up on the host page.
156
157
h3. User Interface Building Blocks (10%)
158
159
Pre-enginifcation:
160
* Katello maintained a partial AngularJS and partial HAML based UI that relied on Bootstrap
161
* Foreman maintained an ERB based UI that relied on Bootstrap
162
163
Katello 2.1/Foreman 1.7:
164
* Katello continues to have an AngularJS based UI that talks to the APIs and a few legacy HAML pages that continue to use UI controllers. The styling is provided by Patternfly with Bootstrap underneath and Font Awesome.
165
* Foreman continues to maintain their ERB based UI that relies on Bootstrap.
166
167
h3.Notifications (0%)
168
169
Pre-enginifcation:
170
* Katello maintained system wide and user notifications with their own UI page. Foreman maintained system wide notifications. Both used some form of floating UI notifications but were separate implementations.
171
172
Katello 2.1/Foreman 1.7:
173
* Katello still produces some backend notifications and adds a notifications UI page. Form, and action notifications have moved inline within the UI and are not persisted in the database.
174
* Foreman still maintains their previous notification system.
175
176
Auditing (0%)
177
178
Pre-enginifcation:
179
* Katello provided notifications for system actions but no real form of user action auditing.
180
* Foreman made use of the auditing gem to record and display active record level user actions.
181
182
Katello 2.1/Foreman 1.7:
183
* Katello still does not make significant use of the auditing gem and there is no auditing mechanism for non active record actions.
184
* Foreman continues to use auditing gem for active record actions only.
185
186
h3. Application Settings (0%)
187
188
Pre-enginifcation:
189
* Katello maintained katello.yml configuration and Katello.config within code for accessing configuration values for the system. Users also had preferences for some items stored on them.
190
* Foreman used settings.yml and SETTINGS object within code for system wide configuration that required server restarts. Foreman also maintained Settings model for configuring settings from the UI by an administrator that are system wide.
191
192
Katello 2.1/Foreman 1.7:
193
* Same as pre-enginification.
194
195
h3. User Interface Dashboard (0%)
196
197
Pre-enginifcation:
198
* Katello maintained it's own dashboard UI, and dashboarding system.
199
* Foreman maintained it's own dashboard UI, and dashboarding system.
200
201
Katello 2.1/Foreman 1.7:
202
* Same as pre-enginification.
203
204
h3. Error Coding (0%)
205
206
Pre-enginification:
207
* Foreman utilized a system of giving error codes to exceptions throughout the application code.
208
* Katello had no such system.
209
210
Katello 2.1/Foreman 1.7:
211
* Same as pre-enginification