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.
This commit is contained in:
James Shubin
2017-02-16 00:47:22 -05:00
parent 2647d09b8f
commit b7948c7f40
13 changed files with 54 additions and 10 deletions

View File

@@ -71,7 +71,11 @@ type AugeasSet struct {
// Default returns some sensible defaults for this resource. // Default returns some sensible defaults for this resource.
func (obj *AugeasRes) Default() Res { 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. // Validate if the params passed in are valid data.

View File

@@ -52,7 +52,11 @@ type ExecRes struct {
// Default returns some sensible defaults for this resource. // Default returns some sensible defaults for this resource.
func (obj *ExecRes) Default() Res { 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. // Validate if the params passed in are valid data.

View File

@@ -68,6 +68,9 @@ type FileRes struct {
// Default returns some sensible defaults for this resource. // Default returns some sensible defaults for this resource.
func (obj *FileRes) Default() Res { func (obj *FileRes) Default() Res {
return &FileRes{ return &FileRes{
BaseRes: BaseRes{
MetaParams: DefaultMetaParams, // force a default
},
State: "exists", State: "exists",
} }
} }

View File

@@ -71,7 +71,11 @@ type HostnameRes struct {
// Default returns some sensible defaults for this resource. // Default returns some sensible defaults for this resource.
func (obj *HostnameRes) Default() Res { 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. // Validate if the params passed in are valid data.

View File

@@ -54,7 +54,11 @@ type MsgUID struct {
// Default returns some sensible defaults for this resource. // Default returns some sensible defaults for this resource.
func (obj *MsgRes) Default() Res { func (obj *MsgRes) Default() Res {
return &MsgRes{} return &MsgRes{
BaseRes: BaseRes{
MetaParams: DefaultMetaParams, // force a default
},
}
} }
// Validate the params that are passed to MsgRes. // Validate the params that are passed to MsgRes.

View File

@@ -37,7 +37,11 @@ type NoopRes struct {
// Default returns some sensible defaults for this resource. // Default returns some sensible defaults for this resource.
func (obj *NoopRes) Default() Res { 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. // Validate if the params passed in are valid data.

View File

@@ -60,6 +60,9 @@ type NspawnRes struct {
// Default returns some sensible defaults for this resource. // Default returns some sensible defaults for this resource.
func (obj *NspawnRes) Default() Res { func (obj *NspawnRes) Default() Res {
return &NspawnRes{ return &NspawnRes{
BaseRes: BaseRes{
MetaParams: DefaultMetaParams, // force a default
},
State: running, State: running,
} }
} }

View File

@@ -59,6 +59,9 @@ type PasswordRes struct {
// Default returns some sensible defaults for this resource. // Default returns some sensible defaults for this resource.
func (obj *PasswordRes) Default() Res { func (obj *PasswordRes) Default() Res {
return &PasswordRes{ return &PasswordRes{
BaseRes: BaseRes{
MetaParams: DefaultMetaParams, // force a default
},
Length: 64, // safe default Length: 64, // safe default
} }
} }

View File

@@ -49,6 +49,9 @@ type PkgRes struct {
// Default returns some sensible defaults for this resource. // Default returns some sensible defaults for this resource.
func (obj *PkgRes) Default() Res { func (obj *PkgRes) Default() Res {
return &PkgRes{ return &PkgRes{
BaseRes: BaseRes{
MetaParams: DefaultMetaParams, // force a default
},
State: "installed", // i think this is preferable to "latest" State: "installed", // i think this is preferable to "latest"
} }
} }

View File

@@ -213,7 +213,7 @@ type BaseRes struct {
// UnmarshalYAML is the custom unmarshal handler for the BaseRes struct. It is // UnmarshalYAML is the custom unmarshal handler for the BaseRes struct. It is
// primarily useful for setting the defaults, in particular if meta is absent! // 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 { //func (obj *BaseRes) UnmarshalYAML(unmarshal func(interface{}) error) error {
// DefaultBaseRes := BaseRes{ // DefaultBaseRes := BaseRes{
// // without specifying a default here, if we don't specify *any* // // without specifying a default here, if we don't specify *any*
@@ -222,7 +222,7 @@ type BaseRes struct {
// MetaParams: DefaultMetaParams, // force a default // 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(DefaultBaseRes) // convert; the defaults go here
// //raw := rawBaseRes{} // //raw := rawBaseRes{}

View File

@@ -46,7 +46,11 @@ type SvcRes struct {
// Default returns some sensible defaults for this resource. // Default returns some sensible defaults for this resource.
func (obj *SvcRes) Default() Res { 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. // Validate checks if the resource data structure was populated correctly.

View File

@@ -46,7 +46,11 @@ type TimerUID struct {
// Default returns some sensible defaults for this resource. // Default returns some sensible defaults for this resource.
func (obj *TimerRes) Default() Res { func (obj *TimerRes) Default() Res {
return &TimerRes{} return &TimerRes{
BaseRes: BaseRes{
MetaParams: DefaultMetaParams, // force a default
},
}
} }
// Validate the params that are passed to TimerRes. // Validate the params that are passed to TimerRes.

View File

@@ -81,7 +81,11 @@ type VirtRes struct {
// Default returns some sensible defaults for this resource. // Default returns some sensible defaults for this resource.
func (obj *VirtRes) Default() Res { func (obj *VirtRes) Default() Res {
return &VirtRes{} return &VirtRes{
BaseRes: BaseRes{
MetaParams: DefaultMetaParams, // force a default
},
}
} }
// Init runs some startup code for this resource. // Init runs some startup code for this resource.