-
Notifications
You must be signed in to change notification settings - Fork 49
/
sysconfig_stage.go
90 lines (71 loc) · 2.75 KB
/
sysconfig_stage.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
package osbuild
type SysconfigStageOptions struct {
Kernel *SysconfigKernelOptions `json:"kernel,omitempty"`
Network *SysconfigNetworkOptions `json:"network,omitempty"`
NetworkScripts *NetworkScriptsOptions `json:"network-scripts,omitempty"`
Desktop *SysconfigDesktopOptions `json:"desktop,omitempty"`
LiveSys *SysconfigLivesysOptions `json:"livesys,omitempty"`
}
func (SysconfigStageOptions) isStageOptions() {}
func NewSysconfigStage(options *SysconfigStageOptions) *Stage {
return &Stage{
Type: "org.osbuild.sysconfig",
Options: options,
}
}
type SysconfigNetworkOptions struct {
Networking bool `json:"networking,omitempty"`
NoZeroConf bool `json:"no_zero_conf,omitempty"`
}
type SysconfigKernelOptions struct {
UpdateDefault bool `json:"update_default,omitempty"`
DefaultKernel string `json:"default_kernel,omitempty"`
}
type SysconfigDesktopOptions struct {
Preferred string `json:"preferred,omitempty"`
DisplayManager string `json:"displaymanager,omitempty"`
}
type SysconfigLivesysOptions struct {
Session string `json:"session"`
}
type NetworkScriptsOptions struct {
// Keys are interface names, values are objects containing interface configuration
IfcfgFiles map[string]IfcfgFile `json:"ifcfg,omitempty"`
}
type IfcfgBootprotoValue string
// Valid values for the 'Bootproto' item of 'IfcfgFile' struct
const (
IfcfgBootprotoNone IfcfgBootprotoValue = "none"
IfcfgBootprotoBootp IfcfgBootprotoValue = "bootp"
IfcfgBootprotoDHCP IfcfgBootprotoValue = "dhcp"
IfcfgBootprotoStatic IfcfgBootprotoValue = "static"
IfcfgBootprotoIbft IfcfgBootprotoValue = "ibft"
IfcfgBootprotoAutoIP IfcfgBootprotoValue = "autoip"
IfcfgBootprotoShared IfcfgBootprotoValue = "shared"
)
type IfcfgTypeValue string
// Valid values for the 'Type' item of 'IfcfgFile' struct
const (
IfcfgTypeEthernet IfcfgTypeValue = "Ethernet"
IfcfgTypeWireless IfcfgTypeValue = "Wireless"
IfcfgTypeInfiniBand IfcfgTypeValue = "InfiniBand"
IfcfgTypeBridge IfcfgTypeValue = "Bridge"
IfcfgTypeBond IfcfgTypeValue = "Bond"
IfcfgTypeVLAN IfcfgTypeValue = "Vlan"
)
type IfcfgFile struct {
// Method used for IPv4 protocol configuration
Bootproto IfcfgBootprotoValue `json:"bootproto,omitempty"`
// Interface name of the device
Device string `json:"device,omitempty"`
// Whether to initialize this device for IPv6 addressing
IPv6Init *bool `json:"ipv6init,omitempty"`
// Whether the connection should be autoconnected
OnBoot *bool `json:"onboot,omitempty"`
// Whether to modify /etc/resolv.conf
PeerDNS *bool `json:"peerdns,omitempty"`
// Base type of the connection
Type IfcfgTypeValue `json:"type,omitempty"`
// Whether non-root users are allowed to control the device
UserCtl *bool `json:"userctl,omitempty"`
}