3.5. UMC plugins#

UMC is the part in Nubus for Kubernetes that provides the Management UI. It’s the presentation layer for the business logic of the Directory Manager that you can customize through UDM plugins.

This section describes how to extend the Management UI in Nubus for Kubernetes with custom UMC modules and icons. Nubus comes with a default set of icons and UMC modules. If you need additional presentation for your business logic in the Management UI, then this section is for you. As a result, your packaged integration includes the umc-modules and umc-icons plugin types.

UMC is the part in Nubus for Kubernetes that provides the Management UI. It’s the presentation layer for the business logic of the Directory Manager that you can customize through UDM plugins. In the Management UI, the UMC Server provides the functionality for the presentation layer. The UMC Server consists of several UMC modules, each of them provides a specific functionality and presentation layer.

For example, the Users module in the Management UI provides functionality for the presentation layer to manage user account objects through the Management UI as defined in the users/user UDM module. The presentation layer comes from the UMC module for UDM. The customization of the UMC module for UDM is usually enough to cover the presentation layer for your custom UDM modules.

See also

Management UI

in Univention Nubus for Kubernetes - Architecture Manual [1] for information about the architecture of the Management UI in Nubus for Kubernetes.

3.5.1. UMC modules#

This section focuses on the UMC module for UDM. It describes how you can use the umc-modules plugin type to extend the UMC module for UDM. It covers the following topics:

  1. UMC module directory structure

  2. UMC module definition, a reference for UMC module definition file in XML format.

  3. Plugin type umc-modules, how to add the plugin type to the packaged integration.

3.5.1.1. UMC module directory structure#

In the beginning, you need to create the proper directory structure. Listing 3.6 shows an example of a directory structure of a UMC module.

Listing 3.6 Directory structure for UMC module#
umc-module-name
└── umc
    ├── icons
    │   └── scalable
    │       └── the-umc-module-icon.svg
    └── umc-module-name.xml

The directory structure has the following elements:

umc/icons/scalable

Contains the icons for UMC module on the overview page of the Management UI. See UMC icons.

umc/umc-module-name.xml

The UMC module definition file defines aspects such as name, description, icon to use, and in which category the Management UI shows the UMC module. See UMC module definition.

3.5.1.2. UMC module definition#

An XML file defines the metadata for the UMC module. It gathers the individual elements that make up the UMC module. Listing 3.7 shows an example of a UMC module definition file.

Listing 3.7 Example of a UMC module definition file umc/umc-module-name.xml#
<?xml version="1.0" encoding="UTF-8"?>
<!--
 SPDX-License-Identifier: AGPL-3.0-only
 SPDX-FileCopyrightText: 2025 Univention GmbH
-->
<umc version="2.0">
  <module id="udm" version="1.0">
    <flavor icon="the-umc-module-icon" id="the-udm-module/the-module">
      <name>The Module</name>
      <description>Module to manage the-module data</description>
    </flavor>
    <categories>
      <category name="domain"/>
    </categories>
  </module>
</umc>

Listing 3.7 has the following elements:

<umc>

Required XML tag with the attribute version="2.0". All UMC modules need this surrounding tag.

<module>

This required XML tag defines the UMC module. It needs the following attributes:

id

A unique name. For extending the UMC module for UDM the value must be "udm", as shown in the example.

version

The value must be "1.0".

<flavor>

A flavor references the UDM module for which the UMC module for UDM creates the presentation layer. For an explanation about UMC modules, see the introduction to UMC plugins. The <flavor> tag is only available for the UMC module for UDM. You can define multiple flavors. Each flavor defines the following attributes:

icon

The name of the icon as saved in the umc-module-name/umc/icons/scalable/ directory, without the filename extension. In the example, the filename is the-umc-module-icon.svg. The value for the attribute then is "the-umc-module-icon". For the icon itself, see UMC icons.

id

The UDM module that the flavor relates to. The UMC module for UDM automatically creates a form that shows the properties of that UDM module.

Inside the <flavor> you need to define the following XML tags:

<name>

A short name of the UMC module. The Management UI shows the name together with the icon on its overview page.

<description>

A description of the UMC module. The Management UI provides the description as a mouse over tooltip on its overview page.

<categories>

The overview of the Management UI uses categories to group flavors. This section in the definition file defines in which category of the overview page the Management UI shows the UMC modules.

It has the element <category> to assign the category in the name attribute. The Management UI provides the following categories from which you can choose one:

  • "users"

  • "devices"

  • "domain"

  • "system"

  • "software"

3.5.1.3. Plugin type umc-modules#

To add UMC modules as plugin type to your packaged integration, use the following steps:

  1. Save the UMC module files in a directory, for example with the name of the module umc-module-name.

  2. Follow the instructions for building the container image in Bundle packaged integrations.

  3. Copy the plugin file to your packaged integration. For UMC modules, the plugin-type is umc-modules. See Add plugins.

    $ export PLUGIN_TYPE="umc-modules"
    $ export PLUGIN_FILE="umc-module-name/umc/umc-module-name.xml"
    

3.5.2. UMC icons#

The Management UI shows each UMC module on the overview page and represents it with an icon and a name. The plugin type umc-icons is responsible for providing the graphics file for the icon. Each UMC module can only have one icon. The Management UI requires icons in SVG format for dynamic scaling.

To add UMC icons to Nubus for Kubernetes, use the following steps:

  1. Save the icon in the directory structure of your UMC module in the path umc/icons/scalable. Give it any well-identifying filename with the extension .svg, for example the-umc-module-icon.svg.

  2. Add an entry for the icon to the UMC module definition file. See the icon attribute in UMC module definition.

  3. Follow the instructions for building the container image in Bundle packaged integrations.

  4. Copy the plugin file to your packaged integration project. For UMC icons, the plugin-type is umc-icons. See Add plugins.

    $ export PLUGIN_TYPE="umc-icons"
    $ export PLUGIN_FILE="umc-module/name/umc/icons"