Skip to main content

kurtosis_sdk/
api_container_api.rs

1/// ==============================================================================================
2///                            Shared Objects (Used By Multiple Endpoints)
3/// ==============================================================================================
4#[allow(clippy::derive_partial_eq_without_eq)]
5#[derive(Clone, PartialEq, ::prost::Message)]
6pub struct Port {
7    #[prost(uint32, tag = "1")]
8    pub number: u32,
9    /// The protocol that the port is listening on
10    #[prost(enumeration = "port::TransportProtocol", tag = "2")]
11    pub transport_protocol: i32,
12    #[prost(string, tag = "3")]
13    pub maybe_application_protocol: ::prost::alloc::string::String,
14    /// The wait timeout duration in string
15    #[prost(string, tag = "4")]
16    pub maybe_wait_timeout: ::prost::alloc::string::String,
17    /// this is useful in the cloud context; ignore in local
18    #[prost(bool, optional, tag = "5")]
19    pub locked: ::core::option::Option<bool>,
20    /// this is useful in the cloud context; ignore in local
21    #[prost(string, optional, tag = "6")]
22    pub alias: ::core::option::Option<::prost::alloc::string::String>,
23}
24/// Nested message and enum types in `Port`.
25pub mod port {
26    #[derive(
27        Clone,
28        Copy,
29        Debug,
30        PartialEq,
31        Eq,
32        Hash,
33        PartialOrd,
34        Ord,
35        ::prost::Enumeration
36    )]
37    #[repr(i32)]
38    pub enum TransportProtocol {
39        Tcp = 0,
40        Sctp = 1,
41        Udp = 2,
42    }
43    impl TransportProtocol {
44        /// String value of the enum field names used in the ProtoBuf definition.
45        ///
46        /// The values are not transformed in any way and thus are considered stable
47        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
48        pub fn as_str_name(&self) -> &'static str {
49            match self {
50                TransportProtocol::Tcp => "TCP",
51                TransportProtocol::Sctp => "SCTP",
52                TransportProtocol::Udp => "UDP",
53            }
54        }
55        /// Creates an enum from field names used in the ProtoBuf definition.
56        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
57            match value {
58                "TCP" => Some(Self::Tcp),
59                "SCTP" => Some(Self::Sctp),
60                "UDP" => Some(Self::Udp),
61                _ => None,
62            }
63        }
64    }
65}
66#[allow(clippy::derive_partial_eq_without_eq)]
67#[derive(Clone, PartialEq, ::prost::Message)]
68pub struct Container {
69    #[prost(enumeration = "container::Status", tag = "1")]
70    pub status: i32,
71    #[prost(string, tag = "2")]
72    pub image_name: ::prost::alloc::string::String,
73    #[prost(string, repeated, tag = "3")]
74    pub entrypoint_args: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
75    #[prost(string, repeated, tag = "4")]
76    pub cmd_args: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
77    #[prost(map = "string, string", tag = "5")]
78    pub env_vars: ::std::collections::HashMap<
79        ::prost::alloc::string::String,
80        ::prost::alloc::string::String,
81    >,
82}
83/// Nested message and enum types in `Container`.
84pub mod container {
85    #[derive(
86        Clone,
87        Copy,
88        Debug,
89        PartialEq,
90        Eq,
91        Hash,
92        PartialOrd,
93        Ord,
94        ::prost::Enumeration
95    )]
96    #[repr(i32)]
97    pub enum Status {
98        Stopped = 0,
99        Running = 1,
100        Unknown = 2,
101    }
102    impl Status {
103        /// String value of the enum field names used in the ProtoBuf definition.
104        ///
105        /// The values are not transformed in any way and thus are considered stable
106        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
107        pub fn as_str_name(&self) -> &'static str {
108            match self {
109                Status::Stopped => "STOPPED",
110                Status::Running => "RUNNING",
111                Status::Unknown => "UNKNOWN",
112            }
113        }
114        /// Creates an enum from field names used in the ProtoBuf definition.
115        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
116            match value {
117                "STOPPED" => Some(Self::Stopped),
118                "RUNNING" => Some(Self::Running),
119                "UNKNOWN" => Some(Self::Unknown),
120                _ => None,
121            }
122        }
123    }
124}
125#[allow(clippy::derive_partial_eq_without_eq)]
126#[derive(Clone, PartialEq, ::prost::Message)]
127pub struct FilesArtifactsList {
128    #[prost(string, repeated, tag = "1")]
129    pub files_artifacts_identifiers: ::prost::alloc::vec::Vec<
130        ::prost::alloc::string::String,
131    >,
132}
133/// Equivalent of user on ServiceConfig
134#[allow(clippy::derive_partial_eq_without_eq)]
135#[derive(Clone, PartialEq, ::prost::Message)]
136pub struct User {
137    #[prost(uint32, tag = "1")]
138    pub uid: u32,
139    #[prost(uint32, tag = "2")]
140    pub gid: u32,
141}
142/// Equivalent of tolerations on ServiceConfig
143#[allow(clippy::derive_partial_eq_without_eq)]
144#[derive(Clone, PartialEq, ::prost::Message)]
145pub struct Toleration {
146    #[prost(string, tag = "1")]
147    pub key: ::prost::alloc::string::String,
148    #[prost(string, tag = "2")]
149    pub operator: ::prost::alloc::string::String,
150    #[prost(string, tag = "3")]
151    pub value: ::prost::alloc::string::String,
152    #[prost(string, tag = "4")]
153    pub effect: ::prost::alloc::string::String,
154    #[prost(int64, tag = "5")]
155    pub toleration_seconds: i64,
156}
157#[allow(clippy::derive_partial_eq_without_eq)]
158#[derive(Clone, PartialEq, ::prost::Message)]
159pub struct ServiceInfo {
160    /// UUID of the service
161    #[prost(string, tag = "1")]
162    pub service_uuid: ::prost::alloc::string::String,
163    /// The IP address of the service inside the enclave
164    #[prost(string, tag = "2")]
165    pub private_ip_addr: ::prost::alloc::string::String,
166    /// The ports on which the service is reachable inside the enclave, specified in user_specified_port_id -> port_info
167    /// Will be exactly what was passed in at the time of starting the service
168    #[prost(map = "string, message", tag = "3")]
169    pub private_ports: ::std::collections::HashMap<::prost::alloc::string::String, Port>,
170    /// Public IP address *outside* the enclave where the service is reachable
171    /// NOTE: Will be empty if the service isn't running, the service didn't define any ports, or the backend doesn't support reporting public service info
172    #[prost(string, tag = "4")]
173    pub maybe_public_ip_addr: ::prost::alloc::string::String,
174    /// Mapping defining the ports that the service can be reached at *outside* the enclave, in the user_defined_port_id -> port_info where user_defined_port_id
175    ///   corresponds to the ID that was passed in in AddServiceArgs
176    /// NOTE: Will be empty if the service isn't running, the service didn't define any ports, or the backend doesn't support reporting public service info
177    #[prost(map = "string, message", tag = "5")]
178    pub maybe_public_ports: ::std::collections::HashMap<
179        ::prost::alloc::string::String,
180        Port,
181    >,
182    /// Name of the service
183    #[prost(string, tag = "6")]
184    pub name: ::prost::alloc::string::String,
185    /// Shortened uuid of the service
186    #[prost(string, tag = "7")]
187    pub shortened_uuid: ::prost::alloc::string::String,
188    /// Service status: stopped, running.
189    #[prost(enumeration = "ServiceStatus", tag = "8")]
190    pub service_status: i32,
191    /// Docker container or Kubernetes pod container
192    #[prost(message, optional, tag = "9")]
193    pub container: ::core::option::Option<Container>,
194    /// Mapping of directory paths on service to names of files artifacts that are mounted to that directory
195    #[prost(map = "string, message", tag = "10")]
196    pub service_dir_paths_to_files_artifacts_list: ::std::collections::HashMap<
197        ::prost::alloc::string::String,
198        FilesArtifactsList,
199    >,
200    #[prost(uint32, tag = "11")]
201    pub max_millicpus: u32,
202    #[prost(uint32, tag = "12")]
203    pub min_millicpus: u32,
204    #[prost(uint32, tag = "13")]
205    pub max_memory_megabytes: u32,
206    #[prost(uint32, tag = "14")]
207    pub min_memory_megabytes: u32,
208    /// Optional user identity for the service
209    #[prost(message, optional, tag = "15")]
210    pub user: ::core::option::Option<User>,
211    /// Optional list of Kubernetes tolerations
212    #[prost(message, repeated, tag = "16")]
213    pub tolerations: ::prost::alloc::vec::Vec<Toleration>,
214    /// Optional node selectors for pod placement
215    #[prost(map = "string, string", tag = "17")]
216    pub node_selectors: ::std::collections::HashMap<
217        ::prost::alloc::string::String,
218        ::prost::alloc::string::String,
219    >,
220    /// Optional labels
221    #[prost(map = "string, string", tag = "18")]
222    pub labels: ::std::collections::HashMap<
223        ::prost::alloc::string::String,
224        ::prost::alloc::string::String,
225    >,
226    /// Whether Tini is enabled
227    #[prost(bool, optional, tag = "19")]
228    pub tini_enabled: ::core::option::Option<bool>,
229    /// Wheter TTy is enabled
230    #[prost(bool, optional, tag = "20")]
231    pub tty_enabled: ::core::option::Option<bool>,
232}
233#[allow(clippy::derive_partial_eq_without_eq)]
234#[derive(Clone, PartialEq, ::prost::Message)]
235pub struct RunStarlarkScriptArgs {
236    #[prost(string, tag = "1")]
237    pub serialized_script: ::prost::alloc::string::String,
238    #[prost(string, optional, tag = "2")]
239    pub serialized_params: ::core::option::Option<::prost::alloc::string::String>,
240    /// Defaults to false
241    #[prost(bool, optional, tag = "3")]
242    pub dry_run: ::core::option::Option<bool>,
243    /// Defaults to 4
244    #[prost(int32, optional, tag = "4")]
245    pub parallelism: ::core::option::Option<i32>,
246    /// The name of the main function, the default value is "run"
247    #[prost(string, optional, tag = "5")]
248    pub main_function_name: ::core::option::Option<::prost::alloc::string::String>,
249    #[prost(enumeration = "KurtosisFeatureFlag", repeated, tag = "6")]
250    pub experimental_features: ::prost::alloc::vec::Vec<i32>,
251    /// Defaults to empty
252    #[prost(string, optional, tag = "7")]
253    pub cloud_instance_id: ::core::option::Option<::prost::alloc::string::String>,
254    /// Defaults to empty
255    #[prost(string, optional, tag = "8")]
256    pub cloud_user_id: ::core::option::Option<::prost::alloc::string::String>,
257    /// Defaults to empty
258    #[prost(enumeration = "ImageDownloadMode", optional, tag = "9")]
259    pub image_download_mode: ::core::option::Option<i32>,
260    /// Defaults to false
261    #[prost(bool, optional, tag = "10")]
262    pub non_blocking_mode: ::core::option::Option<bool>,
263    /// If true, executes the package in parallel meaning each instruction runs as soon as its dependencies are finished
264    #[prost(bool, optional, tag = "17")]
265    pub parallel: ::core::option::Option<bool>,
266}
267#[allow(clippy::derive_partial_eq_without_eq)]
268#[derive(Clone, PartialEq, ::prost::Message)]
269pub struct RunStarlarkPackageArgs {
270    #[prost(string, tag = "1")]
271    pub package_id: ::prost::alloc::string::String,
272    /// Serialized parameters data for the Starlark package main function
273    /// This should be a valid JSON string
274    #[prost(string, optional, tag = "5")]
275    pub serialized_params: ::core::option::Option<::prost::alloc::string::String>,
276    /// Defaults to false
277    #[prost(bool, optional, tag = "6")]
278    pub dry_run: ::core::option::Option<bool>,
279    /// Defaults to 4
280    #[prost(int32, optional, tag = "7")]
281    pub parallelism: ::core::option::Option<i32>,
282    /// Whether the package should be cloned or not.
283    /// If false, then the package will be pulled from the APIC local package store. If it's a local package then is must
284    /// have been uploaded using UploadStarlarkPackage prior to calling RunStarlarkPackage.
285    /// If true, then the package will be cloned from GitHub before execution starts
286    #[prost(bool, optional, tag = "8")]
287    pub clone_package: ::core::option::Option<bool>,
288    /// The relative main file filepath, the default value is the "main.star" file in the root of a package
289    #[prost(string, optional, tag = "9")]
290    pub relative_path_to_main_file: ::core::option::Option<
291        ::prost::alloc::string::String,
292    >,
293    /// The name of the main function, the default value is "run"
294    #[prost(string, optional, tag = "10")]
295    pub main_function_name: ::core::option::Option<::prost::alloc::string::String>,
296    #[prost(enumeration = "KurtosisFeatureFlag", repeated, tag = "11")]
297    pub experimental_features: ::prost::alloc::vec::Vec<i32>,
298    /// Defaults to empty
299    /// Deprecated: This value isn't used in the APIC anymore
300    #[prost(string, optional, tag = "12")]
301    pub cloud_instance_id: ::core::option::Option<::prost::alloc::string::String>,
302    /// Defaults to empty
303    /// Deprecated: This value isn't used in the APIC anymore
304    #[prost(string, optional, tag = "13")]
305    pub cloud_user_id: ::core::option::Option<::prost::alloc::string::String>,
306    /// Defaults to empty
307    #[prost(enumeration = "ImageDownloadMode", optional, tag = "14")]
308    pub image_download_mode: ::core::option::Option<i32>,
309    /// Defaults to false
310    #[prost(bool, optional, tag = "15")]
311    pub non_blocking_mode: ::core::option::Option<bool>,
312    /// token that will be used to authenticate requests for this package
313    #[prost(string, optional, tag = "16")]
314    pub github_auth_token: ::core::option::Option<::prost::alloc::string::String>,
315    /// If true, executes the package in parallel meaning each instruction runs as soon as its dependencies are finished
316    #[prost(bool, optional, tag = "17")]
317    pub parallel: ::core::option::Option<bool>,
318    /// Deprecated: If the package is local, it should have been uploaded with UploadStarlarkPackage prior to calling
319    /// RunStarlarkPackage. If the package is remote and must be cloned within the APIC, use the standalone boolean flag
320    /// clone_package below
321    #[prost(oneof = "run_starlark_package_args::StarlarkPackageContent", tags = "3, 4")]
322    pub starlark_package_content: ::core::option::Option<
323        run_starlark_package_args::StarlarkPackageContent,
324    >,
325}
326/// Nested message and enum types in `RunStarlarkPackageArgs`.
327pub mod run_starlark_package_args {
328    /// Deprecated: If the package is local, it should have been uploaded with UploadStarlarkPackage prior to calling
329    /// RunStarlarkPackage. If the package is remote and must be cloned within the APIC, use the standalone boolean flag
330    /// clone_package below
331    #[allow(clippy::derive_partial_eq_without_eq)]
332    #[derive(Clone, PartialEq, ::prost::Oneof)]
333    pub enum StarlarkPackageContent {
334        /// the payload of the local module
335        #[prost(bytes, tag = "3")]
336        Local(::prost::alloc::vec::Vec<u8>),
337        /// just a flag to indicate the module must be cloned inside the API
338        #[prost(bool, tag = "4")]
339        Remote(bool),
340    }
341}
342/// ==============================================================================================
343///                                Starlark Execution Response
344/// ==============================================================================================
345#[allow(clippy::derive_partial_eq_without_eq)]
346#[derive(Clone, PartialEq, ::prost::Message)]
347pub struct StarlarkRunResponseLine {
348    #[prost(
349        oneof = "starlark_run_response_line::RunResponseLine",
350        tags = "1, 2, 3, 4, 5, 6, 7"
351    )]
352    pub run_response_line: ::core::option::Option<
353        starlark_run_response_line::RunResponseLine,
354    >,
355}
356/// Nested message and enum types in `StarlarkRunResponseLine`.
357pub mod starlark_run_response_line {
358    #[allow(clippy::derive_partial_eq_without_eq)]
359    #[derive(Clone, PartialEq, ::prost::Oneof)]
360    pub enum RunResponseLine {
361        #[prost(message, tag = "1")]
362        Instruction(super::StarlarkInstruction),
363        #[prost(message, tag = "2")]
364        Error(super::StarlarkError),
365        #[prost(message, tag = "3")]
366        ProgressInfo(super::StarlarkRunProgress),
367        #[prost(message, tag = "4")]
368        InstructionResult(super::StarlarkInstructionResult),
369        #[prost(message, tag = "5")]
370        RunFinishedEvent(super::StarlarkRunFinishedEvent),
371        #[prost(message, tag = "6")]
372        Warning(super::StarlarkWarning),
373        #[prost(message, tag = "7")]
374        Info(super::StarlarkInfo),
375    }
376}
377#[allow(clippy::derive_partial_eq_without_eq)]
378#[derive(Clone, PartialEq, ::prost::Message)]
379pub struct StarlarkInfo {
380    #[prost(string, tag = "1")]
381    pub info_message: ::prost::alloc::string::String,
382}
383#[allow(clippy::derive_partial_eq_without_eq)]
384#[derive(Clone, PartialEq, ::prost::Message)]
385pub struct StarlarkWarning {
386    #[prost(string, tag = "1")]
387    pub warning_message: ::prost::alloc::string::String,
388}
389#[allow(clippy::derive_partial_eq_without_eq)]
390#[derive(Clone, PartialEq, ::prost::Message)]
391pub struct StarlarkInstruction {
392    #[prost(message, optional, tag = "1")]
393    pub position: ::core::option::Option<StarlarkInstructionPosition>,
394    #[prost(string, tag = "2")]
395    pub instruction_name: ::prost::alloc::string::String,
396    #[prost(message, repeated, tag = "3")]
397    pub arguments: ::prost::alloc::vec::Vec<StarlarkInstructionArg>,
398    #[prost(string, tag = "4")]
399    pub executable_instruction: ::prost::alloc::string::String,
400    #[prost(bool, tag = "5")]
401    pub is_skipped: bool,
402    #[prost(string, tag = "6")]
403    pub description: ::prost::alloc::string::String,
404    #[prost(string, optional, tag = "7")]
405    pub instruction_id: ::core::option::Option<::prost::alloc::string::String>,
406}
407#[allow(clippy::derive_partial_eq_without_eq)]
408#[derive(Clone, PartialEq, ::prost::Message)]
409pub struct StarlarkInstructionResult {
410    #[prost(string, tag = "1")]
411    pub serialized_instruction_result: ::prost::alloc::string::String,
412    #[prost(message, optional, tag = "2")]
413    pub execution_duration: ::core::option::Option<::prost_types::Duration>,
414    #[prost(string, optional, tag = "3")]
415    pub instruction_id: ::core::option::Option<::prost::alloc::string::String>,
416}
417#[allow(clippy::derive_partial_eq_without_eq)]
418#[derive(Clone, PartialEq, ::prost::Message)]
419pub struct StarlarkInstructionArg {
420    #[prost(string, tag = "1")]
421    pub serialized_arg_value: ::prost::alloc::string::String,
422    #[prost(string, optional, tag = "2")]
423    pub arg_name: ::core::option::Option<::prost::alloc::string::String>,
424    #[prost(bool, tag = "3")]
425    pub is_representative: bool,
426}
427#[allow(clippy::derive_partial_eq_without_eq)]
428#[derive(Clone, PartialEq, ::prost::Message)]
429pub struct StarlarkInstructionPosition {
430    #[prost(string, tag = "1")]
431    pub filename: ::prost::alloc::string::String,
432    #[prost(int32, tag = "2")]
433    pub line: i32,
434    #[prost(int32, tag = "3")]
435    pub column: i32,
436}
437#[allow(clippy::derive_partial_eq_without_eq)]
438#[derive(Clone, PartialEq, ::prost::Message)]
439pub struct StarlarkError {
440    #[prost(oneof = "starlark_error::Error", tags = "1, 2, 3")]
441    pub error: ::core::option::Option<starlark_error::Error>,
442}
443/// Nested message and enum types in `StarlarkError`.
444pub mod starlark_error {
445    #[allow(clippy::derive_partial_eq_without_eq)]
446    #[derive(Clone, PartialEq, ::prost::Oneof)]
447    pub enum Error {
448        #[prost(message, tag = "1")]
449        InterpretationError(super::StarlarkInterpretationError),
450        #[prost(message, tag = "2")]
451        ValidationError(super::StarlarkValidationError),
452        #[prost(message, tag = "3")]
453        ExecutionError(super::StarlarkExecutionError),
454    }
455}
456#[allow(clippy::derive_partial_eq_without_eq)]
457#[derive(Clone, PartialEq, ::prost::Message)]
458pub struct StarlarkInterpretationError {
459    #[prost(string, tag = "1")]
460    pub error_message: ::prost::alloc::string::String,
461}
462#[allow(clippy::derive_partial_eq_without_eq)]
463#[derive(Clone, PartialEq, ::prost::Message)]
464pub struct StarlarkValidationError {
465    #[prost(string, tag = "1")]
466    pub error_message: ::prost::alloc::string::String,
467}
468#[allow(clippy::derive_partial_eq_without_eq)]
469#[derive(Clone, PartialEq, ::prost::Message)]
470pub struct StarlarkExecutionError {
471    #[prost(string, tag = "1")]
472    pub error_message: ::prost::alloc::string::String,
473}
474#[allow(clippy::derive_partial_eq_without_eq)]
475#[derive(Clone, PartialEq, ::prost::Message)]
476pub struct StarlarkRunProgress {
477    #[prost(string, repeated, tag = "1")]
478    pub current_step_info: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
479    #[prost(uint32, tag = "2")]
480    pub total_steps: u32,
481    #[prost(uint32, tag = "3")]
482    pub current_step_number: u32,
483    #[prost(string, optional, tag = "4")]
484    pub instruction_id: ::core::option::Option<::prost::alloc::string::String>,
485}
486#[allow(clippy::derive_partial_eq_without_eq)]
487#[derive(Clone, PartialEq, ::prost::Message)]
488pub struct StarlarkRunFinishedEvent {
489    #[prost(bool, tag = "1")]
490    pub is_run_successful: bool,
491    #[prost(string, optional, tag = "2")]
492    pub serialized_output: ::core::option::Option<::prost::alloc::string::String>,
493    #[prost(message, optional, tag = "3")]
494    pub total_execution_duration: ::core::option::Option<::prost_types::Duration>,
495}
496/// ==============================================================================================
497///                                           Get Services
498/// ==============================================================================================
499#[allow(clippy::derive_partial_eq_without_eq)]
500#[derive(Clone, PartialEq, ::prost::Message)]
501pub struct GetServicesArgs {
502    /// "Set" of identifiers to fetch info for
503    /// If empty, will fetch info for all services
504    #[prost(map = "string, bool", tag = "1")]
505    pub service_identifiers: ::std::collections::HashMap<
506        ::prost::alloc::string::String,
507        bool,
508    >,
509}
510#[allow(clippy::derive_partial_eq_without_eq)]
511#[derive(Clone, PartialEq, ::prost::Message)]
512pub struct GetServicesResponse {
513    /// "Set" from identifiers -> info about the service
514    #[prost(map = "string, message", tag = "1")]
515    pub service_info: ::std::collections::HashMap<
516        ::prost::alloc::string::String,
517        ServiceInfo,
518    >,
519}
520/// An service identifier is a collection of uuid, name and shortened uuid
521#[allow(clippy::derive_partial_eq_without_eq)]
522#[derive(Clone, PartialEq, ::prost::Message)]
523pub struct ServiceIdentifiers {
524    /// UUID of the service
525    #[prost(string, tag = "1")]
526    pub service_uuid: ::prost::alloc::string::String,
527    /// Name of the service
528    #[prost(string, tag = "2")]
529    pub name: ::prost::alloc::string::String,
530    /// The shortened uuid of the service
531    #[prost(string, tag = "3")]
532    pub shortened_uuid: ::prost::alloc::string::String,
533}
534#[allow(clippy::derive_partial_eq_without_eq)]
535#[derive(Clone, PartialEq, ::prost::Message)]
536pub struct GetExistingAndHistoricalServiceIdentifiersResponse {
537    #[prost(message, repeated, tag = "1")]
538    pub all_identifiers: ::prost::alloc::vec::Vec<ServiceIdentifiers>,
539}
540/// ==============================================================================================
541///                                           Exec Command
542/// ==============================================================================================
543#[allow(clippy::derive_partial_eq_without_eq)]
544#[derive(Clone, PartialEq, ::prost::Message)]
545pub struct ExecCommandArgs {
546    /// The service identifier of the container that the command should be executed in
547    #[prost(string, tag = "1")]
548    pub service_identifier: ::prost::alloc::string::String,
549    #[prost(string, repeated, tag = "2")]
550    pub command_args: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
551}
552#[allow(clippy::derive_partial_eq_without_eq)]
553#[derive(Clone, PartialEq, ::prost::Message)]
554pub struct ExecCommandResponse {
555    #[prost(int32, tag = "1")]
556    pub exit_code: i32,
557    /// Assumes UTF-8 encoding
558    #[prost(string, tag = "2")]
559    pub log_output: ::prost::alloc::string::String,
560}
561/// ==============================================================================================
562///                              Wait For HTTP Get Endpoint Availability
563/// ==============================================================================================
564#[allow(clippy::derive_partial_eq_without_eq)]
565#[derive(Clone, PartialEq, ::prost::Message)]
566pub struct WaitForHttpGetEndpointAvailabilityArgs {
567    /// The identifier of the service to check.
568    #[prost(string, tag = "1")]
569    pub service_identifier: ::prost::alloc::string::String,
570    /// The port of the service to check. For instance 8080
571    #[prost(uint32, tag = "2")]
572    pub port: u32,
573    /// The path of the service to check. It mustn't start with the first slash. For instance `service/health`
574    #[prost(string, optional, tag = "3")]
575    pub path: ::core::option::Option<::prost::alloc::string::String>,
576    /// The number of milliseconds to wait until executing the first HTTP call
577    #[prost(uint32, optional, tag = "4")]
578    pub initial_delay_milliseconds: ::core::option::Option<u32>,
579    /// Max number of HTTP call attempts that this will execute until giving up and returning an error
580    #[prost(uint32, optional, tag = "5")]
581    pub retries: ::core::option::Option<u32>,
582    /// Number of milliseconds to wait between retries
583    #[prost(uint32, optional, tag = "6")]
584    pub retries_delay_milliseconds: ::core::option::Option<u32>,
585    /// If the endpoint returns this value, the service will be marked as available (e.g. Hello World).
586    #[prost(string, optional, tag = "7")]
587    pub body_text: ::core::option::Option<::prost::alloc::string::String>,
588}
589/// ==============================================================================================
590///                            Wait For HTTP Post Endpoint Availability
591/// ==============================================================================================
592#[allow(clippy::derive_partial_eq_without_eq)]
593#[derive(Clone, PartialEq, ::prost::Message)]
594pub struct WaitForHttpPostEndpointAvailabilityArgs {
595    /// The identifier of the service to check.
596    #[prost(string, tag = "1")]
597    pub service_identifier: ::prost::alloc::string::String,
598    /// The port of the service to check. For instance 8080
599    #[prost(uint32, tag = "2")]
600    pub port: u32,
601    /// The path of the service to check. It mustn't start with the first slash. For instance `service/health`
602    #[prost(string, optional, tag = "3")]
603    pub path: ::core::option::Option<::prost::alloc::string::String>,
604    /// The content of the request body.
605    #[prost(string, optional, tag = "4")]
606    pub request_body: ::core::option::Option<::prost::alloc::string::String>,
607    /// The number of milliseconds to wait until executing the first HTTP call
608    #[prost(uint32, optional, tag = "5")]
609    pub initial_delay_milliseconds: ::core::option::Option<u32>,
610    /// Max number of HTTP call attempts that this will execute until giving up and returning an error
611    #[prost(uint32, optional, tag = "6")]
612    pub retries: ::core::option::Option<u32>,
613    /// Number of milliseconds to wait between retries
614    #[prost(uint32, optional, tag = "7")]
615    pub retries_delay_milliseconds: ::core::option::Option<u32>,
616    /// If the endpoint returns this value, the service will be marked as available (e.g. Hello World).
617    #[prost(string, optional, tag = "8")]
618    pub body_text: ::core::option::Option<::prost::alloc::string::String>,
619}
620/// ==============================================================================================
621///                                           Streamed Data Chunk
622/// ==============================================================================================
623#[allow(clippy::derive_partial_eq_without_eq)]
624#[derive(Clone, PartialEq, ::prost::Message)]
625pub struct StreamedDataChunk {
626    /// Chunk of the overall files artifact bytes
627    #[prost(bytes = "vec", tag = "1")]
628    pub data: ::prost::alloc::vec::Vec<u8>,
629    /// Hash of the PREVIOUS chunk, or empty string is this is the first chunk
630    /// Referencing the previous chunk via its hash allows Kurtosis to validate
631    /// the consistency of the data in case some chunk were not received
632    #[prost(string, tag = "2")]
633    pub previous_chunk_hash: ::prost::alloc::string::String,
634    /// Additional metadata about the item being streamed
635    #[prost(message, optional, tag = "3")]
636    pub metadata: ::core::option::Option<DataChunkMetadata>,
637}
638#[allow(clippy::derive_partial_eq_without_eq)]
639#[derive(Clone, PartialEq, ::prost::Message)]
640pub struct DataChunkMetadata {
641    #[prost(string, tag = "1")]
642    pub name: ::prost::alloc::string::String,
643}
644/// ==============================================================================================
645///                                           Upload Files Artifact
646/// ==============================================================================================
647#[allow(clippy::derive_partial_eq_without_eq)]
648#[derive(Clone, PartialEq, ::prost::Message)]
649pub struct UploadFilesArtifactResponse {
650    /// UUID of the files artifact, for use when referencing it in the future
651    #[prost(string, tag = "1")]
652    pub uuid: ::prost::alloc::string::String,
653    /// UUID of the files artifact, for use when referencing it in the future
654    #[prost(string, tag = "2")]
655    pub name: ::prost::alloc::string::String,
656}
657/// ==============================================================================================
658///                                           Download Files Artifact
659/// ==============================================================================================
660#[allow(clippy::derive_partial_eq_without_eq)]
661#[derive(Clone, PartialEq, ::prost::Message)]
662pub struct DownloadFilesArtifactArgs {
663    /// Files identifier to get bytes for
664    #[prost(string, tag = "1")]
665    pub identifier: ::prost::alloc::string::String,
666}
667/// ==============================================================================================
668///                                         Store Web Files Artifact
669/// ==============================================================================================
670#[allow(clippy::derive_partial_eq_without_eq)]
671#[derive(Clone, PartialEq, ::prost::Message)]
672pub struct StoreWebFilesArtifactArgs {
673    /// URL to download the artifact from
674    #[prost(string, tag = "1")]
675    pub url: ::prost::alloc::string::String,
676    /// The name of the files artifact
677    #[prost(string, tag = "2")]
678    pub name: ::prost::alloc::string::String,
679}
680#[allow(clippy::derive_partial_eq_without_eq)]
681#[derive(Clone, PartialEq, ::prost::Message)]
682pub struct StoreWebFilesArtifactResponse {
683    /// UUID of the files artifact, for use when referencing it in the future
684    #[prost(string, tag = "1")]
685    pub uuid: ::prost::alloc::string::String,
686}
687#[allow(clippy::derive_partial_eq_without_eq)]
688#[derive(Clone, PartialEq, ::prost::Message)]
689pub struct StoreFilesArtifactFromServiceArgs {
690    /// Identifier that will be used to identify the service where the source files will be copied from
691    #[prost(string, tag = "1")]
692    pub service_identifier: ::prost::alloc::string::String,
693    /// The absolute source path where the source files will be copied from
694    #[prost(string, tag = "2")]
695    pub source_path: ::prost::alloc::string::String,
696    /// The name of the files artifact
697    #[prost(string, tag = "3")]
698    pub name: ::prost::alloc::string::String,
699}
700#[allow(clippy::derive_partial_eq_without_eq)]
701#[derive(Clone, PartialEq, ::prost::Message)]
702pub struct StoreFilesArtifactFromServiceResponse {
703    /// UUID of the files artifact, for use when referencing it in the future
704    #[prost(string, tag = "1")]
705    pub uuid: ::prost::alloc::string::String,
706}
707#[allow(clippy::derive_partial_eq_without_eq)]
708#[derive(Clone, PartialEq, ::prost::Message)]
709pub struct FilesArtifactNameAndUuid {
710    /// A string representing the name of the file
711    #[prost(string, tag = "1")]
712    pub file_name: ::prost::alloc::string::String,
713    /// A string representing the uuid of the file
714    #[prost(string, tag = "2")]
715    pub file_uuid: ::prost::alloc::string::String,
716}
717#[allow(clippy::derive_partial_eq_without_eq)]
718#[derive(Clone, PartialEq, ::prost::Message)]
719pub struct ListFilesArtifactNamesAndUuidsResponse {
720    #[prost(message, repeated, tag = "1")]
721    pub file_names_and_uuids: ::prost::alloc::vec::Vec<FilesArtifactNameAndUuid>,
722}
723#[allow(clippy::derive_partial_eq_without_eq)]
724#[derive(Clone, PartialEq, ::prost::Message)]
725pub struct InspectFilesArtifactContentsRequest {
726    #[prost(message, optional, tag = "1")]
727    pub file_names_and_uuid: ::core::option::Option<FilesArtifactNameAndUuid>,
728}
729#[allow(clippy::derive_partial_eq_without_eq)]
730#[derive(Clone, PartialEq, ::prost::Message)]
731pub struct InspectFilesArtifactContentsResponse {
732    #[prost(message, repeated, tag = "1")]
733    pub file_descriptions: ::prost::alloc::vec::Vec<FileArtifactContentsFileDescription>,
734}
735#[allow(clippy::derive_partial_eq_without_eq)]
736#[derive(Clone, PartialEq, ::prost::Message)]
737pub struct FileArtifactContentsFileDescription {
738    /// Path relative to the file artifact
739    #[prost(string, tag = "1")]
740    pub path: ::prost::alloc::string::String,
741    /// Size of the file, in bytes
742    #[prost(uint64, tag = "2")]
743    pub size: u64,
744    /// A bit of text content, if the file allows (similar to UNIX's 'head')
745    #[prost(string, optional, tag = "3")]
746    pub text_preview: ::core::option::Option<::prost::alloc::string::String>,
747}
748#[allow(clippy::derive_partial_eq_without_eq)]
749#[derive(Clone, PartialEq, ::prost::Message)]
750pub struct ConnectServicesArgs {
751    #[prost(enumeration = "Connect", tag = "1")]
752    pub connect: i32,
753}
754#[allow(clippy::derive_partial_eq_without_eq)]
755#[derive(Clone, PartialEq, ::prost::Message)]
756pub struct ConnectServicesResponse {}
757#[allow(clippy::derive_partial_eq_without_eq)]
758#[derive(Clone, PartialEq, ::prost::Message)]
759pub struct GetStarlarkRunResponse {
760    #[prost(string, tag = "1")]
761    pub package_id: ::prost::alloc::string::String,
762    #[prost(string, tag = "2")]
763    pub serialized_script: ::prost::alloc::string::String,
764    #[prost(string, tag = "3")]
765    pub serialized_params: ::prost::alloc::string::String,
766    #[prost(int32, tag = "4")]
767    pub parallelism: i32,
768    #[prost(string, tag = "5")]
769    pub relative_path_to_main_file: ::prost::alloc::string::String,
770    #[prost(string, tag = "6")]
771    pub main_function_name: ::prost::alloc::string::String,
772    #[prost(enumeration = "KurtosisFeatureFlag", repeated, tag = "7")]
773    pub experimental_features: ::prost::alloc::vec::Vec<i32>,
774    #[prost(enumeration = "RestartPolicy", tag = "8")]
775    pub restart_policy: i32,
776    /// The params that were used on for the very first Starlark run in an APIC
777    #[prost(string, optional, tag = "9")]
778    pub initial_serialized_params: ::core::option::Option<
779        ::prost::alloc::string::String,
780    >,
781}
782#[allow(clippy::derive_partial_eq_without_eq)]
783#[derive(Clone, PartialEq, ::prost::Message)]
784pub struct PlanYaml {
785    #[prost(string, tag = "1")]
786    pub plan_yaml: ::prost::alloc::string::String,
787}
788#[allow(clippy::derive_partial_eq_without_eq)]
789#[derive(Clone, PartialEq, ::prost::Message)]
790pub struct StarlarkScriptPlanYamlArgs {
791    #[prost(string, tag = "1")]
792    pub serialized_script: ::prost::alloc::string::String,
793    #[prost(string, optional, tag = "2")]
794    pub serialized_params: ::core::option::Option<::prost::alloc::string::String>,
795    /// The name of the main function, the default value is "run"
796    #[prost(string, optional, tag = "5")]
797    pub main_function_name: ::core::option::Option<::prost::alloc::string::String>,
798}
799#[allow(clippy::derive_partial_eq_without_eq)]
800#[derive(Clone, PartialEq, ::prost::Message)]
801pub struct StarlarkPackagePlanYamlArgs {
802    #[prost(string, tag = "1")]
803    pub package_id: ::prost::alloc::string::String,
804    /// Serialized parameters data for the Starlark package main function
805    /// This should be a valid JSON string
806    #[prost(string, optional, tag = "2")]
807    pub serialized_params: ::core::option::Option<::prost::alloc::string::String>,
808    /// whether or not this is package yaml should be pulled from on disk package or cloned
809    #[prost(bool, tag = "3")]
810    pub is_remote: bool,
811    /// The relative main file filepath, the default value is the "main.star" file in the root of a package
812    #[prost(string, optional, tag = "4")]
813    pub relative_path_to_main_file: ::core::option::Option<
814        ::prost::alloc::string::String,
815    >,
816    /// The name of the main function, the default value is "run"
817    #[prost(string, optional, tag = "5")]
818    pub main_function_name: ::core::option::Option<::prost::alloc::string::String>,
819}
820#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
821#[repr(i32)]
822pub enum ServiceStatus {
823    Stopped = 0,
824    Running = 1,
825    Unknown = 2,
826}
827impl ServiceStatus {
828    /// String value of the enum field names used in the ProtoBuf definition.
829    ///
830    /// The values are not transformed in any way and thus are considered stable
831    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
832    pub fn as_str_name(&self) -> &'static str {
833        match self {
834            ServiceStatus::Stopped => "STOPPED",
835            ServiceStatus::Running => "RUNNING",
836            ServiceStatus::Unknown => "UNKNOWN",
837        }
838    }
839    /// Creates an enum from field names used in the ProtoBuf definition.
840    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
841        match value {
842            "STOPPED" => Some(Self::Stopped),
843            "RUNNING" => Some(Self::Running),
844            "UNKNOWN" => Some(Self::Unknown),
845            _ => None,
846        }
847    }
848}
849#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
850#[repr(i32)]
851pub enum ImageDownloadMode {
852    Always = 0,
853    Missing = 1,
854}
855impl ImageDownloadMode {
856    /// String value of the enum field names used in the ProtoBuf definition.
857    ///
858    /// The values are not transformed in any way and thus are considered stable
859    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
860    pub fn as_str_name(&self) -> &'static str {
861        match self {
862            ImageDownloadMode::Always => "always",
863            ImageDownloadMode::Missing => "missing",
864        }
865    }
866    /// Creates an enum from field names used in the ProtoBuf definition.
867    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
868        match value {
869            "always" => Some(Self::Always),
870            "missing" => Some(Self::Missing),
871            _ => None,
872        }
873    }
874}
875/// User services port forwarding
876#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
877#[repr(i32)]
878pub enum Connect {
879    /// Best effort port forwarding
880    Connect = 0,
881    /// Port forwarding disabled
882    ///
883    /// Starlark run fails if the ports cannot be forwarded.
884    /// MUST_CONNECT = 2;
885    NoConnect = 1,
886}
887impl Connect {
888    /// String value of the enum field names used in the ProtoBuf definition.
889    ///
890    /// The values are not transformed in any way and thus are considered stable
891    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
892    pub fn as_str_name(&self) -> &'static str {
893        match self {
894            Connect::Connect => "CONNECT",
895            Connect::NoConnect => "NO_CONNECT",
896        }
897    }
898    /// Creates an enum from field names used in the ProtoBuf definition.
899    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
900        match value {
901            "CONNECT" => Some(Self::Connect),
902            "NO_CONNECT" => Some(Self::NoConnect),
903            _ => None,
904        }
905    }
906}
907#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
908#[repr(i32)]
909pub enum KurtosisFeatureFlag {
910    NoInstructionsCaching = 0,
911}
912impl KurtosisFeatureFlag {
913    /// String value of the enum field names used in the ProtoBuf definition.
914    ///
915    /// The values are not transformed in any way and thus are considered stable
916    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
917    pub fn as_str_name(&self) -> &'static str {
918        match self {
919            KurtosisFeatureFlag::NoInstructionsCaching => "NO_INSTRUCTIONS_CACHING",
920        }
921    }
922    /// Creates an enum from field names used in the ProtoBuf definition.
923    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
924        match value {
925            "NO_INSTRUCTIONS_CACHING" => Some(Self::NoInstructionsCaching),
926            _ => None,
927        }
928    }
929}
930#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
931#[repr(i32)]
932pub enum RestartPolicy {
933    Never = 0,
934    Always = 1,
935}
936impl RestartPolicy {
937    /// String value of the enum field names used in the ProtoBuf definition.
938    ///
939    /// The values are not transformed in any way and thus are considered stable
940    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
941    pub fn as_str_name(&self) -> &'static str {
942        match self {
943            RestartPolicy::Never => "NEVER",
944            RestartPolicy::Always => "ALWAYS",
945        }
946    }
947    /// Creates an enum from field names used in the ProtoBuf definition.
948    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
949        match value {
950            "NEVER" => Some(Self::Never),
951            "ALWAYS" => Some(Self::Always),
952            _ => None,
953        }
954    }
955}
956/// Generated client implementations.
957pub mod api_container_service_client {
958    #![allow(unused_variables, dead_code, missing_docs, clippy::let_unit_value)]
959    use tonic::codegen::*;
960    use tonic::codegen::http::Uri;
961    #[derive(Debug, Clone)]
962    pub struct ApiContainerServiceClient<T> {
963        inner: tonic::client::Grpc<T>,
964    }
965    impl ApiContainerServiceClient<tonic::transport::Channel> {
966        /// Attempt to create a new client by connecting to a given endpoint.
967        pub async fn connect<D>(dst: D) -> Result<Self, tonic::transport::Error>
968        where
969            D: TryInto<tonic::transport::Endpoint>,
970            D::Error: Into<StdError>,
971        {
972            let conn = tonic::transport::Endpoint::new(dst)?.connect().await?;
973            Ok(Self::new(conn))
974        }
975    }
976    impl<T> ApiContainerServiceClient<T>
977    where
978        T: tonic::client::GrpcService<tonic::body::BoxBody>,
979        T::Error: Into<StdError>,
980        T::ResponseBody: Body<Data = Bytes> + Send + 'static,
981        <T::ResponseBody as Body>::Error: Into<StdError> + Send,
982    {
983        pub fn new(inner: T) -> Self {
984            let inner = tonic::client::Grpc::new(inner);
985            Self { inner }
986        }
987        pub fn with_origin(inner: T, origin: Uri) -> Self {
988            let inner = tonic::client::Grpc::with_origin(inner, origin);
989            Self { inner }
990        }
991        pub fn with_interceptor<F>(
992            inner: T,
993            interceptor: F,
994        ) -> ApiContainerServiceClient<InterceptedService<T, F>>
995        where
996            F: tonic::service::Interceptor,
997            T::ResponseBody: Default,
998            T: tonic::codegen::Service<
999                http::Request<tonic::body::BoxBody>,
1000                Response = http::Response<
1001                    <T as tonic::client::GrpcService<tonic::body::BoxBody>>::ResponseBody,
1002                >,
1003            >,
1004            <T as tonic::codegen::Service<
1005                http::Request<tonic::body::BoxBody>,
1006            >>::Error: Into<StdError> + Send + Sync,
1007        {
1008            ApiContainerServiceClient::new(InterceptedService::new(inner, interceptor))
1009        }
1010        /// Compress requests with the given encoding.
1011        ///
1012        /// This requires the server to support it otherwise it might respond with an
1013        /// error.
1014        #[must_use]
1015        pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
1016            self.inner = self.inner.send_compressed(encoding);
1017            self
1018        }
1019        /// Enable decompressing responses.
1020        #[must_use]
1021        pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
1022            self.inner = self.inner.accept_compressed(encoding);
1023            self
1024        }
1025        /// Limits the maximum size of a decoded message.
1026        ///
1027        /// Default: `4MB`
1028        #[must_use]
1029        pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
1030            self.inner = self.inner.max_decoding_message_size(limit);
1031            self
1032        }
1033        /// Limits the maximum size of an encoded message.
1034        ///
1035        /// Default: `usize::MAX`
1036        #[must_use]
1037        pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
1038            self.inner = self.inner.max_encoding_message_size(limit);
1039            self
1040        }
1041        /// Executes a Starlark script on the user's behalf
1042        pub async fn run_starlark_script(
1043            &mut self,
1044            request: impl tonic::IntoRequest<super::RunStarlarkScriptArgs>,
1045        ) -> std::result::Result<
1046            tonic::Response<tonic::codec::Streaming<super::StarlarkRunResponseLine>>,
1047            tonic::Status,
1048        > {
1049            self.inner
1050                .ready()
1051                .await
1052                .map_err(|e| {
1053                    tonic::Status::new(
1054                        tonic::Code::Unknown,
1055                        format!("Service was not ready: {}", e.into()),
1056                    )
1057                })?;
1058            let codec = tonic::codec::ProstCodec::default();
1059            let path = http::uri::PathAndQuery::from_static(
1060                "/api_container_api.ApiContainerService/RunStarlarkScript",
1061            );
1062            let mut req = request.into_request();
1063            req.extensions_mut()
1064                .insert(
1065                    GrpcMethod::new(
1066                        "api_container_api.ApiContainerService",
1067                        "RunStarlarkScript",
1068                    ),
1069                );
1070            self.inner.server_streaming(req, path, codec).await
1071        }
1072        /// Uploads a Starlark package. This step is required before the package can be executed with RunStarlarkPackage
1073        pub async fn upload_starlark_package(
1074            &mut self,
1075            request: impl tonic::IntoStreamingRequest<Message = super::StreamedDataChunk>,
1076        ) -> std::result::Result<tonic::Response<()>, tonic::Status> {
1077            self.inner
1078                .ready()
1079                .await
1080                .map_err(|e| {
1081                    tonic::Status::new(
1082                        tonic::Code::Unknown,
1083                        format!("Service was not ready: {}", e.into()),
1084                    )
1085                })?;
1086            let codec = tonic::codec::ProstCodec::default();
1087            let path = http::uri::PathAndQuery::from_static(
1088                "/api_container_api.ApiContainerService/UploadStarlarkPackage",
1089            );
1090            let mut req = request.into_streaming_request();
1091            req.extensions_mut()
1092                .insert(
1093                    GrpcMethod::new(
1094                        "api_container_api.ApiContainerService",
1095                        "UploadStarlarkPackage",
1096                    ),
1097                );
1098            self.inner.client_streaming(req, path, codec).await
1099        }
1100        /// Executes a Starlark script on the user's behalf
1101        pub async fn run_starlark_package(
1102            &mut self,
1103            request: impl tonic::IntoRequest<super::RunStarlarkPackageArgs>,
1104        ) -> std::result::Result<
1105            tonic::Response<tonic::codec::Streaming<super::StarlarkRunResponseLine>>,
1106            tonic::Status,
1107        > {
1108            self.inner
1109                .ready()
1110                .await
1111                .map_err(|e| {
1112                    tonic::Status::new(
1113                        tonic::Code::Unknown,
1114                        format!("Service was not ready: {}", e.into()),
1115                    )
1116                })?;
1117            let codec = tonic::codec::ProstCodec::default();
1118            let path = http::uri::PathAndQuery::from_static(
1119                "/api_container_api.ApiContainerService/RunStarlarkPackage",
1120            );
1121            let mut req = request.into_request();
1122            req.extensions_mut()
1123                .insert(
1124                    GrpcMethod::new(
1125                        "api_container_api.ApiContainerService",
1126                        "RunStarlarkPackage",
1127                    ),
1128                );
1129            self.inner.server_streaming(req, path, codec).await
1130        }
1131        /// Returns the IDs of the current services in the enclave
1132        pub async fn get_services(
1133            &mut self,
1134            request: impl tonic::IntoRequest<super::GetServicesArgs>,
1135        ) -> std::result::Result<
1136            tonic::Response<super::GetServicesResponse>,
1137            tonic::Status,
1138        > {
1139            self.inner
1140                .ready()
1141                .await
1142                .map_err(|e| {
1143                    tonic::Status::new(
1144                        tonic::Code::Unknown,
1145                        format!("Service was not ready: {}", e.into()),
1146                    )
1147                })?;
1148            let codec = tonic::codec::ProstCodec::default();
1149            let path = http::uri::PathAndQuery::from_static(
1150                "/api_container_api.ApiContainerService/GetServices",
1151            );
1152            let mut req = request.into_request();
1153            req.extensions_mut()
1154                .insert(
1155                    GrpcMethod::new(
1156                        "api_container_api.ApiContainerService",
1157                        "GetServices",
1158                    ),
1159                );
1160            self.inner.unary(req, path, codec).await
1161        }
1162        /// Returns information about all existing & historical services
1163        pub async fn get_existing_and_historical_service_identifiers(
1164            &mut self,
1165            request: impl tonic::IntoRequest<()>,
1166        ) -> std::result::Result<
1167            tonic::Response<super::GetExistingAndHistoricalServiceIdentifiersResponse>,
1168            tonic::Status,
1169        > {
1170            self.inner
1171                .ready()
1172                .await
1173                .map_err(|e| {
1174                    tonic::Status::new(
1175                        tonic::Code::Unknown,
1176                        format!("Service was not ready: {}", e.into()),
1177                    )
1178                })?;
1179            let codec = tonic::codec::ProstCodec::default();
1180            let path = http::uri::PathAndQuery::from_static(
1181                "/api_container_api.ApiContainerService/GetExistingAndHistoricalServiceIdentifiers",
1182            );
1183            let mut req = request.into_request();
1184            req.extensions_mut()
1185                .insert(
1186                    GrpcMethod::new(
1187                        "api_container_api.ApiContainerService",
1188                        "GetExistingAndHistoricalServiceIdentifiers",
1189                    ),
1190                );
1191            self.inner.unary(req, path, codec).await
1192        }
1193        /// Executes the given command inside a running container
1194        pub async fn exec_command(
1195            &mut self,
1196            request: impl tonic::IntoRequest<super::ExecCommandArgs>,
1197        ) -> std::result::Result<
1198            tonic::Response<super::ExecCommandResponse>,
1199            tonic::Status,
1200        > {
1201            self.inner
1202                .ready()
1203                .await
1204                .map_err(|e| {
1205                    tonic::Status::new(
1206                        tonic::Code::Unknown,
1207                        format!("Service was not ready: {}", e.into()),
1208                    )
1209                })?;
1210            let codec = tonic::codec::ProstCodec::default();
1211            let path = http::uri::PathAndQuery::from_static(
1212                "/api_container_api.ApiContainerService/ExecCommand",
1213            );
1214            let mut req = request.into_request();
1215            req.extensions_mut()
1216                .insert(
1217                    GrpcMethod::new(
1218                        "api_container_api.ApiContainerService",
1219                        "ExecCommand",
1220                    ),
1221                );
1222            self.inner.unary(req, path, codec).await
1223        }
1224        /// Block until the given HTTP endpoint returns available, calling it through a HTTP Get request
1225        pub async fn wait_for_http_get_endpoint_availability(
1226            &mut self,
1227            request: impl tonic::IntoRequest<
1228                super::WaitForHttpGetEndpointAvailabilityArgs,
1229            >,
1230        ) -> std::result::Result<tonic::Response<()>, tonic::Status> {
1231            self.inner
1232                .ready()
1233                .await
1234                .map_err(|e| {
1235                    tonic::Status::new(
1236                        tonic::Code::Unknown,
1237                        format!("Service was not ready: {}", e.into()),
1238                    )
1239                })?;
1240            let codec = tonic::codec::ProstCodec::default();
1241            let path = http::uri::PathAndQuery::from_static(
1242                "/api_container_api.ApiContainerService/WaitForHttpGetEndpointAvailability",
1243            );
1244            let mut req = request.into_request();
1245            req.extensions_mut()
1246                .insert(
1247                    GrpcMethod::new(
1248                        "api_container_api.ApiContainerService",
1249                        "WaitForHttpGetEndpointAvailability",
1250                    ),
1251                );
1252            self.inner.unary(req, path, codec).await
1253        }
1254        /// Block until the given HTTP endpoint returns available, calling it through a HTTP Post request
1255        pub async fn wait_for_http_post_endpoint_availability(
1256            &mut self,
1257            request: impl tonic::IntoRequest<
1258                super::WaitForHttpPostEndpointAvailabilityArgs,
1259            >,
1260        ) -> std::result::Result<tonic::Response<()>, tonic::Status> {
1261            self.inner
1262                .ready()
1263                .await
1264                .map_err(|e| {
1265                    tonic::Status::new(
1266                        tonic::Code::Unknown,
1267                        format!("Service was not ready: {}", e.into()),
1268                    )
1269                })?;
1270            let codec = tonic::codec::ProstCodec::default();
1271            let path = http::uri::PathAndQuery::from_static(
1272                "/api_container_api.ApiContainerService/WaitForHttpPostEndpointAvailability",
1273            );
1274            let mut req = request.into_request();
1275            req.extensions_mut()
1276                .insert(
1277                    GrpcMethod::new(
1278                        "api_container_api.ApiContainerService",
1279                        "WaitForHttpPostEndpointAvailability",
1280                    ),
1281                );
1282            self.inner.unary(req, path, codec).await
1283        }
1284        /// Uploads a files artifact to the Kurtosis File System
1285        pub async fn upload_files_artifact(
1286            &mut self,
1287            request: impl tonic::IntoStreamingRequest<Message = super::StreamedDataChunk>,
1288        ) -> std::result::Result<
1289            tonic::Response<super::UploadFilesArtifactResponse>,
1290            tonic::Status,
1291        > {
1292            self.inner
1293                .ready()
1294                .await
1295                .map_err(|e| {
1296                    tonic::Status::new(
1297                        tonic::Code::Unknown,
1298                        format!("Service was not ready: {}", e.into()),
1299                    )
1300                })?;
1301            let codec = tonic::codec::ProstCodec::default();
1302            let path = http::uri::PathAndQuery::from_static(
1303                "/api_container_api.ApiContainerService/UploadFilesArtifact",
1304            );
1305            let mut req = request.into_streaming_request();
1306            req.extensions_mut()
1307                .insert(
1308                    GrpcMethod::new(
1309                        "api_container_api.ApiContainerService",
1310                        "UploadFilesArtifact",
1311                    ),
1312                );
1313            self.inner.client_streaming(req, path, codec).await
1314        }
1315        /// Downloads a files artifact from the Kurtosis File System
1316        pub async fn download_files_artifact(
1317            &mut self,
1318            request: impl tonic::IntoRequest<super::DownloadFilesArtifactArgs>,
1319        ) -> std::result::Result<
1320            tonic::Response<tonic::codec::Streaming<super::StreamedDataChunk>>,
1321            tonic::Status,
1322        > {
1323            self.inner
1324                .ready()
1325                .await
1326                .map_err(|e| {
1327                    tonic::Status::new(
1328                        tonic::Code::Unknown,
1329                        format!("Service was not ready: {}", e.into()),
1330                    )
1331                })?;
1332            let codec = tonic::codec::ProstCodec::default();
1333            let path = http::uri::PathAndQuery::from_static(
1334                "/api_container_api.ApiContainerService/DownloadFilesArtifact",
1335            );
1336            let mut req = request.into_request();
1337            req.extensions_mut()
1338                .insert(
1339                    GrpcMethod::new(
1340                        "api_container_api.ApiContainerService",
1341                        "DownloadFilesArtifact",
1342                    ),
1343                );
1344            self.inner.server_streaming(req, path, codec).await
1345        }
1346        /// Tells the API container to download a files artifact from the web to the Kurtosis File System
1347        pub async fn store_web_files_artifact(
1348            &mut self,
1349            request: impl tonic::IntoRequest<super::StoreWebFilesArtifactArgs>,
1350        ) -> std::result::Result<
1351            tonic::Response<super::StoreWebFilesArtifactResponse>,
1352            tonic::Status,
1353        > {
1354            self.inner
1355                .ready()
1356                .await
1357                .map_err(|e| {
1358                    tonic::Status::new(
1359                        tonic::Code::Unknown,
1360                        format!("Service was not ready: {}", e.into()),
1361                    )
1362                })?;
1363            let codec = tonic::codec::ProstCodec::default();
1364            let path = http::uri::PathAndQuery::from_static(
1365                "/api_container_api.ApiContainerService/StoreWebFilesArtifact",
1366            );
1367            let mut req = request.into_request();
1368            req.extensions_mut()
1369                .insert(
1370                    GrpcMethod::new(
1371                        "api_container_api.ApiContainerService",
1372                        "StoreWebFilesArtifact",
1373                    ),
1374                );
1375            self.inner.unary(req, path, codec).await
1376        }
1377        /// Tells the API container to copy a files artifact from a service to the Kurtosis File System
1378        pub async fn store_files_artifact_from_service(
1379            &mut self,
1380            request: impl tonic::IntoRequest<super::StoreFilesArtifactFromServiceArgs>,
1381        ) -> std::result::Result<
1382            tonic::Response<super::StoreFilesArtifactFromServiceResponse>,
1383            tonic::Status,
1384        > {
1385            self.inner
1386                .ready()
1387                .await
1388                .map_err(|e| {
1389                    tonic::Status::new(
1390                        tonic::Code::Unknown,
1391                        format!("Service was not ready: {}", e.into()),
1392                    )
1393                })?;
1394            let codec = tonic::codec::ProstCodec::default();
1395            let path = http::uri::PathAndQuery::from_static(
1396                "/api_container_api.ApiContainerService/StoreFilesArtifactFromService",
1397            );
1398            let mut req = request.into_request();
1399            req.extensions_mut()
1400                .insert(
1401                    GrpcMethod::new(
1402                        "api_container_api.ApiContainerService",
1403                        "StoreFilesArtifactFromService",
1404                    ),
1405                );
1406            self.inner.unary(req, path, codec).await
1407        }
1408        pub async fn list_files_artifact_names_and_uuids(
1409            &mut self,
1410            request: impl tonic::IntoRequest<()>,
1411        ) -> std::result::Result<
1412            tonic::Response<super::ListFilesArtifactNamesAndUuidsResponse>,
1413            tonic::Status,
1414        > {
1415            self.inner
1416                .ready()
1417                .await
1418                .map_err(|e| {
1419                    tonic::Status::new(
1420                        tonic::Code::Unknown,
1421                        format!("Service was not ready: {}", e.into()),
1422                    )
1423                })?;
1424            let codec = tonic::codec::ProstCodec::default();
1425            let path = http::uri::PathAndQuery::from_static(
1426                "/api_container_api.ApiContainerService/ListFilesArtifactNamesAndUuids",
1427            );
1428            let mut req = request.into_request();
1429            req.extensions_mut()
1430                .insert(
1431                    GrpcMethod::new(
1432                        "api_container_api.ApiContainerService",
1433                        "ListFilesArtifactNamesAndUuids",
1434                    ),
1435                );
1436            self.inner.unary(req, path, codec).await
1437        }
1438        pub async fn inspect_files_artifact_contents(
1439            &mut self,
1440            request: impl tonic::IntoRequest<super::InspectFilesArtifactContentsRequest>,
1441        ) -> std::result::Result<
1442            tonic::Response<super::InspectFilesArtifactContentsResponse>,
1443            tonic::Status,
1444        > {
1445            self.inner
1446                .ready()
1447                .await
1448                .map_err(|e| {
1449                    tonic::Status::new(
1450                        tonic::Code::Unknown,
1451                        format!("Service was not ready: {}", e.into()),
1452                    )
1453                })?;
1454            let codec = tonic::codec::ProstCodec::default();
1455            let path = http::uri::PathAndQuery::from_static(
1456                "/api_container_api.ApiContainerService/InspectFilesArtifactContents",
1457            );
1458            let mut req = request.into_request();
1459            req.extensions_mut()
1460                .insert(
1461                    GrpcMethod::new(
1462                        "api_container_api.ApiContainerService",
1463                        "InspectFilesArtifactContents",
1464                    ),
1465                );
1466            self.inner.unary(req, path, codec).await
1467        }
1468        /// User services port forwarding
1469        pub async fn connect_services(
1470            &mut self,
1471            request: impl tonic::IntoRequest<super::ConnectServicesArgs>,
1472        ) -> std::result::Result<
1473            tonic::Response<super::ConnectServicesResponse>,
1474            tonic::Status,
1475        > {
1476            self.inner
1477                .ready()
1478                .await
1479                .map_err(|e| {
1480                    tonic::Status::new(
1481                        tonic::Code::Unknown,
1482                        format!("Service was not ready: {}", e.into()),
1483                    )
1484                })?;
1485            let codec = tonic::codec::ProstCodec::default();
1486            let path = http::uri::PathAndQuery::from_static(
1487                "/api_container_api.ApiContainerService/ConnectServices",
1488            );
1489            let mut req = request.into_request();
1490            req.extensions_mut()
1491                .insert(
1492                    GrpcMethod::new(
1493                        "api_container_api.ApiContainerService",
1494                        "ConnectServices",
1495                    ),
1496                );
1497            self.inner.unary(req, path, codec).await
1498        }
1499        /// Get last Starlark run
1500        pub async fn get_starlark_run(
1501            &mut self,
1502            request: impl tonic::IntoRequest<()>,
1503        ) -> std::result::Result<
1504            tonic::Response<super::GetStarlarkRunResponse>,
1505            tonic::Status,
1506        > {
1507            self.inner
1508                .ready()
1509                .await
1510                .map_err(|e| {
1511                    tonic::Status::new(
1512                        tonic::Code::Unknown,
1513                        format!("Service was not ready: {}", e.into()),
1514                    )
1515                })?;
1516            let codec = tonic::codec::ProstCodec::default();
1517            let path = http::uri::PathAndQuery::from_static(
1518                "/api_container_api.ApiContainerService/GetStarlarkRun",
1519            );
1520            let mut req = request.into_request();
1521            req.extensions_mut()
1522                .insert(
1523                    GrpcMethod::new(
1524                        "api_container_api.ApiContainerService",
1525                        "GetStarlarkRun",
1526                    ),
1527                );
1528            self.inner.unary(req, path, codec).await
1529        }
1530        /// Gets yaml representing the plan the script will execute in an enclave
1531        pub async fn get_starlark_script_plan_yaml(
1532            &mut self,
1533            request: impl tonic::IntoRequest<super::StarlarkScriptPlanYamlArgs>,
1534        ) -> std::result::Result<tonic::Response<super::PlanYaml>, tonic::Status> {
1535            self.inner
1536                .ready()
1537                .await
1538                .map_err(|e| {
1539                    tonic::Status::new(
1540                        tonic::Code::Unknown,
1541                        format!("Service was not ready: {}", e.into()),
1542                    )
1543                })?;
1544            let codec = tonic::codec::ProstCodec::default();
1545            let path = http::uri::PathAndQuery::from_static(
1546                "/api_container_api.ApiContainerService/GetStarlarkScriptPlanYaml",
1547            );
1548            let mut req = request.into_request();
1549            req.extensions_mut()
1550                .insert(
1551                    GrpcMethod::new(
1552                        "api_container_api.ApiContainerService",
1553                        "GetStarlarkScriptPlanYaml",
1554                    ),
1555                );
1556            self.inner.unary(req, path, codec).await
1557        }
1558        /// Gets yaml representing the plan the package will execute in an enclave
1559        pub async fn get_starlark_package_plan_yaml(
1560            &mut self,
1561            request: impl tonic::IntoRequest<super::StarlarkPackagePlanYamlArgs>,
1562        ) -> std::result::Result<tonic::Response<super::PlanYaml>, tonic::Status> {
1563            self.inner
1564                .ready()
1565                .await
1566                .map_err(|e| {
1567                    tonic::Status::new(
1568                        tonic::Code::Unknown,
1569                        format!("Service was not ready: {}", e.into()),
1570                    )
1571                })?;
1572            let codec = tonic::codec::ProstCodec::default();
1573            let path = http::uri::PathAndQuery::from_static(
1574                "/api_container_api.ApiContainerService/GetStarlarkPackagePlanYaml",
1575            );
1576            let mut req = request.into_request();
1577            req.extensions_mut()
1578                .insert(
1579                    GrpcMethod::new(
1580                        "api_container_api.ApiContainerService",
1581                        "GetStarlarkPackagePlanYaml",
1582                    ),
1583                );
1584            self.inner.unary(req, path, codec).await
1585        }
1586    }
1587}
1588/// Generated server implementations.
1589pub mod api_container_service_server {
1590    #![allow(unused_variables, dead_code, missing_docs, clippy::let_unit_value)]
1591    use tonic::codegen::*;
1592    /// Generated trait containing gRPC methods that should be implemented for use with ApiContainerServiceServer.
1593    #[async_trait]
1594    pub trait ApiContainerService: Send + Sync + 'static {
1595        /// Server streaming response type for the RunStarlarkScript method.
1596        type RunStarlarkScriptStream: futures_core::Stream<
1597                Item = std::result::Result<super::StarlarkRunResponseLine, tonic::Status>,
1598            >
1599            + Send
1600            + 'static;
1601        /// Executes a Starlark script on the user's behalf
1602        async fn run_starlark_script(
1603            &self,
1604            request: tonic::Request<super::RunStarlarkScriptArgs>,
1605        ) -> std::result::Result<
1606            tonic::Response<Self::RunStarlarkScriptStream>,
1607            tonic::Status,
1608        >;
1609        /// Uploads a Starlark package. This step is required before the package can be executed with RunStarlarkPackage
1610        async fn upload_starlark_package(
1611            &self,
1612            request: tonic::Request<tonic::Streaming<super::StreamedDataChunk>>,
1613        ) -> std::result::Result<tonic::Response<()>, tonic::Status>;
1614        /// Server streaming response type for the RunStarlarkPackage method.
1615        type RunStarlarkPackageStream: futures_core::Stream<
1616                Item = std::result::Result<super::StarlarkRunResponseLine, tonic::Status>,
1617            >
1618            + Send
1619            + 'static;
1620        /// Executes a Starlark script on the user's behalf
1621        async fn run_starlark_package(
1622            &self,
1623            request: tonic::Request<super::RunStarlarkPackageArgs>,
1624        ) -> std::result::Result<
1625            tonic::Response<Self::RunStarlarkPackageStream>,
1626            tonic::Status,
1627        >;
1628        /// Returns the IDs of the current services in the enclave
1629        async fn get_services(
1630            &self,
1631            request: tonic::Request<super::GetServicesArgs>,
1632        ) -> std::result::Result<
1633            tonic::Response<super::GetServicesResponse>,
1634            tonic::Status,
1635        >;
1636        /// Returns information about all existing & historical services
1637        async fn get_existing_and_historical_service_identifiers(
1638            &self,
1639            request: tonic::Request<()>,
1640        ) -> std::result::Result<
1641            tonic::Response<super::GetExistingAndHistoricalServiceIdentifiersResponse>,
1642            tonic::Status,
1643        >;
1644        /// Executes the given command inside a running container
1645        async fn exec_command(
1646            &self,
1647            request: tonic::Request<super::ExecCommandArgs>,
1648        ) -> std::result::Result<
1649            tonic::Response<super::ExecCommandResponse>,
1650            tonic::Status,
1651        >;
1652        /// Block until the given HTTP endpoint returns available, calling it through a HTTP Get request
1653        async fn wait_for_http_get_endpoint_availability(
1654            &self,
1655            request: tonic::Request<super::WaitForHttpGetEndpointAvailabilityArgs>,
1656        ) -> std::result::Result<tonic::Response<()>, tonic::Status>;
1657        /// Block until the given HTTP endpoint returns available, calling it through a HTTP Post request
1658        async fn wait_for_http_post_endpoint_availability(
1659            &self,
1660            request: tonic::Request<super::WaitForHttpPostEndpointAvailabilityArgs>,
1661        ) -> std::result::Result<tonic::Response<()>, tonic::Status>;
1662        /// Uploads a files artifact to the Kurtosis File System
1663        async fn upload_files_artifact(
1664            &self,
1665            request: tonic::Request<tonic::Streaming<super::StreamedDataChunk>>,
1666        ) -> std::result::Result<
1667            tonic::Response<super::UploadFilesArtifactResponse>,
1668            tonic::Status,
1669        >;
1670        /// Server streaming response type for the DownloadFilesArtifact method.
1671        type DownloadFilesArtifactStream: futures_core::Stream<
1672                Item = std::result::Result<super::StreamedDataChunk, tonic::Status>,
1673            >
1674            + Send
1675            + 'static;
1676        /// Downloads a files artifact from the Kurtosis File System
1677        async fn download_files_artifact(
1678            &self,
1679            request: tonic::Request<super::DownloadFilesArtifactArgs>,
1680        ) -> std::result::Result<
1681            tonic::Response<Self::DownloadFilesArtifactStream>,
1682            tonic::Status,
1683        >;
1684        /// Tells the API container to download a files artifact from the web to the Kurtosis File System
1685        async fn store_web_files_artifact(
1686            &self,
1687            request: tonic::Request<super::StoreWebFilesArtifactArgs>,
1688        ) -> std::result::Result<
1689            tonic::Response<super::StoreWebFilesArtifactResponse>,
1690            tonic::Status,
1691        >;
1692        /// Tells the API container to copy a files artifact from a service to the Kurtosis File System
1693        async fn store_files_artifact_from_service(
1694            &self,
1695            request: tonic::Request<super::StoreFilesArtifactFromServiceArgs>,
1696        ) -> std::result::Result<
1697            tonic::Response<super::StoreFilesArtifactFromServiceResponse>,
1698            tonic::Status,
1699        >;
1700        async fn list_files_artifact_names_and_uuids(
1701            &self,
1702            request: tonic::Request<()>,
1703        ) -> std::result::Result<
1704            tonic::Response<super::ListFilesArtifactNamesAndUuidsResponse>,
1705            tonic::Status,
1706        >;
1707        async fn inspect_files_artifact_contents(
1708            &self,
1709            request: tonic::Request<super::InspectFilesArtifactContentsRequest>,
1710        ) -> std::result::Result<
1711            tonic::Response<super::InspectFilesArtifactContentsResponse>,
1712            tonic::Status,
1713        >;
1714        /// User services port forwarding
1715        async fn connect_services(
1716            &self,
1717            request: tonic::Request<super::ConnectServicesArgs>,
1718        ) -> std::result::Result<
1719            tonic::Response<super::ConnectServicesResponse>,
1720            tonic::Status,
1721        >;
1722        /// Get last Starlark run
1723        async fn get_starlark_run(
1724            &self,
1725            request: tonic::Request<()>,
1726        ) -> std::result::Result<
1727            tonic::Response<super::GetStarlarkRunResponse>,
1728            tonic::Status,
1729        >;
1730        /// Gets yaml representing the plan the script will execute in an enclave
1731        async fn get_starlark_script_plan_yaml(
1732            &self,
1733            request: tonic::Request<super::StarlarkScriptPlanYamlArgs>,
1734        ) -> std::result::Result<tonic::Response<super::PlanYaml>, tonic::Status>;
1735        /// Gets yaml representing the plan the package will execute in an enclave
1736        async fn get_starlark_package_plan_yaml(
1737            &self,
1738            request: tonic::Request<super::StarlarkPackagePlanYamlArgs>,
1739        ) -> std::result::Result<tonic::Response<super::PlanYaml>, tonic::Status>;
1740    }
1741    #[derive(Debug)]
1742    pub struct ApiContainerServiceServer<T: ApiContainerService> {
1743        inner: _Inner<T>,
1744        accept_compression_encodings: EnabledCompressionEncodings,
1745        send_compression_encodings: EnabledCompressionEncodings,
1746        max_decoding_message_size: Option<usize>,
1747        max_encoding_message_size: Option<usize>,
1748    }
1749    struct _Inner<T>(Arc<T>);
1750    impl<T: ApiContainerService> ApiContainerServiceServer<T> {
1751        pub fn new(inner: T) -> Self {
1752            Self::from_arc(Arc::new(inner))
1753        }
1754        pub fn from_arc(inner: Arc<T>) -> Self {
1755            let inner = _Inner(inner);
1756            Self {
1757                inner,
1758                accept_compression_encodings: Default::default(),
1759                send_compression_encodings: Default::default(),
1760                max_decoding_message_size: None,
1761                max_encoding_message_size: None,
1762            }
1763        }
1764        pub fn with_interceptor<F>(
1765            inner: T,
1766            interceptor: F,
1767        ) -> InterceptedService<Self, F>
1768        where
1769            F: tonic::service::Interceptor,
1770        {
1771            InterceptedService::new(Self::new(inner), interceptor)
1772        }
1773        /// Enable decompressing requests with the given encoding.
1774        #[must_use]
1775        pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
1776            self.accept_compression_encodings.enable(encoding);
1777            self
1778        }
1779        /// Compress responses with the given encoding, if the client supports it.
1780        #[must_use]
1781        pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
1782            self.send_compression_encodings.enable(encoding);
1783            self
1784        }
1785        /// Limits the maximum size of a decoded message.
1786        ///
1787        /// Default: `4MB`
1788        #[must_use]
1789        pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
1790            self.max_decoding_message_size = Some(limit);
1791            self
1792        }
1793        /// Limits the maximum size of an encoded message.
1794        ///
1795        /// Default: `usize::MAX`
1796        #[must_use]
1797        pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
1798            self.max_encoding_message_size = Some(limit);
1799            self
1800        }
1801    }
1802    impl<T, B> tonic::codegen::Service<http::Request<B>> for ApiContainerServiceServer<T>
1803    where
1804        T: ApiContainerService,
1805        B: Body + Send + 'static,
1806        B::Error: Into<StdError> + Send + 'static,
1807    {
1808        type Response = http::Response<tonic::body::BoxBody>;
1809        type Error = std::convert::Infallible;
1810        type Future = BoxFuture<Self::Response, Self::Error>;
1811        fn poll_ready(
1812            &mut self,
1813            _cx: &mut Context<'_>,
1814        ) -> Poll<std::result::Result<(), Self::Error>> {
1815            Poll::Ready(Ok(()))
1816        }
1817        fn call(&mut self, req: http::Request<B>) -> Self::Future {
1818            let inner = self.inner.clone();
1819            match req.uri().path() {
1820                "/api_container_api.ApiContainerService/RunStarlarkScript" => {
1821                    #[allow(non_camel_case_types)]
1822                    struct RunStarlarkScriptSvc<T: ApiContainerService>(pub Arc<T>);
1823                    impl<
1824                        T: ApiContainerService,
1825                    > tonic::server::ServerStreamingService<super::RunStarlarkScriptArgs>
1826                    for RunStarlarkScriptSvc<T> {
1827                        type Response = super::StarlarkRunResponseLine;
1828                        type ResponseStream = T::RunStarlarkScriptStream;
1829                        type Future = BoxFuture<
1830                            tonic::Response<Self::ResponseStream>,
1831                            tonic::Status,
1832                        >;
1833                        fn call(
1834                            &mut self,
1835                            request: tonic::Request<super::RunStarlarkScriptArgs>,
1836                        ) -> Self::Future {
1837                            let inner = Arc::clone(&self.0);
1838                            let fut = async move {
1839                                (*inner).run_starlark_script(request).await
1840                            };
1841                            Box::pin(fut)
1842                        }
1843                    }
1844                    let accept_compression_encodings = self.accept_compression_encodings;
1845                    let send_compression_encodings = self.send_compression_encodings;
1846                    let max_decoding_message_size = self.max_decoding_message_size;
1847                    let max_encoding_message_size = self.max_encoding_message_size;
1848                    let inner = self.inner.clone();
1849                    let fut = async move {
1850                        let inner = inner.0;
1851                        let method = RunStarlarkScriptSvc(inner);
1852                        let codec = tonic::codec::ProstCodec::default();
1853                        let mut grpc = tonic::server::Grpc::new(codec)
1854                            .apply_compression_config(
1855                                accept_compression_encodings,
1856                                send_compression_encodings,
1857                            )
1858                            .apply_max_message_size_config(
1859                                max_decoding_message_size,
1860                                max_encoding_message_size,
1861                            );
1862                        let res = grpc.server_streaming(method, req).await;
1863                        Ok(res)
1864                    };
1865                    Box::pin(fut)
1866                }
1867                "/api_container_api.ApiContainerService/UploadStarlarkPackage" => {
1868                    #[allow(non_camel_case_types)]
1869                    struct UploadStarlarkPackageSvc<T: ApiContainerService>(pub Arc<T>);
1870                    impl<
1871                        T: ApiContainerService,
1872                    > tonic::server::ClientStreamingService<super::StreamedDataChunk>
1873                    for UploadStarlarkPackageSvc<T> {
1874                        type Response = ();
1875                        type Future = BoxFuture<
1876                            tonic::Response<Self::Response>,
1877                            tonic::Status,
1878                        >;
1879                        fn call(
1880                            &mut self,
1881                            request: tonic::Request<
1882                                tonic::Streaming<super::StreamedDataChunk>,
1883                            >,
1884                        ) -> Self::Future {
1885                            let inner = Arc::clone(&self.0);
1886                            let fut = async move {
1887                                (*inner).upload_starlark_package(request).await
1888                            };
1889                            Box::pin(fut)
1890                        }
1891                    }
1892                    let accept_compression_encodings = self.accept_compression_encodings;
1893                    let send_compression_encodings = self.send_compression_encodings;
1894                    let max_decoding_message_size = self.max_decoding_message_size;
1895                    let max_encoding_message_size = self.max_encoding_message_size;
1896                    let inner = self.inner.clone();
1897                    let fut = async move {
1898                        let inner = inner.0;
1899                        let method = UploadStarlarkPackageSvc(inner);
1900                        let codec = tonic::codec::ProstCodec::default();
1901                        let mut grpc = tonic::server::Grpc::new(codec)
1902                            .apply_compression_config(
1903                                accept_compression_encodings,
1904                                send_compression_encodings,
1905                            )
1906                            .apply_max_message_size_config(
1907                                max_decoding_message_size,
1908                                max_encoding_message_size,
1909                            );
1910                        let res = grpc.client_streaming(method, req).await;
1911                        Ok(res)
1912                    };
1913                    Box::pin(fut)
1914                }
1915                "/api_container_api.ApiContainerService/RunStarlarkPackage" => {
1916                    #[allow(non_camel_case_types)]
1917                    struct RunStarlarkPackageSvc<T: ApiContainerService>(pub Arc<T>);
1918                    impl<
1919                        T: ApiContainerService,
1920                    > tonic::server::ServerStreamingService<
1921                        super::RunStarlarkPackageArgs,
1922                    > for RunStarlarkPackageSvc<T> {
1923                        type Response = super::StarlarkRunResponseLine;
1924                        type ResponseStream = T::RunStarlarkPackageStream;
1925                        type Future = BoxFuture<
1926                            tonic::Response<Self::ResponseStream>,
1927                            tonic::Status,
1928                        >;
1929                        fn call(
1930                            &mut self,
1931                            request: tonic::Request<super::RunStarlarkPackageArgs>,
1932                        ) -> Self::Future {
1933                            let inner = Arc::clone(&self.0);
1934                            let fut = async move {
1935                                (*inner).run_starlark_package(request).await
1936                            };
1937                            Box::pin(fut)
1938                        }
1939                    }
1940                    let accept_compression_encodings = self.accept_compression_encodings;
1941                    let send_compression_encodings = self.send_compression_encodings;
1942                    let max_decoding_message_size = self.max_decoding_message_size;
1943                    let max_encoding_message_size = self.max_encoding_message_size;
1944                    let inner = self.inner.clone();
1945                    let fut = async move {
1946                        let inner = inner.0;
1947                        let method = RunStarlarkPackageSvc(inner);
1948                        let codec = tonic::codec::ProstCodec::default();
1949                        let mut grpc = tonic::server::Grpc::new(codec)
1950                            .apply_compression_config(
1951                                accept_compression_encodings,
1952                                send_compression_encodings,
1953                            )
1954                            .apply_max_message_size_config(
1955                                max_decoding_message_size,
1956                                max_encoding_message_size,
1957                            );
1958                        let res = grpc.server_streaming(method, req).await;
1959                        Ok(res)
1960                    };
1961                    Box::pin(fut)
1962                }
1963                "/api_container_api.ApiContainerService/GetServices" => {
1964                    #[allow(non_camel_case_types)]
1965                    struct GetServicesSvc<T: ApiContainerService>(pub Arc<T>);
1966                    impl<
1967                        T: ApiContainerService,
1968                    > tonic::server::UnaryService<super::GetServicesArgs>
1969                    for GetServicesSvc<T> {
1970                        type Response = super::GetServicesResponse;
1971                        type Future = BoxFuture<
1972                            tonic::Response<Self::Response>,
1973                            tonic::Status,
1974                        >;
1975                        fn call(
1976                            &mut self,
1977                            request: tonic::Request<super::GetServicesArgs>,
1978                        ) -> Self::Future {
1979                            let inner = Arc::clone(&self.0);
1980                            let fut = async move {
1981                                (*inner).get_services(request).await
1982                            };
1983                            Box::pin(fut)
1984                        }
1985                    }
1986                    let accept_compression_encodings = self.accept_compression_encodings;
1987                    let send_compression_encodings = self.send_compression_encodings;
1988                    let max_decoding_message_size = self.max_decoding_message_size;
1989                    let max_encoding_message_size = self.max_encoding_message_size;
1990                    let inner = self.inner.clone();
1991                    let fut = async move {
1992                        let inner = inner.0;
1993                        let method = GetServicesSvc(inner);
1994                        let codec = tonic::codec::ProstCodec::default();
1995                        let mut grpc = tonic::server::Grpc::new(codec)
1996                            .apply_compression_config(
1997                                accept_compression_encodings,
1998                                send_compression_encodings,
1999                            )
2000                            .apply_max_message_size_config(
2001                                max_decoding_message_size,
2002                                max_encoding_message_size,
2003                            );
2004                        let res = grpc.unary(method, req).await;
2005                        Ok(res)
2006                    };
2007                    Box::pin(fut)
2008                }
2009                "/api_container_api.ApiContainerService/GetExistingAndHistoricalServiceIdentifiers" => {
2010                    #[allow(non_camel_case_types)]
2011                    struct GetExistingAndHistoricalServiceIdentifiersSvc<
2012                        T: ApiContainerService,
2013                    >(
2014                        pub Arc<T>,
2015                    );
2016                    impl<T: ApiContainerService> tonic::server::UnaryService<()>
2017                    for GetExistingAndHistoricalServiceIdentifiersSvc<T> {
2018                        type Response = super::GetExistingAndHistoricalServiceIdentifiersResponse;
2019                        type Future = BoxFuture<
2020                            tonic::Response<Self::Response>,
2021                            tonic::Status,
2022                        >;
2023                        fn call(&mut self, request: tonic::Request<()>) -> Self::Future {
2024                            let inner = Arc::clone(&self.0);
2025                            let fut = async move {
2026                                (*inner)
2027                                    .get_existing_and_historical_service_identifiers(request)
2028                                    .await
2029                            };
2030                            Box::pin(fut)
2031                        }
2032                    }
2033                    let accept_compression_encodings = self.accept_compression_encodings;
2034                    let send_compression_encodings = self.send_compression_encodings;
2035                    let max_decoding_message_size = self.max_decoding_message_size;
2036                    let max_encoding_message_size = self.max_encoding_message_size;
2037                    let inner = self.inner.clone();
2038                    let fut = async move {
2039                        let inner = inner.0;
2040                        let method = GetExistingAndHistoricalServiceIdentifiersSvc(
2041                            inner,
2042                        );
2043                        let codec = tonic::codec::ProstCodec::default();
2044                        let mut grpc = tonic::server::Grpc::new(codec)
2045                            .apply_compression_config(
2046                                accept_compression_encodings,
2047                                send_compression_encodings,
2048                            )
2049                            .apply_max_message_size_config(
2050                                max_decoding_message_size,
2051                                max_encoding_message_size,
2052                            );
2053                        let res = grpc.unary(method, req).await;
2054                        Ok(res)
2055                    };
2056                    Box::pin(fut)
2057                }
2058                "/api_container_api.ApiContainerService/ExecCommand" => {
2059                    #[allow(non_camel_case_types)]
2060                    struct ExecCommandSvc<T: ApiContainerService>(pub Arc<T>);
2061                    impl<
2062                        T: ApiContainerService,
2063                    > tonic::server::UnaryService<super::ExecCommandArgs>
2064                    for ExecCommandSvc<T> {
2065                        type Response = super::ExecCommandResponse;
2066                        type Future = BoxFuture<
2067                            tonic::Response<Self::Response>,
2068                            tonic::Status,
2069                        >;
2070                        fn call(
2071                            &mut self,
2072                            request: tonic::Request<super::ExecCommandArgs>,
2073                        ) -> Self::Future {
2074                            let inner = Arc::clone(&self.0);
2075                            let fut = async move {
2076                                (*inner).exec_command(request).await
2077                            };
2078                            Box::pin(fut)
2079                        }
2080                    }
2081                    let accept_compression_encodings = self.accept_compression_encodings;
2082                    let send_compression_encodings = self.send_compression_encodings;
2083                    let max_decoding_message_size = self.max_decoding_message_size;
2084                    let max_encoding_message_size = self.max_encoding_message_size;
2085                    let inner = self.inner.clone();
2086                    let fut = async move {
2087                        let inner = inner.0;
2088                        let method = ExecCommandSvc(inner);
2089                        let codec = tonic::codec::ProstCodec::default();
2090                        let mut grpc = tonic::server::Grpc::new(codec)
2091                            .apply_compression_config(
2092                                accept_compression_encodings,
2093                                send_compression_encodings,
2094                            )
2095                            .apply_max_message_size_config(
2096                                max_decoding_message_size,
2097                                max_encoding_message_size,
2098                            );
2099                        let res = grpc.unary(method, req).await;
2100                        Ok(res)
2101                    };
2102                    Box::pin(fut)
2103                }
2104                "/api_container_api.ApiContainerService/WaitForHttpGetEndpointAvailability" => {
2105                    #[allow(non_camel_case_types)]
2106                    struct WaitForHttpGetEndpointAvailabilitySvc<T: ApiContainerService>(
2107                        pub Arc<T>,
2108                    );
2109                    impl<
2110                        T: ApiContainerService,
2111                    > tonic::server::UnaryService<
2112                        super::WaitForHttpGetEndpointAvailabilityArgs,
2113                    > for WaitForHttpGetEndpointAvailabilitySvc<T> {
2114                        type Response = ();
2115                        type Future = BoxFuture<
2116                            tonic::Response<Self::Response>,
2117                            tonic::Status,
2118                        >;
2119                        fn call(
2120                            &mut self,
2121                            request: tonic::Request<
2122                                super::WaitForHttpGetEndpointAvailabilityArgs,
2123                            >,
2124                        ) -> Self::Future {
2125                            let inner = Arc::clone(&self.0);
2126                            let fut = async move {
2127                                (*inner)
2128                                    .wait_for_http_get_endpoint_availability(request)
2129                                    .await
2130                            };
2131                            Box::pin(fut)
2132                        }
2133                    }
2134                    let accept_compression_encodings = self.accept_compression_encodings;
2135                    let send_compression_encodings = self.send_compression_encodings;
2136                    let max_decoding_message_size = self.max_decoding_message_size;
2137                    let max_encoding_message_size = self.max_encoding_message_size;
2138                    let inner = self.inner.clone();
2139                    let fut = async move {
2140                        let inner = inner.0;
2141                        let method = WaitForHttpGetEndpointAvailabilitySvc(inner);
2142                        let codec = tonic::codec::ProstCodec::default();
2143                        let mut grpc = tonic::server::Grpc::new(codec)
2144                            .apply_compression_config(
2145                                accept_compression_encodings,
2146                                send_compression_encodings,
2147                            )
2148                            .apply_max_message_size_config(
2149                                max_decoding_message_size,
2150                                max_encoding_message_size,
2151                            );
2152                        let res = grpc.unary(method, req).await;
2153                        Ok(res)
2154                    };
2155                    Box::pin(fut)
2156                }
2157                "/api_container_api.ApiContainerService/WaitForHttpPostEndpointAvailability" => {
2158                    #[allow(non_camel_case_types)]
2159                    struct WaitForHttpPostEndpointAvailabilitySvc<
2160                        T: ApiContainerService,
2161                    >(
2162                        pub Arc<T>,
2163                    );
2164                    impl<
2165                        T: ApiContainerService,
2166                    > tonic::server::UnaryService<
2167                        super::WaitForHttpPostEndpointAvailabilityArgs,
2168                    > for WaitForHttpPostEndpointAvailabilitySvc<T> {
2169                        type Response = ();
2170                        type Future = BoxFuture<
2171                            tonic::Response<Self::Response>,
2172                            tonic::Status,
2173                        >;
2174                        fn call(
2175                            &mut self,
2176                            request: tonic::Request<
2177                                super::WaitForHttpPostEndpointAvailabilityArgs,
2178                            >,
2179                        ) -> Self::Future {
2180                            let inner = Arc::clone(&self.0);
2181                            let fut = async move {
2182                                (*inner)
2183                                    .wait_for_http_post_endpoint_availability(request)
2184                                    .await
2185                            };
2186                            Box::pin(fut)
2187                        }
2188                    }
2189                    let accept_compression_encodings = self.accept_compression_encodings;
2190                    let send_compression_encodings = self.send_compression_encodings;
2191                    let max_decoding_message_size = self.max_decoding_message_size;
2192                    let max_encoding_message_size = self.max_encoding_message_size;
2193                    let inner = self.inner.clone();
2194                    let fut = async move {
2195                        let inner = inner.0;
2196                        let method = WaitForHttpPostEndpointAvailabilitySvc(inner);
2197                        let codec = tonic::codec::ProstCodec::default();
2198                        let mut grpc = tonic::server::Grpc::new(codec)
2199                            .apply_compression_config(
2200                                accept_compression_encodings,
2201                                send_compression_encodings,
2202                            )
2203                            .apply_max_message_size_config(
2204                                max_decoding_message_size,
2205                                max_encoding_message_size,
2206                            );
2207                        let res = grpc.unary(method, req).await;
2208                        Ok(res)
2209                    };
2210                    Box::pin(fut)
2211                }
2212                "/api_container_api.ApiContainerService/UploadFilesArtifact" => {
2213                    #[allow(non_camel_case_types)]
2214                    struct UploadFilesArtifactSvc<T: ApiContainerService>(pub Arc<T>);
2215                    impl<
2216                        T: ApiContainerService,
2217                    > tonic::server::ClientStreamingService<super::StreamedDataChunk>
2218                    for UploadFilesArtifactSvc<T> {
2219                        type Response = super::UploadFilesArtifactResponse;
2220                        type Future = BoxFuture<
2221                            tonic::Response<Self::Response>,
2222                            tonic::Status,
2223                        >;
2224                        fn call(
2225                            &mut self,
2226                            request: tonic::Request<
2227                                tonic::Streaming<super::StreamedDataChunk>,
2228                            >,
2229                        ) -> Self::Future {
2230                            let inner = Arc::clone(&self.0);
2231                            let fut = async move {
2232                                (*inner).upload_files_artifact(request).await
2233                            };
2234                            Box::pin(fut)
2235                        }
2236                    }
2237                    let accept_compression_encodings = self.accept_compression_encodings;
2238                    let send_compression_encodings = self.send_compression_encodings;
2239                    let max_decoding_message_size = self.max_decoding_message_size;
2240                    let max_encoding_message_size = self.max_encoding_message_size;
2241                    let inner = self.inner.clone();
2242                    let fut = async move {
2243                        let inner = inner.0;
2244                        let method = UploadFilesArtifactSvc(inner);
2245                        let codec = tonic::codec::ProstCodec::default();
2246                        let mut grpc = tonic::server::Grpc::new(codec)
2247                            .apply_compression_config(
2248                                accept_compression_encodings,
2249                                send_compression_encodings,
2250                            )
2251                            .apply_max_message_size_config(
2252                                max_decoding_message_size,
2253                                max_encoding_message_size,
2254                            );
2255                        let res = grpc.client_streaming(method, req).await;
2256                        Ok(res)
2257                    };
2258                    Box::pin(fut)
2259                }
2260                "/api_container_api.ApiContainerService/DownloadFilesArtifact" => {
2261                    #[allow(non_camel_case_types)]
2262                    struct DownloadFilesArtifactSvc<T: ApiContainerService>(pub Arc<T>);
2263                    impl<
2264                        T: ApiContainerService,
2265                    > tonic::server::ServerStreamingService<
2266                        super::DownloadFilesArtifactArgs,
2267                    > for DownloadFilesArtifactSvc<T> {
2268                        type Response = super::StreamedDataChunk;
2269                        type ResponseStream = T::DownloadFilesArtifactStream;
2270                        type Future = BoxFuture<
2271                            tonic::Response<Self::ResponseStream>,
2272                            tonic::Status,
2273                        >;
2274                        fn call(
2275                            &mut self,
2276                            request: tonic::Request<super::DownloadFilesArtifactArgs>,
2277                        ) -> Self::Future {
2278                            let inner = Arc::clone(&self.0);
2279                            let fut = async move {
2280                                (*inner).download_files_artifact(request).await
2281                            };
2282                            Box::pin(fut)
2283                        }
2284                    }
2285                    let accept_compression_encodings = self.accept_compression_encodings;
2286                    let send_compression_encodings = self.send_compression_encodings;
2287                    let max_decoding_message_size = self.max_decoding_message_size;
2288                    let max_encoding_message_size = self.max_encoding_message_size;
2289                    let inner = self.inner.clone();
2290                    let fut = async move {
2291                        let inner = inner.0;
2292                        let method = DownloadFilesArtifactSvc(inner);
2293                        let codec = tonic::codec::ProstCodec::default();
2294                        let mut grpc = tonic::server::Grpc::new(codec)
2295                            .apply_compression_config(
2296                                accept_compression_encodings,
2297                                send_compression_encodings,
2298                            )
2299                            .apply_max_message_size_config(
2300                                max_decoding_message_size,
2301                                max_encoding_message_size,
2302                            );
2303                        let res = grpc.server_streaming(method, req).await;
2304                        Ok(res)
2305                    };
2306                    Box::pin(fut)
2307                }
2308                "/api_container_api.ApiContainerService/StoreWebFilesArtifact" => {
2309                    #[allow(non_camel_case_types)]
2310                    struct StoreWebFilesArtifactSvc<T: ApiContainerService>(pub Arc<T>);
2311                    impl<
2312                        T: ApiContainerService,
2313                    > tonic::server::UnaryService<super::StoreWebFilesArtifactArgs>
2314                    for StoreWebFilesArtifactSvc<T> {
2315                        type Response = super::StoreWebFilesArtifactResponse;
2316                        type Future = BoxFuture<
2317                            tonic::Response<Self::Response>,
2318                            tonic::Status,
2319                        >;
2320                        fn call(
2321                            &mut self,
2322                            request: tonic::Request<super::StoreWebFilesArtifactArgs>,
2323                        ) -> Self::Future {
2324                            let inner = Arc::clone(&self.0);
2325                            let fut = async move {
2326                                (*inner).store_web_files_artifact(request).await
2327                            };
2328                            Box::pin(fut)
2329                        }
2330                    }
2331                    let accept_compression_encodings = self.accept_compression_encodings;
2332                    let send_compression_encodings = self.send_compression_encodings;
2333                    let max_decoding_message_size = self.max_decoding_message_size;
2334                    let max_encoding_message_size = self.max_encoding_message_size;
2335                    let inner = self.inner.clone();
2336                    let fut = async move {
2337                        let inner = inner.0;
2338                        let method = StoreWebFilesArtifactSvc(inner);
2339                        let codec = tonic::codec::ProstCodec::default();
2340                        let mut grpc = tonic::server::Grpc::new(codec)
2341                            .apply_compression_config(
2342                                accept_compression_encodings,
2343                                send_compression_encodings,
2344                            )
2345                            .apply_max_message_size_config(
2346                                max_decoding_message_size,
2347                                max_encoding_message_size,
2348                            );
2349                        let res = grpc.unary(method, req).await;
2350                        Ok(res)
2351                    };
2352                    Box::pin(fut)
2353                }
2354                "/api_container_api.ApiContainerService/StoreFilesArtifactFromService" => {
2355                    #[allow(non_camel_case_types)]
2356                    struct StoreFilesArtifactFromServiceSvc<T: ApiContainerService>(
2357                        pub Arc<T>,
2358                    );
2359                    impl<
2360                        T: ApiContainerService,
2361                    > tonic::server::UnaryService<
2362                        super::StoreFilesArtifactFromServiceArgs,
2363                    > for StoreFilesArtifactFromServiceSvc<T> {
2364                        type Response = super::StoreFilesArtifactFromServiceResponse;
2365                        type Future = BoxFuture<
2366                            tonic::Response<Self::Response>,
2367                            tonic::Status,
2368                        >;
2369                        fn call(
2370                            &mut self,
2371                            request: tonic::Request<
2372                                super::StoreFilesArtifactFromServiceArgs,
2373                            >,
2374                        ) -> Self::Future {
2375                            let inner = Arc::clone(&self.0);
2376                            let fut = async move {
2377                                (*inner).store_files_artifact_from_service(request).await
2378                            };
2379                            Box::pin(fut)
2380                        }
2381                    }
2382                    let accept_compression_encodings = self.accept_compression_encodings;
2383                    let send_compression_encodings = self.send_compression_encodings;
2384                    let max_decoding_message_size = self.max_decoding_message_size;
2385                    let max_encoding_message_size = self.max_encoding_message_size;
2386                    let inner = self.inner.clone();
2387                    let fut = async move {
2388                        let inner = inner.0;
2389                        let method = StoreFilesArtifactFromServiceSvc(inner);
2390                        let codec = tonic::codec::ProstCodec::default();
2391                        let mut grpc = tonic::server::Grpc::new(codec)
2392                            .apply_compression_config(
2393                                accept_compression_encodings,
2394                                send_compression_encodings,
2395                            )
2396                            .apply_max_message_size_config(
2397                                max_decoding_message_size,
2398                                max_encoding_message_size,
2399                            );
2400                        let res = grpc.unary(method, req).await;
2401                        Ok(res)
2402                    };
2403                    Box::pin(fut)
2404                }
2405                "/api_container_api.ApiContainerService/ListFilesArtifactNamesAndUuids" => {
2406                    #[allow(non_camel_case_types)]
2407                    struct ListFilesArtifactNamesAndUuidsSvc<T: ApiContainerService>(
2408                        pub Arc<T>,
2409                    );
2410                    impl<T: ApiContainerService> tonic::server::UnaryService<()>
2411                    for ListFilesArtifactNamesAndUuidsSvc<T> {
2412                        type Response = super::ListFilesArtifactNamesAndUuidsResponse;
2413                        type Future = BoxFuture<
2414                            tonic::Response<Self::Response>,
2415                            tonic::Status,
2416                        >;
2417                        fn call(&mut self, request: tonic::Request<()>) -> Self::Future {
2418                            let inner = Arc::clone(&self.0);
2419                            let fut = async move {
2420                                (*inner).list_files_artifact_names_and_uuids(request).await
2421                            };
2422                            Box::pin(fut)
2423                        }
2424                    }
2425                    let accept_compression_encodings = self.accept_compression_encodings;
2426                    let send_compression_encodings = self.send_compression_encodings;
2427                    let max_decoding_message_size = self.max_decoding_message_size;
2428                    let max_encoding_message_size = self.max_encoding_message_size;
2429                    let inner = self.inner.clone();
2430                    let fut = async move {
2431                        let inner = inner.0;
2432                        let method = ListFilesArtifactNamesAndUuidsSvc(inner);
2433                        let codec = tonic::codec::ProstCodec::default();
2434                        let mut grpc = tonic::server::Grpc::new(codec)
2435                            .apply_compression_config(
2436                                accept_compression_encodings,
2437                                send_compression_encodings,
2438                            )
2439                            .apply_max_message_size_config(
2440                                max_decoding_message_size,
2441                                max_encoding_message_size,
2442                            );
2443                        let res = grpc.unary(method, req).await;
2444                        Ok(res)
2445                    };
2446                    Box::pin(fut)
2447                }
2448                "/api_container_api.ApiContainerService/InspectFilesArtifactContents" => {
2449                    #[allow(non_camel_case_types)]
2450                    struct InspectFilesArtifactContentsSvc<T: ApiContainerService>(
2451                        pub Arc<T>,
2452                    );
2453                    impl<
2454                        T: ApiContainerService,
2455                    > tonic::server::UnaryService<
2456                        super::InspectFilesArtifactContentsRequest,
2457                    > for InspectFilesArtifactContentsSvc<T> {
2458                        type Response = super::InspectFilesArtifactContentsResponse;
2459                        type Future = BoxFuture<
2460                            tonic::Response<Self::Response>,
2461                            tonic::Status,
2462                        >;
2463                        fn call(
2464                            &mut self,
2465                            request: tonic::Request<
2466                                super::InspectFilesArtifactContentsRequest,
2467                            >,
2468                        ) -> Self::Future {
2469                            let inner = Arc::clone(&self.0);
2470                            let fut = async move {
2471                                (*inner).inspect_files_artifact_contents(request).await
2472                            };
2473                            Box::pin(fut)
2474                        }
2475                    }
2476                    let accept_compression_encodings = self.accept_compression_encodings;
2477                    let send_compression_encodings = self.send_compression_encodings;
2478                    let max_decoding_message_size = self.max_decoding_message_size;
2479                    let max_encoding_message_size = self.max_encoding_message_size;
2480                    let inner = self.inner.clone();
2481                    let fut = async move {
2482                        let inner = inner.0;
2483                        let method = InspectFilesArtifactContentsSvc(inner);
2484                        let codec = tonic::codec::ProstCodec::default();
2485                        let mut grpc = tonic::server::Grpc::new(codec)
2486                            .apply_compression_config(
2487                                accept_compression_encodings,
2488                                send_compression_encodings,
2489                            )
2490                            .apply_max_message_size_config(
2491                                max_decoding_message_size,
2492                                max_encoding_message_size,
2493                            );
2494                        let res = grpc.unary(method, req).await;
2495                        Ok(res)
2496                    };
2497                    Box::pin(fut)
2498                }
2499                "/api_container_api.ApiContainerService/ConnectServices" => {
2500                    #[allow(non_camel_case_types)]
2501                    struct ConnectServicesSvc<T: ApiContainerService>(pub Arc<T>);
2502                    impl<
2503                        T: ApiContainerService,
2504                    > tonic::server::UnaryService<super::ConnectServicesArgs>
2505                    for ConnectServicesSvc<T> {
2506                        type Response = super::ConnectServicesResponse;
2507                        type Future = BoxFuture<
2508                            tonic::Response<Self::Response>,
2509                            tonic::Status,
2510                        >;
2511                        fn call(
2512                            &mut self,
2513                            request: tonic::Request<super::ConnectServicesArgs>,
2514                        ) -> Self::Future {
2515                            let inner = Arc::clone(&self.0);
2516                            let fut = async move {
2517                                (*inner).connect_services(request).await
2518                            };
2519                            Box::pin(fut)
2520                        }
2521                    }
2522                    let accept_compression_encodings = self.accept_compression_encodings;
2523                    let send_compression_encodings = self.send_compression_encodings;
2524                    let max_decoding_message_size = self.max_decoding_message_size;
2525                    let max_encoding_message_size = self.max_encoding_message_size;
2526                    let inner = self.inner.clone();
2527                    let fut = async move {
2528                        let inner = inner.0;
2529                        let method = ConnectServicesSvc(inner);
2530                        let codec = tonic::codec::ProstCodec::default();
2531                        let mut grpc = tonic::server::Grpc::new(codec)
2532                            .apply_compression_config(
2533                                accept_compression_encodings,
2534                                send_compression_encodings,
2535                            )
2536                            .apply_max_message_size_config(
2537                                max_decoding_message_size,
2538                                max_encoding_message_size,
2539                            );
2540                        let res = grpc.unary(method, req).await;
2541                        Ok(res)
2542                    };
2543                    Box::pin(fut)
2544                }
2545                "/api_container_api.ApiContainerService/GetStarlarkRun" => {
2546                    #[allow(non_camel_case_types)]
2547                    struct GetStarlarkRunSvc<T: ApiContainerService>(pub Arc<T>);
2548                    impl<T: ApiContainerService> tonic::server::UnaryService<()>
2549                    for GetStarlarkRunSvc<T> {
2550                        type Response = super::GetStarlarkRunResponse;
2551                        type Future = BoxFuture<
2552                            tonic::Response<Self::Response>,
2553                            tonic::Status,
2554                        >;
2555                        fn call(&mut self, request: tonic::Request<()>) -> Self::Future {
2556                            let inner = Arc::clone(&self.0);
2557                            let fut = async move {
2558                                (*inner).get_starlark_run(request).await
2559                            };
2560                            Box::pin(fut)
2561                        }
2562                    }
2563                    let accept_compression_encodings = self.accept_compression_encodings;
2564                    let send_compression_encodings = self.send_compression_encodings;
2565                    let max_decoding_message_size = self.max_decoding_message_size;
2566                    let max_encoding_message_size = self.max_encoding_message_size;
2567                    let inner = self.inner.clone();
2568                    let fut = async move {
2569                        let inner = inner.0;
2570                        let method = GetStarlarkRunSvc(inner);
2571                        let codec = tonic::codec::ProstCodec::default();
2572                        let mut grpc = tonic::server::Grpc::new(codec)
2573                            .apply_compression_config(
2574                                accept_compression_encodings,
2575                                send_compression_encodings,
2576                            )
2577                            .apply_max_message_size_config(
2578                                max_decoding_message_size,
2579                                max_encoding_message_size,
2580                            );
2581                        let res = grpc.unary(method, req).await;
2582                        Ok(res)
2583                    };
2584                    Box::pin(fut)
2585                }
2586                "/api_container_api.ApiContainerService/GetStarlarkScriptPlanYaml" => {
2587                    #[allow(non_camel_case_types)]
2588                    struct GetStarlarkScriptPlanYamlSvc<T: ApiContainerService>(
2589                        pub Arc<T>,
2590                    );
2591                    impl<
2592                        T: ApiContainerService,
2593                    > tonic::server::UnaryService<super::StarlarkScriptPlanYamlArgs>
2594                    for GetStarlarkScriptPlanYamlSvc<T> {
2595                        type Response = super::PlanYaml;
2596                        type Future = BoxFuture<
2597                            tonic::Response<Self::Response>,
2598                            tonic::Status,
2599                        >;
2600                        fn call(
2601                            &mut self,
2602                            request: tonic::Request<super::StarlarkScriptPlanYamlArgs>,
2603                        ) -> Self::Future {
2604                            let inner = Arc::clone(&self.0);
2605                            let fut = async move {
2606                                (*inner).get_starlark_script_plan_yaml(request).await
2607                            };
2608                            Box::pin(fut)
2609                        }
2610                    }
2611                    let accept_compression_encodings = self.accept_compression_encodings;
2612                    let send_compression_encodings = self.send_compression_encodings;
2613                    let max_decoding_message_size = self.max_decoding_message_size;
2614                    let max_encoding_message_size = self.max_encoding_message_size;
2615                    let inner = self.inner.clone();
2616                    let fut = async move {
2617                        let inner = inner.0;
2618                        let method = GetStarlarkScriptPlanYamlSvc(inner);
2619                        let codec = tonic::codec::ProstCodec::default();
2620                        let mut grpc = tonic::server::Grpc::new(codec)
2621                            .apply_compression_config(
2622                                accept_compression_encodings,
2623                                send_compression_encodings,
2624                            )
2625                            .apply_max_message_size_config(
2626                                max_decoding_message_size,
2627                                max_encoding_message_size,
2628                            );
2629                        let res = grpc.unary(method, req).await;
2630                        Ok(res)
2631                    };
2632                    Box::pin(fut)
2633                }
2634                "/api_container_api.ApiContainerService/GetStarlarkPackagePlanYaml" => {
2635                    #[allow(non_camel_case_types)]
2636                    struct GetStarlarkPackagePlanYamlSvc<T: ApiContainerService>(
2637                        pub Arc<T>,
2638                    );
2639                    impl<
2640                        T: ApiContainerService,
2641                    > tonic::server::UnaryService<super::StarlarkPackagePlanYamlArgs>
2642                    for GetStarlarkPackagePlanYamlSvc<T> {
2643                        type Response = super::PlanYaml;
2644                        type Future = BoxFuture<
2645                            tonic::Response<Self::Response>,
2646                            tonic::Status,
2647                        >;
2648                        fn call(
2649                            &mut self,
2650                            request: tonic::Request<super::StarlarkPackagePlanYamlArgs>,
2651                        ) -> Self::Future {
2652                            let inner = Arc::clone(&self.0);
2653                            let fut = async move {
2654                                (*inner).get_starlark_package_plan_yaml(request).await
2655                            };
2656                            Box::pin(fut)
2657                        }
2658                    }
2659                    let accept_compression_encodings = self.accept_compression_encodings;
2660                    let send_compression_encodings = self.send_compression_encodings;
2661                    let max_decoding_message_size = self.max_decoding_message_size;
2662                    let max_encoding_message_size = self.max_encoding_message_size;
2663                    let inner = self.inner.clone();
2664                    let fut = async move {
2665                        let inner = inner.0;
2666                        let method = GetStarlarkPackagePlanYamlSvc(inner);
2667                        let codec = tonic::codec::ProstCodec::default();
2668                        let mut grpc = tonic::server::Grpc::new(codec)
2669                            .apply_compression_config(
2670                                accept_compression_encodings,
2671                                send_compression_encodings,
2672                            )
2673                            .apply_max_message_size_config(
2674                                max_decoding_message_size,
2675                                max_encoding_message_size,
2676                            );
2677                        let res = grpc.unary(method, req).await;
2678                        Ok(res)
2679                    };
2680                    Box::pin(fut)
2681                }
2682                _ => {
2683                    Box::pin(async move {
2684                        Ok(
2685                            http::Response::builder()
2686                                .status(200)
2687                                .header("grpc-status", "12")
2688                                .header("content-type", "application/grpc")
2689                                .body(empty_body())
2690                                .unwrap(),
2691                        )
2692                    })
2693                }
2694            }
2695        }
2696    }
2697    impl<T: ApiContainerService> Clone for ApiContainerServiceServer<T> {
2698        fn clone(&self) -> Self {
2699            let inner = self.inner.clone();
2700            Self {
2701                inner,
2702                accept_compression_encodings: self.accept_compression_encodings,
2703                send_compression_encodings: self.send_compression_encodings,
2704                max_decoding_message_size: self.max_decoding_message_size,
2705                max_encoding_message_size: self.max_encoding_message_size,
2706            }
2707        }
2708    }
2709    impl<T: ApiContainerService> Clone for _Inner<T> {
2710        fn clone(&self) -> Self {
2711            Self(Arc::clone(&self.0))
2712        }
2713    }
2714    impl<T: std::fmt::Debug> std::fmt::Debug for _Inner<T> {
2715        fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
2716            write!(f, "{:?}", self.0)
2717        }
2718    }
2719    impl<T: ApiContainerService> tonic::server::NamedService
2720    for ApiContainerServiceServer<T> {
2721        const NAME: &'static str = "api_container_api.ApiContainerService";
2722    }
2723}