d-installer 0.4.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/Gemfile +29 -0
- data/Gemfile.lock +75 -0
- data/bin/d-installer +74 -0
- data/etc/d-installer.yaml +284 -0
- data/lib/dinstaller/can_ask_question.rb +48 -0
- data/lib/dinstaller/cmdline_args.rb +80 -0
- data/lib/dinstaller/cockpit_manager.rb +176 -0
- data/lib/dinstaller/config.rb +128 -0
- data/lib/dinstaller/config_reader.rb +164 -0
- data/lib/dinstaller/dbus/base_object.rb +58 -0
- data/lib/dinstaller/dbus/clients/base.rb +71 -0
- data/lib/dinstaller/dbus/clients/language.rb +86 -0
- data/lib/dinstaller/dbus/clients/manager.rb +76 -0
- data/lib/dinstaller/dbus/clients/software.rb +185 -0
- data/lib/dinstaller/dbus/clients/users.rb +112 -0
- data/lib/dinstaller/dbus/clients/with_progress.rb +56 -0
- data/lib/dinstaller/dbus/clients/with_service_status.rb +75 -0
- data/lib/dinstaller/dbus/clients.rb +34 -0
- data/lib/dinstaller/dbus/interfaces/progress.rb +113 -0
- data/lib/dinstaller/dbus/interfaces/service_status.rb +89 -0
- data/lib/dinstaller/dbus/language.rb +93 -0
- data/lib/dinstaller/dbus/language_service.rb +92 -0
- data/lib/dinstaller/dbus/manager.rb +147 -0
- data/lib/dinstaller/dbus/manager_service.rb +132 -0
- data/lib/dinstaller/dbus/question.rb +176 -0
- data/lib/dinstaller/dbus/questions.rb +124 -0
- data/lib/dinstaller/dbus/service_runner.rb +97 -0
- data/lib/dinstaller/dbus/service_status.rb +87 -0
- data/lib/dinstaller/dbus/software/manager.rb +131 -0
- data/lib/dinstaller/dbus/software/proposal.rb +82 -0
- data/lib/dinstaller/dbus/software.rb +31 -0
- data/lib/dinstaller/dbus/software_service.rb +86 -0
- data/lib/dinstaller/dbus/storage/proposal.rb +170 -0
- data/lib/dinstaller/dbus/storage.rb +30 -0
- data/lib/dinstaller/dbus/users.rb +132 -0
- data/lib/dinstaller/dbus/users_service.rb +92 -0
- data/lib/dinstaller/dbus/with_service_status.rb +48 -0
- data/lib/dinstaller/dbus/y2dir/manager/modules/Package.rb +51 -0
- data/lib/dinstaller/dbus/y2dir/manager/modules/PackagesProposal.rb +62 -0
- data/lib/dinstaller/dbus/y2dir/modules/Autologin.rb +214 -0
- data/lib/dinstaller/dbus/y2dir/software/modules/SpaceCalculation.rb +44 -0
- data/lib/dinstaller/dbus.rb +11 -0
- data/lib/dinstaller/errors.rb +28 -0
- data/lib/dinstaller/installation_phase.rb +106 -0
- data/lib/dinstaller/language.rb +73 -0
- data/lib/dinstaller/luks_activation_question.rb +92 -0
- data/lib/dinstaller/manager.rb +261 -0
- data/lib/dinstaller/network.rb +53 -0
- data/lib/dinstaller/package_callbacks.rb +69 -0
- data/lib/dinstaller/progress.rb +149 -0
- data/lib/dinstaller/question.rb +103 -0
- data/lib/dinstaller/questions_manager.rb +145 -0
- data/lib/dinstaller/security.rb +96 -0
- data/lib/dinstaller/service_status_recorder.rb +58 -0
- data/lib/dinstaller/software.rb +232 -0
- data/lib/dinstaller/storage/actions.rb +90 -0
- data/lib/dinstaller/storage/callbacks/activate.rb +93 -0
- data/lib/dinstaller/storage/callbacks/activate_luks.rb +93 -0
- data/lib/dinstaller/storage/callbacks/activate_multipath.rb +77 -0
- data/lib/dinstaller/storage/callbacks.rb +30 -0
- data/lib/dinstaller/storage/manager.rb +104 -0
- data/lib/dinstaller/storage/proposal.rb +197 -0
- data/lib/dinstaller/storage.rb +30 -0
- data/lib/dinstaller/users.rb +156 -0
- data/lib/dinstaller/with_progress.rb +63 -0
- data/lib/dinstaller.rb +5 -0
- data/share/dbus.conf +38 -0
- data/share/dbus.service +5 -0
- data/share/systemd.service +14 -0
- metadata +295 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 253a15d3d68d11b66044b110aff597967e2b1a9cfd39d8d30d2de1e6300519a0
|
4
|
+
data.tar.gz: 5cb5c1dc86a5c2849ef73220720001b72a75873d7d37a354ca9fc0ab01c35701
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: ff631f672cfb779c4662f35fdc0434a6767a43f1f367938ebd7632321e71f9ae89dfcde0f06ac5acca2ce697c792b4b5c5ccdd44b264a6fd0487ff651499f4b7
|
7
|
+
data.tar.gz: da4f9bdaf7484c7e259258b417a069f9b0106b25c47555b73ca23273f7662ce0a8488c4d1f4e58a9a5dcbdf6f80a1cc5da3252e0ccf15a78b2f5c1fb96f1f877
|
data/Gemfile
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
#
|
4
|
+
# Copyright (c) [2022] SUSE LLC
|
5
|
+
#
|
6
|
+
# All Rights Reserved.
|
7
|
+
#
|
8
|
+
# This program is free software; you can redistribute it and/or modify it
|
9
|
+
# under the terms of version 2 of the GNU General Public License as published
|
10
|
+
# by the Free Software Foundation.
|
11
|
+
#
|
12
|
+
# This program is distributed in the hope that it will be useful, but WITHOUT
|
13
|
+
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
14
|
+
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
15
|
+
# more details.
|
16
|
+
#
|
17
|
+
# You should have received a copy of the GNU General Public License along
|
18
|
+
# with this program; if not, contact SUSE LLC.
|
19
|
+
#
|
20
|
+
# To contact SUSE LLC about this file by physical or electronic mail, you may
|
21
|
+
# find current contact information at www.suse.com.
|
22
|
+
|
23
|
+
source "https://rubygems.org"
|
24
|
+
|
25
|
+
gemspec
|
26
|
+
|
27
|
+
group :development do
|
28
|
+
gem "byebug"
|
29
|
+
end
|
data/Gemfile.lock
ADDED
@@ -0,0 +1,75 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
d-installer (0.4.2)
|
5
|
+
cfa (~> 1.0.2)
|
6
|
+
cfa_grub2 (~> 2.0.0)
|
7
|
+
cheetah (~> 1.0.0)
|
8
|
+
eventmachine (~> 1.2.7)
|
9
|
+
fast_gettext (~> 2.2.0)
|
10
|
+
nokogiri (~> 1.13.1)
|
11
|
+
rexml (~> 3.2.5)
|
12
|
+
ruby-dbus (~> 0.18.1)
|
13
|
+
|
14
|
+
GEM
|
15
|
+
remote: https://rubygems.org/
|
16
|
+
specs:
|
17
|
+
abstract_method (1.2.1)
|
18
|
+
byebug (11.1.3)
|
19
|
+
cfa (1.0.2)
|
20
|
+
ruby-augeas
|
21
|
+
cfa_grub2 (2.0.0)
|
22
|
+
cfa (~> 1.0)
|
23
|
+
cheetah (1.0.0)
|
24
|
+
abstract_method (~> 1.2)
|
25
|
+
diff-lcs (1.5.0)
|
26
|
+
docile (1.4.0)
|
27
|
+
eventmachine (1.2.7)
|
28
|
+
fast_gettext (2.2.0)
|
29
|
+
mini_portile2 (2.8.0)
|
30
|
+
nokogiri (1.13.8)
|
31
|
+
mini_portile2 (~> 2.8.0)
|
32
|
+
racc (~> 1.4)
|
33
|
+
nokogiri (1.13.8-x86_64-linux)
|
34
|
+
racc (~> 1.4)
|
35
|
+
packaging_rake_tasks (1.5.1)
|
36
|
+
rake
|
37
|
+
racc (1.6.0)
|
38
|
+
rake (13.0.6)
|
39
|
+
rexml (3.2.5)
|
40
|
+
rspec (3.11.0)
|
41
|
+
rspec-core (~> 3.11.0)
|
42
|
+
rspec-expectations (~> 3.11.0)
|
43
|
+
rspec-mocks (~> 3.11.0)
|
44
|
+
rspec-core (3.11.0)
|
45
|
+
rspec-support (~> 3.11.0)
|
46
|
+
rspec-expectations (3.11.0)
|
47
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
48
|
+
rspec-support (~> 3.11.0)
|
49
|
+
rspec-mocks (3.11.1)
|
50
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
51
|
+
rspec-support (~> 3.11.0)
|
52
|
+
rspec-support (3.11.0)
|
53
|
+
ruby-augeas (0.5.0)
|
54
|
+
ruby-dbus (0.18.1)
|
55
|
+
rexml
|
56
|
+
simplecov (0.21.2)
|
57
|
+
docile (~> 1.1)
|
58
|
+
simplecov-html (~> 0.11)
|
59
|
+
simplecov_json_formatter (~> 0.1)
|
60
|
+
simplecov-html (0.12.3)
|
61
|
+
simplecov-lcov (0.8.0)
|
62
|
+
simplecov_json_formatter (0.1.4)
|
63
|
+
|
64
|
+
PLATFORMS
|
65
|
+
ruby
|
66
|
+
x86_64-linux
|
67
|
+
|
68
|
+
DEPENDENCIES
|
69
|
+
byebug
|
70
|
+
d-installer!
|
71
|
+
packaging_rake_tasks (~> 1.5.1)
|
72
|
+
rake (~> 13.0.6)
|
73
|
+
rspec (~> 3.11.0)
|
74
|
+
simplecov (~> 0.21.2)
|
75
|
+
simplecov-lcov (~> 0.8.0)
|
data/bin/d-installer
ADDED
@@ -0,0 +1,74 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
#
|
5
|
+
# Copyright (c) [2022] SUSE LLC
|
6
|
+
#
|
7
|
+
# All Rights Reserved.
|
8
|
+
#
|
9
|
+
# This program is free software; you can redistribute it and/or modify it
|
10
|
+
# under the terms of version 2 of the GNU General Public License as published
|
11
|
+
# by the Free Software Foundation.
|
12
|
+
#
|
13
|
+
# This program is distributed in the hope that it will be useful, but WITHOUT
|
14
|
+
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
15
|
+
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
16
|
+
# more details.
|
17
|
+
#
|
18
|
+
# You should have received a copy of the GNU General Public License along
|
19
|
+
# with this program; if not, contact SUSE LLC.
|
20
|
+
#
|
21
|
+
# To contact SUSE LLC about this file by physical or electronic mail, you may
|
22
|
+
# find current contact information at www.suse.com.
|
23
|
+
|
24
|
+
# TEMPORARY overwrite of Y2DIR to use DBus for communication with dependent yast modules
|
25
|
+
|
26
|
+
$LOAD_PATH.unshift File.expand_path("../lib", __dir__)
|
27
|
+
|
28
|
+
require "rubygems"
|
29
|
+
require "bundler/setup"
|
30
|
+
require "dinstaller/dbus/service_runner"
|
31
|
+
|
32
|
+
# Runs the service with the given name
|
33
|
+
#
|
34
|
+
# @param name [Symbol] Service name
|
35
|
+
# @see ORDERED_SERVICES
|
36
|
+
def start_service(name)
|
37
|
+
general_y2dir = File.expand_path("../lib/dinstaller/dbus/y2dir", __dir__)
|
38
|
+
module_y2dir = File.expand_path("../lib/dinstaller/dbus/y2dir/#{name}", __dir__)
|
39
|
+
ENV["Y2DIR"] = "#{module_y2dir}:#{general_y2dir}"
|
40
|
+
|
41
|
+
logger = Logger.new($stdout, progname: name.to_s)
|
42
|
+
service_runner = DInstaller::DBus::ServiceRunner.new(name, logger: logger)
|
43
|
+
service_runner.run
|
44
|
+
end
|
45
|
+
|
46
|
+
ORDERED_SERVICES = [:language, :software, :users, :manager].freeze
|
47
|
+
|
48
|
+
# Starts all the services
|
49
|
+
#
|
50
|
+
# @return [Array<Integer>] PIDs
|
51
|
+
# @see ORDERED_SERVICES
|
52
|
+
def start_all_services
|
53
|
+
ORDERED_SERVICES.map do |name|
|
54
|
+
fork { exec("#{__FILE__} #{name}") }
|
55
|
+
# TODO: implement a better mechanism to check whether the service is running
|
56
|
+
sleep(1)
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
if ARGV.empty?
|
61
|
+
pids = start_all_services
|
62
|
+
Signal.trap("SIGINT") do
|
63
|
+
puts "Stopping all services..."
|
64
|
+
exit
|
65
|
+
end
|
66
|
+
Process.wait
|
67
|
+
else
|
68
|
+
name = ARGV[0]
|
69
|
+
Signal.trap("SIGINT") do
|
70
|
+
puts "Stopping #{name} service..."
|
71
|
+
exit
|
72
|
+
end
|
73
|
+
start_service(name.to_sym)
|
74
|
+
end
|
@@ -0,0 +1,284 @@
|
|
1
|
+
products:
|
2
|
+
Tumbleweed:
|
3
|
+
name: openSUSE Tumbleweed
|
4
|
+
description: 'The Tumbleweed distribution is a pure rolling release version
|
5
|
+
of openSUSE containing the latest "stable" versions of all software
|
6
|
+
instead of relying on rigid periodic release cycles. The project does
|
7
|
+
this for users that want the newest stable software.'
|
8
|
+
Leap Micro:
|
9
|
+
name: openSUSE Leap Micro 5.2
|
10
|
+
description: 'Leap Micro is an ultra-reliable, lightweight operating system
|
11
|
+
built for containerized and virtualized workloads. This community version
|
12
|
+
is based on SUSE Linux Enterprise Micro, which leverages the enterprise
|
13
|
+
hardened security and compliance components of SUSE Linux Enterprise.'
|
14
|
+
Leap:
|
15
|
+
name: openSUSE Leap 15.4
|
16
|
+
description: 'Leap uses source from SUSE Linux Enterprise (SLE), which
|
17
|
+
gives Leap a level of stability unmatched by other Linux distributions,
|
18
|
+
and combines that with community developments to give users, developers
|
19
|
+
and sysadmins the best stable Linux experience available.'
|
20
|
+
|
21
|
+
web:
|
22
|
+
ssl: null
|
23
|
+
ssl_cert: null
|
24
|
+
ssl_key: null
|
25
|
+
|
26
|
+
|
27
|
+
Tumbleweed:
|
28
|
+
software:
|
29
|
+
installation_repositories:
|
30
|
+
- https://download.opensuse.org/tumbleweed/repo/oss/
|
31
|
+
- https://download.opensuse.org/tumbleweed/repo/non-oss/
|
32
|
+
- https://download.opensuse.org/update/tumbleweed/
|
33
|
+
mandatory_patterns:
|
34
|
+
- enhanced_base # only pattern that is shared among all roles on TW
|
35
|
+
optional_patterns: null # no optional pattern shared
|
36
|
+
base_product: openSUSE
|
37
|
+
|
38
|
+
security:
|
39
|
+
lsm: apparmor
|
40
|
+
available_lsms:
|
41
|
+
apparmor:
|
42
|
+
patterns:
|
43
|
+
- apparmor
|
44
|
+
selinux:
|
45
|
+
patterns:
|
46
|
+
- selinux
|
47
|
+
policy: permissive
|
48
|
+
none:
|
49
|
+
patterns: null
|
50
|
+
|
51
|
+
storage:
|
52
|
+
volumes:
|
53
|
+
- mount_point: "/"
|
54
|
+
fs_type: btrfs
|
55
|
+
desired_size: 10 GiB
|
56
|
+
min_size: 5 GiB
|
57
|
+
max_size: unlimited
|
58
|
+
weight: 30
|
59
|
+
|
60
|
+
# There must always be a root
|
61
|
+
proposed_configurable: false
|
62
|
+
|
63
|
+
snapshots: true
|
64
|
+
snapshots_percentage: 250
|
65
|
+
snapshots_configurable: true
|
66
|
+
# Disable snapshots if there is not enough room
|
67
|
+
disable_order: 3
|
68
|
+
|
69
|
+
btrfs_default_subvolume: "@"
|
70
|
+
subvolumes:
|
71
|
+
- path: home
|
72
|
+
- path: opt
|
73
|
+
- path: root
|
74
|
+
- path: srv
|
75
|
+
- path: usr/local
|
76
|
+
# Unified var subvolume - https://lists.opensuse.org/opensuse-packaging/2017-11/msg00017.html
|
77
|
+
- path: var
|
78
|
+
copy_on_write: false
|
79
|
+
|
80
|
+
# Architecture specific subvolumes
|
81
|
+
- path: boot/grub2/arm64-efi
|
82
|
+
archs: aarch64
|
83
|
+
- path: boot/grub2/arm-efi
|
84
|
+
archs: arm
|
85
|
+
- path: boot/grub2/i386-pc
|
86
|
+
archs: x86_64
|
87
|
+
- path: boot/grub2/powerpc-ieee1275
|
88
|
+
archs: ppc,!board_powernv
|
89
|
+
- path: boot/grub2/s390x-emu
|
90
|
+
archs: s390
|
91
|
+
- path: boot/grub2/x86_64-efi
|
92
|
+
archs: x86_64
|
93
|
+
- path: boot/grub2/riscv64-efi
|
94
|
+
archs: riscv64
|
95
|
+
|
96
|
+
- mount_point: "/home"
|
97
|
+
fs_type: xfs
|
98
|
+
desired_size: 40 GiB
|
99
|
+
min_size: 10 GiB
|
100
|
+
max_size: unlimited
|
101
|
+
weight: 60
|
102
|
+
|
103
|
+
proposed: false
|
104
|
+
proposed_configurable: true
|
105
|
+
disable_order: 1
|
106
|
+
|
107
|
+
- mount_point: "swap"
|
108
|
+
fs_type: swap
|
109
|
+
desired_size: 2 GiB
|
110
|
+
min_size: 1 GiB
|
111
|
+
max_size: 2 GiB
|
112
|
+
weight: 10
|
113
|
+
|
114
|
+
adjust_by_ram: false
|
115
|
+
adjust_by_ram_configurable: true
|
116
|
+
|
117
|
+
proposed_configurable: true
|
118
|
+
disable_order: 2
|
119
|
+
|
120
|
+
Leap:
|
121
|
+
software:
|
122
|
+
installation_repositories:
|
123
|
+
# TODO: support somehow $releasever in URL
|
124
|
+
- https://download.opensuse.org/distribution/leap/15.4/repo/oss/
|
125
|
+
- https://download.opensuse.org/distribution/leap/15.4/repo/non-oss/
|
126
|
+
- https://download.opensuse.org/update/leap/15.4/oss/
|
127
|
+
- https://download.opensuse.org/update/leap/15.4/non-oss/
|
128
|
+
- https://download.opensuse.org/update/leap/15.4/sle/
|
129
|
+
- https://download.opensuse.org/update/leap/15.4/backports/
|
130
|
+
mandatory_patterns:
|
131
|
+
- enhanced_base # For now lets pick some minimal one
|
132
|
+
optional_patterns: null # no optional pattern shared
|
133
|
+
base_product: Leap
|
134
|
+
|
135
|
+
security:
|
136
|
+
# TODO: check if skelcd for Leap 15.4 is correct as code is using lsm in globals, but skelcd contain selinux only
|
137
|
+
lsm: apparmor
|
138
|
+
available_lsms:
|
139
|
+
apparmor:
|
140
|
+
patterns:
|
141
|
+
- apparmor
|
142
|
+
selinux:
|
143
|
+
patterns:
|
144
|
+
- selinux
|
145
|
+
policy: disabled
|
146
|
+
none:
|
147
|
+
patterns: null
|
148
|
+
|
149
|
+
storage:
|
150
|
+
volumes:
|
151
|
+
- mount_point: "/"
|
152
|
+
fs_type: btrfs
|
153
|
+
desired_size: 10 GiB
|
154
|
+
min_size: 5 GiB
|
155
|
+
max_size: unlimited
|
156
|
+
weight: 30
|
157
|
+
|
158
|
+
# There must always be a root
|
159
|
+
proposed_configurable: false
|
160
|
+
|
161
|
+
snapshots: true
|
162
|
+
snapshots_percentage: 250
|
163
|
+
snapshots_configurable: true
|
164
|
+
# Disable snapshots if there is not enough room
|
165
|
+
disable_order: 3
|
166
|
+
|
167
|
+
btrfs_default_subvolume: "@"
|
168
|
+
subvolumes:
|
169
|
+
- path: home
|
170
|
+
- path: opt
|
171
|
+
- path: root
|
172
|
+
- path: srv
|
173
|
+
- path: usr/local
|
174
|
+
# Unified var subvolume - https://lists.opensuse.org/opensuse-packaging/2017-11/msg00017.html
|
175
|
+
- path: var
|
176
|
+
copy_on_write: false
|
177
|
+
|
178
|
+
# Architecture specific subvolumes
|
179
|
+
- path: boot/grub2/arm64-efi
|
180
|
+
archs: aarch64
|
181
|
+
- path: boot/grub2/i386-pc
|
182
|
+
archs: x86_64
|
183
|
+
- path: boot/grub2/powerpc-ieee1275
|
184
|
+
archs: ppc,!board_powernv
|
185
|
+
- path: boot/grub2/s390x-emu
|
186
|
+
archs: s390
|
187
|
+
- path: boot/grub2/x86_64-efi
|
188
|
+
archs: x86_64
|
189
|
+
|
190
|
+
- mount_point: "/home"
|
191
|
+
fs_type: xfs
|
192
|
+
desired_size: 40 GiB
|
193
|
+
min_size: 10 GiB
|
194
|
+
max_size: unlimited
|
195
|
+
weight: 60
|
196
|
+
|
197
|
+
proposed: false
|
198
|
+
proposed_configurable: true
|
199
|
+
disable_order: 1
|
200
|
+
|
201
|
+
- mount_point: "swap"
|
202
|
+
fs_type: swap
|
203
|
+
desired_size: 2 GiB
|
204
|
+
min_size: 1 GiB
|
205
|
+
max_size: 2 GiB
|
206
|
+
weight: 10
|
207
|
+
|
208
|
+
adjust_by_ram: false
|
209
|
+
adjust_by_ram_configurable: true
|
210
|
+
|
211
|
+
proposed_configurable: true
|
212
|
+
disable_order: 2
|
213
|
+
|
214
|
+
|
215
|
+
Leap Micro:
|
216
|
+
software:
|
217
|
+
installation_repositories:
|
218
|
+
- https://download.opensuse.org/distribution/leap-micro/5.2/product/repo/Leap-Micro-5.2-x86_64-Media/
|
219
|
+
mandatory_patterns:
|
220
|
+
- microos-base
|
221
|
+
- microos-hardware
|
222
|
+
- microos-bootloader
|
223
|
+
- microos-defaults
|
224
|
+
- microos-basesystem
|
225
|
+
optional_patterns: null # no optional pattern shared
|
226
|
+
base_product: Leap-Micro
|
227
|
+
|
228
|
+
security:
|
229
|
+
lsm: selinux
|
230
|
+
available_lsms:
|
231
|
+
selinux:
|
232
|
+
patterns:
|
233
|
+
- microos-selinux
|
234
|
+
policy: enforcing
|
235
|
+
none:
|
236
|
+
patterns: null
|
237
|
+
|
238
|
+
storage:
|
239
|
+
volumes:
|
240
|
+
- mount_point: "/"
|
241
|
+
fs_type: btrfs
|
242
|
+
desired_size: 20 GiB
|
243
|
+
min_size: 5 GiB
|
244
|
+
max_size: 20 GiB
|
245
|
+
fs_types:
|
246
|
+
- btrfs
|
247
|
+
weight: 20
|
248
|
+
snapshots: true
|
249
|
+
snapshots_configurable: false
|
250
|
+
proposed_configurable: false
|
251
|
+
btrfs_default_subvolume: "@"
|
252
|
+
btrfs_read_only: true
|
253
|
+
subvolumes:
|
254
|
+
- path: root
|
255
|
+
- path: home
|
256
|
+
- path: opt
|
257
|
+
- path: srv
|
258
|
+
- path: root
|
259
|
+
- path: boot/writable
|
260
|
+
- path: usr/local
|
261
|
+
- path: boot/grub2/arm64-efi
|
262
|
+
archs: aarch64
|
263
|
+
- path: boot/grub2/i386-pc
|
264
|
+
archs: x86_64
|
265
|
+
- path: boot/grub2/powerpc-ieee1275
|
266
|
+
archs: ppc,!board_powernv
|
267
|
+
- path: boot/grub2/s390x-emu
|
268
|
+
archs: s390
|
269
|
+
- path: boot/grub2/x86_64-efi
|
270
|
+
archs: x86_64
|
271
|
+
- mount_point: "/var"
|
272
|
+
fs_type: btrfs
|
273
|
+
fs_types:
|
274
|
+
- btrfs
|
275
|
+
desired_size: 19 GiB
|
276
|
+
min_size: 5 GiB
|
277
|
+
max_size: unlimited
|
278
|
+
weight: 40
|
279
|
+
snapshots: false
|
280
|
+
snapshots_configurable: false
|
281
|
+
disable_order: 1
|
282
|
+
fallback_for_desired_size: "/"
|
283
|
+
fallback_for_max_size: "/"
|
284
|
+
fallback_for_weight: "/"
|
@@ -0,0 +1,48 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Copyright (c) [2022] SUSE LLC
|
4
|
+
#
|
5
|
+
# All Rights Reserved.
|
6
|
+
#
|
7
|
+
# This program is free software; you can redistribute it and/or modify it
|
8
|
+
# under the terms of version 2 of the GNU General Public License as published
|
9
|
+
# by the Free Software Foundation.
|
10
|
+
#
|
11
|
+
# This program is distributed in the hope that it will be useful, but WITHOUT
|
12
|
+
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
13
|
+
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
14
|
+
# more details.
|
15
|
+
#
|
16
|
+
# You should have received a copy of the GNU General Public License along
|
17
|
+
# with this program; if not, contact SUSE LLC.
|
18
|
+
#
|
19
|
+
# To contact SUSE LLC about this file by physical or electronic mail, you may
|
20
|
+
# find current contact information at www.suse.com.
|
21
|
+
|
22
|
+
module DInstaller
|
23
|
+
# Mixin providing a method to ask a question and wait
|
24
|
+
module CanAskQuestion
|
25
|
+
# @!method questions_manager
|
26
|
+
# @note Classes including this mixin must define a #questions_manager method
|
27
|
+
# @return [QuestionsManager]
|
28
|
+
|
29
|
+
# Asks the given question and waits until the question is answered
|
30
|
+
#
|
31
|
+
# @example
|
32
|
+
# ask(question1) #=> Symbol
|
33
|
+
# ask(question2) { |q| q.answer == :yes } #=> Boolean
|
34
|
+
#
|
35
|
+
# @param question [Question]
|
36
|
+
# @yield [Question] Gives the answered question to the block.
|
37
|
+
# @return [Symbol, Object] The question answer, or the result of the block in case a block is
|
38
|
+
# given.
|
39
|
+
def ask(question)
|
40
|
+
questions_manager.add(question)
|
41
|
+
questions_manager.wait
|
42
|
+
result = block_given? ? yield(question) : question.answer
|
43
|
+
questions_manager.delete(question)
|
44
|
+
|
45
|
+
result
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
@@ -0,0 +1,80 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Copyright (c) [2022] SUSE LLC
|
4
|
+
#
|
5
|
+
# All Rights Reserved.
|
6
|
+
#
|
7
|
+
# This program is free software; you can redistribute it and/or modify it
|
8
|
+
# under the terms of version 2 of the GNU General Public License as published
|
9
|
+
# by the Free Software Foundation.
|
10
|
+
#
|
11
|
+
# This program is distributed in the hope that it will be useful, but WITHOUT
|
12
|
+
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
13
|
+
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
14
|
+
# more details.
|
15
|
+
#
|
16
|
+
# You should have received a copy of the GNU General Public License along
|
17
|
+
# with this program; if not, contact SUSE LLC.
|
18
|
+
#
|
19
|
+
# To contact SUSE LLC about this file by physical or electronic mail, you may
|
20
|
+
# find current contact information at www.suse.com.
|
21
|
+
|
22
|
+
module DInstaller
|
23
|
+
# This class is responsible for reading DInstaller kernel cmdline options
|
24
|
+
class CmdlineArgs
|
25
|
+
CMDLINE_PATH = "/proc/cmdline"
|
26
|
+
CMDLINE_PREFIX = "dinst."
|
27
|
+
|
28
|
+
attr_accessor :config_url
|
29
|
+
attr_reader :data
|
30
|
+
|
31
|
+
# Constructor
|
32
|
+
#
|
33
|
+
# @param data [Hash]
|
34
|
+
def initialize(data = {})
|
35
|
+
@data = data
|
36
|
+
end
|
37
|
+
|
38
|
+
# Reads the kernel command line options
|
39
|
+
def self.read_from(path)
|
40
|
+
options = File.read(path)
|
41
|
+
args = new({})
|
42
|
+
|
43
|
+
options.split.each do |option|
|
44
|
+
next unless option.start_with?(CMDLINE_PREFIX)
|
45
|
+
|
46
|
+
key, value = option.split("=")
|
47
|
+
key.gsub!(CMDLINE_PREFIX, "")
|
48
|
+
# Omit config_url from Config options
|
49
|
+
next args.config_url = value if key == "config_url"
|
50
|
+
|
51
|
+
# TODO: Add some kind of schema or 'knowledge' of attribute types to convert them properly
|
52
|
+
# by now we will just convert Boolean values
|
53
|
+
value = normalize(value)
|
54
|
+
if key.include?(".")
|
55
|
+
section, key = key.split(".")
|
56
|
+
args.data[section] = {} unless args.data.keys.include?(section)
|
57
|
+
args.data[section][key] = value
|
58
|
+
else
|
59
|
+
args.data[key.gsub(CMDLINE_PREFIX, "")] = value
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
args
|
64
|
+
end
|
65
|
+
|
66
|
+
# Convenience method to normalize the given value by now it just convert "true" and "false"
|
67
|
+
# strings to {Boolean}s
|
68
|
+
#
|
69
|
+
# @param value [String]
|
70
|
+
# @return [Object] normalized value
|
71
|
+
def self.normalize(value)
|
72
|
+
val = value.to_s.downcase
|
73
|
+
return value unless ["false", "true"].include?(val)
|
74
|
+
|
75
|
+
(val == "true")
|
76
|
+
end
|
77
|
+
|
78
|
+
private_class_method :normalize
|
79
|
+
end
|
80
|
+
end
|