Blog posts

Category: Release

Cockpit 153

Cockpit is the modern Linux admin interface. We release regularly. Here are the release notes from version 153.

Add oVirt package

This version introduces the “oVirt Machines” page on Fedora for controlling oVirt virtual machine clusters. This code was moved into Cockpit as it shares a lot of code with the existing “Machines” page, which manages virtual machines through libvirt.

This feature is packaged in cockpit-ovirt and when installed it will replace the “Machines” page.

oVirt overview

Packaging cleanup

This release fixes a lot of small packaging issues that were spotted by rpmlint/lintian.

Try it out

Cockpit 153 is available now:

Cockpit 152

Cockpit is the modern Linux admin interface. We release regularly. Here are the release notes from version 152.

Add Applications page

This version introduces the “Applications” tool page. This is an extension point for third-party software to add themselves to the Cockpit interface, by shipping appropriate AppStream metadata.

Note that at the moment there are no real Cockpit applications available yet. For testing this feature on Fedora, Marius Vollmer provides a COPR repository that can be enabled with these commands:

dnf copr enable mvo/cockpit-app-freeipa
dnf install appstream-data-mvo

See it in action:

Add automatic update configuration for dnf to Software Updates

On Fedora ≥ 26, the Software Updates page now offers to enable and configure dnf-automatic for automatic daily or weekly updates.

For now this is only shown if the dnf-automatic package is already installed. Future Cockpit versions will install that on demand, and also cover Debian/Ubuntu systems.

Automatic Updates

Fix cockpit-bridge crash if /etc/os-release does not exist

Some environments (particularly Docker containers) might not have an /etc/os-release file, which cockpit-bridge previously required.

Try it out

Cockpit 152 is available now:

Cockpit 151

Cockpit is the modern Linux admin interface. We release regularly. Here are the release notes from version 151.

Support loading SSH keys from arbitrary paths

The User menu’s Authentication dialog now supports entering arbitrary paths to SSH keys for adding to the SSH authentication agent. Previously this only offered keys present in the standard ~/.ssh home directory.

See it in action:

Support X-Forwarded-Proto HTTP header for Kubernetes

Newer Kubernetes versions support reading the X-Forwarded-Proto HTTP header, which helps to determine whether or not a client used SSL to connect to an intermediate proxy, load balancer, or similar. Cockpit’s Kubernetes (Cluster) dashboard now sets this header. Earlier versions have already done that when hosted in OpenShift.

Fix Kubernetes connection hangs

The previous Cockpit release 150 introduced a regression when connecting to Kubernetes clusters. In some cases, like specifying a wrong server name or when the Cluster did not send Authentication Provider information, the connection attempt would hang indefinitely. This version corrects this bug.

Try it out

Cockpit 151 is available now:

Cockpit 150

Cockpit is the modern Linux admin interface. We release regularly. Here are the release notes from versions 149 and 150.

Add information about unmet conditions for systemd services

Systemd units can have conditions which must be met in order for the service to start. Cockpit now shows unmet conditions in the details of a service, so that users can see why a service is in active.

Unmet systemd service conditions

Automatically enable and start newly created timers on the Services page

Cockpit allows the user to create custom systemd timers on the Services page, to run commands at particular times or after boot. Previously they had to be explicitly enabled and started to become effective; this now happens automatically.

Support Kubernetes authentication providers in kube config files

Some kubernetes deployments such as Google Compute Engine use Kubernetes authentication providers so that they can automatically regenerate their access token when needed. Cockpit now supports kube config files using this format.

Support sending non-maskable interrupt to VMs

The Shut Down button on the Machines page got a new option “Send Non-Maskable Interrupt”. This normally does not trigger a reaction (other than a kernel message), but the Linux kernel can be configured to react to this with a kernel panic. This allows administrators to debug hung virtual machines.

Machines NMI

Support Dashboard installation into OSTree overlay

The cockpit-dashboard package can now be installed as package overlay into rpm-ostree. This enables managing multiple remote servers through one Cockpit instance on Atomic based systems.

Previously, after logging out (explicitly or due to session timeout) it could happen that revisiting a seen page would show a cached version instead of the login page. This has now been fixed by properly clearing Cockpit’s browser cookie.

Try it out

Cockpit 150 is available now:

Cockpit 148

Cockpit is the modern Linux admin interface. We release regularly. Here are the release notes from version 148.

Support Cockpit in Internet Explorer

When using Microsoft Windows Internet Explorer, navigating between pages and various other operations caused lost state changes, flickering, and lots of JavaScript errors. These have been corrected, and automatic tests now run with Internet Explorer as well.

Update Cluster/Registry design for image streams

The design of the image streams on the Cluster and Registry pages has been updated to match the design of the current OpenShift Web Console.

Image Stream Tag Design

Delete OpenShift session tokens on logout

If the Registry Console or Dashboard creates a new OpenShift session token on login, it will now delete that token again on logout. This behaviour now matches what the OpenShift Web Console does.

Detect unregistered RHEL systems on Software Updates page

On RHEL systems which have not yet been registered or whose registration expired, the Software Page would previously have claimed that “the system is up to date”. Now it detects if the system is unregistered and thus cannot receive updates:

Software Updates on unregistered RHEL system

Try it out

Cockpit 148 is available now:

Cockpit 147

Cockpit is the modern Linux admin interface. We release regularly. Here are the release notes from version 147.

Add configuration of expiry to Accounts page

The Accounts page can now display and change the expiration of user accounts and their passwords. Note that the login page supports changing expired passwords.

See it in action:

Thanks to Fridolin Pokorny for this improvement!

Consistently ignore loopback traffic on all network load graphs

The network load graphics on the System, Networking, and Dashboard pages sometimes accounted traffic on the loopback network device (lo), which in most cases is not interesting for administrators. Now the graphs always ignore the loopback device.

