I propose to do all the following (not everthing at once)
We can add driver or transport to drive (which currently supports size and name).
We can add id to partition (which currently supports size, name and number).
| { | |
| "storage": { | |
| "drives": [ | |
| { | |
| "search": { | |
| "condition": { "partitions": { "max": 0 } } | |
| }, | |
| "alias": "noPartitionsA" | |
| }, | |
| { |
| Elements (assuming there are candidate devices) | |
| ============================================== | |
| a) ProposalFailedInfo | |
| "Failed to calculate a storage layout" | |
| b) FixableConfigInfo | |
| "The configuration must be adapted to address the following issues" | |
| c) UnsupportedModelInfo | |
| "Config is valid (see result below) but not supported by UI [button to reset]" |
Agama uses this code to initialize iSCSI and iBFT. It looks quite reasonable.
def activate
start_services
Yast::IscsiClientLib.getiBFT
# Check initiator name, creating one if missing.
return false unless Yast::IscsiClientLib.checkInitiatorName(silent: true)
# Why we need to sleep here? This was copied from yast2-iscsi-client.When saying "drive" I mean any reused partitionable.
The spacePolicy is a concept that exists in the model but not in the config.
Right now, all drives in the model always have a spacePolicy value. Even those that do not contain partitions, or that are going to be formatted, or whatever.
On the contrary, the UI only shows the SpacePolicyMenu when it makes sense. Since you only need
This is the definition of a thin pool:
{
"logicalVolumes": [
{
"size": "40 GiB"
"name": "hanalv",
"pool": true
}Proposal of interface to select the APQNs on YaST based on the configured master keys.
This adapts the interface to support both EP11 and CCA and, in the latter case, to select between AES DATA and AES CIPHER.
One important change (compared to the current YaST UI), is that APQNs without a valid current AES or P11 master key are not even considered.
Adding master key selection, EP11 cards and key types results in many, many possible combinations. Let's try to describe how the new UI works in all those cases. The screens are displayed as 80x24 text mode.
I was involved in several Hack Week projects and, as a result, I only invested some hours on https://hackweek.opensuse.org/24/projects/editor-mode-at-agama-web-interface
Fortunatelly, Imo and David helped me to get started, so I was able to get something working. See below.
The Agama profile should contain a storage section. If it's omitted, an alternative section called legacy_autoyast_storage can be specified instead.
That legacy_autoyast_storage is a 1:1 representation of the XML specification of AutoYaST. No json validation will be performed for it.
| # Class to calculate a storage proposal for autoinstallation | |
| # | |
| # @example Creating a proposal from the current AutoYaST profile | |
| # partitioning = Yast::Profile.current["partitioning"] | |
| # proposal = Y2Storage::AutoinstProposal.new(partitioning: partitioning) | |
| # proposal.proposed? # => false | |
| # proposal.devices # => nil | |
| # proposal.planned_devices # => nil | |
| # | |
| # proposal.propose # Performs the calculation |