gcloud_utils/compute/
process.rs

1use tokio::process::Command;
2
3pub async fn process_create_network(project_id: &str, service_name: &str) {
4  let output = Command::new("gcloud")
5    .args(
6      &[
7        "compute",
8        "networks",
9        "create",
10        service_name,
11        "--project",
12        project_id
13        ])
14    .output()
15    .await;
16  println!("output = {:?}", output);
17}
18
19pub async fn process_create_firewall_tcp(project_id: &str, service_name: &str) {
20  let output = Command::new("gcloud")
21    .args(&[
22      "compute",
23      "firewall-rules",
24      "create",
25      "--network",
26      service_name,
27      "--allow",
28      "tcp,udp,icmp",
29      "--source-ranges",
30      "10.124.0.0/28",
31      "--project",
32      project_id
33    ])
34    .output()
35    .await;
36  println!("output = {:?}", output);
37}
38
39pub async fn process_create_firewall_ssh(project_id: &str, service_name: &str) {
40  let firewall = String::from(service_name) + "-ssh";
41  let output = Command::new("gcloud")
42    .args(&[
43      "compute",
44      "firewall-rules",
45      "create",
46      &firewall,
47      "--network",
48      service_name,
49      "--allow",
50      "tcp:22,tcp:3389,icmp",
51      "--project",
52      project_id
53    ])
54    .output()
55    .await;
56  println!("output = {:?}", output);
57}
58
59pub async fn process_create_subnet(project_id: &str, service_name: &str, region: &str) {
60  let subnet = String::from(service_name) + "-subnet";
61  let output = Command::new("gcloud")
62    .args(&[
63      "compute",
64      "networks",
65      "subnets",
66      "create",
67      &subnet,
68      "--range",
69      "10.124.0.0/28",
70      "--network",
71      service_name,
72      "--region",
73      region,
74      "--project",
75      project_id
76    ])
77    .output()
78    .await;
79  println!("output = {:?}", output);
80}
81
82pub async fn process_create_connector(project_id: &str, service_name: &str, region: &str) {
83  let subnet = String::from(service_name) + "-subnet";
84  let output = Command::new("gcloud")
85    .args(&[
86      "compute",
87      "networks",
88      "vpc-access",
89      "connectors",
90      "create",
91      service_name,
92      "--subnet",
93      &subnet,
94      "--subnet-project",
95      project_id,
96      "--region",
97      region,
98      "--project",
99      project_id
100    ])
101    .output()
102    .await;
103  println!("output = {:?}", output);
104}
105
106pub async fn process_create_router(project_id: &str, service_name: &str, region: &str) {
107  let router = String::from(service_name) + "-router";
108  let output = Command::new("gcloud")
109    .args(&[
110      "compute",
111      "routers",
112      "create",
113      &router,
114      "--network",
115      service_name,
116      "--region",
117      region,
118      "--project",
119      project_id
120    ])
121    .output()
122    .await;
123  println!("output = {:?}", output);
124}
125
126pub async fn process_create_external_ip(project_id: &str, service_name: &str, region: &str) {
127  let external_ip = String::from(service_name) + "-ip";
128  let output = Command::new("gcloud")
129    .args(
130      &[
131        "compute",
132        "addresses",
133        "create",
134        &external_ip,
135        "--region",
136        region,
137        "--project",
138        project_id
139        ])
140    .output()
141    .await;
142  println!("output = {:?}", output);
143}
144
145pub async fn process_create_nat(project_id: &str, service_name: &str, region: &str) {
146  let nat = String::from(service_name) + "-nat";
147  let router = String::from(service_name) + "-router";
148  let nat_custom_subnet_ip_ranges = String::from(service_name) + "-subnet";
149  let nat_external_ip_pool = String::from(service_name) + "-ip";
150  let output = Command::new("gcloud")
151    .args(&[
152      "compute",
153      "routers",
154      "nats",
155      "create",
156      &nat,
157      "--router",
158      &router,
159      "--region",
160      region,
161      "--nat-custom-subnet-ip-ranges",
162      &nat_custom_subnet_ip_ranges,
163      "--nat-external-ip-pool",
164      &nat_external_ip_pool,
165      "--project",
166      project_id
167    ])
168    .output()
169    .await;
170  println!("output = {:?}", output);
171}