Bastion, Plugins and Re-usability

Howdy,

A request has come in to allow UI plugins that take advantage of the
structure and tooling provided by Bastion. For those who don't know,
Bastion is an engine
(https://github.com/Katello/katello/tree/master/engines/bastion)
contained within the Katello engine that provides an angularjs based
UI for Katello. To the aforementioned end, Walden and myself have put
together a proposal on how we might accomplish this. Our goals are:

  1. Allow UI plugins written using Bastion infrastructure to apply to
    Foreman and Foreman+Katello
  2. Allow UI plugins to add new pages or override existing UI pages
  3. Keep changes to Katello and it's codebase minimal so as not to
    impact development
  4. Centralize common components

With the above goals in mind, our proposal is thus:

  1. Move common functionality from Bastion to a stand-alone engine
    named Bastion. This includes angular modules that are used application
    wide, assets (js libraries, stylesheets, fonts), rails views,
    configuration and testing infrastructure.
  2. Rename the Bastion engine in Katello to bastion-katello and have it
    require the Bastion engine.
  3. Replace or move to angular-patternfly Ui widgets/constructs used
    throughout Bastion.

Thoughts and feedback welcome.

Thanks,
Eric

This would be very helpful.

Specifically I am on the team writing the version of katello that comes free with RHEL. This is a much-simplified version primarily meant for managing Red Hat subscriptions and not content or provisioning. For this product a plugin is a great way to clean up, through both UI and API, resources such as users, roles, organizations, etc. Ideally, work done on a new roles UI could be shared upstream as an optional interface to replace the existing in either foreman alone or in katello.

··· ----- Original Message ----- > Howdy, > > A request has come in to allow UI plugins that take advantage of the > structure and tooling provided by Bastion. For those who don't know, > Bastion is an engine > (https://github.com/Katello/katello/tree/master/engines/bastion) > contained within the Katello engine that provides an angularjs based > UI for Katello. To the aforementioned end, Walden and myself have put > together a proposal on how we might accomplish this. Our goals are: > > 1) Allow UI plugins written using Bastion infrastructure to apply to > Foreman and Foreman+Katello > 2) Allow UI plugins to add new pages or override existing UI pages > 3) Keep changes to Katello and it's codebase minimal so as not to > impact development > 4) Centralize common components > > With the above goals in mind, our proposal is thus: > > 1) Move common functionality from Bastion to a stand-alone engine > named Bastion. This includes angular modules that are used application > wide, assets (js libraries, stylesheets, fonts), rails views, > configuration and testing infrastructure. > 2) Rename the Bastion engine in Katello to bastion-katello and have it > require the Bastion engine. > 3) Replace or move to angular-patternfly Ui widgets/constructs used > throughout Bastion. > > Thoughts and feedback welcome. > > Thanks, > Eric > > -- > You received this message because you are subscribed to the Google Groups > "foreman-dev" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to foreman-dev+unsubscribe@googlegroups.com. > For more options, visit https://groups.google.com/d/optout. >

> Howdy,
>
> A request has come in to allow UI plugins that take advantage of the
> structure and tooling provided by Bastion. For those who don't know,
> Bastion is an engine
> (https://github.com/Katello/katello/tree/master/engines/bastion)
> contained within the Katello engine that provides an angularjs based
> UI for Katello. To the aforementioned end, Walden and myself have put
> together a proposal on how we might accomplish this. Our goals are:
>
> 1) Allow UI plugins written using Bastion infrastructure to apply to
> Foreman and Foreman+Katello
> 2) Allow UI plugins to add new pages or override existing UI pages
> 3) Keep changes to Katello and it's codebase minimal so as not to
> impact development
> 4) Centralize common components
>
> With the above goals in mind, our proposal is thus:
>
> 1) Move common functionality from Bastion to a stand-alone engine
> named Bastion. This includes angular modules that are used application
> wide, assets (js libraries, stylesheets, fonts), rails views,
> configuration and testing infrastructure.
> 2) Rename the Bastion engine in Katello to bastion-katello and have it
> require the Bastion engine.
> 3) Replace or move to angular-patternfly Ui widgets/constructs used
> throughout Bastion.
>
> Thoughts and feedback welcome.
>

