From 01788999465dc6b6ac186b95a266175db1014bb7 Mon Sep 17 00:00:00 2001 From: Sohan Kunkerkar Date: Mon, 6 Jul 2020 18:23:38 -0400 Subject: [PATCH] config: add ShouldExist to schema This variable is added to indicate if we want to delete the existing users/groups --- config/v3_2_experimental/schema/ignition.json | 6 ++++ .../v3_2_experimental/translate/translate.go | 29 +++++++++++++++++++ config/v3_2_experimental/types/schema.go | 2 ++ 3 files changed, 37 insertions(+) diff --git a/config/v3_2_experimental/schema/ignition.json b/config/v3_2_experimental/schema/ignition.json index e7d5aaca03..6bdb98b489 100644 --- a/config/v3_2_experimental/schema/ignition.json +++ b/config/v3_2_experimental/schema/ignition.json @@ -577,6 +577,9 @@ }, "shell": { "type": ["string", "null"] + }, + "shouldExist": { + "type": ["boolean", "null"] } }, "required": [ @@ -597,6 +600,9 @@ }, "system": { "type": ["boolean", "null"] + }, + "shouldExist": { + "type": ["boolean", "null"] } }, "required": [ diff --git a/config/v3_2_experimental/translate/translate.go b/config/v3_2_experimental/translate/translate.go index 7ad715bae4..78b2bff273 100644 --- a/config/v3_2_experimental/translate/translate.go +++ b/config/v3_2_experimental/translate/translate.go @@ -38,10 +38,39 @@ func translateStorage(old old_types.Storage) (ret types.Storage) { return } +func translatePasswdUser(old old_types.PasswdUser) (ret types.PasswdUser) { + tr := translate.NewTranslator() + tr.Translate(&old.Gecos, &ret.Gecos) + tr.Translate(&old.Groups, &ret.Groups) + tr.Translate(&old.HomeDir, &ret.HomeDir) + tr.Translate(&old.Name, &ret.Name) + tr.Translate(&old.NoCreateHome, &ret.NoCreateHome) + tr.Translate(&old.NoLogInit, &ret.NoLogInit) + tr.Translate(&old.NoUserGroup, &ret.NoUserGroup) + tr.Translate(&old.PasswordHash, &ret.PasswordHash) + tr.Translate(&old.PrimaryGroup, &ret.PrimaryGroup) + tr.Translate(&old.SSHAuthorizedKeys, &ret.SSHAuthorizedKeys) + tr.Translate(&old.Shell, &ret.Shell) + tr.Translate(&old.System, &ret.System) + tr.Translate(&old.UID, &ret.UID) + return +} + +func translatePasswdGroup(old old_types.PasswdGroup) (ret types.PasswdGroup) { + tr := translate.NewTranslator() + tr.Translate(&old.Gid, &ret.Gid) + tr.Translate(&old.Name, &ret.Name) + tr.Translate(&old.PasswordHash, &ret.PasswordHash) + tr.Translate(&old.System, &ret.System) + return +} + func Translate(old old_types.Config) (ret types.Config) { tr := translate.NewTranslator() tr.AddCustomTranslator(translateIgnition) tr.AddCustomTranslator(translateStorage) + tr.AddCustomTranslator(translatePasswdUser) + tr.AddCustomTranslator(translatePasswdGroup) tr.Translate(&old, &ret) return } diff --git a/config/v3_2_experimental/types/schema.go b/config/v3_2_experimental/types/schema.go index 5907b5fdf0..adbefa7892 100644 --- a/config/v3_2_experimental/types/schema.go +++ b/config/v3_2_experimental/types/schema.go @@ -146,6 +146,7 @@ type PasswdGroup struct { Gid *int `json:"gid,omitempty"` Name string `json:"name"` PasswordHash *string `json:"passwordHash,omitempty"` + ShouldExist *bool `json:"shouldExist,omitempty"` System *bool `json:"system,omitempty"` } @@ -160,6 +161,7 @@ type PasswdUser struct { PasswordHash *string `json:"passwordHash,omitempty"` PrimaryGroup *string `json:"primaryGroup,omitempty"` SSHAuthorizedKeys []SSHAuthorizedKey `json:"sshAuthorizedKeys,omitempty"` + ShouldExist *bool `json:"shouldExist,omitempty"` Shell *string `json:"shell,omitempty"` System *bool `json:"system,omitempty"` UID *int `json:"uid,omitempty"`