/
installcfg.go
156 lines (135 loc) · 5.74 KB
/
installcfg.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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
package installcfg
import (
"github.com/go-openapi/strfmt"
cluster_validations "github.com/openshift/assisted-service/internal/cluster/validations"
)
type Platform struct {
Baremetal *BareMetalInstallConfigPlatform `yaml:"baremetal,omitempty"`
None *PlatformNone `yaml:"none,omitempty"`
Vsphere *VsphereInstallConfigPlatform `yaml:"vsphere,omitempty"`
Nutanix *NutanixInstallConfigPlatform `yaml:"nutanix,omitempty"`
}
type Host struct {
Name string `yaml:"name"`
Role string `yaml:"role"`
BootMACAddress string `yaml:"bootMACAddress"`
BootMode string `yaml:"bootMode"`
}
type BareMetalInstallConfigPlatform struct {
ProvisioningNetwork string `yaml:"provisioningNetwork"`
APIVIPs []string `yaml:"apiVIPs,omitempty"`
DeprecatedAPIVIP string `yaml:"apiVIP,omitempty"`
IngressVIPs []string `yaml:"ingressVIPs,omitempty"`
DeprecatedIngressVIP string `yaml:"ingressVIP,omitempty"`
Hosts []Host `yaml:"hosts"`
ClusterOSImage string `json:"clusterOSImage,omitempty"`
}
type VsphereInstallConfigPlatform struct {
VCenter string `yaml:"vCenter"`
Username string `yaml:"username"`
Password strfmt.Password `yaml:"password"`
Datacenter string `yaml:"datacenter"`
DefaultDatastore string `yaml:"defaultDatastore"`
Folder string `yaml:"folder,omitempty"`
Network string `yaml:"network"`
Cluster string `yaml:"cluster"`
APIVIPs []string `yaml:"apiVIPs,omitempty"`
DeprecatedAPIVIP string `yaml:"apiVIP,omitempty"`
IngressVIPs []string `yaml:"ingressVIPs,omitempty"`
DeprecatedIngressVIP string `yaml:"ingressVIP,omitempty"`
}
type NutanixInstallConfigPlatform struct {
ID int `yaml:"-"`
APIVIPs []string `yaml:"apiVIPs,omitempty"`
DeprecatedAPIVIP string `yaml:"apiVIP,omitempty"`
IngressVIPs []string `yaml:"ingressVIPs,omitempty"`
DeprecatedIngressVIP string `yaml:"ingressVIP,omitempty"`
PrismCentral NutanixPrismCentral `yaml:"prismCentral"`
PrismElements []NutanixPrismElement `yaml:"prismElements"`
SubnetUUIDs []strfmt.UUID `yaml:"subnetUUIDs"`
}
type NutanixPrismCentral struct {
ID int `yaml:"-"`
NutanixInstallConfigPlatformID int `yaml:"-"`
Endpoint NutanixEndpoint `yaml:"endpoint"`
Username string `yaml:"username"`
Password strfmt.Password `yaml:"password"`
}
type NutanixEndpoint struct {
ID int `yaml:"-"`
NutanixPrismCentralID int `yaml:"-"`
Address string `yaml:"address"`
Port int32 `yaml:"port"`
}
type NutanixPrismElement struct {
ID int `yaml:"-"`
NutanixInstallConfigPlatformID int `yaml:"-"`
Endpoint NutanixEndpoint `yaml:"endpoint"`
UUID strfmt.UUID `yaml:"uuid"`
Name string `yaml:"name"`
}
type PlatformNone struct {
}
type BootstrapInPlace struct {
InstallationDisk string `yaml:"installationDisk,omitempty"`
}
type Proxy struct {
HTTPProxy string `yaml:"httpProxy,omitempty"`
HTTPSProxy string `yaml:"httpsProxy,omitempty"`
NoProxy string `yaml:"noProxy,omitempty"`
}
type ImageContentSource struct {
Mirrors []string `yaml:"mirrors"`
Source string `yaml:"source"`
}
type ClusterNetwork struct {
Cidr string `yaml:"cidr"`
HostPrefix int `yaml:"hostPrefix"`
}
type MachineNetwork struct {
Cidr string `yaml:"cidr"`
}
type ClusterVersionCapabilitySet string
type ClusterVersionCapability string
type Capabilities struct {
BaselineCapabilitySet ClusterVersionCapabilitySet `yaml:"baselineCapabilitySet,omitempty"`
AdditionalEnabledCapabilities []ClusterVersionCapability `yaml:"additionalEnabledCapabilities,omitempty"`
}
type InstallerConfigBaremetal struct {
APIVersion string `yaml:"apiVersion"`
BaseDomain string `yaml:"baseDomain"`
Proxy *Proxy `yaml:"proxy,omitempty"`
Networking struct {
NetworkType string `yaml:"networkType"`
ClusterNetwork []ClusterNetwork `yaml:"clusterNetwork"`
MachineNetwork []MachineNetwork `yaml:"machineNetwork,omitempty"`
ServiceNetwork []string `yaml:"serviceNetwork"`
} `yaml:"networking"`
Metadata struct {
Name string `yaml:"name"`
} `yaml:"metadata"`
Compute []struct {
Hyperthreading string `yaml:"hyperthreading,omitempty"`
Name string `yaml:"name"`
Replicas int `yaml:"replicas"`
} `yaml:"compute"`
ControlPlane struct {
Hyperthreading string `yaml:"hyperthreading,omitempty"`
Name string `yaml:"name"`
Replicas int `yaml:"replicas"`
} `yaml:"controlPlane"`
Platform Platform `yaml:"platform"`
BootstrapInPlace BootstrapInPlace `yaml:"bootstrapInPlace,omitempty"`
FIPS bool `yaml:"fips"`
PullSecret string `yaml:"pullSecret"`
SSHKey string `yaml:"sshKey"`
AdditionalTrustBundle string `yaml:"additionalTrustBundle,omitempty"`
ImageContentSources []ImageContentSource `yaml:"imageContentSources,omitempty"`
Capabilities *Capabilities `yaml:"capabilities,omitempty"`
}
func (c *InstallerConfigBaremetal) Validate() error {
if c.AdditionalTrustBundle != "" {
return cluster_validations.ValidatePEMCertificateBundle(c.AdditionalTrustBundle)
}
return nil
}