Skip to content

Instantly share code, notes, and snippets.

View joseivanlopez's full-sized avatar

José Iván López joseivanlopez

  • Suse Linux Gmbh
  • Las Palmas de Gran Canaria
View GitHub Profile

Agama Roadmap

Features To Implement

Architectural Changes

  • Drop Cockpit dependency.
  • Replace Cockpit login by own solution.
    • Check proposed solution with security team.
  • Replace Cockpit translation system by own solution.

Software conflicts in agama

Agama uses yast2-packager and yast2-pkg-bindings API for selecting patterns/packages and solving dependencies, calling to the libzypp C++ library under the hood.

Sometimes there are conflicts with the selected packages/patterns. In that cases, the zypp resolver fails and reports a list of problems. In that cases, the YaST Packager UI shows the poblems to the user, allowing to select a solution for each problem.

Agama needs something similar to YaST Packager in order to notify and fix the solver problems. This document analyzes how to bring that feature to Agama.

Solver problems from libzypp

Agama And Product Registation

This document analyses different approaches for registering a product and exposes some possible solutions for implementing registration in Agama.

Installation Vs Registration (Chicken-egg Problem)

An installer like Agama (or YaST) needs to know any repository from which to get the packages of the product to install.

SUSE repositories are only known after registering a product, but SUSEConnect CLI (i.e., the official tool for registering) cannot register a product unless it is already installed. So, how is the system actually installed by YaST?

Agama Storage Overview

Storage

2 devices used for the installation:

512 GiB Micron 100 SATA vda 1 TiB Assus 2239 vdb

Manager
  Probe(product)
    Software#SelectProduct
    Storage#Probe ?
    Storage#Calculate
    Software#Probe

Storage
 Probe

Update products and release

Update Agama config

  • Update products in service/etc/agama.yml
  • Use correct repositories for each product
  • Make sure the required patterns are available in the repos
  • Set the correct base_product name. To get it, check the internal name:

Agama Storage Settings

This document proposes a possible solution for defining the new storage settings for Agama. The result is based on this other document, which uses the VolumeTemplate concept for representing the settings of a volume coming from the control file.

Why yet another proposal for settings

The definition of the storage settings in the control file, and its transcription to Agama code by means of the VolumeTemplate approach seem to have some flaws.

One thing to consider is the repetition of fields. A VolumeTemplate and the resulting Volumes created from them have some fields in common. Repetition is not a problem per se, but it does not sound totally correct. Moreover, it seems that a VolumeTemplate is used for several things at the same time:

Current API


# busctl --address unix:path=/run/agama/bus tree org.opensuse.Agama.Storage1
└─/org
  └─/org/opensuse
    └─/org/opensuse/Agama
      └─/org/opensuse/Agama/Storage1
 └─/org/opensuse/Agama/Storage1/zfcp_luns

SUSE sudo and openssh

This document highlights how sudo and openssh are configured for (open)SUSE products and points some proposed improvements.

sudo

Currently sudo is configured to always ask for the root password, and this could have some problems:

  • The behavior might be unexpected:
  • sudo typically asks for the current user password.

Agama Storage D-Bus API

This document analyzes how UDisks2 D-Bus API looks and what approach to follow for exposing devicegraph details in the Agama API.

UDisks2

Partitions

/dev/sda (Micron1)