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