25
25
import unittest
26
26
import urllib3
27
27
import uuid
28
+ import yaml
28
29
29
30
from kubernetes .client import api_client
30
31
from kubernetes .client .apis import core_v1_api
32
+ from kubernetes .client .apis import extensions_v1beta1_api
31
33
32
34
33
35
def _is_k8s_running ():
@@ -39,6 +41,26 @@ def _is_k8s_running():
39
41
40
42
41
43
class TestClient (unittest .TestCase ):
44
+ @unittest .skipUnless (
45
+ _is_k8s_running (), "Kubernetes is not available" )
46
+ def test_read_namespaces (self ):
47
+ client = api_client .ApiClient ('http://127.0.0.1:8080/' )
48
+ api = core_v1_api .CoreV1Api (client )
49
+
50
+ expected_namespaces = ('default' , 'kube-system' )
51
+ for ns in expected_namespaces :
52
+ api .read_namespace (name = ns )
53
+
54
+ @unittest .skipUnless (
55
+ _is_k8s_running (), "Kubernetes is not available" )
56
+ def test_read_services (self ):
57
+ client = api_client .ApiClient ('http://127.0.0.1:8080/' )
58
+ api = core_v1_api .CoreV1Api (client )
59
+
60
+ expected_services = ('kubernetes' ,)
61
+ for service in expected_services :
62
+ api .read_namespaced_service (service , 'default' )
63
+
42
64
@unittest .skipUnless (
43
65
_is_k8s_running (), "Kubernetes is not available" )
44
66
def test_list_endpoints (self ):
@@ -48,6 +70,35 @@ def test_list_endpoints(self):
48
70
endpoints = api .list_endpoints_for_all_namespaces ()
49
71
self .assertTrue (len (endpoints .items ) > 0 )
50
72
73
+ @unittest .skipUnless (
74
+ _is_k8s_running (), "Kubernetes is not available" )
75
+ def test_create_deployment (self ):
76
+ client = api_client .ApiClient ('http://127.0.0.1:8080/' )
77
+ api = extensions_v1beta1_api .ExtensionsV1beta1Api (client )
78
+ name = 'nginx-deployment-' + str (uuid .uuid4 ())
79
+ deployment = '''apiVersion: extensions/v1beta1
80
+ kind: Deployment
81
+ metadata:
82
+ name: %s
83
+ spec:
84
+ replicas: 3
85
+ template:
86
+ metadata:
87
+ labels:
88
+ app: nginx
89
+ spec:
90
+ containers:
91
+ - name: nginx
92
+ image: nginx:1.7.9
93
+ ports:
94
+ - containerPort: 80
95
+ '''
96
+ resp = api .create_namespaced_deployment (
97
+ body = yaml .load (deployment % name ),
98
+ namespace = "default" )
99
+ resp = api .read_namespaced_deployment (name , 'default' )
100
+ self .assertIsNotNone (resp )
101
+
51
102
@unittest .skipUnless (
52
103
_is_k8s_running (), "Kubernetes is not available" )
53
104
def test_pod_apis (self ):
@@ -153,7 +204,6 @@ def test_replication_controller_apis(self):
153
204
resp = api .delete_namespaced_replication_controller (
154
205
name = name , body = {}, namespace = 'default' )
155
206
156
-
157
207
@unittest .skipUnless (
158
208
_is_k8s_running (), "Kubernetes is not available" )
159
209
def test_configmap_apis (self ):
@@ -201,4 +251,38 @@ def test_node_apis(self):
201
251
for item in api .list_node ().items :
202
252
node = api .read_node (name = item .metadata .name )
203
253
self .assertTrue (len (node .metadata .labels ) > 0 )
204
- self .assertTrue (isinstance (node .metadata .labels , dict ))
254
+ self .assertTrue (isinstance (node .metadata .labels , dict ))
255
+
256
+ @unittest .skipUnless (
257
+ _is_k8s_running (), "Kubernetes is not available" )
258
+ def test_create_daemonset (self ):
259
+ client = api_client .ApiClient ('http://127.0.0.1:8080/' )
260
+ api = extensions_v1beta1_api .ExtensionsV1beta1Api (client )
261
+ name = 'nginx-app-' + str (uuid .uuid4 ())
262
+ daemonset = {
263
+ 'apiVersion' : 'extensions/v1beta1' ,
264
+ 'kind' : 'DaemonSet' ,
265
+ 'metadata' : {
266
+ 'labels' : {'app' : 'nginx' },
267
+ 'name' : '%s' % name ,
268
+ },
269
+ 'spec' : {
270
+ 'template' : {
271
+ 'metadata' : {
272
+ 'labels' : {'app' : 'nginx' },
273
+ 'name' : name },
274
+ 'spec' : {
275
+ 'containers' : [
276
+ {'name' : 'nginx-app' ,
277
+ 'image' : 'nginx:1.10' },
278
+ ],
279
+ },
280
+ },
281
+ 'updateStrategy' : {
282
+ 'type' : 'RollingUpdate' ,
283
+ },
284
+ }
285
+ }
286
+ resp = api .create_namespaced_daemon_set ('default' , body = daemonset )
287
+ resp = api .read_namespaced_daemon_set (name , 'default' )
288
+ self .assertIsNotNone (resp )
0 commit comments