Skip to content
This repository was archived by the owner on Feb 9, 2022. It is now read-only.

Commit 73d4c9c

Browse files
Race conditions in KubeClient fixed
1 parent f433121 commit 73d4c9c

File tree

1 file changed

+13
-12
lines changed

1 file changed

+13
-12
lines changed

src/test/kube.rs

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -279,6 +279,11 @@ impl KubeClient {
279279
let timeout_secs = self.timeouts.apply_crd.as_secs() as u32;
280280
let crds: Api<CustomResourceDefinition> = Api::all(self.client.clone());
281281

282+
let lp = ListParams::default()
283+
.fields(&format!("metadata.name={}", crd.name()))
284+
.timeout(timeout_secs);
285+
let mut stream = crds.watch(&lp, "0").await?.boxed();
286+
282287
let apply_params = PatchParams::apply("agent_integration_test").force();
283288
crds.patch(&crd.name(), &apply_params, &Patch::Apply(crd))
284289
.await?;
@@ -287,11 +292,6 @@ impl KubeClient {
287292
return Ok(());
288293
}
289294

290-
let lp = ListParams::default()
291-
.fields(&format!("metadata.name={}", crd.name()))
292-
.timeout(timeout_secs);
293-
let mut stream = crds.watch(&lp, "0").await?.boxed();
294-
295295
while let Some(status) = stream.try_next().await? {
296296
if let WatchEvent::Modified(crd) = status {
297297
if is_ready(&crd) {
@@ -351,14 +351,15 @@ impl KubeClient {
351351
let timeout_secs = self.timeouts.create.as_secs() as u32;
352352
let api: Api<K> = Api::namespaced(self.client.clone(), &self.namespace);
353353

354-
let resource = from_yaml(spec);
355-
api.create(&PostParams::default(), &resource).await?;
354+
let resource: K = from_yaml(spec);
356355

357356
let list_params = ListParams::default()
358357
.fields(&format!("metadata.name={}", resource.name()))
359358
.timeout(timeout_secs);
360359
let mut stream = api.watch(&list_params, "0").await?.boxed();
361360

361+
api.create(&PostParams::default(), &resource).await?;
362+
362363
while let Some(status) = stream.try_next().await? {
363364
if let WatchEvent::Added(resource) = status {
364365
return Ok(resource);
@@ -381,6 +382,11 @@ impl KubeClient {
381382
let timeout_secs = self.timeouts.delete.as_secs() as u32;
382383
let api: Api<K> = Api::namespaced(self.client.clone(), &self.namespace);
383384

385+
let list_params = ListParams::default()
386+
.fields(&format!("metadata.name={}", resource.name()))
387+
.timeout(timeout_secs);
388+
let mut stream = api.watch(&list_params, "0").await?.boxed();
389+
384390
let result = api
385391
.delete(&resource.name(), &DeleteParams::default())
386392
.await?;
@@ -389,11 +395,6 @@ impl KubeClient {
389395
return Ok(());
390396
}
391397

392-
let list_params = ListParams::default()
393-
.fields(&format!("metadata.name={}", resource.name()))
394-
.timeout(timeout_secs);
395-
let mut stream = api.watch(&list_params, "0").await?.boxed();
396-
397398
while let Some(status) = stream.try_next().await? {
398399
if let WatchEvent::Deleted(_) = status {
399400
return Ok(());

0 commit comments

Comments
 (0)