From b7948c7f403c43fd5da4c75c874f7f6d9c857be4 Mon Sep 17 00:00:00 2001 From: James Shubin Date: Thu, 16 Feb 2017 00:47:22 -0500 Subject: [PATCH] resources: Specify defaults for the MetaParams When creating new resources, we didn't specify the defaults, which for the limit metaparam caused invalid resources by default. It would be nice to change the limit param to have the 1/X (reciprocal) as the default, although the problem with that is that (1) it is illogical, and (2) it's not clear if the precision for the common cases is enough. If someone wants to investigate this further, please do! Zero value structs are definitely more useful! In any case, we can now specify the default. It's not entirely obvious to me if this is the best way to do it, or if there is a superior method. --- resources/augeas.go | 6 +++++- resources/exec.go | 6 +++++- resources/file.go | 3 +++ resources/hostname.go | 6 +++++- resources/msg.go | 6 +++++- resources/noop.go | 6 +++++- resources/nspawn.go | 3 +++ resources/password.go | 3 +++ resources/pkg.go | 3 +++ resources/resources.go | 4 ++-- resources/svc.go | 6 +++++- resources/timer.go | 6 +++++- resources/virt.go | 6 +++++- 13 files changed, 54 insertions(+), 10 deletions(-) diff --git a/resources/augeas.go b/resources/augeas.go index 09ec17ac..89c82025 100644 --- a/resources/augeas.go +++ b/resources/augeas.go @@ -71,7 +71,11 @@ type AugeasSet struct { // Default returns some sensible defaults for this resource. func (obj *AugeasRes) Default() Res { - return &AugeasRes{} + return &AugeasRes{ + BaseRes: BaseRes{ + MetaParams: DefaultMetaParams, // force a default + }, + } } // Validate if the params passed in are valid data. diff --git a/resources/exec.go b/resources/exec.go index 8d9ffa33..09ef4a07 100644 --- a/resources/exec.go +++ b/resources/exec.go @@ -52,7 +52,11 @@ type ExecRes struct { // Default returns some sensible defaults for this resource. func (obj *ExecRes) Default() Res { - return &ExecRes{} + return &ExecRes{ + BaseRes: BaseRes{ + MetaParams: DefaultMetaParams, // force a default + }, + } } // Validate if the params passed in are valid data. diff --git a/resources/file.go b/resources/file.go index cd375c51..8664f3aa 100644 --- a/resources/file.go +++ b/resources/file.go @@ -68,6 +68,9 @@ type FileRes struct { // Default returns some sensible defaults for this resource. func (obj *FileRes) Default() Res { return &FileRes{ + BaseRes: BaseRes{ + MetaParams: DefaultMetaParams, // force a default + }, State: "exists", } } diff --git a/resources/hostname.go b/resources/hostname.go index 909fac50..d39b86dd 100644 --- a/resources/hostname.go +++ b/resources/hostname.go @@ -71,7 +71,11 @@ type HostnameRes struct { // Default returns some sensible defaults for this resource. func (obj *HostnameRes) Default() Res { - return &HostnameRes{} + return &HostnameRes{ + BaseRes: BaseRes{ + MetaParams: DefaultMetaParams, // force a default + }, + } } // Validate if the params passed in are valid data. diff --git a/resources/msg.go b/resources/msg.go index 5a3fb004..48ae4dee 100644 --- a/resources/msg.go +++ b/resources/msg.go @@ -54,7 +54,11 @@ type MsgUID struct { // Default returns some sensible defaults for this resource. func (obj *MsgRes) Default() Res { - return &MsgRes{} + return &MsgRes{ + BaseRes: BaseRes{ + MetaParams: DefaultMetaParams, // force a default + }, + } } // Validate the params that are passed to MsgRes. diff --git a/resources/noop.go b/resources/noop.go index 2a3ed853..9b41fbb4 100644 --- a/resources/noop.go +++ b/resources/noop.go @@ -37,7 +37,11 @@ type NoopRes struct { // Default returns some sensible defaults for this resource. func (obj *NoopRes) Default() Res { - return &NoopRes{} + return &NoopRes{ + BaseRes: BaseRes{ + MetaParams: DefaultMetaParams, // force a default + }, + } } // Validate if the params passed in are valid data. diff --git a/resources/nspawn.go b/resources/nspawn.go index 41328e36..bc984d14 100644 --- a/resources/nspawn.go +++ b/resources/nspawn.go @@ -60,6 +60,9 @@ type NspawnRes struct { // Default returns some sensible defaults for this resource. func (obj *NspawnRes) Default() Res { return &NspawnRes{ + BaseRes: BaseRes{ + MetaParams: DefaultMetaParams, // force a default + }, State: running, } } diff --git a/resources/password.go b/resources/password.go index e5e5ad75..69ad1c45 100644 --- a/resources/password.go +++ b/resources/password.go @@ -59,6 +59,9 @@ type PasswordRes struct { // Default returns some sensible defaults for this resource. func (obj *PasswordRes) Default() Res { return &PasswordRes{ + BaseRes: BaseRes{ + MetaParams: DefaultMetaParams, // force a default + }, Length: 64, // safe default } } diff --git a/resources/pkg.go b/resources/pkg.go index cb50035e..daa04e99 100644 --- a/resources/pkg.go +++ b/resources/pkg.go @@ -49,6 +49,9 @@ type PkgRes struct { // Default returns some sensible defaults for this resource. func (obj *PkgRes) Default() Res { return &PkgRes{ + BaseRes: BaseRes{ + MetaParams: DefaultMetaParams, // force a default + }, State: "installed", // i think this is preferable to "latest" } } diff --git a/resources/resources.go b/resources/resources.go index dff23411..b1c42662 100644 --- a/resources/resources.go +++ b/resources/resources.go @@ -213,7 +213,7 @@ type BaseRes struct { // UnmarshalYAML is the custom unmarshal handler for the BaseRes struct. It is // primarily useful for setting the defaults, in particular if meta is absent! -// FIXME: uncommenting this seems to block the graph from exiting, how come??? +// FIXME: how come we can't get this to work properly without dropping fields? //func (obj *BaseRes) UnmarshalYAML(unmarshal func(interface{}) error) error { // DefaultBaseRes := BaseRes{ // // without specifying a default here, if we don't specify *any* @@ -222,7 +222,7 @@ type BaseRes struct { // MetaParams: DefaultMetaParams, // force a default // } -// type rawBaseRes BaseRes // indirection to avoid infinite recursion +// type rawBaseRes BaseRes // indirection to avoid infinite recursion // raw := rawBaseRes(DefaultBaseRes) // convert; the defaults go here // //raw := rawBaseRes{} diff --git a/resources/svc.go b/resources/svc.go index b1f30248..35fcdfcd 100644 --- a/resources/svc.go +++ b/resources/svc.go @@ -46,7 +46,11 @@ type SvcRes struct { // Default returns some sensible defaults for this resource. func (obj *SvcRes) Default() Res { - return &SvcRes{} + return &SvcRes{ + BaseRes: BaseRes{ + MetaParams: DefaultMetaParams, // force a default + }, + } } // Validate checks if the resource data structure was populated correctly. diff --git a/resources/timer.go b/resources/timer.go index 41b12440..3f8c087a 100644 --- a/resources/timer.go +++ b/resources/timer.go @@ -46,7 +46,11 @@ type TimerUID struct { // Default returns some sensible defaults for this resource. func (obj *TimerRes) Default() Res { - return &TimerRes{} + return &TimerRes{ + BaseRes: BaseRes{ + MetaParams: DefaultMetaParams, // force a default + }, + } } // Validate the params that are passed to TimerRes. diff --git a/resources/virt.go b/resources/virt.go index 8a1dad63..b6418a7e 100644 --- a/resources/virt.go +++ b/resources/virt.go @@ -81,7 +81,11 @@ type VirtRes struct { // Default returns some sensible defaults for this resource. func (obj *VirtRes) Default() Res { - return &VirtRes{} + return &VirtRes{ + BaseRes: BaseRes{ + MetaParams: DefaultMetaParams, // force a default + }, + } } // Init runs some startup code for this resource.