forked from sensu/sensu-go
/
extension.go
63 lines (54 loc) · 1.57 KB
/
extension.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
package v2
import (
"errors"
"net/url"
"path"
)
const (
// ExtensionsResource is the name of this resource type
ExtensionsResource = "extensions"
)
// StorePrefix returns the path prefix to this resource in the store
func (e *Extension) StorePrefix() string {
return ExtensionsResource
}
// URIPath returns the path component of an extension URI.
func (e *Extension) URIPath() string {
return path.Join(URLPrefix, "namespaces", url.PathEscape(e.Namespace), ExtensionsResource, url.PathEscape(e.Name))
}
// Validate validates the extension.
func (e *Extension) Validate() error {
if err := ValidateName(e.Name); err != nil {
return err
}
if e.URL == "" {
return errors.New("empty URL")
}
if e.Namespace == "" {
return errors.New("empty namespace")
}
return nil
}
// FixtureExtension given a name returns a valid extension for use in tests
func FixtureExtension(name string) *Extension {
return &Extension{
URL: "https://localhost:8080",
ObjectMeta: NewObjectMeta(name, "default"),
}
}
// NewExtension intializes an extension with the given object meta
func NewExtension(meta ObjectMeta) *Extension {
return &Extension{ObjectMeta: meta}
}
// ExtensionFields returns a set of fields that represent that resource
func ExtensionFields(r Resource) map[string]string {
resource := r.(*Extension)
return map[string]string{
"extension.name": resource.ObjectMeta.Name,
"extension.namespace": resource.ObjectMeta.Namespace,
}
}
// SetNamespace sets the namespace of the resource.
func (e *Extension) SetNamespace(namespace string) {
e.Namespace = namespace
}