@@ -61,19 +61,100 @@ def register(f):
6161
6262
6363@handle ('v1' , 'ServiceAccount' )
64- def _handle_v1_serviceaccount (obj ):
64+ def _handle_v1_serviceaccount (obj , kubeconfig , context ):
6565 return {
6666 'metalk8s_kubernetes.serviceaccount_present' : [
6767 {'name' : obj ['metadata' ]['name' ]},
68+ {'kubeconfig' : kubeconfig },
69+ {'context' : context },
6870 {'namespace' : obj ['metadata' ]['namespace' ]},
6971 ],
7072 }
7173
7274
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+
73154del handle
74155
75156
76- def _step (obj ):
157+ def _step (obj , kubeconfig = None , context = None ):
77158 '''
78159 Handle a single Kubernetes object, rendering it into a state 'step'
79160 '''
@@ -85,15 +166,24 @@ def _step(obj):
85166 if not handler :
86167 raise ValueError ('No handler for {}/{}' .format (api_version , kind ))
87168
88- state = handler (obj )
169+ state = handler (obj , kubeconfig = kubeconfig , context = context )
89170
90171 return (name , state )
91172
92173
93174def 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+
94180 if not isinstance (yaml_data , six .string_types ):
95181 yaml_data = yaml_data .read ()
96182
97183 data = yaml .load_all (yaml_data , Loader = salt .utils .yaml .SaltYamlSafeLoader )
98184
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