+1

Ohad

··· On Tue, Sep 9, 2014 at 6:28 PM, Eric D Helms wrote:

Thanks,
Eric


You received this message because you are subscribed to the Google Groups
"foreman-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an
email to foreman-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

> Howdy,
>
> A request has come in to allow UI plugins that take advantage of the
> structure and tooling provided by Bastion. For those who don't know,
> Bastion is an engine
> (https://github.com/Katello/katello/tree/master/engines/bastion)
> contained within the Katello engine that provides an angularjs based
> UI for Katello. To the aforementioned end, Walden and myself have put
> together a proposal on how we might accomplish this. Our goals are:
>
> 1) Allow UI plugins written using Bastion infrastructure to apply to
> Foreman and Foreman+Katello
> 2) Allow UI plugins to add new pages or override existing UI pages
> 3) Keep changes to Katello and it's codebase minimal so as not to
> impact development
> 4) Centralize common components
>
> With the above goals in mind, our proposal is thus:
>
> 1) Move common functionality from Bastion to a stand-alone engine
> named Bastion. This includes angular modules that are used application
> wide, assets (js libraries, stylesheets, fonts), rails views,
> configuration and testing infrastructure.

+1 - I would like to get foreman-tasks on the angular, this would be great step
forward this goal

– Ivan

··· ----- Original Message -----
  1. Rename the Bastion engine in Katello to bastion-katello and have it
    require the Bastion engine.
  2. Replace or move to angular-patternfly Ui widgets/constructs used
    throughout Bastion.

Thoughts and feedback welcome.

Thanks,
Eric


You received this message because you are subscribed to the Google Groups
"foreman-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an
email to foreman-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

> Thoughts and feedback welcome.

I'd like to ask you to extend the README with more info what it does.
I've mentioned in other thread - it is not clear for me (after reading
the current one) what does Bastion provide.

··· -- Later, Lukas #lzap Zapletal

>
>
> > Howdy,
> >
> > A request has come in to allow UI plugins that take advantage of the
> > structure and tooling provided by Bastion. For those who don't know,
> > Bastion is an engine
> > (https://github.com/Katello/katello/tree/master/engines/bastion)
> > contained within the Katello engine that provides an angularjs based
> > UI for Katello. To the aforementioned end, Walden and myself have put
> > together a proposal on how we might accomplish this. Our goals are:
> >
> > 1) Allow UI plugins written using Bastion infrastructure to apply to
> > Foreman and Foreman+Katello
> > 2) Allow UI plugins to add new pages or override existing UI pages
> > 3) Keep changes to Katello and it's codebase minimal so as not to
> > impact development
> > 4) Centralize common components
> >
> > With the above goals in mind, our proposal is thus:
> >
> > 1) Move common functionality from Bastion to a stand-alone engine
> > named Bastion. This includes angular modules that are used application
> > wide, assets (js libraries, stylesheets, fonts), rails views,
> > configuration and testing infrastructure.
> > 2) Rename the Bastion engine in Katello to bastion-katello and have it
> > require the Bastion engine.
> > 3) Replace or move to angular-patternfly Ui widgets/constructs used
> > throughout Bastion.
> >
> > Thoughts and feedback welcome.
> >
> > Thanks,
> > Eric
> >
> > –
> > You received this message because you are subscribed to the Google Groups
> > "foreman-dev" group.
> > To unsubscribe from this group and stop receiving emails from it, send an
> > email to foreman-dev+unsubscribe@googlegroups.com.
> > For more options, visit https://groups.google.com/d/optout.
> >
>
> This would be very helpful.
>
> Specifically I am on the team writing the version of katello that comes
> free with RHEL. This is a much-simplified version primarily meant for
> managing Red Hat subscriptions and not content or provisioning. For this
> product a plugin is a great way to clean up, through both UI and API,
> resources such as users, roles, organizations, etc. Ideally, work done on a
> new roles UI could be shared upstream as an optional interface to replace
> the existing in either foreman alone or in katello.
>
>
Do you mean you want to move users/roles into the engine as well? or rather
to provide a new ui for those?

