@@ -61,19 +61,100 @@ def register(f):
61
61
62
62
63
63
@handle ('v1' , 'ServiceAccount' )
64
- def _handle_v1_serviceaccount (obj ):
64
+ def _handle_v1_serviceaccount (obj , kubeconfig , context ):
65
65
return {
66
66
'metalk8s_kubernetes.serviceaccount_present' : [
67
67
{'name' : obj ['metadata' ]['name' ]},
68
+ {'kubeconfig' : kubeconfig },
69
+ {'context' : context },
68
70
{'namespace' : obj ['metadata' ]['namespace' ]},
69
71
],
70
72
}
71
73
72
74
75
+ @handle ('v1' , 'ConfigMap' )
76
+ def _handle_v1_configmap (obj , kubeconfig , context ):
77
+ return {
78
+ 'metalk8s_kubernetes.configmap_present' : [
79
+ {'name' : obj ['metadata' ]['name' ]},
80
+ {'kubeconfig' : kubeconfig },
81
+ {'context' : context },
82
+ {'namespace' : obj ['metadata' ]['namespace' ]},
83
+ {'data' : obj ['data' ]},
84
+ ],
85
+ }
86
+
87
+
88
+ @handle ('apiextensions.k8s.io/v1beta1' , 'CustomResourceDefinition' )
89
+ def _handle_apiextensions_v1beta1_customresourcedefinition (
90
+ obj , kubeconfig , context ):
91
+ return {
92
+ 'metalk8s_kubernetes.customresourcedefinition_present' : [
93
+ {'name' : obj ['metadata' ]['name' ]},
94
+ {'kubeconfig' : kubeconfig },
95
+ {'context' : context },
96
+ {'spec' : obj ['spec' ]},
97
+ ],
98
+ }
99
+
100
+
101
+ @handle ('rbac.authorization.k8s.io/v1beta1' , 'ClusterRole' )
102
+ def _handle_rbac_v1beta1_clusterrole (obj , kubeconfig , context ):
103
+ return {
104
+ 'metalk8s_kubernetes.clusterrole_present' : [
105
+ {'name' : obj ['metadata' ]['name' ]},
106
+ {'kubeconfig' : kubeconfig },
107
+ {'context' : context },
108
+ {'rules' : obj ['rules' ]},
109
+ ],
110
+ }
111
+
112
+
113
+ @handle ('rbac.authorization.k8s.io/v1beta1' , 'ClusterRoleBinding' )
114
+ def _handle_rbac_v1beta1_clusterrolebinding (obj , kubeconfig , context ):
115
+ return {
116
+ 'metalk8s_kubernetes.clusterrolebinding_present' : [
117
+ {'name' : obj ['metadata' ]['name' ]},
118
+ {'kubeconfig' : kubeconfig },
119
+ {'context' : context },
120
+ {'role_ref' : obj ['roleRef' ]},
121
+ {'subjects' : obj ['subjects' ]},
122
+ ],
123
+ }
124
+
125
+
126
+ @handle ('extensions/v1beta1' , 'DaemonSet' )
127
+ def _handle_extensions_v1beta1_daemonset (obj , kubeconfig , context ):
128
+ return {
129
+ 'metalk8s_kubernetes.daemonset_present' : [
130
+ {'name' : obj ['metadata' ]['name' ]},
131
+ {'kubeconfig' : kubeconfig },
132
+ {'context' : context },
133
+ {'namespace' : obj ['metadata' ]['namespace' ]},
134
+ {'metadata' : obj ['metadata' ]},
135
+ {'spec' : obj ['spec' ]},
136
+ ],
137
+ }
138
+
139
+
140
+ @handle ('extensions/v1beta1' , 'Deployment' )
141
+ def _handle_extensions_v1beta1_deployment (obj , kubeconfig , context ):
142
+ return {
143
+ 'metalk8s_kubernetes.deployment_present' : [
144
+ {'name' : obj ['metadata' ]['name' ]},
145
+ {'kubeconfig' : kubeconfig },
146
+ {'context' : context },
147
+ {'namespace' : obj ['metadata' ]['namespace' ]},
148
+ {'metadata' : obj ['metadata' ]},
149
+ {'spec' : obj ['spec' ]},
150
+ ],
151
+ }
152
+
153
+
73
154
del handle
74
155
75
156
76
- def _step (obj ):
157
+ def _step (obj , kubeconfig = None , context = None ):
77
158
'''
78
159
Handle a single Kubernetes object, rendering it into a state 'step'
79
160
'''
@@ -85,15 +166,24 @@ def _step(obj):
85
166
if not handler :
86
167
raise ValueError ('No handler for {}/{}' .format (api_version , kind ))
87
168
88
- state = handler (obj )
169
+ state = handler (obj , kubeconfig = kubeconfig , context = context )
89
170
90
171
return (name , state )
91
172
92
173
93
174
def render (yaml_data , saltenv = '' , sls = '' , ** kwargs ):
175
+ args = six .moves .urllib .parse .parse_qs (kwargs .get ('argline' , '' ))
176
+
177
+ kubeconfig = args .get ('kubeconfig' , [None ])[0 ]
178
+ context = args .get ('context' , [None ])[0 ]
179
+
94
180
if not isinstance (yaml_data , six .string_types ):
95
181
yaml_data = yaml_data .read ()
96
182
97
183
data = yaml .load_all (yaml_data , Loader = salt .utils .yaml .SaltYamlSafeLoader )
98
184
99
- return OrderedDict (_step (obj ) for obj in data if obj )
185
+ return OrderedDict (
186
+ _step (obj , kubeconfig = kubeconfig , context = context )
187
+ for obj in data
188
+ if obj
189
+ )
0 commit comments