1package v2
2
3// automatically generated file, do not edit!
4
5import (
6	"fmt"
7	"reflect"
8)
9
10// typeMap is used to dynamically look up data types from strings.
11var typeMap = map[string]interface{}{
12	"AdhocRequest":           &AdhocRequest{},
13	"adhoc_request":          &AdhocRequest{},
14	"Any":                    &Any{},
15	"any":                    &Any{},
16	"Asset":                  &Asset{},
17	"asset":                  &Asset{},
18	"AuthProviderClaims":     &AuthProviderClaims{},
19	"auth_provider_claims":   &AuthProviderClaims{},
20	"Check":                  &Check{},
21	"check":                  &Check{},
22	"CheckConfig":            &CheckConfig{},
23	"check_config":           &CheckConfig{},
24	"CheckHistory":           &CheckHistory{},
25	"check_history":          &CheckHistory{},
26	"CheckRequest":           &CheckRequest{},
27	"check_request":          &CheckRequest{},
28	"Claims":                 &Claims{},
29	"claims":                 &Claims{},
30	"ClusterHealth":          &ClusterHealth{},
31	"cluster_health":         &ClusterHealth{},
32	"ClusterRole":            &ClusterRole{},
33	"cluster_role":           &ClusterRole{},
34	"ClusterRoleBinding":     &ClusterRoleBinding{},
35	"cluster_role_binding":   &ClusterRoleBinding{},
36	"Deregistration":         &Deregistration{},
37	"deregistration":         &Deregistration{},
38	"Entity":                 &Entity{},
39	"entity":                 &Entity{},
40	"Event":                  &Event{},
41	"event":                  &Event{},
42	"EventFilter":            &EventFilter{},
43	"event_filter":           &EventFilter{},
44	"Extension":              &Extension{},
45	"extension":              &Extension{},
46	"Handler":                &Handler{},
47	"handler":                &Handler{},
48	"HandlerSocket":          &HandlerSocket{},
49	"handler_socket":         &HandlerSocket{},
50	"HealthResponse":         &HealthResponse{},
51	"health_response":        &HealthResponse{},
52	"Hook":                   &Hook{},
53	"hook":                   &Hook{},
54	"HookConfig":             &HookConfig{},
55	"hook_config":            &HookConfig{},
56	"HookList":               &HookList{},
57	"hook_list":              &HookList{},
58	"KeepaliveRecord":        &KeepaliveRecord{},
59	"keepalive_record":       &KeepaliveRecord{},
60	"MetricPoint":            &MetricPoint{},
61	"metric_point":           &MetricPoint{},
62	"MetricTag":              &MetricTag{},
63	"metric_tag":             &MetricTag{},
64	"Metrics":                &Metrics{},
65	"metrics":                &Metrics{},
66	"Mutator":                &Mutator{},
67	"mutator":                &Mutator{},
68	"Namespace":              &Namespace{},
69	"namespace":              &Namespace{},
70	"Network":                &Network{},
71	"network":                &Network{},
72	"NetworkInterface":       &NetworkInterface{},
73	"network_interface":      &NetworkInterface{},
74	"ObjectMeta":             &ObjectMeta{},
75	"object_meta":            &ObjectMeta{},
76	"ProxyRequests":          &ProxyRequests{},
77	"proxy_requests":         &ProxyRequests{},
78	"Role":                   &Role{},
79	"role":                   &Role{},
80	"RoleBinding":            &RoleBinding{},
81	"role_binding":           &RoleBinding{},
82	"RoleRef":                &RoleRef{},
83	"role_ref":               &RoleRef{},
84	"Rule":                   &Rule{},
85	"rule":                   &Rule{},
86	"Silenced":               &Silenced{},
87	"silenced":               &Silenced{},
88	"Subject":                &Subject{},
89	"subject":                &Subject{},
90	"System":                 &System{},
91	"system":                 &System{},
92	"TLSOptions":             &TLSOptions{},
93	"tls_options":            &TLSOptions{},
94	"TessenConfig":           &TessenConfig{},
95	"tessen_config":          &TessenConfig{},
96	"TimeWindowDays":         &TimeWindowDays{},
97	"time_window_days":       &TimeWindowDays{},
98	"TimeWindowTimeRange":    &TimeWindowTimeRange{},
99	"time_window_time_range": &TimeWindowTimeRange{},
100	"TimeWindowWhen":         &TimeWindowWhen{},
101	"time_window_when":       &TimeWindowWhen{},
102	"Tokens":                 &Tokens{},
103	"tokens":                 &Tokens{},
104	"TypeMeta":               &TypeMeta{},
105	"type_meta":              &TypeMeta{},
106	"User":                   &User{},
107	"user":                   &User{},
108	"Version":                &Version{},
109	"version":                &Version{},
110}
111
112// ResolveResource returns a zero-valued resource, given a name.
113// If the named type does not exist, or if the type is not a Resource,
114// then an error will be returned.
115func ResolveResource(name string) (Resource, error) {
116	t, ok := typeMap[name]
117	if !ok {
118		return nil, fmt.Errorf("type could not be found: %q", name)
119	}
120	if _, ok := t.(Resource); !ok {
121		return nil, fmt.Errorf("%q is not a Resource", name)
122	}
123	return newResource(t), nil
124}
125
126// Make a new Resource to avoid aliasing problems with ResolveResource.
127// don't use this function. no, seriously.
128func newResource(r interface{}) Resource {
129	return reflect.New(reflect.ValueOf(r).Elem().Type()).Interface().(Resource)
130}
131