Fix the Kdump page in Internet Exporer

This page previously produced errors when being opened in Internet Explorer due to using unsupported JavaScript functions. These got replaced.

Try it out

Cockpit 147 is available now:

Cockpit 146

Cockpit is the modern Linux admin interface. We release regularly. Here are the release notes from version 146.

Software Updates page shows more information

The Available Updates and Restart recommended pages now show the packages from the previous update run. This makes it easier to see which services to check or to decide whether a restart is really necessary:

Update History

The new Update Log expander shows the previous steps of the running update:

Update Log

Improve available Software Updates layout for small/mobile screens

The Available Updates page now folds all information into a single column on very narrow/mobile screens, to stay readable:

Narrow Updates Page

In addition, updates with a long changelog or a large number of subpackages now get truncated, with a More information… expander. This avoids lots of empty space that makes it difficult browse the updates list.

Support OAuth Kubernetes logins with Google Compute Engine

The Kubernetes pages (Cluster) can now log into Google Compute Engine. Note that there is no way to get information about the user, so they are being displayed as Unknown.

Fix reporting ABRT crashes that are already known to the server

Trying to report a crash (Problems category on the Logs page) that the FAF server already knows previously caused an error message. This has been corrected, and the report is now properly shown as Reported.

Thanks to Matej Marušák for this fix!

Scroll the virtual machine VNC console into view automatically

When opening the builtin VNC console of a virtual machine, the page now automatically gets scrolled to maximize visibility of the console.

Thanks to Marek Libra for this improvement!

Try it out

Cockpit 146 is available now:

Cockpit 145

Cockpit is the modern Linux admin interface. We release regularly. Here are the release notes from version 144 and 145.

Terminal size

The Terminal now uses the full window size and dynamically resizes with it. Previously its size was fixed to 80x24 characters.

Full-window terminal

Machines page reactiveness

The Machines page now listens to libvirt events instead of reading the entire state of all virtual machines every ten seconds. This makes the page much more reactive to state changes and reduces the number of calls to virsh.

Delete VM functionality

A “Delete” button/dialog was added to the Machines page. If the VM is still running, it will be force-stopped first. The dialog also offers you the choice to remove the VM’s disk images as well.

Delete VM

Retire external Machines provider API

Cockpit 132 introduced an external API for the Machines page that allowed third party plugins to dynamically add/manage virtual machines from providers other than libvirt. This was found to be not supportable in the long run and thus was discontinued.

ABRT integration

On Fedora 26 the Logs Page now shows Problem reports from the ABRT crash reporting tool. They appear as new message class “Problem” in the journal view, and their details can be visited when clicking on them:

ABRT list view

ABRT detail view

Thanks to Matej Marusak for this feature!

Always recommend restarting after applying Software Updates

Most supported operating systems in Cockpit don’t provide a reliable detection of whether they require restarting the machine after applying updates for them to fully take effect. This particularly affects updates to the kernel, but also restarting services. For now, Cockpit will always recommend to restart the machine after applying updates:

Restart after Updates

Cancelling Software Updates

The Software Updates page now has a Cancel button that is enabled while it is still safe to abort a running update, i.e. while the updates are still being downloaded.

Try it out

Cockpit 145 is available now:

Cockpit Virtual Hackfest Wrapup

Last week a bunch of us met up in Karlsruhe in Germany to work on virtual machines support in Cockpit. We had some specialists there who helped us get up to speed with VMs. Tons of pull requests opened, designs put together. Some of the changes are already merged and released in Cockpit 144.

Marek helped all of us understand how Redux stores and models data. The oVirt folks are using Redux a lot in front end code and want to be able to share code. Marius managed to reconcile Redux with our dialog and promise code.

Creating virtual machines is hard. There’s a surprising amount of strange little details and corner cases. Andreas, Garrett, Pavel, Dominik and Michal were involved in long discussions about how to make this work. And Dominik opened a pull request.

Create dialog

Create dialog details

Stef and Marek worked on sharing code between the oVirt javascript code based on Cockpit and the more general virtual machines code in Cockpit. Since most of the code is shared, we decided we didn’t want to create any further API here that we had to keep stable, but rather build and develop the two in tandem. In the future some of the specific UI widgets will be factored out into reusable stable javascript NPM components.

Martin refactored Cockpit’s access to libvirt to be more efficient and scalable with the number of VMs. It currently uses virsh.

At the same time Lars and Pavel started a DBus based wrapper for libvirt. This wrapper should be maintained near other libvirt bindings, such as libvirt-python.

Marius added functionality to Delete virtual machines from the Cockpit UI.

Stef wrote code to boot real virtual machines during CI testing. We’re using the same Cirros Linux that oVirt and Openstack use during testing.

And there were more pull requests and discussions, but I’m running out of space.

Cockpit Virtual Hackfest

There’s a Cockpit Hackfest underway in Karlsruhe, Germany. We’re working on the virtual machine functionality in Cockpit.


That means interacting with libvirt. Although libvirt has remoting functionality it has no API that’s actually remotable and callable from Cockpit javascript code. So Lars and Pavel started working on a DBus wrapper for the API.

At the same time, Martin is working on making the current virsh based access to libvirt more performant, so we don’t block on waiting until the DBus wrapper is done.

Lots of work was done understanding redux. The initial machines code in Cockpit was written using redux, and we needed to map it’s concept of models and state to the Cockpit way of storing state on the server and UI concepts like dialogs. Everyone was involved.

Andreas, Garrett have been working on designs for creating a virtual machine and editing virtual machines. Dominik started work on implementing that code.

Marius worked on deletion of virtual machines, and already has a pull request open.

Stef worked on the integration tests for the virtual machine stuff and is booting nested VMs using nested images.