can you clarify on why one would need a brand new ui for existing pages?

thanks,
Ohad

··· On Tue, Sep 9, 2014 at 9:34 PM, Tom McKay wrote: > ----- Original Message -----


You received this message because you are subscribed to the Google Groups
"foreman-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an
email to foreman-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

At this point my exploration of plugins have been to replace UIs and in some cases override the API json for some routes.

Roles are probably the best example to consider in my specific case. To keep the tool simple and in alignment to what is expected by product management, all of the foreman resources (hosts, puppet reports, provisioning templates, etc.) will be completely disabled. By creating a plugin, I can add code to hide these permissions completely from not only regular users but from the admin user as well. The plugin can accomplish this for both the UI and the API (by overriding the json).

Also by creating the UI as a plugin, there won't be any conflict between what foreman community wants and what katello community needs. Since the plugin would be optional, some community may choose to use and others may not. It will at least be very easy to evaluate by simply adding the gem and restarting the server.

Why a new UI at all? I can either spend a lot of time defacing and hacking at existing pages that I require, or I can invest a bit in the future and create the pages as plugins so they will match the katello pages. Remember, my users won't see foreman pages at all so the fact that the hosts page doesn't behave like the content host page is not an issue. To be honest, there are a couple of katello pages that may get replaced with simplifications too!

··· ----- Original Message ----- > On Tue, Sep 9, 2014 at 9:34 PM, Tom McKay wrote: > > > > > > > ----- Original Message ----- > > > Howdy, > > > > > > A request has come in to allow UI plugins that take advantage of the > > > structure and tooling provided by Bastion. For those who don't know, > > > Bastion is an engine > > > (https://github.com/Katello/katello/tree/master/engines/bastion) > > > contained within the Katello engine that provides an angularjs based > > > UI for Katello. To the aforementioned end, Walden and myself have put > > > together a proposal on how we might accomplish this. Our goals are: > > > > > > 1) Allow UI plugins written using Bastion infrastructure to apply to > > > Foreman and Foreman+Katello > > > 2) Allow UI plugins to add new pages or override existing UI pages > > > 3) Keep changes to Katello and it's codebase minimal so as not to > > > impact development > > > 4) Centralize common components > > > > > > With the above goals in mind, our proposal is thus: > > > > > > 1) Move common functionality from Bastion to a stand-alone engine > > > named Bastion. This includes angular modules that are used application > > > wide, assets (js libraries, stylesheets, fonts), rails views, > > > configuration and testing infrastructure. > > > 2) Rename the Bastion engine in Katello to bastion-katello and have it > > > require the Bastion engine. > > > 3) Replace or move to angular-patternfly Ui widgets/constructs used > > > throughout Bastion. > > > > > > Thoughts and feedback welcome. > > > > > > Thanks, > > > Eric > > > > > > -- > > > You received this message because you are subscribed to the Google Groups > > > "foreman-dev" group. > > > To unsubscribe from this group and stop receiving emails from it, send an > > > email to foreman-dev+unsubscribe@googlegroups.com. > > > For more options, visit https://groups.google.com/d/optout. > > > > > > > This would be very helpful. > > > > Specifically I am on the team writing the version of katello that comes > > free with RHEL. This is a much-simplified version primarily meant for > > managing Red Hat subscriptions and not content or provisioning. For this > > product a plugin is a great way to clean up, through both UI and API, > > resources such as users, roles, organizations, etc. Ideally, work done on a > > new roles UI could be shared upstream as an optional interface to replace > > the existing in either foreman alone or in katello. > > > > > Do you mean you want to move users/roles into the engine as well? or rather > to provide a new ui for those? > > can you clarify on why one would need a brand new ui for existing pages? > > thanks, > Ohad >