devops_armory/cloud/gcp/gke/node/
list.rs1use std::time::Duration;
2
3use awc::{
4 Client, Connector,
5};
6
7use openssl::ssl::{
8 SslConnector,
9 SslMethod,
10 SslVerifyMode
11};
12
13use super::models::{
14 NodeList,
15 NodePool
16};
17
18pub async fn node_list(
21 token: String,
22 gke_cluster_endpoint: String,
23) -> Result<(), std::io::Error> {
24
25 let mut builder = SslConnector::builder(SslMethod::tls()).unwrap();
26 builder.set_verify(SslVerifyMode::NONE);
27 let myconnector = builder.build();
28 let client = Client::builder()
29 .connector(Connector::new().openssl(myconnector))
30 .finish();
31
32 let get_nodes_request = client
33 .get(format!("https://{gke_cluster_endpoint}:443/api/v1/nodes"))
34 .bearer_auth(format!("{token}"))
35 .timeout(Duration::from_secs(30))
36 .send()
37 .await
38 .expect("Request get nodes failed");
39
40 let mut req = get_nodes_request;
41
42 let req_status = req.status().as_u16();
43
44 let response = req.json::<NodeList>().await.unwrap_or_default();
45
46 match req_status {
47 200 => {
48 println!("Request has been successfull: Status: {:?}, {:?}", req_status, response);
49 },
50 201 => {
51 println!("Successfully created ingress: {:?}", response);
52 }
53 400 => {
54 println!("Bad Request. Check URL parameters or body: {:?}", response);
55 },
56 403 => {
57 println!("You don't have access to perform such request: {:?}", response);
58 }
59 404 => {
60 println!("Requested resource does not exists: {:?}", response);
61 },
62 409 => {
63 println!("Requested resource already exists! {:?}", response)
64 }
65 _ => {
66 println!("Request status mismatch. Check response: {:?}", response);
67 }
68 }
69
70 Ok(())
71
72}
73
74
75pub async fn node_pool_list(
78 token: String,
79 gcp_project_id: String,
80 gke_zone_location: String,
81 gke_cluster_name: String
82) -> Result<(), std::io::Error> {
83
84 let mut builder = SslConnector::builder(SslMethod::tls()).unwrap();
85 builder.set_verify(SslVerifyMode::NONE);
86 let myconnector = builder.build();
87 let client = Client::builder()
88 .connector(Connector::new().openssl(myconnector))
89 .finish();
90
91 let get_nodepools_request = client
92 .get(format!("https://container.googleapis.com/v1/projects/{gcp_project_id}/locations/{gke_zone_location}/clusters/{gke_cluster_name}/nodePools"))
93 .bearer_auth(format!("{token}"))
94 .timeout(Duration::from_secs(30))
95 .send()
96 .await
97 .expect("Request get nodes failed");
98
99 let mut req = get_nodepools_request;
100
101 let req_status = req.status().as_u16();
102
103 let response = req.json::<NodePool>().await.unwrap_or_default();
104
105 match req_status {
106 200 => {
107 println!("Request has been successfull: Status: {:?}, {:?}", req_status, response);
108 },
109 201 => {
110 println!("Successfully created ingress: {:?}", response);
111 }
112 400 => {
113 println!("Bad Request. Check URL parameters or body: {:?}", response);
114 },
115 403 => {
116 println!("You don't have access to perform such request: {:?}", response);
117 }
118 404 => {
119 println!("Requested resource does not exists: {:?}", response);
120 },
121 409 => {
122 println!("Requested resource already exists! {:?}", response)
123 }
124 _ => {
125 println!("Request status mismatch. Check response: {:?}", response);
126 }
127 }
128
129 Ok(())
130
131}