|
Packit |
63bb0d |
package blueprint
|
|
Packit |
63bb0d |
|
|
Packit |
63bb0d |
type Customizations struct {
|
|
Packit |
63bb0d |
Hostname *string `json:"hostname,omitempty" toml:"hostname,omitempty"`
|
|
Packit |
63bb0d |
Kernel *KernelCustomization `json:"kernel,omitempty" toml:"kernel,omitempty"`
|
|
Packit |
63bb0d |
SSHKey []SSHKeyCustomization `json:"sshkey,omitempty" toml:"sshkey,omitempty"`
|
|
Packit |
63bb0d |
User []UserCustomization `json:"user,omitempty" toml:"user,omitempty"`
|
|
Packit |
63bb0d |
Group []GroupCustomization `json:"group,omitempty" toml:"group,omitempty"`
|
|
Packit |
63bb0d |
Timezone *TimezoneCustomization `json:"timezone,omitempty" toml:"timezone,omitempty"`
|
|
Packit |
63bb0d |
Locale *LocaleCustomization `json:"locale,omitempty" toml:"locale,omitempty"`
|
|
Packit |
63bb0d |
Firewall *FirewallCustomization `json:"firewall,omitempty" toml:"firewall,omitempty"`
|
|
Packit |
63bb0d |
Services *ServicesCustomization `json:"services,omitempty" toml:"services,omitempty"`
|
|
Packit |
63bb0d |
}
|
|
Packit |
63bb0d |
|
|
Packit |
63bb0d |
type KernelCustomization struct {
|
|
Packit Service |
bcdfb1 |
Name string `json:"name,omitempty" toml:"name,omitempty"`
|
|
Packit |
63bb0d |
Append string `json:"append" toml:"append"`
|
|
Packit |
63bb0d |
}
|
|
Packit |
63bb0d |
|
|
Packit |
63bb0d |
type SSHKeyCustomization struct {
|
|
Packit |
63bb0d |
User string `json:"user" toml:"user"`
|
|
Packit |
63bb0d |
Key string `json:"key" toml:"key"`
|
|
Packit |
63bb0d |
}
|
|
Packit |
63bb0d |
|
|
Packit |
63bb0d |
type UserCustomization struct {
|
|
Packit |
63bb0d |
Name string `json:"name" toml:"name"`
|
|
Packit |
63bb0d |
Description *string `json:"description,omitempty" toml:"description,omitempty"`
|
|
Packit |
63bb0d |
Password *string `json:"password,omitempty" toml:"password,omitempty"`
|
|
Packit |
63bb0d |
Key *string `json:"key,omitempty" toml:"key,omitempty"`
|
|
Packit |
63bb0d |
Home *string `json:"home,omitempty" toml:"home,omitempty"`
|
|
Packit |
63bb0d |
Shell *string `json:"shell,omitempty" toml:"shell,omitempty"`
|
|
Packit |
63bb0d |
Groups []string `json:"groups,omitempty" toml:"groups,omitempty"`
|
|
Packit |
63bb0d |
UID *int `json:"uid,omitempty" toml:"uid,omitempty"`
|
|
Packit |
63bb0d |
GID *int `json:"gid,omitempty" toml:"gid,omitempty"`
|
|
Packit |
63bb0d |
}
|
|
Packit |
63bb0d |
|
|
Packit |
63bb0d |
type GroupCustomization struct {
|
|
Packit |
63bb0d |
Name string `json:"name" toml:"name"`
|
|
Packit |
63bb0d |
GID *int `json:"gid,omitempty" toml:"gid,omitempty"`
|
|
Packit |
63bb0d |
}
|
|
Packit |
63bb0d |
|
|
Packit |
63bb0d |
type TimezoneCustomization struct {
|
|
Packit |
63bb0d |
Timezone *string `json:"timezone,omitempty" toml:"timezone,omitempty"`
|
|
Packit |
63bb0d |
NTPServers []string `json:"ntpservers,omitempty" toml:"ntpservers,omitempty"`
|
|
Packit |
63bb0d |
}
|
|
Packit |
63bb0d |
|
|
Packit |
63bb0d |
type LocaleCustomization struct {
|
|
Packit |
63bb0d |
Languages []string `json:"languages,omitempty" toml:"languages,omitempty"`
|
|
Packit |
63bb0d |
Keyboard *string `json:"keyboard,omitempty" toml:"keyboard,omitempty"`
|
|
Packit |
63bb0d |
}
|
|
Packit |
63bb0d |
|
|
Packit |
63bb0d |
type FirewallCustomization struct {
|
|
Packit |
63bb0d |
Ports []string `json:"ports,omitempty" toml:"ports,omitempty"`
|
|
Packit |
63bb0d |
Services *FirewallServicesCustomization `json:"services,omitempty" toml:"services,omitempty"`
|
|
Packit |
63bb0d |
}
|
|
Packit |
63bb0d |
|
|
Packit |
63bb0d |
type FirewallServicesCustomization struct {
|
|
Packit |
63bb0d |
Enabled []string `json:"enabled,omitempty" toml:"enabled,omitempty"`
|
|
Packit |
63bb0d |
Disabled []string `json:"disabled,omitempty" toml:"disabled,omitempty"`
|
|
Packit |
63bb0d |
}
|
|
Packit |
63bb0d |
|
|
Packit |
63bb0d |
type ServicesCustomization struct {
|
|
Packit |
63bb0d |
Enabled []string `json:"enabled,omitempty" toml:"enabled,omitempty"`
|
|
Packit |
63bb0d |
Disabled []string `json:"disabled,omitempty" toml:"disabled,omitempty"`
|
|
Packit |
63bb0d |
}
|
|
Packit |
63bb0d |
|
|
Packit |
63bb0d |
type CustomizationError struct {
|
|
Packit |
63bb0d |
Message string
|
|
Packit |
63bb0d |
}
|
|
Packit |
63bb0d |
|
|
Packit |
63bb0d |
func (e *CustomizationError) Error() string {
|
|
Packit |
63bb0d |
return e.Message
|
|
Packit |
63bb0d |
}
|
|
Packit |
63bb0d |
|
|
Packit |
63bb0d |
func (c *Customizations) GetHostname() *string {
|
|
Packit |
63bb0d |
if c == nil {
|
|
Packit |
63bb0d |
return nil
|
|
Packit |
63bb0d |
}
|
|
Packit |
63bb0d |
return c.Hostname
|
|
Packit |
63bb0d |
}
|
|
Packit |
63bb0d |
|
|
Packit |
63bb0d |
func (c *Customizations) GetPrimaryLocale() (*string, *string) {
|
|
Packit |
63bb0d |
if c == nil {
|
|
Packit |
63bb0d |
return nil, nil
|
|
Packit |
63bb0d |
}
|
|
Packit |
63bb0d |
if c.Locale == nil {
|
|
Packit |
63bb0d |
return nil, nil
|
|
Packit |
63bb0d |
}
|
|
Packit |
63bb0d |
if len(c.Locale.Languages) == 0 {
|
|
Packit |
63bb0d |
return nil, c.Locale.Keyboard
|
|
Packit |
63bb0d |
}
|
|
Packit |
63bb0d |
return &c.Locale.Languages[0], c.Locale.Keyboard
|
|
Packit |
63bb0d |
}
|
|
Packit |
63bb0d |
|
|
Packit |
63bb0d |
func (c *Customizations) GetTimezoneSettings() (*string, []string) {
|
|
Packit |
63bb0d |
if c == nil {
|
|
Packit |
63bb0d |
return nil, nil
|
|
Packit |
63bb0d |
}
|
|
Packit |
63bb0d |
if c.Timezone == nil {
|
|
Packit |
63bb0d |
return nil, nil
|
|
Packit |
63bb0d |
}
|
|
Packit |
63bb0d |
return c.Timezone.Timezone, c.Timezone.NTPServers
|
|
Packit |
63bb0d |
}
|
|
Packit |
63bb0d |
|
|
Packit |
63bb0d |
func (c *Customizations) GetUsers() []UserCustomization {
|
|
Packit |
63bb0d |
if c == nil {
|
|
Packit |
63bb0d |
return nil
|
|
Packit |
63bb0d |
}
|
|
Packit |
63bb0d |
|
|
Packit |
63bb0d |
users := []UserCustomization{}
|
|
Packit |
63bb0d |
|
|
Packit |
63bb0d |
// prepend sshkey for backwards compat (overridden by users)
|
|
Packit |
63bb0d |
if len(c.SSHKey) > 0 {
|
|
Packit |
63bb0d |
for _, c := range c.SSHKey {
|
|
Packit |
63bb0d |
users = append(users, UserCustomization{
|
|
Packit |
63bb0d |
Name: c.User,
|
|
Packit |
63bb0d |
Key: &c.Key,
|
|
Packit |
63bb0d |
})
|
|
Packit |
63bb0d |
}
|
|
Packit |
63bb0d |
}
|
|
Packit |
63bb0d |
|
|
Packit |
63bb0d |
return append(users, c.User...)
|
|
Packit |
63bb0d |
}
|
|
Packit |
63bb0d |
|
|
Packit |
63bb0d |
func (c *Customizations) GetGroups() []GroupCustomization {
|
|
Packit |
63bb0d |
if c == nil {
|
|
Packit |
63bb0d |
return nil
|
|
Packit |
63bb0d |
}
|
|
Packit |
63bb0d |
|
|
Packit |
63bb0d |
// This is for parity with lorax, which assumes that for each
|
|
Packit |
63bb0d |
// user, a group with that name already exists. Thus, filter groups
|
|
Packit |
63bb0d |
// named like an existing user.
|
|
Packit |
63bb0d |
|
|
Packit |
63bb0d |
groups := []GroupCustomization{}
|
|
Packit |
63bb0d |
for _, group := range c.Group {
|
|
Packit |
63bb0d |
exists := false
|
|
Packit |
63bb0d |
for _, user := range c.User {
|
|
Packit |
63bb0d |
if user.Name == group.Name {
|
|
Packit |
63bb0d |
exists = true
|
|
Packit |
63bb0d |
break
|
|
Packit |
63bb0d |
}
|
|
Packit |
63bb0d |
}
|
|
Packit |
63bb0d |
for _, key := range c.SSHKey {
|
|
Packit |
63bb0d |
if key.User == group.Name {
|
|
Packit |
63bb0d |
exists = true
|
|
Packit |
63bb0d |
break
|
|
Packit |
63bb0d |
}
|
|
Packit |
63bb0d |
}
|
|
Packit |
63bb0d |
if !exists {
|
|
Packit |
63bb0d |
groups = append(groups, group)
|
|
Packit |
63bb0d |
}
|
|
Packit |
63bb0d |
}
|
|
Packit |
63bb0d |
|
|
Packit |
63bb0d |
return groups
|
|
Packit |
63bb0d |
}
|
|
Packit |
63bb0d |
|
|
Packit |
63bb0d |
func (c *Customizations) GetKernel() *KernelCustomization {
|
|
Packit Service |
15f37d |
var name string
|
|
Packit Service |
15f37d |
var append string
|
|
Packit Service |
15f37d |
if c != nil && c.Kernel != nil {
|
|
Packit Service |
15f37d |
name = c.Kernel.Name
|
|
Packit Service |
15f37d |
append = c.Kernel.Append
|
|
Packit |
63bb0d |
}
|
|
Packit |
63bb0d |
|
|
Packit Service |
15f37d |
if name == "" {
|
|
Packit Service |
15f37d |
name = "kernel"
|
|
Packit Service |
15f37d |
}
|
|
Packit Service |
15f37d |
|
|
Packit Service |
15f37d |
return &KernelCustomization{
|
|
Packit Service |
15f37d |
Name: name,
|
|
Packit Service |
15f37d |
Append: append,
|
|
Packit Service |
15f37d |
}
|
|
Packit |
63bb0d |
}
|
|
Packit |
63bb0d |
|
|
Packit |
63bb0d |
func (c *Customizations) GetFirewall() *FirewallCustomization {
|
|
Packit |
63bb0d |
if c == nil {
|
|
Packit |
63bb0d |
return nil
|
|
Packit |
63bb0d |
}
|
|
Packit |
63bb0d |
|
|
Packit |
63bb0d |
return c.Firewall
|
|
Packit |
63bb0d |
}
|
|
Packit |
63bb0d |
|
|
Packit |
63bb0d |
func (c *Customizations) GetServices() *ServicesCustomization {
|
|
Packit |
63bb0d |
if c == nil {
|
|
Packit |
63bb0d |
return nil
|
|
Packit |
63bb0d |
}
|
|
Packit |
63bb0d |
|
|
Packit |
63bb0d |
return c.Services
|
|
Packit |
63bb0d |
}
|