Plugin definition and integration points (100%)¶Pre-enginifcation:
- Katello and Foreman were maintaining support for plugins using their own defined ways and interfaces.
- Katello is now a plugin to Foreman.
- Katello and Foreman maintained their own authentication systems and were linked up using Signo to provide single sign-on.
- Katello relies entirely on Foreman's authentication system.
User Interface Menu (100%)¶Pre-enginifcation:
- Katello maintained a separate UI with separate angular-based menu structure.
- Foreman maintained a separate UI with separate ERB based menu structure.
- Katello adds it's menu items to the Foreman infrastructure which are displayed as a single unified navigation structure.
Command Line Interface (100%)¶Pre-enginifcation:
- Katello maintained a python-based CLI tool that included some Foreman commands.
- Foreman started a CLI project called hammer that provided a bridge to the python CLI Katello had.
- Katello now provides a hammer plugin for CLI commands and no longer maintains the python CLI.
Identity Management (95%)¶Pre-enginifcation:
- Katello and Foreman had their own user and role models and authorization systems.
- Katello uses Foreman's users and adds the following:
- user notices
- search favorites
- search history
- Katello uses Foreman's roles and authorization system entirely.
Continuous Integration (95%)¶Pre-enginifcation:
- Katello largely relied on Travis to handle testing of pull requests and merges to master.
- Foreman maintained a Jenkins server handling testing of pull requests, merges to master, plugins, and their deployment pipeline.
- Katello now uses the Foreman Jenkins to handle testing pull requests, merges to master, plugins, and the deployment pipeline.
- Foreman runs Katello unit tests on every PR to Foreman.
- Foreman and Katello both use and collaborate on a prprocessor for setting labels, checking PRs and automating Redmine interactions for PRs.
RESTful API (80%)¶Pre-enginifcation:
- Katello and Foreman maintained separate V1 APIs and specifications.
- Katello and Foreman maintained separate developing V2 APIs and specifications.
- Katello and Foreman worked on a joint V2 specification and implemented with some mis-communication along the way.
- V2 API for each roughly follows the same input and output formats with some differences found within specific APIs.
- Katello and Foreman API namespace are rooted separately - /katello and /api
- Katello maintained it's own set of yum repos hosted at fedorapeople.org and carried it's own packages within individual git repositories.
- Foreman maintained it's own packaging repository for it's components and their own set of repos at yum.theforeman.org.
- Katello did not test packaging.
- Foreman maintained a testing and deployment pipeline for their packages before releasing them.
- Katello and Foreman have converged on the same SCL and duplicate packages pre-dominantly removed from Katello where Foreman provides.
- Both maintain separate yum repositories.
- Katello now employs a test pipeline for packages before releases them.
- Katello continues to maintain spec files and packaging within individual repositories, while Foreman utilizes foreman-packaging for itself, dependencies and plugins.
- Neither Katello or Foreman bats tests are run against each others changes.
- Katello and Foreman had separate organization models with duplicated attributes
- 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.
- Katello and Foreman use the same Organization model with Katello adding:
- relationships to Katello entities
- default capsule
- Library lifecycle environment
- Default content view
- 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.
Release and Project Management (60%)¶Pre-enginifcation:
- Katello used Trello for project management.
- Katello wrapped Foreman releases within it's releases.
- Foreman used their own instance of Redmine for project management.
- Katello and Foreman both used 3 week sprints but with separate planning, retrospectives and planning.
- Katello releases were feature-based with some consideration of time since last release.
- Foreman releases were quarterly.
- Katello migrated to and now makes full use of the Foreman Redmine for project management.
- Katello and Foreman now have a single joint sprint demo.
- 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.
- Katello is planning to use 2.2 to sync up with Foreman timing wise for releases.
- Katello and Foreman still maintain separate planning and retrospectives.
Installer Tooling (40%)¶Pre-enginifcation:
- Katello maintained katello-configure and capsule-installer, a puppet based installer with tightly coupled puppet modules for installing Katello with Foreman.
- Foreman created kafo and maintained an installer based off of kafo using Puppet modules and compiling them together at build time.
- Katello maintains a Kafo based katello-installer which produces katello-installer, katello-devel-installer, and the capsule-installer which installs Katello with Foreman.
- Foreman maintains foreman-installer which produces foreman-installer and handles installing Foreman and a subset of plugins.
- The two installers are modeled similarly but are separate from one another.
- Katello cannot be added to an existing Foreman.
Search Unification (30%)¶Pre-enginifcation:
- 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.
- Foreman uses scoped search and active record for searching.
- Katello continues to use elasticsearch but has converted some entities over to AR and scoped search.
- Katello has added scoped search autocomplete to those pages.
- Katello has not integrated the use of search history and bookmarks.
System Management (25%)¶Pre-enginifcation:
- Katello used a system model, API, and UI page for managing hosts. Foreman used a host model, API and UI for managing hosts.
- Katello systems and hosts had a loose connection between them even when they represented the same box.
- Katello uses 'Content Host' via the system model and API with it's own UI. Foreman uses their same host model, API and UI.
- 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.
- Host information shows up on a Provisioning tab of the content host page and subscription information shows up on the host page.
User Interface Building Blocks (10%)¶Pre-enginifcation:
- Katello maintained a partial AngularJS and partial HAML based UI that relied on Bootstrap
- Foreman maintained an ERB based UI that relied on Bootstrap
- 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.
- Foreman continues to maintain their ERB based UI that relies on Bootstrap.
- 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.
- 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.
- Foreman still maintains their previous notification system.
- Katello provided notifications for system actions but no real form of user action auditing.
- Foreman made use of the auditing gem to record and display active record level user actions.
- Katello still does not make significant use of the auditing gem and there is no auditing mechanism for non active record actions.
- Foreman continues to use auditing gem for active record actions only.
Application Settings (0%)¶Pre-enginifcation:
- 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.
- 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.
- Same as pre-enginification.
User Interface Dashboard (0%)¶Pre-enginifcation:
- Katello maintained it's own dashboard UI, and dashboarding system.
- Foreman maintained it's own dashboard UI, and dashboarding system.
- Same as pre-enginification.
Error Coding (0%)¶Pre-enginification:
- Foreman utilized a system of giving error codes to exceptions throughout the application code.
- Katello had no such system.
- Same as pre-enginification