On Sat, Sep 19, 2020 at 11:56 PM Vinícius Ferrão <ferrao(a)versatushpc.com.br>
wrote:
Hello, I’m developing an application around Cockpit with my
colleagues and
I was wondering if there’s a way to consume Cockpit without our application
being a plugin inside the Cockpit interface.
Our application is something like an HPC Cluster Manager, so it makes
total sense to use Cockpit as the basis, there’s a lot of functionality
built in, and the upstream development is just awesome. But as per consumer
feedback it would be better to have a separate web interface instead of it
being a plugin inside the Cockpit web interface.
I’m looking through the documentation and there’s the Cockpit API:
https://cockpit-project.org/guide/latest/development.html
I see that Cockpit can be embedded entirely in an external application,
but this is not what we really want to do.
We want to do a new web interface, using IBM’s Carbon design guidelines
with HPC in mind and not the system being managed, which is the vision of
Cockpit as is. There’s this Deep Integration on the documentation and I
think what we need is just this, but the documentation is lacking.
The point is: as today, is it viable to consume Cockpit with its API’s in
a totally different frontend interface? So I can use things like:
authentication, performance graphs, dashboards, user creation, logging,
console terminal, etc?
It certainly is possible and a number of projects have done this. I've done
a number of demos of this. Here's some links:
https://cockpit-project.org/blog/sso-oauth.html
https://cockpit-project.org/guide/133/embedding.html#embedding-components
Not only is it possible, but the protocols between the different parts of
Cockpit (front end, cockpit-ws, cockpit-bridge, cockpit-ssh, authentication
etc.) are all stable "APIs". The project aims and guarantees (via testing)
that these protocols do not change.
In particular it is possible to:
* Embed Cockpit in another application (see Foreman)
* Replace the authentication mechanism:
https://github.com/cockpit-project/cockpit/blob/master/doc/authentication.md
* Display just a single component (rather than the full shell)
* Change the components that are displayed
* Add custom components (obviously as decumented)
* Replace the default "shell" ... this is the frame/menu that loads the
other components
It sounds like you want to do the last one ^^, is that correct?
You can do so by setting something like in /etc/cockpit/cockpit.conf
[WebService]
Shell = /mycomponent/index.html
Does that work for you?
Stef
--
Stef Walter (he / his)
Linux Engineering
Red Hat