Skip to content

Commit 641193f

Browse files
authored
Merge pull request ynqa#15 from clux/fixups
api rewrite
2 parents 8d4ef12 + fc274ce commit 641193f

13 files changed

+413
-242
lines changed

CHANGELOG.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
0.7.0 / UNRELEASED
22
==================
33
* Expose list/watch parameters #11
4-
4+
* ApiResource -> Api
5+
* ResourceType has been removed in favour of `Api::v1Pod()` say
56

67
0.6.0 / 2019-05-12
78
==================

README.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,12 @@ One of the main abstractions exposed from `kube::api` is `Reflector<T, U>`. This
2020

2121
It handles the api mechanics for watching kube resources, tracking resourceVersions, and using watch events; it builds and maintains an internal map.
2222

23-
To use it, you just feed in `T` as a `Spec` struct and `U` as a `Status` struct, which can be as complete or incomplete as you like. Here, using the complete structs via [k8s-openapi](https://docs.rs/k8s-openapi/0.4.0/k8s_openapi/api/core/v1/struct.PodSpec.html):
23+
To use it, you just feed in `T` as a `Spec` struct and `U` as a `Status` struct, which can be as complete or incomplete as you like. Here, using the complete structs via [k8s-openapi](https://docs.rs/k8s-openapi/0.4.0/k8s_openapi/api/core/v1/struct.NodeSpec.html):
2424

2525
```rust
26-
use k8s_openapi::api::core::v1::{PodSpec, PodStatus};
27-
let resource = ResourceType::Pods(Some("kube-system".into()));
28-
let rf : Reflector<PodSpec, PodStatus> = Reflector::new(client.clone(), resource.into())?
26+
use k8s_openapi::api::core::v1::{NodeSpec, NodeStatus};
27+
let api = Api::v1Node();
28+
let rf : Reflector<NodeSpec, NodeStatus> = Reflector::new(client, api)?
2929
.timeout(10)
3030
.init();
3131
```
@@ -54,8 +54,8 @@ You tell it what type parameters correspond to; `T` should be a `Spec` struct, a
5454

5555
```rust
5656
use k8s_openapi::api::core::v1::{PodSpec, PodStatus};
57-
let resource = ResourceType::Pods(Some("kube-system".into()));
58-
let inf : Informer<PodSpec, PodStatus> = Informer::new(client.clone(), resource.into())
57+
let api = Api::v1Pod();
58+
let inf : Informer<PodSpec, PodStatus> = Informer::new(client, api)
5959
.init()?;
6060
```
6161

examples/crd_reflector.rs

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,16 @@
22
#[macro_use] extern crate serde_derive;
33

44
use kube::{
5-
api::{ApiResource, Reflector, Void},
5+
api::{Api, Reflector, Void},
66
client::APIClient,
77
config,
88
};
99

1010
// Own custom resource
1111
#[derive(Deserialize, Serialize, Clone)]
12-
pub struct FooResource {
13-
name: String,
14-
info: String,
12+
pub struct Foo {
13+
name: String,
14+
info: String,
1515
}
1616

1717
fn main() -> Result<(), failure::Error> {
@@ -21,14 +21,11 @@ fn main() -> Result<(), failure::Error> {
2121
let client = APIClient::new(config);
2222

2323
// This example requires `kubectl apply -f examples/foo.yaml` run first
24-
let resource = ApiResource {
25-
group: "clux.dev".into(),
26-
resource: "foos".into(),
27-
version: "v1".into(),
28-
namespace: Some("kube-system".into()),
29-
..Default::default()
30-
};
31-
let rf : Reflector<FooResource, Void> = Reflector::new(client, resource)
24+
let resource = Api::customResource("foos")
25+
.group("clux.dev")
26+
.within("kube-system");
27+
28+
let rf : Reflector<Foo, Void> = Reflector::new(client, resource)
3229
.init()?;
3330

3431
loop {

examples/deployment_reflector.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#[macro_use] extern crate log;
22
use kube::{
3-
api::{ResourceType, Reflector},
3+
api::{Api, Reflector},
44
client::APIClient,
55
config,
66
};
@@ -12,9 +12,9 @@ fn main() -> Result<(), failure::Error> {
1212
let config = config::load_kube_config().expect("failed to load kubeconfig");
1313
let client = APIClient::new(config);
1414

15-
let resource = ResourceType::Deploys(Some("kube-system".into()));
15+
let resource = Api::v1Deployment().within("kube-system");
1616
let rf : Reflector<DeploymentSpec, DeploymentStatus> =
17-
Reflector::new(client, resource.into())
17+
Reflector::new(client, resource)
1818
.init()?;
1919

2020
// rf is initialized with full state, which can be extracted on demand.

examples/node_informer.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#[macro_use] extern crate log;
22
use kube::{
3-
api::{ResourceType, Informer, WatchEvent},
3+
api::{Api, Informer, WatchEvent},
44
client::APIClient,
55
config,
66
};
@@ -15,8 +15,8 @@ fn main() -> Result<(), failure::Error> {
1515
let config = config::load_kube_config().expect("failed to load kubeconfig");
1616
let client = APIClient::new(config);
1717

18-
let nodes = ResourceType::Nodes;
19-
let ni = Informer::new(client.clone(), nodes.into())
18+
let nodes = Api::v1Node();
19+
let ni = Informer::new(client.clone(), nodes)
2020
.labels("role=worker")
2121
.init()?;
2222

examples/node_reflector.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#[macro_use] extern crate log;
22
use kube::{
3-
api::{ResourceType, Reflector},
3+
api::{Api, Reflector},
44
client::APIClient,
55
config,
66
};
@@ -12,7 +12,7 @@ fn main() -> Result<(), failure::Error> {
1212
let config = config::load_kube_config().expect("failed to load kubeconfig");
1313
let client = APIClient::new(config);
1414

15-
let resource = ResourceType::Nodes;
15+
let resource = Api::v1Node();
1616
let rf : Reflector<NodeSpec, NodeStatus> = Reflector::new(client, resource.into())
1717
.labels("role=master")
1818
.init()?;

examples/pod_informer.rs

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#[macro_use] extern crate log;
22
use std::env;
33
use kube::{
4-
api::{ResourceType, Informer, WatchEvent},
4+
api::{Api, Informer, WatchEvent},
55
client::APIClient,
66
config,
77
};
@@ -12,11 +12,10 @@ fn main() -> Result<(), failure::Error> {
1212
env_logger::init();
1313
let config = config::load_kube_config().expect("failed to load kubeconfig");
1414
let client = APIClient::new(config);
15-
let namespace = Some(env::var("NAMESPACE").unwrap_or("kube-system".into()));
15+
let namespace = env::var("NAMESPACE").unwrap_or("kube-system".into());
1616

17-
let resource = ResourceType::Pods(namespace);
18-
let inf : Informer<PodSpec, PodStatus> = Informer::new(client.clone(), resource.into())
19-
.init()?;
17+
let resource = Api::v1Pod().within(&namespace);
18+
let inf = Informer::new(client.clone(), resource).init()?;
2019

2120
// Here we both poll and reconcile based on events from the main thread
2221
// If you run this next to actix-web (say), spawn a thread and pass `inf` as app state

examples/pod_reflector.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#[macro_use] extern crate log;
22
use kube::{
3-
api::{ResourceType, Reflector},
3+
api::{Api, Reflector},
44
client::APIClient,
55
config,
66
};
@@ -12,8 +12,8 @@ fn main() -> Result<(), failure::Error> {
1212
let config = config::load_kube_config().expect("failed to load kubeconfig");
1313
let client = APIClient::new(config);
1414

15-
let resource = ResourceType::Pods(Some("kube-system".into()));
16-
let rf : Reflector<PodSpec, PodStatus> = Reflector::new(client.clone(), resource.into())
15+
let resource = Api::v1Pod().within("kube-system");
16+
let rf : Reflector<PodSpec, PodStatus> = Reflector::new(client.clone(), resource)
1717
.init()?;
1818

1919
// Can read initial state now:

0 commit comments

Comments
 (0)