volcengine_sdk_protobuf/protobuf/
ecs_instance.rs

1#[derive(serde::Serialize, serde::Deserialize)]
2#[serde(rename_all = "PascalCase")]
3#[allow(clippy::derive_partial_eq_without_eq)]
4#[derive(Clone, PartialEq, ::prost::Message)]
5pub struct ModifyInstanceSpecReq {
6    #[prost(string, optional, tag = "1")]
7    pub client_token: ::core::option::Option<::prost::alloc::string::String>,
8    #[prost(bool, optional, tag = "2")]
9    pub dry_run: ::core::option::Option<bool>,
10    #[prost(string, optional, tag = "3")]
11    pub instance_id: ::core::option::Option<::prost::alloc::string::String>,
12    #[prost(string, optional, tag = "4")]
13    pub instance_type_id: ::core::option::Option<::prost::alloc::string::String>,
14}
15#[derive(serde::Serialize, serde::Deserialize)]
16#[serde(rename_all = "PascalCase")]
17#[allow(clippy::derive_partial_eq_without_eq)]
18#[derive(Clone, PartialEq, ::prost::Message)]
19pub struct ModifyInstanceSpecResp {
20    #[prost(message, optional, tag = "1")]
21    pub response_metadata: ::core::option::Option<ResponseMetadata>,
22    #[prost(message, optional, tag = "2")]
23    pub result: ::core::option::Option<ModifyInstanceSpecResultResp>,
24}
25#[derive(serde::Serialize, serde::Deserialize)]
26#[serde(rename_all = "PascalCase")]
27#[allow(clippy::derive_partial_eq_without_eq)]
28#[derive(Clone, PartialEq, ::prost::Message)]
29pub struct ModifyInstanceSpecResultResp {
30    #[prost(string, optional, tag = "1")]
31    pub instance_id: ::core::option::Option<::prost::alloc::string::String>,
32    #[prost(string, optional, tag = "2")]
33    pub order_id: ::core::option::Option<::prost::alloc::string::String>,
34}
35#[derive(serde::Serialize, serde::Deserialize)]
36#[serde(rename_all = "PascalCase")]
37#[allow(clippy::derive_partial_eq_without_eq)]
38#[derive(Clone, PartialEq, ::prost::Message)]
39pub struct DescribeInstancesReq {
40    #[prost(string, optional, tag = "1")]
41    pub dedicated_host_cluster_id: ::core::option::Option<
42        ::prost::alloc::string::String,
43    >,
44    #[prost(string, optional, tag = "2")]
45    pub dedicated_host_id: ::core::option::Option<::prost::alloc::string::String>,
46    #[prost(string, optional, tag = "3")]
47    pub hpc_cluster_id: ::core::option::Option<::prost::alloc::string::String>,
48    #[prost(string, optional, tag = "4")]
49    pub instance_charge_type: ::core::option::Option<::prost::alloc::string::String>,
50    #[prost(string, optional, tag = "5")]
51    pub instance_name: ::core::option::Option<::prost::alloc::string::String>,
52    #[prost(string, optional, tag = "6")]
53    pub key_pair_name: ::core::option::Option<::prost::alloc::string::String>,
54    #[prost(int64, optional, tag = "7")]
55    pub max_results: ::core::option::Option<i64>,
56    #[prost(string, optional, tag = "8")]
57    pub next_token: ::core::option::Option<::prost::alloc::string::String>,
58    #[prost(string, optional, tag = "9")]
59    pub primary_ip_address: ::core::option::Option<::prost::alloc::string::String>,
60    #[prost(string, optional, tag = "10")]
61    pub project_name: ::core::option::Option<::prost::alloc::string::String>,
62    #[prost(string, optional, tag = "11")]
63    pub scheduled_instance_id: ::core::option::Option<::prost::alloc::string::String>,
64    #[prost(string, optional, tag = "12")]
65    pub status: ::core::option::Option<::prost::alloc::string::String>,
66    #[prost(string, optional, tag = "13")]
67    pub vpc_id: ::core::option::Option<::prost::alloc::string::String>,
68    #[prost(string, optional, tag = "14")]
69    pub zone_id: ::core::option::Option<::prost::alloc::string::String>,
70    #[prost(string, repeated, tag = "15")]
71    pub instance_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
72    #[prost(int64, repeated, tag = "16")]
73    pub deployment_set_group_numbers: ::prost::alloc::vec::Vec<i64>,
74    #[prost(string, repeated, tag = "17")]
75    pub deployment_set_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
76    #[prost(string, repeated, tag = "18")]
77    pub eip_addresses: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
78    #[prost(string, repeated, tag = "19")]
79    pub instance_type_families: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
80    #[prost(string, repeated, tag = "20")]
81    pub instance_type_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
82    #[prost(string, repeated, tag = "21")]
83    pub ipv6_addresses: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
84}
85#[derive(serde::Serialize, serde::Deserialize)]
86#[serde(rename_all = "PascalCase")]
87#[allow(clippy::derive_partial_eq_without_eq)]
88#[derive(Clone, PartialEq, ::prost::Message)]
89pub struct DescribeInstancesTagFiltersReq {
90    #[prost(string, optional, tag = "1")]
91    pub key: ::core::option::Option<::prost::alloc::string::String>,
92    #[prost(string, repeated, tag = "2")]
93    pub values: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
94}
95#[derive(serde::Serialize, serde::Deserialize)]
96#[serde(rename_all = "PascalCase")]
97#[allow(clippy::derive_partial_eq_without_eq)]
98#[derive(Clone, PartialEq, ::prost::Message)]
99pub struct DescribeInstancesResp {
100    #[prost(message, optional, tag = "1")]
101    pub response_metadata: ::core::option::Option<ResponseMetadata>,
102    #[prost(message, optional, tag = "2")]
103    pub result: ::core::option::Option<DescribeInstancesResultResp>,
104}
105#[derive(serde::Serialize, serde::Deserialize)]
106#[serde(rename_all = "PascalCase")]
107#[allow(clippy::derive_partial_eq_without_eq)]
108#[derive(Clone, PartialEq, ::prost::Message)]
109pub struct DescribeInstancesResultResp {
110    #[prost(string, optional, tag = "1")]
111    pub next_token: ::core::option::Option<::prost::alloc::string::String>,
112    #[prost(message, repeated, tag = "2")]
113    pub instances: ::prost::alloc::vec::Vec<DescribeInstancesResultInstanceResp>,
114}
115#[derive(serde::Serialize, serde::Deserialize)]
116#[serde(rename_all = "PascalCase")]
117#[allow(clippy::derive_partial_eq_without_eq)]
118#[derive(Clone, PartialEq, ::prost::Message)]
119pub struct DescribeInstancesResultInstanceResp {
120    #[prost(int64, optional, tag = "1")]
121    pub cpus: ::core::option::Option<i64>,
122    #[prost(string, optional, tag = "2")]
123    pub created_at: ::core::option::Option<::prost::alloc::string::String>,
124    #[prost(int64, optional, tag = "3")]
125    pub deployment_set_group_number: ::core::option::Option<i64>,
126    #[prost(string, optional, tag = "4")]
127    pub deployment_set_id: ::core::option::Option<::prost::alloc::string::String>,
128    #[prost(string, optional, tag = "5")]
129    pub description: ::core::option::Option<::prost::alloc::string::String>,
130    #[prost(string, optional, tag = "6")]
131    pub elastic_scheduled_instance_type: ::core::option::Option<
132        ::prost::alloc::string::String,
133    >,
134    #[prost(string, optional, tag = "7")]
135    pub expired_at: ::core::option::Option<::prost::alloc::string::String>,
136    #[prost(string, optional, tag = "8")]
137    pub hostname: ::core::option::Option<::prost::alloc::string::String>,
138    #[prost(string, optional, tag = "9")]
139    pub hpc_cluster_id: ::core::option::Option<::prost::alloc::string::String>,
140    #[prost(string, optional, tag = "10")]
141    pub image_id: ::core::option::Option<::prost::alloc::string::String>,
142    #[prost(string, optional, tag = "11")]
143    pub instance_charge_type: ::core::option::Option<::prost::alloc::string::String>,
144    #[prost(string, optional, tag = "12")]
145    pub instance_id: ::core::option::Option<::prost::alloc::string::String>,
146    #[prost(string, optional, tag = "13")]
147    pub instance_name: ::core::option::Option<::prost::alloc::string::String>,
148    #[prost(string, optional, tag = "14")]
149    pub instance_type_id: ::core::option::Option<::prost::alloc::string::String>,
150    #[prost(string, optional, tag = "15")]
151    pub key_pair_id: ::core::option::Option<::prost::alloc::string::String>,
152    #[prost(string, optional, tag = "16")]
153    pub key_pair_name: ::core::option::Option<::prost::alloc::string::String>,
154    #[prost(int64, optional, tag = "17")]
155    pub memory_size: ::core::option::Option<i64>,
156    #[prost(string, optional, tag = "18")]
157    pub os_name: ::core::option::Option<::prost::alloc::string::String>,
158    #[prost(string, optional, tag = "19")]
159    pub os_type: ::core::option::Option<::prost::alloc::string::String>,
160    #[prost(string, optional, tag = "20")]
161    pub project_name: ::core::option::Option<::prost::alloc::string::String>,
162    #[prost(string, optional, tag = "21")]
163    pub scheduled_instance_id: ::core::option::Option<::prost::alloc::string::String>,
164    #[prost(float, optional, tag = "22")]
165    pub spot_price_limit: ::core::option::Option<f32>,
166    #[prost(string, optional, tag = "23")]
167    pub spot_strategy: ::core::option::Option<::prost::alloc::string::String>,
168    #[prost(string, optional, tag = "24")]
169    pub status: ::core::option::Option<::prost::alloc::string::String>,
170    #[prost(string, optional, tag = "25")]
171    pub stopped_mode: ::core::option::Option<::prost::alloc::string::String>,
172    #[prost(string, optional, tag = "26")]
173    pub updated_at: ::core::option::Option<::prost::alloc::string::String>,
174    #[prost(string, optional, tag = "27")]
175    pub uuid: ::core::option::Option<::prost::alloc::string::String>,
176    #[prost(string, optional, tag = "28")]
177    pub vpc_id: ::core::option::Option<::prost::alloc::string::String>,
178    #[prost(string, optional, tag = "29")]
179    pub zone_id: ::core::option::Option<::prost::alloc::string::String>,
180    #[prost(string, repeated, tag = "30")]
181    pub rdma_ip_addresses: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
182    #[prost(message, optional, tag = "31")]
183    pub placement: ::core::option::Option<DescribeInstancesResultInstancePlacementResp>,
184    #[prost(message, optional, tag = "32")]
185    pub eip_address: ::core::option::Option<
186        DescribeInstancesResultInstanceEipAddressResp,
187    >,
188    #[prost(message, optional, tag = "33")]
189    pub cpu_options: ::core::option::Option<
190        DescribeInstancesResultInstanceCpuOptionsResp,
191    >,
192    #[prost(message, repeated, tag = "34")]
193    pub local_volumes: ::prost::alloc::vec::Vec<
194        DescribeInstancesResultInstanceLocalVolumesResp,
195    >,
196    #[prost(message, repeated, tag = "35")]
197    pub tags: ::prost::alloc::vec::Vec<DescribeInstancesResultInstanceTagResp>,
198    #[prost(message, repeated, tag = "36")]
199    pub network_interfaces: ::prost::alloc::vec::Vec<
200        DescribeInstancesResultInstanceNetworkInterfacesResp,
201    >,
202}
203#[derive(serde::Serialize, serde::Deserialize)]
204#[serde(rename_all = "PascalCase")]
205#[allow(clippy::derive_partial_eq_without_eq)]
206#[derive(Clone, PartialEq, ::prost::Message)]
207pub struct DescribeInstancesResultInstanceTagResp {
208    #[prost(string, optional, tag = "1")]
209    pub key: ::core::option::Option<::prost::alloc::string::String>,
210    #[prost(string, optional, tag = "2")]
211    pub value: ::core::option::Option<::prost::alloc::string::String>,
212}
213#[derive(serde::Serialize, serde::Deserialize)]
214#[serde(rename_all = "PascalCase")]
215#[allow(clippy::derive_partial_eq_without_eq)]
216#[derive(Clone, PartialEq, ::prost::Message)]
217pub struct DescribeInstancesResultInstancePlacementResp {
218    #[prost(string, optional, tag = "1")]
219    pub affinity: ::core::option::Option<::prost::alloc::string::String>,
220    #[prost(string, optional, tag = "2")]
221    pub dedicated_host_cluster_id: ::core::option::Option<
222        ::prost::alloc::string::String,
223    >,
224    #[prost(string, optional, tag = "3")]
225    pub dedicated_host_id: ::core::option::Option<::prost::alloc::string::String>,
226    #[prost(string, optional, tag = "4")]
227    pub tenancy: ::core::option::Option<::prost::alloc::string::String>,
228}
229#[derive(serde::Serialize, serde::Deserialize)]
230#[serde(rename_all = "PascalCase")]
231#[allow(clippy::derive_partial_eq_without_eq)]
232#[derive(Clone, PartialEq, ::prost::Message)]
233pub struct DescribeInstancesResultInstanceNetworkInterfacesResp {
234    #[prost(string, repeated, tag = "1")]
235    pub ipv6_addresses: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
236    #[prost(string, optional, tag = "2")]
237    pub mac_address: ::core::option::Option<::prost::alloc::string::String>,
238    #[prost(string, optional, tag = "3")]
239    pub network_interface_id: ::core::option::Option<::prost::alloc::string::String>,
240    #[prost(string, optional, tag = "4")]
241    pub primary_ip_address: ::core::option::Option<::prost::alloc::string::String>,
242    #[prost(string, optional, tag = "5")]
243    pub subnet_id: ::core::option::Option<::prost::alloc::string::String>,
244    #[prost(string, optional, tag = "6")]
245    pub r#type: ::core::option::Option<::prost::alloc::string::String>,
246    #[prost(string, optional, tag = "7")]
247    pub vpc_id: ::core::option::Option<::prost::alloc::string::String>,
248}
249#[derive(serde::Serialize, serde::Deserialize)]
250#[serde(rename_all = "PascalCase")]
251#[allow(clippy::derive_partial_eq_without_eq)]
252#[derive(Clone, PartialEq, ::prost::Message)]
253pub struct DescribeInstancesResultInstanceLocalVolumesResp {
254    #[prost(int64, optional, tag = "1")]
255    pub count: ::core::option::Option<i64>,
256    #[prost(int64, optional, tag = "2")]
257    pub size: ::core::option::Option<i64>,
258    #[prost(string, optional, tag = "3")]
259    pub volume_type: ::core::option::Option<::prost::alloc::string::String>,
260}
261#[derive(serde::Serialize, serde::Deserialize)]
262#[serde(rename_all = "PascalCase")]
263#[allow(clippy::derive_partial_eq_without_eq)]
264#[derive(Clone, PartialEq, ::prost::Message)]
265pub struct DescribeInstancesResultInstanceEipAddressResp {
266    #[prost(string, optional, tag = "1")]
267    pub allocation_id: ::core::option::Option<::prost::alloc::string::String>,
268    #[prost(string, optional, tag = "2")]
269    pub ip_address: ::core::option::Option<::prost::alloc::string::String>,
270}
271#[derive(serde::Serialize, serde::Deserialize)]
272#[serde(rename_all = "PascalCase")]
273#[allow(clippy::derive_partial_eq_without_eq)]
274#[derive(Clone, PartialEq, ::prost::Message)]
275pub struct DescribeInstancesResultInstanceCpuOptionsResp {
276    #[prost(int64, optional, tag = "1")]
277    pub core_count: ::core::option::Option<i64>,
278    #[prost(int64, optional, tag = "2")]
279    pub threads_per_core: ::core::option::Option<i64>,
280}
281#[derive(serde::Serialize, serde::Deserialize)]
282#[serde(rename_all = "PascalCase")]
283#[allow(clippy::derive_partial_eq_without_eq)]
284#[derive(Clone, PartialEq, ::prost::Message)]
285pub struct StopInstancesReq {
286    #[prost(string, optional, tag = "1")]
287    pub client_token: ::core::option::Option<::prost::alloc::string::String>,
288    #[prost(bool, optional, tag = "2")]
289    pub dry_run: ::core::option::Option<bool>,
290    #[prost(bool, optional, tag = "3")]
291    pub force_stop: ::core::option::Option<bool>,
292    #[prost(string, optional, tag = "4")]
293    pub stopped_mode: ::core::option::Option<::prost::alloc::string::String>,
294    #[prost(string, repeated, tag = "5")]
295    pub instance_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
296}
297#[derive(serde::Serialize, serde::Deserialize)]
298#[serde(rename_all = "PascalCase")]
299#[allow(clippy::derive_partial_eq_without_eq)]
300#[derive(Clone, PartialEq, ::prost::Message)]
301pub struct StopInstancesResp {
302    #[prost(message, optional, tag = "1")]
303    pub response_metadata: ::core::option::Option<ResponseMetadata>,
304    #[prost(message, optional, tag = "2")]
305    pub result: ::core::option::Option<StopInstancesResultResp>,
306}
307#[derive(serde::Serialize, serde::Deserialize)]
308#[serde(rename_all = "PascalCase")]
309#[allow(clippy::derive_partial_eq_without_eq)]
310#[derive(Clone, PartialEq, ::prost::Message)]
311pub struct StopInstancesResultResp {
312    #[prost(message, repeated, tag = "1")]
313    pub operation_details: ::prost::alloc::vec::Vec<
314        StopInstancesResultOperationDetailsResp,
315    >,
316}
317#[derive(serde::Serialize, serde::Deserialize)]
318#[serde(rename_all = "PascalCase")]
319#[allow(clippy::derive_partial_eq_without_eq)]
320#[derive(Clone, PartialEq, ::prost::Message)]
321pub struct StopInstancesResultOperationDetailsResp {
322    #[prost(string, optional, tag = "1")]
323    pub instance_id: ::core::option::Option<::prost::alloc::string::String>,
324    #[prost(message, optional, tag = "2")]
325    pub error: ::core::option::Option<StopInstancesResultOperationDetailsErrResp>,
326}
327#[derive(serde::Serialize, serde::Deserialize)]
328#[serde(rename_all = "PascalCase")]
329#[allow(clippy::derive_partial_eq_without_eq)]
330#[derive(Clone, PartialEq, ::prost::Message)]
331pub struct StopInstancesResultOperationDetailsErrResp {
332    #[prost(string, optional, tag = "1")]
333    pub code: ::core::option::Option<::prost::alloc::string::String>,
334    #[prost(string, optional, tag = "2")]
335    pub message: ::core::option::Option<::prost::alloc::string::String>,
336}
337#[derive(serde::Serialize, serde::Deserialize)]
338#[serde(rename_all = "PascalCase")]
339#[allow(clippy::derive_partial_eq_without_eq)]
340#[derive(Clone, PartialEq, ::prost::Message)]
341pub struct StopInstanceReq {
342    #[prost(string, optional, tag = "1")]
343    pub client_token: ::core::option::Option<::prost::alloc::string::String>,
344    #[prost(bool, optional, tag = "2")]
345    pub dry_run: ::core::option::Option<bool>,
346    #[prost(bool, optional, tag = "3")]
347    pub force_stop: ::core::option::Option<bool>,
348    #[prost(string, optional, tag = "4")]
349    pub instance_id: ::core::option::Option<::prost::alloc::string::String>,
350    #[prost(string, optional, tag = "5")]
351    pub stopped_mode: ::core::option::Option<::prost::alloc::string::String>,
352}
353#[derive(serde::Serialize, serde::Deserialize)]
354#[serde(rename_all = "PascalCase")]
355#[allow(clippy::derive_partial_eq_without_eq)]
356#[derive(Clone, PartialEq, ::prost::Message)]
357pub struct StopInstanceResp {
358    #[prost(message, optional, tag = "1")]
359    pub response_metadata: ::core::option::Option<ResponseMetadata>,
360    #[prost(message, optional, tag = "2")]
361    pub result: ::core::option::Option<StopInstanceResultResp>,
362}
363#[derive(serde::Serialize, serde::Deserialize)]
364#[serde(rename_all = "PascalCase")]
365#[allow(clippy::derive_partial_eq_without_eq)]
366#[derive(Clone, PartialEq, ::prost::Message)]
367pub struct StopInstanceResultResp {}
368#[derive(serde::Serialize, serde::Deserialize)]
369#[serde(rename_all = "PascalCase")]
370#[allow(clippy::derive_partial_eq_without_eq)]
371#[derive(Clone, PartialEq, ::prost::Message)]
372pub struct RunInstancesReq {
373    #[prost(bool, optional, tag = "1")]
374    pub auto_renew: ::core::option::Option<bool>,
375    #[prost(int64, optional, tag = "2")]
376    pub auto_renew_period: ::core::option::Option<i64>,
377    #[prost(string, optional, tag = "3")]
378    pub client_token: ::core::option::Option<::prost::alloc::string::String>,
379    #[prost(int64, optional, tag = "4")]
380    pub count: ::core::option::Option<i64>,
381    #[prost(string, optional, tag = "5")]
382    pub credit_specification: ::core::option::Option<::prost::alloc::string::String>,
383    #[prost(int64, optional, tag = "6")]
384    pub deployment_set_group_number: ::core::option::Option<i64>,
385    #[prost(string, optional, tag = "7")]
386    pub deployment_set_id: ::core::option::Option<::prost::alloc::string::String>,
387    #[prost(string, optional, tag = "8")]
388    pub description: ::core::option::Option<::prost::alloc::string::String>,
389    #[prost(bool, optional, tag = "9")]
390    pub dry_run: ::core::option::Option<bool>,
391    #[prost(string, optional, tag = "10")]
392    pub hostname: ::core::option::Option<::prost::alloc::string::String>,
393    #[prost(string, optional, tag = "11")]
394    pub hpc_cluster_id: ::core::option::Option<::prost::alloc::string::String>,
395    #[prost(string, optional, tag = "12")]
396    pub image_id: ::core::option::Option<::prost::alloc::string::String>,
397    #[prost(bool, optional, tag = "13")]
398    pub install_run_command_agent: ::core::option::Option<bool>,
399    #[prost(string, optional, tag = "14")]
400    pub instance_charge_type: ::core::option::Option<::prost::alloc::string::String>,
401    #[prost(string, optional, tag = "15")]
402    pub instance_name: ::core::option::Option<::prost::alloc::string::String>,
403    #[prost(string, optional, tag = "16")]
404    pub instance_type_id: ::core::option::Option<::prost::alloc::string::String>,
405    #[prost(bool, optional, tag = "17")]
406    pub keep_image_credential: ::core::option::Option<bool>,
407    #[prost(string, optional, tag = "18")]
408    pub key_pair_name: ::core::option::Option<::prost::alloc::string::String>,
409    #[prost(int64, optional, tag = "19")]
410    pub min_count: ::core::option::Option<i64>,
411    #[prost(string, optional, tag = "20")]
412    pub password: ::core::option::Option<::prost::alloc::string::String>,
413    #[prost(int64, optional, tag = "21")]
414    pub period: ::core::option::Option<i64>,
415    #[prost(string, optional, tag = "22")]
416    pub period_unit: ::core::option::Option<::prost::alloc::string::String>,
417    #[prost(string, optional, tag = "23")]
418    pub project_name: ::core::option::Option<::prost::alloc::string::String>,
419    #[prost(string, optional, tag = "24")]
420    pub security_enhancement_strategy: ::core::option::Option<
421        ::prost::alloc::string::String,
422    >,
423    #[prost(float, optional, tag = "25")]
424    pub spot_price_limit: ::core::option::Option<f32>,
425    #[prost(string, optional, tag = "26")]
426    pub spot_strategy: ::core::option::Option<::prost::alloc::string::String>,
427    #[prost(int64, optional, tag = "27")]
428    pub suffix_index: ::core::option::Option<i64>,
429    #[prost(bool, optional, tag = "28")]
430    pub unique_suffix: ::core::option::Option<bool>,
431    #[prost(string, optional, tag = "29")]
432    pub user_data: ::core::option::Option<::prost::alloc::string::String>,
433    #[prost(string, optional, tag = "30")]
434    pub zone_id: ::core::option::Option<::prost::alloc::string::String>,
435    #[prost(message, optional, tag = "31")]
436    pub placement: ::core::option::Option<RunInstancesPlacementReq>,
437    #[prost(message, repeated, tag = "32")]
438    pub volumes: ::prost::alloc::vec::Vec<RunInstancesVolumesReq>,
439    #[prost(message, repeated, tag = "33")]
440    pub tags: ::prost::alloc::vec::Vec<RunInstancesTagsReq>,
441    #[prost(message, repeated, tag = "34")]
442    pub network_interfaces: ::prost::alloc::vec::Vec<RunInstancesNetworkInterfacesReq>,
443    #[prost(message, repeated, tag = "35")]
444    pub eip_addres: ::prost::alloc::vec::Vec<RunInstancesEipAddressReq>,
445}
446#[derive(serde::Serialize, serde::Deserialize)]
447#[serde(rename_all = "PascalCase")]
448#[allow(clippy::derive_partial_eq_without_eq)]
449#[derive(Clone, PartialEq, ::prost::Message)]
450pub struct RunInstancesVolumesReq {
451    #[prost(int64, optional, tag = "1")]
452    pub size: ::core::option::Option<i64>,
453    #[prost(int64, optional, tag = "2")]
454    pub extra_performance_iops: ::core::option::Option<i64>,
455    #[prost(int64, optional, tag = "3")]
456    pub extra_performance_throughput_mb: ::core::option::Option<i64>,
457    #[prost(string, optional, tag = "4")]
458    pub extra_performance_type_id: ::core::option::Option<
459        ::prost::alloc::string::String,
460    >,
461    #[prost(string, optional, tag = "5")]
462    pub snapshot_id: ::core::option::Option<::prost::alloc::string::String>,
463    #[prost(string, optional, tag = "6")]
464    pub volume_type: ::core::option::Option<::prost::alloc::string::String>,
465    #[prost(bool, optional, tag = "7")]
466    pub delete_with_instance: ::core::option::Option<bool>,
467}
468#[derive(serde::Serialize, serde::Deserialize)]
469#[serde(rename_all = "PascalCase")]
470#[allow(clippy::derive_partial_eq_without_eq)]
471#[derive(Clone, PartialEq, ::prost::Message)]
472pub struct RunInstancesTagsReq {
473    #[prost(string, optional, tag = "1")]
474    pub key: ::core::option::Option<::prost::alloc::string::String>,
475    #[prost(string, optional, tag = "2")]
476    pub value: ::core::option::Option<::prost::alloc::string::String>,
477}
478#[derive(serde::Serialize, serde::Deserialize)]
479#[serde(rename_all = "PascalCase")]
480#[allow(clippy::derive_partial_eq_without_eq)]
481#[derive(Clone, PartialEq, ::prost::Message)]
482pub struct RunInstancesPlacementReq {
483    #[prost(string, optional, tag = "1")]
484    pub affinity: ::core::option::Option<::prost::alloc::string::String>,
485    #[prost(string, optional, tag = "2")]
486    pub dedicated_host_cluster_id: ::core::option::Option<
487        ::prost::alloc::string::String,
488    >,
489    #[prost(string, optional, tag = "3")]
490    pub dedicated_host_id: ::core::option::Option<::prost::alloc::string::String>,
491    #[prost(string, optional, tag = "4")]
492    pub tenancy: ::core::option::Option<::prost::alloc::string::String>,
493}
494#[derive(serde::Serialize, serde::Deserialize)]
495#[serde(rename_all = "PascalCase")]
496#[allow(clippy::derive_partial_eq_without_eq)]
497#[derive(Clone, PartialEq, ::prost::Message)]
498pub struct RunInstancesNetworkInterfacesReq {
499    #[prost(string, repeated, tag = "1")]
500    pub security_group_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
501    #[prost(string, optional, tag = "2")]
502    pub subnet_id: ::core::option::Option<::prost::alloc::string::String>,
503    #[prost(int64, repeated, tag = "3")]
504    pub ipv6_address_count: ::prost::alloc::vec::Vec<i64>,
505    #[prost(string, repeated, tag = "4")]
506    pub primary_ip_address: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
507    #[prost(string, repeated, tag = "5")]
508    pub private_ip_addresses: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
509}
510#[derive(serde::Serialize, serde::Deserialize)]
511#[serde(rename_all = "PascalCase")]
512#[allow(clippy::derive_partial_eq_without_eq)]
513#[derive(Clone, PartialEq, ::prost::Message)]
514pub struct RunInstancesEipAddressReq {
515    #[prost(int64, optional, tag = "1")]
516    pub bandwidth_mbps: ::core::option::Option<i64>,
517    #[prost(string, optional, tag = "2")]
518    pub bandwidth_package_id: ::core::option::Option<::prost::alloc::string::String>,
519    #[prost(string, optional, tag = "3")]
520    pub charge_type: ::core::option::Option<::prost::alloc::string::String>,
521    #[prost(string, optional, tag = "4")]
522    pub isp: ::core::option::Option<::prost::alloc::string::String>,
523    #[prost(bool, optional, tag = "5")]
524    pub release_with_instance: ::core::option::Option<bool>,
525    #[prost(int64, optional, tag = "6")]
526    pub security_protection_instance_id: ::core::option::Option<i64>,
527    #[prost(string, repeated, tag = "7")]
528    pub security_protection_types: ::prost::alloc::vec::Vec<
529        ::prost::alloc::string::String,
530    >,
531}
532#[derive(serde::Serialize, serde::Deserialize)]
533#[serde(rename_all = "PascalCase")]
534#[allow(clippy::derive_partial_eq_without_eq)]
535#[derive(Clone, PartialEq, ::prost::Message)]
536pub struct RunInstancesResp {
537    #[prost(message, optional, tag = "1")]
538    pub response_metadata: ::core::option::Option<ResponseMetadata>,
539    #[prost(message, optional, tag = "2")]
540    pub result: ::core::option::Option<RunInstancesResultResp>,
541}
542#[derive(serde::Serialize, serde::Deserialize)]
543#[serde(rename_all = "PascalCase")]
544#[allow(clippy::derive_partial_eq_without_eq)]
545#[derive(Clone, PartialEq, ::prost::Message)]
546pub struct RunInstancesResultResp {
547    #[prost(string, repeated, tag = "1")]
548    pub instance_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
549}
550#[derive(serde::Serialize, serde::Deserialize)]
551#[serde(rename_all = "PascalCase")]
552#[allow(clippy::derive_partial_eq_without_eq)]
553#[derive(Clone, PartialEq, ::prost::Message)]
554pub struct ResponseMetadata {
555    #[prost(string, tag = "1")]
556    pub request_id: ::prost::alloc::string::String,
557    #[prost(string, tag = "2")]
558    pub action: ::prost::alloc::string::String,
559    #[prost(string, tag = "3")]
560    pub version: ::prost::alloc::string::String,
561    #[prost(string, tag = "4")]
562    pub service: ::prost::alloc::string::String,
563    #[prost(string, tag = "5")]
564    pub region: ::prost::alloc::string::String,
565    #[prost(message, optional, tag = "6")]
566    pub error: ::core::option::Option<ResponseMetadataErr>,
567}
568#[derive(serde::Serialize, serde::Deserialize)]
569#[serde(rename_all = "PascalCase")]
570#[allow(clippy::derive_partial_eq_without_eq)]
571#[derive(Clone, PartialEq, ::prost::Message)]
572pub struct ResponseMetadataErr {
573    #[prost(int64, optional, tag = "1")]
574    pub code_n: ::core::option::Option<i64>,
575    #[prost(string, tag = "2")]
576    pub code: ::prost::alloc::string::String,
577    #[prost(string, tag = "3")]
578    pub message: ::prost::alloc::string::String,
579}
580/// Generated client implementations.
581pub mod ecs_instance_client {
582    #![allow(unused_variables, dead_code, missing_docs, clippy::let_unit_value)]
583    use tonic::codegen::*;
584    use tonic::codegen::http::Uri;
585    #[derive(Debug, Clone)]
586    pub struct EcsInstanceClient<T> {
587        inner: tonic::client::Grpc<T>,
588    }
589    impl EcsInstanceClient<tonic::transport::Channel> {
590        /// Attempt to create a new client by connecting to a given endpoint.
591        pub async fn connect<D>(dst: D) -> Result<Self, tonic::transport::Error>
592        where
593            D: TryInto<tonic::transport::Endpoint>,
594            D::Error: Into<StdError>,
595        {
596            let conn = tonic::transport::Endpoint::new(dst)?.connect().await?;
597            Ok(Self::new(conn))
598        }
599    }
600    impl<T> EcsInstanceClient<T>
601    where
602        T: tonic::client::GrpcService<tonic::body::BoxBody>,
603        T::Error: Into<StdError>,
604        T::ResponseBody: Body<Data = Bytes> + Send + 'static,
605        <T::ResponseBody as Body>::Error: Into<StdError> + Send,
606    {
607        pub fn new(inner: T) -> Self {
608            let inner = tonic::client::Grpc::new(inner);
609            Self { inner }
610        }
611        pub fn with_origin(inner: T, origin: Uri) -> Self {
612            let inner = tonic::client::Grpc::with_origin(inner, origin);
613            Self { inner }
614        }
615        pub fn with_interceptor<F>(
616            inner: T,
617            interceptor: F,
618        ) -> EcsInstanceClient<InterceptedService<T, F>>
619        where
620            F: tonic::service::Interceptor,
621            T::ResponseBody: Default,
622            T: tonic::codegen::Service<
623                http::Request<tonic::body::BoxBody>,
624                Response = http::Response<
625                    <T as tonic::client::GrpcService<tonic::body::BoxBody>>::ResponseBody,
626                >,
627            >,
628            <T as tonic::codegen::Service<
629                http::Request<tonic::body::BoxBody>,
630            >>::Error: Into<StdError> + Send + Sync,
631        {
632            EcsInstanceClient::new(InterceptedService::new(inner, interceptor))
633        }
634        /// Compress requests with the given encoding.
635        ///
636        /// This requires the server to support it otherwise it might respond with an
637        /// error.
638        #[must_use]
639        pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
640            self.inner = self.inner.send_compressed(encoding);
641            self
642        }
643        /// Enable decompressing responses.
644        #[must_use]
645        pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
646            self.inner = self.inner.accept_compressed(encoding);
647            self
648        }
649        /// Limits the maximum size of a decoded message.
650        ///
651        /// Default: `4MB`
652        #[must_use]
653        pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
654            self.inner = self.inner.max_decoding_message_size(limit);
655            self
656        }
657        /// Limits the maximum size of an encoded message.
658        ///
659        /// Default: `usize::MAX`
660        #[must_use]
661        pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
662            self.inner = self.inner.max_encoding_message_size(limit);
663            self
664        }
665        /// runInstances
666        pub async fn run_instances(
667            &mut self,
668            request: impl tonic::IntoRequest<super::RunInstancesReq>,
669        ) -> std::result::Result<
670            tonic::Response<super::RunInstancesResp>,
671            tonic::Status,
672        > {
673            self.inner
674                .ready()
675                .await
676                .map_err(|e| {
677                    tonic::Status::new(
678                        tonic::Code::Unknown,
679                        format!("Service was not ready: {}", e.into()),
680                    )
681                })?;
682            let codec = tonic::codec::ProstCodec::default();
683            let path = http::uri::PathAndQuery::from_static(
684                "/ecs_instance.EcsInstance/RunInstances",
685            );
686            let mut req = request.into_request();
687            req.extensions_mut()
688                .insert(GrpcMethod::new("ecs_instance.EcsInstance", "RunInstances"));
689            self.inner.unary(req, path, codec).await
690        }
691        /// DescribeInstances
692        pub async fn describe_instances(
693            &mut self,
694            request: impl tonic::IntoRequest<super::DescribeInstancesReq>,
695        ) -> std::result::Result<
696            tonic::Response<super::DescribeInstancesResp>,
697            tonic::Status,
698        > {
699            self.inner
700                .ready()
701                .await
702                .map_err(|e| {
703                    tonic::Status::new(
704                        tonic::Code::Unknown,
705                        format!("Service was not ready: {}", e.into()),
706                    )
707                })?;
708            let codec = tonic::codec::ProstCodec::default();
709            let path = http::uri::PathAndQuery::from_static(
710                "/ecs_instance.EcsInstance/DescribeInstances",
711            );
712            let mut req = request.into_request();
713            req.extensions_mut()
714                .insert(
715                    GrpcMethod::new("ecs_instance.EcsInstance", "DescribeInstances"),
716                );
717            self.inner.unary(req, path, codec).await
718        }
719        /// stopInstance
720        pub async fn stop_instance(
721            &mut self,
722            request: impl tonic::IntoRequest<super::StopInstanceReq>,
723        ) -> std::result::Result<
724            tonic::Response<super::StopInstanceResp>,
725            tonic::Status,
726        > {
727            self.inner
728                .ready()
729                .await
730                .map_err(|e| {
731                    tonic::Status::new(
732                        tonic::Code::Unknown,
733                        format!("Service was not ready: {}", e.into()),
734                    )
735                })?;
736            let codec = tonic::codec::ProstCodec::default();
737            let path = http::uri::PathAndQuery::from_static(
738                "/ecs_instance.EcsInstance/StopInstance",
739            );
740            let mut req = request.into_request();
741            req.extensions_mut()
742                .insert(GrpcMethod::new("ecs_instance.EcsInstance", "StopInstance"));
743            self.inner.unary(req, path, codec).await
744        }
745        /// StopInstances
746        pub async fn stop_instances(
747            &mut self,
748            request: impl tonic::IntoRequest<super::StopInstancesReq>,
749        ) -> std::result::Result<
750            tonic::Response<super::StopInstancesResp>,
751            tonic::Status,
752        > {
753            self.inner
754                .ready()
755                .await
756                .map_err(|e| {
757                    tonic::Status::new(
758                        tonic::Code::Unknown,
759                        format!("Service was not ready: {}", e.into()),
760                    )
761                })?;
762            let codec = tonic::codec::ProstCodec::default();
763            let path = http::uri::PathAndQuery::from_static(
764                "/ecs_instance.EcsInstance/StopInstances",
765            );
766            let mut req = request.into_request();
767            req.extensions_mut()
768                .insert(GrpcMethod::new("ecs_instance.EcsInstance", "StopInstances"));
769            self.inner.unary(req, path, codec).await
770        }
771        /// ModifyInstanceSpec
772        pub async fn modify_instance_spec(
773            &mut self,
774            request: impl tonic::IntoRequest<super::ModifyInstanceSpecReq>,
775        ) -> std::result::Result<
776            tonic::Response<super::ModifyInstanceSpecResp>,
777            tonic::Status,
778        > {
779            self.inner
780                .ready()
781                .await
782                .map_err(|e| {
783                    tonic::Status::new(
784                        tonic::Code::Unknown,
785                        format!("Service was not ready: {}", e.into()),
786                    )
787                })?;
788            let codec = tonic::codec::ProstCodec::default();
789            let path = http::uri::PathAndQuery::from_static(
790                "/ecs_instance.EcsInstance/ModifyInstanceSpec",
791            );
792            let mut req = request.into_request();
793            req.extensions_mut()
794                .insert(
795                    GrpcMethod::new("ecs_instance.EcsInstance", "ModifyInstanceSpec"),
796                );
797            self.inner.unary(req, path, codec).await
798        }
799    }
800}
801/// Generated server implementations.
802pub mod ecs_instance_server {
803    #![allow(unused_variables, dead_code, missing_docs, clippy::let_unit_value)]
804    use tonic::codegen::*;
805    /// Generated trait containing gRPC methods that should be implemented for use with EcsInstanceServer.
806    #[async_trait]
807    pub trait EcsInstance: Send + Sync + 'static {
808        /// runInstances
809        async fn run_instances(
810            &self,
811            request: tonic::Request<super::RunInstancesReq>,
812        ) -> std::result::Result<
813            tonic::Response<super::RunInstancesResp>,
814            tonic::Status,
815        >;
816        /// DescribeInstances
817        async fn describe_instances(
818            &self,
819            request: tonic::Request<super::DescribeInstancesReq>,
820        ) -> std::result::Result<
821            tonic::Response<super::DescribeInstancesResp>,
822            tonic::Status,
823        >;
824        /// stopInstance
825        async fn stop_instance(
826            &self,
827            request: tonic::Request<super::StopInstanceReq>,
828        ) -> std::result::Result<
829            tonic::Response<super::StopInstanceResp>,
830            tonic::Status,
831        >;
832        /// StopInstances
833        async fn stop_instances(
834            &self,
835            request: tonic::Request<super::StopInstancesReq>,
836        ) -> std::result::Result<
837            tonic::Response<super::StopInstancesResp>,
838            tonic::Status,
839        >;
840        /// ModifyInstanceSpec
841        async fn modify_instance_spec(
842            &self,
843            request: tonic::Request<super::ModifyInstanceSpecReq>,
844        ) -> std::result::Result<
845            tonic::Response<super::ModifyInstanceSpecResp>,
846            tonic::Status,
847        >;
848    }
849    #[derive(Debug)]
850    pub struct EcsInstanceServer<T: EcsInstance> {
851        inner: _Inner<T>,
852        accept_compression_encodings: EnabledCompressionEncodings,
853        send_compression_encodings: EnabledCompressionEncodings,
854        max_decoding_message_size: Option<usize>,
855        max_encoding_message_size: Option<usize>,
856    }
857    struct _Inner<T>(Arc<T>);
858    impl<T: EcsInstance> EcsInstanceServer<T> {
859        pub fn new(inner: T) -> Self {
860            Self::from_arc(Arc::new(inner))
861        }
862        pub fn from_arc(inner: Arc<T>) -> Self {
863            let inner = _Inner(inner);
864            Self {
865                inner,
866                accept_compression_encodings: Default::default(),
867                send_compression_encodings: Default::default(),
868                max_decoding_message_size: None,
869                max_encoding_message_size: None,
870            }
871        }
872        pub fn with_interceptor<F>(
873            inner: T,
874            interceptor: F,
875        ) -> InterceptedService<Self, F>
876        where
877            F: tonic::service::Interceptor,
878        {
879            InterceptedService::new(Self::new(inner), interceptor)
880        }
881        /// Enable decompressing requests with the given encoding.
882        #[must_use]
883        pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
884            self.accept_compression_encodings.enable(encoding);
885            self
886        }
887        /// Compress responses with the given encoding, if the client supports it.
888        #[must_use]
889        pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
890            self.send_compression_encodings.enable(encoding);
891            self
892        }
893        /// Limits the maximum size of a decoded message.
894        ///
895        /// Default: `4MB`
896        #[must_use]
897        pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
898            self.max_decoding_message_size = Some(limit);
899            self
900        }
901        /// Limits the maximum size of an encoded message.
902        ///
903        /// Default: `usize::MAX`
904        #[must_use]
905        pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
906            self.max_encoding_message_size = Some(limit);
907            self
908        }
909    }
910    impl<T, B> tonic::codegen::Service<http::Request<B>> for EcsInstanceServer<T>
911    where
912        T: EcsInstance,
913        B: Body + Send + 'static,
914        B::Error: Into<StdError> + Send + 'static,
915    {
916        type Response = http::Response<tonic::body::BoxBody>;
917        type Error = std::convert::Infallible;
918        type Future = BoxFuture<Self::Response, Self::Error>;
919        fn poll_ready(
920            &mut self,
921            _cx: &mut Context<'_>,
922        ) -> Poll<std::result::Result<(), Self::Error>> {
923            Poll::Ready(Ok(()))
924        }
925        fn call(&mut self, req: http::Request<B>) -> Self::Future {
926            let inner = self.inner.clone();
927            match req.uri().path() {
928                "/ecs_instance.EcsInstance/RunInstances" => {
929                    #[allow(non_camel_case_types)]
930                    struct RunInstancesSvc<T: EcsInstance>(pub Arc<T>);
931                    impl<
932                        T: EcsInstance,
933                    > tonic::server::UnaryService<super::RunInstancesReq>
934                    for RunInstancesSvc<T> {
935                        type Response = super::RunInstancesResp;
936                        type Future = BoxFuture<
937                            tonic::Response<Self::Response>,
938                            tonic::Status,
939                        >;
940                        fn call(
941                            &mut self,
942                            request: tonic::Request<super::RunInstancesReq>,
943                        ) -> Self::Future {
944                            let inner = Arc::clone(&self.0);
945                            let fut = async move {
946                                (*inner).run_instances(request).await
947                            };
948                            Box::pin(fut)
949                        }
950                    }
951                    let accept_compression_encodings = self.accept_compression_encodings;
952                    let send_compression_encodings = self.send_compression_encodings;
953                    let max_decoding_message_size = self.max_decoding_message_size;
954                    let max_encoding_message_size = self.max_encoding_message_size;
955                    let inner = self.inner.clone();
956                    let fut = async move {
957                        let inner = inner.0;
958                        let method = RunInstancesSvc(inner);
959                        let codec = tonic::codec::ProstCodec::default();
960                        let mut grpc = tonic::server::Grpc::new(codec)
961                            .apply_compression_config(
962                                accept_compression_encodings,
963                                send_compression_encodings,
964                            )
965                            .apply_max_message_size_config(
966                                max_decoding_message_size,
967                                max_encoding_message_size,
968                            );
969                        let res = grpc.unary(method, req).await;
970                        Ok(res)
971                    };
972                    Box::pin(fut)
973                }
974                "/ecs_instance.EcsInstance/DescribeInstances" => {
975                    #[allow(non_camel_case_types)]
976                    struct DescribeInstancesSvc<T: EcsInstance>(pub Arc<T>);
977                    impl<
978                        T: EcsInstance,
979                    > tonic::server::UnaryService<super::DescribeInstancesReq>
980                    for DescribeInstancesSvc<T> {
981                        type Response = super::DescribeInstancesResp;
982                        type Future = BoxFuture<
983                            tonic::Response<Self::Response>,
984                            tonic::Status,
985                        >;
986                        fn call(
987                            &mut self,
988                            request: tonic::Request<super::DescribeInstancesReq>,
989                        ) -> Self::Future {
990                            let inner = Arc::clone(&self.0);
991                            let fut = async move {
992                                (*inner).describe_instances(request).await
993                            };
994                            Box::pin(fut)
995                        }
996                    }
997                    let accept_compression_encodings = self.accept_compression_encodings;
998                    let send_compression_encodings = self.send_compression_encodings;
999                    let max_decoding_message_size = self.max_decoding_message_size;
1000                    let max_encoding_message_size = self.max_encoding_message_size;
1001                    let inner = self.inner.clone();
1002                    let fut = async move {
1003                        let inner = inner.0;
1004                        let method = DescribeInstancesSvc(inner);
1005                        let codec = tonic::codec::ProstCodec::default();
1006                        let mut grpc = tonic::server::Grpc::new(codec)
1007                            .apply_compression_config(
1008                                accept_compression_encodings,
1009                                send_compression_encodings,
1010                            )
1011                            .apply_max_message_size_config(
1012                                max_decoding_message_size,
1013                                max_encoding_message_size,
1014                            );
1015                        let res = grpc.unary(method, req).await;
1016                        Ok(res)
1017                    };
1018                    Box::pin(fut)
1019                }
1020                "/ecs_instance.EcsInstance/StopInstance" => {
1021                    #[allow(non_camel_case_types)]
1022                    struct StopInstanceSvc<T: EcsInstance>(pub Arc<T>);
1023                    impl<
1024                        T: EcsInstance,
1025                    > tonic::server::UnaryService<super::StopInstanceReq>
1026                    for StopInstanceSvc<T> {
1027                        type Response = super::StopInstanceResp;
1028                        type Future = BoxFuture<
1029                            tonic::Response<Self::Response>,
1030                            tonic::Status,
1031                        >;
1032                        fn call(
1033                            &mut self,
1034                            request: tonic::Request<super::StopInstanceReq>,
1035                        ) -> Self::Future {
1036                            let inner = Arc::clone(&self.0);
1037                            let fut = async move {
1038                                (*inner).stop_instance(request).await
1039                            };
1040                            Box::pin(fut)
1041                        }
1042                    }
1043                    let accept_compression_encodings = self.accept_compression_encodings;
1044                    let send_compression_encodings = self.send_compression_encodings;
1045                    let max_decoding_message_size = self.max_decoding_message_size;
1046                    let max_encoding_message_size = self.max_encoding_message_size;
1047                    let inner = self.inner.clone();
1048                    let fut = async move {
1049                        let inner = inner.0;
1050                        let method = StopInstanceSvc(inner);
1051                        let codec = tonic::codec::ProstCodec::default();
1052                        let mut grpc = tonic::server::Grpc::new(codec)
1053                            .apply_compression_config(
1054                                accept_compression_encodings,
1055                                send_compression_encodings,
1056                            )
1057                            .apply_max_message_size_config(
1058                                max_decoding_message_size,
1059                                max_encoding_message_size,
1060                            );
1061                        let res = grpc.unary(method, req).await;
1062                        Ok(res)
1063                    };
1064                    Box::pin(fut)
1065                }
1066                "/ecs_instance.EcsInstance/StopInstances" => {
1067                    #[allow(non_camel_case_types)]
1068                    struct StopInstancesSvc<T: EcsInstance>(pub Arc<T>);
1069                    impl<
1070                        T: EcsInstance,
1071                    > tonic::server::UnaryService<super::StopInstancesReq>
1072                    for StopInstancesSvc<T> {
1073                        type Response = super::StopInstancesResp;
1074                        type Future = BoxFuture<
1075                            tonic::Response<Self::Response>,
1076                            tonic::Status,
1077                        >;
1078                        fn call(
1079                            &mut self,
1080                            request: tonic::Request<super::StopInstancesReq>,
1081                        ) -> Self::Future {
1082                            let inner = Arc::clone(&self.0);
1083                            let fut = async move {
1084                                (*inner).stop_instances(request).await
1085                            };
1086                            Box::pin(fut)
1087                        }
1088                    }
1089                    let accept_compression_encodings = self.accept_compression_encodings;
1090                    let send_compression_encodings = self.send_compression_encodings;
1091                    let max_decoding_message_size = self.max_decoding_message_size;
1092                    let max_encoding_message_size = self.max_encoding_message_size;
1093                    let inner = self.inner.clone();
1094                    let fut = async move {
1095                        let inner = inner.0;
1096                        let method = StopInstancesSvc(inner);
1097                        let codec = tonic::codec::ProstCodec::default();
1098                        let mut grpc = tonic::server::Grpc::new(codec)
1099                            .apply_compression_config(
1100                                accept_compression_encodings,
1101                                send_compression_encodings,
1102                            )
1103                            .apply_max_message_size_config(
1104                                max_decoding_message_size,
1105                                max_encoding_message_size,
1106                            );
1107                        let res = grpc.unary(method, req).await;
1108                        Ok(res)
1109                    };
1110                    Box::pin(fut)
1111                }
1112                "/ecs_instance.EcsInstance/ModifyInstanceSpec" => {
1113                    #[allow(non_camel_case_types)]
1114                    struct ModifyInstanceSpecSvc<T: EcsInstance>(pub Arc<T>);
1115                    impl<
1116                        T: EcsInstance,
1117                    > tonic::server::UnaryService<super::ModifyInstanceSpecReq>
1118                    for ModifyInstanceSpecSvc<T> {
1119                        type Response = super::ModifyInstanceSpecResp;
1120                        type Future = BoxFuture<
1121                            tonic::Response<Self::Response>,
1122                            tonic::Status,
1123                        >;
1124                        fn call(
1125                            &mut self,
1126                            request: tonic::Request<super::ModifyInstanceSpecReq>,
1127                        ) -> Self::Future {
1128                            let inner = Arc::clone(&self.0);
1129                            let fut = async move {
1130                                (*inner).modify_instance_spec(request).await
1131                            };
1132                            Box::pin(fut)
1133                        }
1134                    }
1135                    let accept_compression_encodings = self.accept_compression_encodings;
1136                    let send_compression_encodings = self.send_compression_encodings;
1137                    let max_decoding_message_size = self.max_decoding_message_size;
1138                    let max_encoding_message_size = self.max_encoding_message_size;
1139                    let inner = self.inner.clone();
1140                    let fut = async move {
1141                        let inner = inner.0;
1142                        let method = ModifyInstanceSpecSvc(inner);
1143                        let codec = tonic::codec::ProstCodec::default();
1144                        let mut grpc = tonic::server::Grpc::new(codec)
1145                            .apply_compression_config(
1146                                accept_compression_encodings,
1147                                send_compression_encodings,
1148                            )
1149                            .apply_max_message_size_config(
1150                                max_decoding_message_size,
1151                                max_encoding_message_size,
1152                            );
1153                        let res = grpc.unary(method, req).await;
1154                        Ok(res)
1155                    };
1156                    Box::pin(fut)
1157                }
1158                _ => {
1159                    Box::pin(async move {
1160                        Ok(
1161                            http::Response::builder()
1162                                .status(200)
1163                                .header("grpc-status", "12")
1164                                .header("content-type", "application/grpc")
1165                                .body(empty_body())
1166                                .unwrap(),
1167                        )
1168                    })
1169                }
1170            }
1171        }
1172    }
1173    impl<T: EcsInstance> Clone for EcsInstanceServer<T> {
1174        fn clone(&self) -> Self {
1175            let inner = self.inner.clone();
1176            Self {
1177                inner,
1178                accept_compression_encodings: self.accept_compression_encodings,
1179                send_compression_encodings: self.send_compression_encodings,
1180                max_decoding_message_size: self.max_decoding_message_size,
1181                max_encoding_message_size: self.max_encoding_message_size,
1182            }
1183        }
1184    }
1185    impl<T: EcsInstance> Clone for _Inner<T> {
1186        fn clone(&self) -> Self {
1187            Self(Arc::clone(&self.0))
1188        }
1189    }
1190    impl<T: std::fmt::Debug> std::fmt::Debug for _Inner<T> {
1191        fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
1192            write!(f, "{:?}", self.0)
1193        }
1194    }
1195    impl<T: EcsInstance> tonic::server::NamedService for EcsInstanceServer<T> {
1196        const NAME: &'static str = "ecs_instance.EcsInstance";
1197    }
1198}