diff --git a/schema/root_schema.go b/schema/root_schema.go index 5c7d29d..5920611 100644 --- a/schema/root_schema.go +++ b/schema/root_schema.go @@ -11,16 +11,34 @@ import ( // RootSchema groups all the different schema of the Kairos configuration together. type RootSchema struct { - _ struct{} `title:"Kairos Schema" description:"Defines all valid Kairos configuration attributes."` - Bundles []BundleSchema `json:"bundles,omitempty" description:"Add bundles in runtime"` - ConfigURL string `json:"config_url,omitempty" description:"URL download configuration from."` - Env []string `json:"env,omitempty"` - FailOnBundleErrors bool `json:"fail_on_bundles_errors,omitempty"` - GrubOptionsSchema `json:"grub_options,omitempty"` - Install InstallSchema `json:"install,omitempty"` - Options []interface{} `json:"options,omitempty" description:"Various options."` - Users []UserSchema `json:"users,omitempty" minItems:"1" required:"true"` - P2P P2PSchema `json:"p2p,omitempty"` + _ struct{} `title:"Kairos Schema" description:"Defines all valid Kairos configuration attributes."` + Bundles []BundleSchema `json:"bundles,omitempty" description:"Add bundles in runtime"` + ConfigURL string `json:"config_url,omitempty" description:"URL download configuration from."` + Env []string `json:"env,omitempty"` + FailOnBundleErrors bool `json:"fail_on_bundles_errors,omitempty"` + GrubOptionsSchema `json:"grub_options,omitempty"` + Install InstallSchema `json:"install,omitempty"` + Options []interface{} `json:"options,omitempty" description:"Various options."` + Users []UserSchema `json:"users,omitempty" minItems:"1" required:"true"` + P2P P2PSchema `json:"p2p,omitempty"` + Debug bool `json:"debug,omitempty" mapstructure:"debug"` + Strict bool `json:"strict,omitempty" mapstructure:"strict"` + CloudInitPaths []string `json:"cloud-init-paths,omitempty" mapstructure:"cloud-init-paths"` + EjectCD bool `json:"eject-cd,omitempty" mapstructure:"eject-cd"` + FullCloudConfig string `json:"fullcloudconfig,omitempty" mapstructure:"fullcloudconfig"` + Cosign bool `json:"cosign,omitempty" mapstructure:"cosign"` + Verify bool `json:"verify,omitempty" mapstructure:"verify"` + CosignPubKey string `json:"cosign-key,omitempty" mapstructure:"cosign-key"` + Arch string `json:"arch,omitempty" mapstructure:"arch"` + Platform PlatformSchema `json:"platform,omitempty" mapstructure:"platform"` + SquashFsCompressionConfig []string `json:"squash-compression,omitempty" mapstructure:"squash-compression"` + SquashFsNoCompression bool `json:"squash-no-compression,omitempty" mapstructure:"squash-no-compression"` +} + +type PlatformSchema struct { + OS string + Arch string + GolangArch string } // KConfig is used to parse and validate Kairos configuration files.