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}