@@ -42,32 +42,46 @@ async def test_cluster_custom_resources(self):
42
42
await client .resources .get (api_version = 'apps.example.com/v1' , kind = 'ClusterChangeMe' )
43
43
44
44
crd_api = await client .resources .get (
45
- api_version = 'apiextensions.k8s.io/v1beta1 ' ,
45
+ api_version = 'apiextensions.k8s.io/v1 ' ,
46
46
kind = 'CustomResourceDefinition' )
47
47
name = 'clusterchangemes.apps.example.com'
48
48
crd_manifest = {
49
- ' apiVersion' : ' apiextensions.k8s.io/v1beta1' ,
50
- ' kind' : ' CustomResourceDefinition' ,
51
- ' metadata' : {
52
- ' name' : name ,
49
+ " apiVersion" : " apiextensions.k8s.io/v1" ,
50
+ " kind" : " CustomResourceDefinition" ,
51
+ " metadata" : {
52
+ " name" : name ,
53
53
},
54
- ' spec' : {
55
- ' group' : ' apps.example.com' ,
56
- ' names' : {
57
- ' kind' : ' ClusterChangeMe' ,
58
- ' listKind' : ' ClusterChangeMeList' ,
59
- ' plural' : ' clusterchangemes' ,
60
- ' singular' : ' clusterchangeme' ,
54
+ " spec" : {
55
+ " group" : " apps.example.com" ,
56
+ " names" : {
57
+ " kind" : " ClusterChangeMe" ,
58
+ " listKind" : " ClusterChangeMeList" ,
59
+ " plural" : " clusterchangemes" ,
60
+ " singular" : " clusterchangeme" ,
61
61
},
62
- 'scope' : 'Cluster' ,
63
- 'version' : 'v1' ,
64
- 'subresources' : {
65
- 'status' : {}
66
- }
67
- }
62
+ "scope" : "Cluster" ,
63
+ "versions" : [
64
+ {
65
+ "name" : "v1" ,
66
+ "served" : True ,
67
+ "storage" : True ,
68
+ "schema" : {
69
+ "openAPIV3Schema" : {
70
+ "type" : "object" ,
71
+ "properties" : {
72
+ "spec" : {
73
+ "type" : "object" ,
74
+ "properties" : {"size" : {"type" : "integer" }},
75
+ }
76
+ },
77
+ }
78
+ },
79
+ }
80
+ ],
81
+ },
68
82
}
69
- resp = await crd_api .create (crd_manifest )
70
83
84
+ resp = await crd_api .create (crd_manifest )
71
85
self .assertEqual (name , resp .metadata .name )
72
86
self .assertTrue (resp .status )
73
87
@@ -99,6 +113,19 @@ async def test_cluster_custom_resources(self):
99
113
resp = await changeme_api .create (body = changeme_manifest )
100
114
self .assertEqual (resp .metadata .name , changeme_name )
101
115
116
+ # watch with timeout
117
+ count = 0
118
+ async for _ in client .watch (changeme_api , timeout = 3 , namespace = "default" , name = changeme_name ):
119
+ count += 1
120
+ self .assertTrue (count > 0 , msg = "no events received for watch" )
121
+
122
+ # without timeout, should be longer than the previous check
123
+ async def _watch_no_timeout ():
124
+ async for _ in client .watch (changeme_api , namespace = "default" , name = changeme_name ):
125
+ pass
126
+ with self .assertRaises (asyncio .exceptions .TimeoutError ):
127
+ await asyncio .wait_for (_watch_no_timeout (), timeout = 5 )
128
+
102
129
resp = await changeme_api .get (name = changeme_name )
103
130
self .assertEqual (resp .metadata .name , changeme_name )
104
131
@@ -127,111 +154,6 @@ async def test_cluster_custom_resources(self):
127
154
with self .assertRaises (ResourceNotFoundError ):
128
155
await client .resources .get (api_version = 'apps.example.com/v1' , kind = 'ClusterChangeMe' )
129
156
130
- # async def test_async_namespaced_custom_resources(self):
131
- # async with api_client.ApiClient(configuration=self.config) as apic:
132
- # client = await DynamicClient.newclient(apic)
133
- #
134
- # with self.assertRaises(ResourceNotFoundError):
135
- # await client.resources.get(api_version='apps.example.com/v1', kind='ChangeMe')
136
- #
137
- # crd_api = await client.resources.get(
138
- # api_version='apiextensions.k8s.io/v1beta1',
139
- # kind='CustomResourceDefinition')
140
- #
141
- # name = 'changemes.apps.example.com'
142
- #
143
- # crd_manifest = {
144
- # 'apiVersion': 'apiextensions.k8s.io/v1beta1',
145
- # 'kind': 'CustomResourceDefinition',
146
- # 'metadata': {
147
- # 'name': name,
148
- # },
149
- # 'spec': {
150
- # 'group': 'apps.example.com',
151
- # 'names': {
152
- # 'kind': 'ChangeMe',
153
- # 'listKind': 'ChangeMeList',
154
- # 'plural': 'changemes',
155
- # 'singular': 'changeme',
156
- # },
157
- # 'scope': 'Namespaced',
158
- # 'version': 'v1',
159
- # 'subresources': {
160
- # 'status': {}
161
- # }
162
- # }
163
- # }
164
- # async_resp = await crd_api.create(crd_manifest, async_req=True)
165
- #
166
- # self.assertEqual(name, async_resp.metadata.name)
167
- # self.assertTrue(async_resp.status)
168
- #
169
- # async_resp = await crd_api.get(name=name, async_req=True)
170
- # self.assertEqual(name, async_resp.metadata.name)
171
- # self.assertTrue(async_resp.status)
172
- #
173
- # try:
174
- # changeme_api = await client.resources.get(
175
- # api_version='apps.example.com/v1', kind='ChangeMe')
176
- # except ResourceNotFoundError:
177
- # # Need to wait a sec for the discovery layer to get updated
178
- # await asyncio.sleep(2)
179
- # changeme_api = await client.resources.get(
180
- # api_version='apps.example.com/v1', kind='ChangeMe')
181
- #
182
- # async_resp = await changeme_api.get(async_req=True)
183
- # self.assertEqual(async_resp.items, [])
184
- #
185
- # changeme_name = 'custom-resource' + short_uuid()
186
- # changeme_manifest = {
187
- # 'apiVersion': 'apps.example.com/v1',
188
- # 'kind': 'ChangeMe',
189
- # 'metadata': {
190
- # 'name': changeme_name,
191
- # },
192
- # 'spec': {}
193
- # }
194
- #
195
- # async_resp = await changeme_api.create(body=changeme_manifest, namespace='default', async_req=True)
196
- # self.assertEqual(async_resp.metadata.name, changeme_name)
197
- #
198
- # async_resp = await changeme_api.get(name=changeme_name, namespace='default', async_req=True)
199
- # self.assertEqual(async_resp.metadata.name, changeme_name)
200
- #
201
- # changeme_manifest['spec']['size'] = 3
202
- # async_resp = await changeme_api.patch(
203
- # body=changeme_manifest,
204
- # namespace='default',
205
- # content_type='application/merge-patch+json',
206
- # async_req=True
207
- # )
208
- # self.assertEqual(async_resp.spec.size, 3)
209
- #
210
- # async_resp = await changeme_api.get(name=changeme_name, namespace='default', async_req=True)
211
- # self.assertEqual(async_resp.spec.size, 3)
212
- #
213
- # async_resp = await changeme_api.get(namespace='default', async_req=True)
214
- # self.assertEqual(len(async_resp.items), 1)
215
- #
216
- # async_resp = await changeme_api.get(async_req=True)
217
- # self.assertEqual(len(async_resp.items), 1)
218
- #
219
- # await changeme_api.delete(name=changeme_name, namespace='default', async_req=True)
220
- #
221
- # async_resp = await changeme_api.get(namespace='default', async_req=True)
222
- # self.assertEqual(len(async_resp.items), 0)
223
- #
224
- # async_resp = await changeme_api.get(async_req=True)
225
- # self.assertEqual(len(async_resp.items), 0)
226
- #
227
- # await crd_api.delete(name=name, async_req=True)
228
- #
229
- # await asyncio.sleep(2)
230
- # await client.resources.invalidate_cache()
231
- # with self.assertRaises(ResourceNotFoundError):
232
- # await client.resources.get(
233
- # api_version='apps.example.com/v1', kind='ChangeMe')
234
-
235
157
async def test_namespaced_custom_resources (self ):
236
158
async with api_client .ApiClient (configuration = self .config ) as apic :
237
159
client = await DynamicClient (apic )
@@ -240,32 +162,46 @@ async def test_namespaced_custom_resources(self):
240
162
await client .resources .get (api_version = 'apps.example.com/v1' , kind = 'ChangeMe' )
241
163
242
164
crd_api = await client .resources .get (
243
- api_version = 'apiextensions.k8s.io/v1beta1 ' ,
165
+ api_version = 'apiextensions.k8s.io/v1 ' ,
244
166
kind = 'CustomResourceDefinition' )
245
- name = 'changemes .apps.example.com'
167
+ name = 'clusterchangemes .apps.example.com'
246
168
crd_manifest = {
247
- ' apiVersion' : ' apiextensions.k8s.io/v1beta1' ,
248
- ' kind' : ' CustomResourceDefinition' ,
249
- ' metadata' : {
250
- ' name' : name ,
169
+ " apiVersion" : " apiextensions.k8s.io/v1" ,
170
+ " kind" : " CustomResourceDefinition" ,
171
+ " metadata" : {
172
+ " name" : name ,
251
173
},
252
- ' spec' : {
253
- ' group' : ' apps.example.com' ,
254
- ' names' : {
255
- ' kind' : 'ChangeMe' ,
256
- ' listKind' : 'ChangeMeList' ,
257
- ' plural' : 'changemes' ,
258
- ' singular' : 'changeme' ,
174
+ " spec" : {
175
+ " group" : " apps.example.com" ,
176
+ " names" : {
177
+ " kind" : "ClusterChangeMe" ,
178
+ " listKind" : "ClusterChangeMeList" ,
179
+ " plural" : "clusterchangemes" ,
180
+ " singular" : "clusterchangeme" ,
259
181
},
260
- 'scope' : 'Namespaced' ,
261
- 'version' : 'v1' ,
262
- 'subresources' : {
263
- 'status' : {}
264
- }
265
- }
182
+ "scope" : "Namespaced" ,
183
+ "versions" : [
184
+ {
185
+ "name" : "v1" ,
186
+ "served" : True ,
187
+ "storage" : True ,
188
+ "schema" : {
189
+ "openAPIV3Schema" : {
190
+ "type" : "object" ,
191
+ "properties" : {
192
+ "spec" : {
193
+ "type" : "object" ,
194
+ "properties" : {"size" : {"type" : "integer" }},
195
+ }
196
+ },
197
+ }
198
+ },
199
+ }
200
+ ],
201
+ },
266
202
}
267
- resp = await crd_api .create (crd_manifest )
268
203
204
+ resp = await crd_api .create (crd_manifest )
269
205
self .assertEqual (name , resp .metadata .name )
270
206
self .assertTrue (resp .status )
271
207
@@ -276,18 +212,18 @@ async def test_namespaced_custom_resources(self):
276
212
self .assertTrue (resp .status )
277
213
278
214
try :
279
- await client .resources .get (api_version = 'apps.example.com/v1' , kind = 'ChangeMe ' )
215
+ await client .resources .get (api_version = 'apps.example.com/v1' , kind = 'ClusterChangeMe ' )
280
216
except ResourceNotFoundError :
281
217
# Need to wait a sec for the discovery layer to get updated
282
218
await asyncio .sleep (2 )
283
219
changeme_api = await client .resources .get (
284
- api_version = 'apps.example.com/v1' , kind = 'ChangeMe ' )
220
+ api_version = 'apps.example.com/v1' , kind = 'ClusterChangeMe ' )
285
221
resp = await changeme_api .get ()
286
222
self .assertEqual (resp .items , [])
287
223
changeme_name = 'custom-resource' + short_uuid ()
288
224
changeme_manifest = {
289
225
'apiVersion' : 'apps.example.com/v1' ,
290
- 'kind' : 'ChangeMe ' ,
226
+ 'kind' : 'ClusterChangeMe ' ,
291
227
'metadata' : {
292
228
'name' : changeme_name ,
293
229
},
@@ -446,7 +382,7 @@ async def test_configmap_apis(self):
446
382
self .assertEqual (name , resp .metadata .name )
447
383
448
384
count = 0
449
- async for _ in client .watch (api , timeout = 10 , namespace = "default" , name = name ):
385
+ async for _ in client .watch (api , timeout = 3 , namespace = "default" , name = name ):
450
386
count += 1
451
387
self .assertTrue (count > 0 , msg = "no events received for watch" )
452
388
0 commit comments