#[derive(Clone, PartialEq, ::prost::Message)]
pub struct VersionRequest {
#[prost(string, tag="1")]
pub version: ::prost::alloc::string::String,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct VersionResponse {
#[prost(string, tag="1")]
pub version: ::prost::alloc::string::String,
#[prost(string, tag="2")]
pub runtime_name: ::prost::alloc::string::String,
#[prost(string, tag="3")]
pub runtime_version: ::prost::alloc::string::String,
#[prost(string, tag="4")]
pub runtime_api_version: ::prost::alloc::string::String,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct DnsConfig {
#[prost(string, repeated, tag="1")]
pub servers: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
#[prost(string, repeated, tag="2")]
pub searches: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
#[prost(string, repeated, tag="3")]
pub options: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct PortMapping {
#[prost(enumeration="Protocol", tag="1")]
pub protocol: i32,
#[prost(int32, tag="2")]
pub container_port: i32,
#[prost(int32, tag="3")]
pub host_port: i32,
#[prost(string, tag="4")]
pub host_ip: ::prost::alloc::string::String,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Mount {
#[prost(string, tag="1")]
pub container_path: ::prost::alloc::string::String,
#[prost(string, tag="2")]
pub host_path: ::prost::alloc::string::String,
#[prost(bool, tag="3")]
pub readonly: bool,
#[prost(bool, tag="4")]
pub selinux_relabel: bool,
#[prost(enumeration="MountPropagation", tag="5")]
pub propagation: i32,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct IdMapping {
#[prost(uint32, tag="1")]
pub host_id: u32,
#[prost(uint32, tag="2")]
pub container_id: u32,
#[prost(uint32, tag="3")]
pub length: u32,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct UserNamespace {
#[prost(enumeration="NamespaceMode", tag="1")]
pub mode: i32,
#[prost(message, repeated, tag="2")]
pub uids: ::prost::alloc::vec::Vec<IdMapping>,
#[prost(message, repeated, tag="3")]
pub gids: ::prost::alloc::vec::Vec<IdMapping>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct NamespaceOption {
#[prost(enumeration="NamespaceMode", tag="1")]
pub network: i32,
#[prost(enumeration="NamespaceMode", tag="2")]
pub pid: i32,
#[prost(enumeration="NamespaceMode", tag="3")]
pub ipc: i32,
#[prost(string, tag="4")]
pub target_id: ::prost::alloc::string::String,
#[prost(message, optional, tag="5")]
pub userns_options: ::core::option::Option<UserNamespace>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Int64Value {
#[prost(int64, tag="1")]
pub value: i64,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct LinuxSandboxSecurityContext {
#[prost(message, optional, tag="1")]
pub namespace_options: ::core::option::Option<NamespaceOption>,
#[prost(message, optional, tag="2")]
pub selinux_options: ::core::option::Option<SeLinuxOption>,
#[prost(message, optional, tag="3")]
pub run_as_user: ::core::option::Option<Int64Value>,
#[prost(message, optional, tag="8")]
pub run_as_group: ::core::option::Option<Int64Value>,
#[prost(bool, tag="4")]
pub readonly_rootfs: bool,
#[prost(int64, repeated, tag="5")]
pub supplemental_groups: ::prost::alloc::vec::Vec<i64>,
#[prost(bool, tag="6")]
pub privileged: bool,
#[prost(message, optional, tag="9")]
pub seccomp: ::core::option::Option<SecurityProfile>,
#[prost(message, optional, tag="10")]
pub apparmor: ::core::option::Option<SecurityProfile>,
#[deprecated]
#[prost(string, tag="7")]
pub seccomp_profile_path: ::prost::alloc::string::String,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct SecurityProfile {
#[prost(enumeration="security_profile::ProfileType", tag="1")]
pub profile_type: i32,
#[prost(string, tag="2")]
pub localhost_ref: ::prost::alloc::string::String,
}
pub mod security_profile {
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum ProfileType {
RuntimeDefault = 0,
Unconfined = 1,
Localhost = 2,
}
impl ProfileType {
pub fn as_str_name(&self) -> &'static str {
match self {
ProfileType::RuntimeDefault => "RuntimeDefault",
ProfileType::Unconfined => "Unconfined",
ProfileType::Localhost => "Localhost",
}
}
}
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct LinuxPodSandboxConfig {
#[prost(string, tag="1")]
pub cgroup_parent: ::prost::alloc::string::String,
#[prost(message, optional, tag="2")]
pub security_context: ::core::option::Option<LinuxSandboxSecurityContext>,
#[prost(map="string, string", tag="3")]
pub sysctls: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
#[prost(message, optional, tag="4")]
pub overhead: ::core::option::Option<LinuxContainerResources>,
#[prost(message, optional, tag="5")]
pub resources: ::core::option::Option<LinuxContainerResources>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct PodSandboxMetadata {
#[prost(string, tag="1")]
pub name: ::prost::alloc::string::String,
#[prost(string, tag="2")]
pub uid: ::prost::alloc::string::String,
#[prost(string, tag="3")]
pub namespace: ::prost::alloc::string::String,
#[prost(uint32, tag="4")]
pub attempt: u32,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct PodSandboxConfig {
#[prost(message, optional, tag="1")]
pub metadata: ::core::option::Option<PodSandboxMetadata>,
#[prost(string, tag="2")]
pub hostname: ::prost::alloc::string::String,
#[prost(string, tag="3")]
pub log_directory: ::prost::alloc::string::String,
#[prost(message, optional, tag="4")]
pub dns_config: ::core::option::Option<DnsConfig>,
#[prost(message, repeated, tag="5")]
pub port_mappings: ::prost::alloc::vec::Vec<PortMapping>,
#[prost(map="string, string", tag="6")]
pub labels: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
#[prost(map="string, string", tag="7")]
pub annotations: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
#[prost(message, optional, tag="8")]
pub linux: ::core::option::Option<LinuxPodSandboxConfig>,
#[prost(message, optional, tag="9")]
pub windows: ::core::option::Option<WindowsPodSandboxConfig>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct RunPodSandboxRequest {
#[prost(message, optional, tag="1")]
pub config: ::core::option::Option<PodSandboxConfig>,
#[prost(string, tag="2")]
pub runtime_handler: ::prost::alloc::string::String,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct RunPodSandboxResponse {
#[prost(string, tag="1")]
pub pod_sandbox_id: ::prost::alloc::string::String,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct StopPodSandboxRequest {
#[prost(string, tag="1")]
pub pod_sandbox_id: ::prost::alloc::string::String,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct StopPodSandboxResponse {
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct RemovePodSandboxRequest {
#[prost(string, tag="1")]
pub pod_sandbox_id: ::prost::alloc::string::String,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct RemovePodSandboxResponse {
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct PodSandboxStatusRequest {
#[prost(string, tag="1")]
pub pod_sandbox_id: ::prost::alloc::string::String,
#[prost(bool, tag="2")]
pub verbose: bool,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct PodIp {
#[prost(string, tag="1")]
pub ip: ::prost::alloc::string::String,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct PodSandboxNetworkStatus {
#[prost(string, tag="1")]
pub ip: ::prost::alloc::string::String,
#[prost(message, repeated, tag="2")]
pub additional_ips: ::prost::alloc::vec::Vec<PodIp>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Namespace {
#[prost(message, optional, tag="2")]
pub options: ::core::option::Option<NamespaceOption>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct LinuxPodSandboxStatus {
#[prost(message, optional, tag="1")]
pub namespaces: ::core::option::Option<Namespace>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct PodSandboxStatus {
#[prost(string, tag="1")]
pub id: ::prost::alloc::string::String,
#[prost(message, optional, tag="2")]
pub metadata: ::core::option::Option<PodSandboxMetadata>,
#[prost(enumeration="PodSandboxState", tag="3")]
pub state: i32,
#[prost(int64, tag="4")]
pub created_at: i64,
#[prost(message, optional, tag="5")]
pub network: ::core::option::Option<PodSandboxNetworkStatus>,
#[prost(message, optional, tag="6")]
pub linux: ::core::option::Option<LinuxPodSandboxStatus>,
#[prost(map="string, string", tag="7")]
pub labels: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
#[prost(map="string, string", tag="8")]
pub annotations: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
#[prost(string, tag="9")]
pub runtime_handler: ::prost::alloc::string::String,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct PodSandboxStatusResponse {
#[prost(message, optional, tag="1")]
pub status: ::core::option::Option<PodSandboxStatus>,
#[prost(map="string, string", tag="2")]
pub info: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct PodSandboxStateValue {
#[prost(enumeration="PodSandboxState", tag="1")]
pub state: i32,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct PodSandboxFilter {
#[prost(string, tag="1")]
pub id: ::prost::alloc::string::String,
#[prost(message, optional, tag="2")]
pub state: ::core::option::Option<PodSandboxStateValue>,
#[prost(map="string, string", tag="3")]
pub label_selector: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ListPodSandboxRequest {
#[prost(message, optional, tag="1")]
pub filter: ::core::option::Option<PodSandboxFilter>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct PodSandbox {
#[prost(string, tag="1")]
pub id: ::prost::alloc::string::String,
#[prost(message, optional, tag="2")]
pub metadata: ::core::option::Option<PodSandboxMetadata>,
#[prost(enumeration="PodSandboxState", tag="3")]
pub state: i32,
#[prost(int64, tag="4")]
pub created_at: i64,
#[prost(map="string, string", tag="5")]
pub labels: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
#[prost(map="string, string", tag="6")]
pub annotations: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
#[prost(string, tag="7")]
pub runtime_handler: ::prost::alloc::string::String,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ListPodSandboxResponse {
#[prost(message, repeated, tag="1")]
pub items: ::prost::alloc::vec::Vec<PodSandbox>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct PodSandboxStatsRequest {
#[prost(string, tag="1")]
pub pod_sandbox_id: ::prost::alloc::string::String,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct PodSandboxStatsResponse {
#[prost(message, optional, tag="1")]
pub stats: ::core::option::Option<PodSandboxStats>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct PodSandboxStatsFilter {
#[prost(string, tag="1")]
pub id: ::prost::alloc::string::String,
#[prost(map="string, string", tag="2")]
pub label_selector: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ListPodSandboxStatsRequest {
#[prost(message, optional, tag="1")]
pub filter: ::core::option::Option<PodSandboxStatsFilter>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ListPodSandboxStatsResponse {
#[prost(message, repeated, tag="1")]
pub stats: ::prost::alloc::vec::Vec<PodSandboxStats>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct PodSandboxAttributes {
#[prost(string, tag="1")]
pub id: ::prost::alloc::string::String,
#[prost(message, optional, tag="2")]
pub metadata: ::core::option::Option<PodSandboxMetadata>,
#[prost(map="string, string", tag="3")]
pub labels: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
#[prost(map="string, string", tag="4")]
pub annotations: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct PodSandboxStats {
#[prost(message, optional, tag="1")]
pub attributes: ::core::option::Option<PodSandboxAttributes>,
#[prost(message, optional, tag="2")]
pub linux: ::core::option::Option<LinuxPodSandboxStats>,
#[prost(message, optional, tag="3")]
pub windows: ::core::option::Option<WindowsPodSandboxStats>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct LinuxPodSandboxStats {
#[prost(message, optional, tag="1")]
pub cpu: ::core::option::Option<CpuUsage>,
#[prost(message, optional, tag="2")]
pub memory: ::core::option::Option<MemoryUsage>,
#[prost(message, optional, tag="3")]
pub network: ::core::option::Option<NetworkUsage>,
#[prost(message, optional, tag="4")]
pub process: ::core::option::Option<ProcessUsage>,
#[prost(message, repeated, tag="5")]
pub containers: ::prost::alloc::vec::Vec<ContainerStats>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct WindowsPodSandboxStats {
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct NetworkUsage {
#[prost(int64, tag="1")]
pub timestamp: i64,
#[prost(message, optional, tag="2")]
pub default_interface: ::core::option::Option<NetworkInterfaceUsage>,
#[prost(message, repeated, tag="3")]
pub interfaces: ::prost::alloc::vec::Vec<NetworkInterfaceUsage>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct NetworkInterfaceUsage {
#[prost(string, tag="1")]
pub name: ::prost::alloc::string::String,
#[prost(message, optional, tag="2")]
pub rx_bytes: ::core::option::Option<UInt64Value>,
#[prost(message, optional, tag="3")]
pub rx_errors: ::core::option::Option<UInt64Value>,
#[prost(message, optional, tag="4")]
pub tx_bytes: ::core::option::Option<UInt64Value>,
#[prost(message, optional, tag="5")]
pub tx_errors: ::core::option::Option<UInt64Value>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ProcessUsage {
#[prost(int64, tag="1")]
pub timestamp: i64,
#[prost(message, optional, tag="2")]
pub process_count: ::core::option::Option<UInt64Value>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ImageSpec {
#[prost(string, tag="1")]
pub image: ::prost::alloc::string::String,
#[prost(map="string, string", tag="2")]
pub annotations: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct KeyValue {
#[prost(string, tag="1")]
pub key: ::prost::alloc::string::String,
#[prost(string, tag="2")]
pub value: ::prost::alloc::string::String,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct LinuxContainerResources {
#[prost(int64, tag="1")]
pub cpu_period: i64,
#[prost(int64, tag="2")]
pub cpu_quota: i64,
#[prost(int64, tag="3")]
pub cpu_shares: i64,
#[prost(int64, tag="4")]
pub memory_limit_in_bytes: i64,
#[prost(int64, tag="5")]
pub oom_score_adj: i64,
#[prost(string, tag="6")]
pub cpuset_cpus: ::prost::alloc::string::String,
#[prost(string, tag="7")]
pub cpuset_mems: ::prost::alloc::string::String,
#[prost(message, repeated, tag="8")]
pub hugepage_limits: ::prost::alloc::vec::Vec<HugepageLimit>,
#[prost(map="string, string", tag="9")]
pub unified: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
#[prost(int64, tag="10")]
pub memory_swap_limit_in_bytes: i64,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct HugepageLimit {
#[prost(string, tag="1")]
pub page_size: ::prost::alloc::string::String,
#[prost(uint64, tag="2")]
pub limit: u64,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct SeLinuxOption {
#[prost(string, tag="1")]
pub user: ::prost::alloc::string::String,
#[prost(string, tag="2")]
pub role: ::prost::alloc::string::String,
#[prost(string, tag="3")]
pub r#type: ::prost::alloc::string::String,
#[prost(string, tag="4")]
pub level: ::prost::alloc::string::String,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Capability {
#[prost(string, repeated, tag="1")]
pub add_capabilities: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
#[prost(string, repeated, tag="2")]
pub drop_capabilities: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
#[prost(string, repeated, tag="3")]
pub add_ambient_capabilities: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct LinuxContainerSecurityContext {
#[prost(message, optional, tag="1")]
pub capabilities: ::core::option::Option<Capability>,
#[prost(bool, tag="2")]
pub privileged: bool,
#[prost(message, optional, tag="3")]
pub namespace_options: ::core::option::Option<NamespaceOption>,
#[prost(message, optional, tag="4")]
pub selinux_options: ::core::option::Option<SeLinuxOption>,
#[prost(message, optional, tag="5")]
pub run_as_user: ::core::option::Option<Int64Value>,
#[prost(message, optional, tag="12")]
pub run_as_group: ::core::option::Option<Int64Value>,
#[prost(string, tag="6")]
pub run_as_username: ::prost::alloc::string::String,
#[prost(bool, tag="7")]
pub readonly_rootfs: bool,
#[prost(int64, repeated, tag="8")]
pub supplemental_groups: ::prost::alloc::vec::Vec<i64>,
#[prost(bool, tag="11")]
pub no_new_privs: bool,
#[prost(string, repeated, tag="13")]
pub masked_paths: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
#[prost(string, repeated, tag="14")]
pub readonly_paths: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
#[prost(message, optional, tag="15")]
pub seccomp: ::core::option::Option<SecurityProfile>,
#[prost(message, optional, tag="16")]
pub apparmor: ::core::option::Option<SecurityProfile>,
#[deprecated]
#[prost(string, tag="9")]
pub apparmor_profile: ::prost::alloc::string::String,
#[deprecated]
#[prost(string, tag="10")]
pub seccomp_profile_path: ::prost::alloc::string::String,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct LinuxContainerConfig {
#[prost(message, optional, tag="1")]
pub resources: ::core::option::Option<LinuxContainerResources>,
#[prost(message, optional, tag="2")]
pub security_context: ::core::option::Option<LinuxContainerSecurityContext>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct WindowsSandboxSecurityContext {
#[prost(string, tag="1")]
pub run_as_username: ::prost::alloc::string::String,
#[prost(string, tag="2")]
pub credential_spec: ::prost::alloc::string::String,
#[prost(bool, tag="3")]
pub host_process: bool,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct WindowsPodSandboxConfig {
#[prost(message, optional, tag="1")]
pub security_context: ::core::option::Option<WindowsSandboxSecurityContext>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct WindowsContainerSecurityContext {
#[prost(string, tag="1")]
pub run_as_username: ::prost::alloc::string::String,
#[prost(string, tag="2")]
pub credential_spec: ::prost::alloc::string::String,
#[prost(bool, tag="3")]
pub host_process: bool,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct WindowsContainerConfig {
#[prost(message, optional, tag="1")]
pub resources: ::core::option::Option<WindowsContainerResources>,
#[prost(message, optional, tag="2")]
pub security_context: ::core::option::Option<WindowsContainerSecurityContext>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct WindowsContainerResources {
#[prost(int64, tag="1")]
pub cpu_shares: i64,
#[prost(int64, tag="2")]
pub cpu_count: i64,
#[prost(int64, tag="3")]
pub cpu_maximum: i64,
#[prost(int64, tag="4")]
pub memory_limit_in_bytes: i64,
#[prost(int64, tag="5")]
pub rootfs_size_in_bytes: i64,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ContainerMetadata {
#[prost(string, tag="1")]
pub name: ::prost::alloc::string::String,
#[prost(uint32, tag="2")]
pub attempt: u32,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Device {
#[prost(string, tag="1")]
pub container_path: ::prost::alloc::string::String,
#[prost(string, tag="2")]
pub host_path: ::prost::alloc::string::String,
#[prost(string, tag="3")]
pub permissions: ::prost::alloc::string::String,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ContainerConfig {
#[prost(message, optional, tag="1")]
pub metadata: ::core::option::Option<ContainerMetadata>,
#[prost(message, optional, tag="2")]
pub image: ::core::option::Option<ImageSpec>,
#[prost(string, repeated, tag="3")]
pub command: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
#[prost(string, repeated, tag="4")]
pub args: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
#[prost(string, tag="5")]
pub working_dir: ::prost::alloc::string::String,
#[prost(message, repeated, tag="6")]
pub envs: ::prost::alloc::vec::Vec<KeyValue>,
#[prost(message, repeated, tag="7")]
pub mounts: ::prost::alloc::vec::Vec<Mount>,
#[prost(message, repeated, tag="8")]
pub devices: ::prost::alloc::vec::Vec<Device>,
#[prost(map="string, string", tag="9")]
pub labels: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
#[prost(map="string, string", tag="10")]
pub annotations: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
#[prost(string, tag="11")]
pub log_path: ::prost::alloc::string::String,
#[prost(bool, tag="12")]
pub stdin: bool,
#[prost(bool, tag="13")]
pub stdin_once: bool,
#[prost(bool, tag="14")]
pub tty: bool,
#[prost(message, optional, tag="15")]
pub linux: ::core::option::Option<LinuxContainerConfig>,
#[prost(message, optional, tag="16")]
pub windows: ::core::option::Option<WindowsContainerConfig>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CreateContainerRequest {
#[prost(string, tag="1")]
pub pod_sandbox_id: ::prost::alloc::string::String,
#[prost(message, optional, tag="2")]
pub config: ::core::option::Option<ContainerConfig>,
#[prost(message, optional, tag="3")]
pub sandbox_config: ::core::option::Option<PodSandboxConfig>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CreateContainerResponse {
#[prost(string, tag="1")]
pub container_id: ::prost::alloc::string::String,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct StartContainerRequest {
#[prost(string, tag="1")]
pub container_id: ::prost::alloc::string::String,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct StartContainerResponse {
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct StopContainerRequest {
#[prost(string, tag="1")]
pub container_id: ::prost::alloc::string::String,
#[prost(int64, tag="2")]
pub timeout: i64,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct StopContainerResponse {
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct RemoveContainerRequest {
#[prost(string, tag="1")]
pub container_id: ::prost::alloc::string::String,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct RemoveContainerResponse {
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ContainerStateValue {
#[prost(enumeration="ContainerState", tag="1")]
pub state: i32,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ContainerFilter {
#[prost(string, tag="1")]
pub id: ::prost::alloc::string::String,
#[prost(message, optional, tag="2")]
pub state: ::core::option::Option<ContainerStateValue>,
#[prost(string, tag="3")]
pub pod_sandbox_id: ::prost::alloc::string::String,
#[prost(map="string, string", tag="4")]
pub label_selector: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ListContainersRequest {
#[prost(message, optional, tag="1")]
pub filter: ::core::option::Option<ContainerFilter>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Container {
#[prost(string, tag="1")]
pub id: ::prost::alloc::string::String,
#[prost(string, tag="2")]
pub pod_sandbox_id: ::prost::alloc::string::String,
#[prost(message, optional, tag="3")]
pub metadata: ::core::option::Option<ContainerMetadata>,
#[prost(message, optional, tag="4")]
pub image: ::core::option::Option<ImageSpec>,
#[prost(string, tag="5")]
pub image_ref: ::prost::alloc::string::String,
#[prost(enumeration="ContainerState", tag="6")]
pub state: i32,
#[prost(int64, tag="7")]
pub created_at: i64,
#[prost(map="string, string", tag="8")]
pub labels: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
#[prost(map="string, string", tag="9")]
pub annotations: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ListContainersResponse {
#[prost(message, repeated, tag="1")]
pub containers: ::prost::alloc::vec::Vec<Container>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ContainerStatusRequest {
#[prost(string, tag="1")]
pub container_id: ::prost::alloc::string::String,
#[prost(bool, tag="2")]
pub verbose: bool,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ContainerStatus {
#[prost(string, tag="1")]
pub id: ::prost::alloc::string::String,
#[prost(message, optional, tag="2")]
pub metadata: ::core::option::Option<ContainerMetadata>,
#[prost(enumeration="ContainerState", tag="3")]
pub state: i32,
#[prost(int64, tag="4")]
pub created_at: i64,
#[prost(int64, tag="5")]
pub started_at: i64,
#[prost(int64, tag="6")]
pub finished_at: i64,
#[prost(int32, tag="7")]
pub exit_code: i32,
#[prost(message, optional, tag="8")]
pub image: ::core::option::Option<ImageSpec>,
#[prost(string, tag="9")]
pub image_ref: ::prost::alloc::string::String,
#[prost(string, tag="10")]
pub reason: ::prost::alloc::string::String,
#[prost(string, tag="11")]
pub message: ::prost::alloc::string::String,
#[prost(map="string, string", tag="12")]
pub labels: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
#[prost(map="string, string", tag="13")]
pub annotations: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
#[prost(message, repeated, tag="14")]
pub mounts: ::prost::alloc::vec::Vec<Mount>,
#[prost(string, tag="15")]
pub log_path: ::prost::alloc::string::String,
#[prost(message, optional, tag="16")]
pub resources: ::core::option::Option<ContainerResources>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ContainerStatusResponse {
#[prost(message, optional, tag="1")]
pub status: ::core::option::Option<ContainerStatus>,
#[prost(map="string, string", tag="2")]
pub info: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ContainerResources {
#[prost(message, optional, tag="1")]
pub linux: ::core::option::Option<LinuxContainerResources>,
#[prost(message, optional, tag="2")]
pub windows: ::core::option::Option<WindowsContainerResources>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct UpdateContainerResourcesRequest {
#[prost(string, tag="1")]
pub container_id: ::prost::alloc::string::String,
#[prost(message, optional, tag="2")]
pub linux: ::core::option::Option<LinuxContainerResources>,
#[prost(message, optional, tag="3")]
pub windows: ::core::option::Option<WindowsContainerResources>,
#[prost(map="string, string", tag="4")]
pub annotations: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct UpdateContainerResourcesResponse {
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ExecSyncRequest {
#[prost(string, tag="1")]
pub container_id: ::prost::alloc::string::String,
#[prost(string, repeated, tag="2")]
pub cmd: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
#[prost(int64, tag="3")]
pub timeout: i64,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ExecSyncResponse {
#[prost(bytes="vec", tag="1")]
pub stdout: ::prost::alloc::vec::Vec<u8>,
#[prost(bytes="vec", tag="2")]
pub stderr: ::prost::alloc::vec::Vec<u8>,
#[prost(int32, tag="3")]
pub exit_code: i32,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ExecRequest {
#[prost(string, tag="1")]
pub container_id: ::prost::alloc::string::String,
#[prost(string, repeated, tag="2")]
pub cmd: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
#[prost(bool, tag="3")]
pub tty: bool,
#[prost(bool, tag="4")]
pub stdin: bool,
#[prost(bool, tag="5")]
pub stdout: bool,
#[prost(bool, tag="6")]
pub stderr: bool,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ExecResponse {
#[prost(string, tag="1")]
pub url: ::prost::alloc::string::String,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct AttachRequest {
#[prost(string, tag="1")]
pub container_id: ::prost::alloc::string::String,
#[prost(bool, tag="2")]
pub stdin: bool,
#[prost(bool, tag="3")]
pub tty: bool,
#[prost(bool, tag="4")]
pub stdout: bool,
#[prost(bool, tag="5")]
pub stderr: bool,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct AttachResponse {
#[prost(string, tag="1")]
pub url: ::prost::alloc::string::String,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct PortForwardRequest {
#[prost(string, tag="1")]
pub pod_sandbox_id: ::prost::alloc::string::String,
#[prost(int32, repeated, tag="2")]
pub port: ::prost::alloc::vec::Vec<i32>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct PortForwardResponse {
#[prost(string, tag="1")]
pub url: ::prost::alloc::string::String,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ImageFilter {
#[prost(message, optional, tag="1")]
pub image: ::core::option::Option<ImageSpec>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ListImagesRequest {
#[prost(message, optional, tag="1")]
pub filter: ::core::option::Option<ImageFilter>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Image {
#[prost(string, tag="1")]
pub id: ::prost::alloc::string::String,
#[prost(string, repeated, tag="2")]
pub repo_tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
#[prost(string, repeated, tag="3")]
pub repo_digests: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
#[prost(uint64, tag="4")]
pub size: u64,
#[prost(message, optional, tag="5")]
pub uid: ::core::option::Option<Int64Value>,
#[prost(string, tag="6")]
pub username: ::prost::alloc::string::String,
#[prost(message, optional, tag="7")]
pub spec: ::core::option::Option<ImageSpec>,
#[prost(bool, tag="8")]
pub pinned: bool,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ListImagesResponse {
#[prost(message, repeated, tag="1")]
pub images: ::prost::alloc::vec::Vec<Image>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ImageStatusRequest {
#[prost(message, optional, tag="1")]
pub image: ::core::option::Option<ImageSpec>,
#[prost(bool, tag="2")]
pub verbose: bool,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ImageStatusResponse {
#[prost(message, optional, tag="1")]
pub image: ::core::option::Option<Image>,
#[prost(map="string, string", tag="2")]
pub info: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct AuthConfig {
#[prost(string, tag="1")]
pub username: ::prost::alloc::string::String,
#[prost(string, tag="2")]
pub password: ::prost::alloc::string::String,
#[prost(string, tag="3")]
pub auth: ::prost::alloc::string::String,
#[prost(string, tag="4")]
pub server_address: ::prost::alloc::string::String,
#[prost(string, tag="5")]
pub identity_token: ::prost::alloc::string::String,
#[prost(string, tag="6")]
pub registry_token: ::prost::alloc::string::String,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct PullImageRequest {
#[prost(message, optional, tag="1")]
pub image: ::core::option::Option<ImageSpec>,
#[prost(message, optional, tag="2")]
pub auth: ::core::option::Option<AuthConfig>,
#[prost(message, optional, tag="3")]
pub sandbox_config: ::core::option::Option<PodSandboxConfig>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct PullImageResponse {
#[prost(string, tag="1")]
pub image_ref: ::prost::alloc::string::String,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct RemoveImageRequest {
#[prost(message, optional, tag="1")]
pub image: ::core::option::Option<ImageSpec>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct RemoveImageResponse {
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct NetworkConfig {
#[prost(string, tag="1")]
pub pod_cidr: ::prost::alloc::string::String,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct RuntimeConfig {
#[prost(message, optional, tag="1")]
pub network_config: ::core::option::Option<NetworkConfig>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct UpdateRuntimeConfigRequest {
#[prost(message, optional, tag="1")]
pub runtime_config: ::core::option::Option<RuntimeConfig>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct UpdateRuntimeConfigResponse {
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct RuntimeCondition {
#[prost(string, tag="1")]
pub r#type: ::prost::alloc::string::String,
#[prost(bool, tag="2")]
pub status: bool,
#[prost(string, tag="3")]
pub reason: ::prost::alloc::string::String,
#[prost(string, tag="4")]
pub message: ::prost::alloc::string::String,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct RuntimeStatus {
#[prost(message, repeated, tag="1")]
pub conditions: ::prost::alloc::vec::Vec<RuntimeCondition>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct StatusRequest {
#[prost(bool, tag="1")]
pub verbose: bool,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct StatusResponse {
#[prost(message, optional, tag="1")]
pub status: ::core::option::Option<RuntimeStatus>,
#[prost(map="string, string", tag="2")]
pub info: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ImageFsInfoRequest {
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct UInt64Value {
#[prost(uint64, tag="1")]
pub value: u64,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct FilesystemIdentifier {
#[prost(string, tag="1")]
pub mountpoint: ::prost::alloc::string::String,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct FilesystemUsage {
#[prost(int64, tag="1")]
pub timestamp: i64,
#[prost(message, optional, tag="2")]
pub fs_id: ::core::option::Option<FilesystemIdentifier>,
#[prost(message, optional, tag="3")]
pub used_bytes: ::core::option::Option<UInt64Value>,
#[prost(message, optional, tag="4")]
pub inodes_used: ::core::option::Option<UInt64Value>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ImageFsInfoResponse {
#[prost(message, repeated, tag="1")]
pub image_filesystems: ::prost::alloc::vec::Vec<FilesystemUsage>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ContainerStatsRequest {
#[prost(string, tag="1")]
pub container_id: ::prost::alloc::string::String,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ContainerStatsResponse {
#[prost(message, optional, tag="1")]
pub stats: ::core::option::Option<ContainerStats>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ListContainerStatsRequest {
#[prost(message, optional, tag="1")]
pub filter: ::core::option::Option<ContainerStatsFilter>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ContainerStatsFilter {
#[prost(string, tag="1")]
pub id: ::prost::alloc::string::String,
#[prost(string, tag="2")]
pub pod_sandbox_id: ::prost::alloc::string::String,
#[prost(map="string, string", tag="3")]
pub label_selector: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ListContainerStatsResponse {
#[prost(message, repeated, tag="1")]
pub stats: ::prost::alloc::vec::Vec<ContainerStats>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ContainerAttributes {
#[prost(string, tag="1")]
pub id: ::prost::alloc::string::String,
#[prost(message, optional, tag="2")]
pub metadata: ::core::option::Option<ContainerMetadata>,
#[prost(map="string, string", tag="3")]
pub labels: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
#[prost(map="string, string", tag="4")]
pub annotations: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ContainerStats {
#[prost(message, optional, tag="1")]
pub attributes: ::core::option::Option<ContainerAttributes>,
#[prost(message, optional, tag="2")]
pub cpu: ::core::option::Option<CpuUsage>,
#[prost(message, optional, tag="3")]
pub memory: ::core::option::Option<MemoryUsage>,
#[prost(message, optional, tag="4")]
pub writable_layer: ::core::option::Option<FilesystemUsage>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CpuUsage {
#[prost(int64, tag="1")]
pub timestamp: i64,
#[prost(message, optional, tag="2")]
pub usage_core_nano_seconds: ::core::option::Option<UInt64Value>,
#[prost(message, optional, tag="3")]
pub usage_nano_cores: ::core::option::Option<UInt64Value>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct MemoryUsage {
#[prost(int64, tag="1")]
pub timestamp: i64,
#[prost(message, optional, tag="2")]
pub working_set_bytes: ::core::option::Option<UInt64Value>,
#[prost(message, optional, tag="3")]
pub available_bytes: ::core::option::Option<UInt64Value>,
#[prost(message, optional, tag="4")]
pub usage_bytes: ::core::option::Option<UInt64Value>,
#[prost(message, optional, tag="5")]
pub rss_bytes: ::core::option::Option<UInt64Value>,
#[prost(message, optional, tag="6")]
pub page_faults: ::core::option::Option<UInt64Value>,
#[prost(message, optional, tag="7")]
pub major_page_faults: ::core::option::Option<UInt64Value>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ReopenContainerLogRequest {
#[prost(string, tag="1")]
pub container_id: ::prost::alloc::string::String,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ReopenContainerLogResponse {
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CheckpointContainerRequest {
#[prost(string, tag="1")]
pub container_id: ::prost::alloc::string::String,
#[prost(string, tag="2")]
pub location: ::prost::alloc::string::String,
#[prost(int64, tag="3")]
pub timeout: i64,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CheckpointContainerResponse {
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GetEventsRequest {
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ContainerEventResponse {
#[prost(string, tag="1")]
pub container_id: ::prost::alloc::string::String,
#[prost(enumeration="ContainerEventType", tag="2")]
pub container_event_type: i32,
#[prost(int64, tag="3")]
pub created_at: i64,
#[prost(message, optional, tag="4")]
pub pod_sandbox_metadata: ::core::option::Option<PodSandboxMetadata>,
}
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum Protocol {
Tcp = 0,
Udp = 1,
Sctp = 2,
}
impl Protocol {
pub fn as_str_name(&self) -> &'static str {
match self {
Protocol::Tcp => "TCP",
Protocol::Udp => "UDP",
Protocol::Sctp => "SCTP",
}
}
}
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum MountPropagation {
PropagationPrivate = 0,
PropagationHostToContainer = 1,
PropagationBidirectional = 2,
}
impl MountPropagation {
pub fn as_str_name(&self) -> &'static str {
match self {
MountPropagation::PropagationPrivate => "PROPAGATION_PRIVATE",
MountPropagation::PropagationHostToContainer => "PROPAGATION_HOST_TO_CONTAINER",
MountPropagation::PropagationBidirectional => "PROPAGATION_BIDIRECTIONAL",
}
}
}
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum NamespaceMode {
Pod = 0,
Container = 1,
Node = 2,
Target = 3,
}
impl NamespaceMode {
pub fn as_str_name(&self) -> &'static str {
match self {
NamespaceMode::Pod => "POD",
NamespaceMode::Container => "CONTAINER",
NamespaceMode::Node => "NODE",
NamespaceMode::Target => "TARGET",
}
}
}
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum PodSandboxState {
SandboxReady = 0,
SandboxNotready = 1,
}
impl PodSandboxState {
pub fn as_str_name(&self) -> &'static str {
match self {
PodSandboxState::SandboxReady => "SANDBOX_READY",
PodSandboxState::SandboxNotready => "SANDBOX_NOTREADY",
}
}
}
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum ContainerState {
ContainerCreated = 0,
ContainerRunning = 1,
ContainerExited = 2,
ContainerUnknown = 3,
}
impl ContainerState {
pub fn as_str_name(&self) -> &'static str {
match self {
ContainerState::ContainerCreated => "CONTAINER_CREATED",
ContainerState::ContainerRunning => "CONTAINER_RUNNING",
ContainerState::ContainerExited => "CONTAINER_EXITED",
ContainerState::ContainerUnknown => "CONTAINER_UNKNOWN",
}
}
}
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum ContainerEventType {
ContainerCreatedEvent = 0,
ContainerStartedEvent = 1,
ContainerStoppedEvent = 2,
ContainerDeletedEvent = 3,
}
impl ContainerEventType {
pub fn as_str_name(&self) -> &'static str {
match self {
ContainerEventType::ContainerCreatedEvent => "CONTAINER_CREATED_EVENT",
ContainerEventType::ContainerStartedEvent => "CONTAINER_STARTED_EVENT",
ContainerEventType::ContainerStoppedEvent => "CONTAINER_STOPPED_EVENT",
ContainerEventType::ContainerDeletedEvent => "CONTAINER_DELETED_EVENT",
}
}
}
pub mod runtime_service_server {
#![allow(unused_variables, dead_code, missing_docs, clippy::let_unit_value)]
use tonic::codegen::*;
#[async_trait]
pub trait RuntimeService: Send + Sync + 'static {
async fn version(
&self,
request: tonic::Request<super::VersionRequest>,
) -> Result<tonic::Response<super::VersionResponse>, tonic::Status>;
async fn run_pod_sandbox(
&self,
request: tonic::Request<super::RunPodSandboxRequest>,
) -> Result<tonic::Response<super::RunPodSandboxResponse>, tonic::Status>;
async fn stop_pod_sandbox(
&self,
request: tonic::Request<super::StopPodSandboxRequest>,
) -> Result<tonic::Response<super::StopPodSandboxResponse>, tonic::Status>;
async fn remove_pod_sandbox(
&self,
request: tonic::Request<super::RemovePodSandboxRequest>,
) -> Result<tonic::Response<super::RemovePodSandboxResponse>, tonic::Status>;
async fn pod_sandbox_status(
&self,
request: tonic::Request<super::PodSandboxStatusRequest>,
) -> Result<tonic::Response<super::PodSandboxStatusResponse>, tonic::Status>;
async fn list_pod_sandbox(
&self,
request: tonic::Request<super::ListPodSandboxRequest>,
) -> Result<tonic::Response<super::ListPodSandboxResponse>, tonic::Status>;
async fn create_container(
&self,
request: tonic::Request<super::CreateContainerRequest>,
) -> Result<tonic::Response<super::CreateContainerResponse>, tonic::Status>;
async fn start_container(
&self,
request: tonic::Request<super::StartContainerRequest>,
) -> Result<tonic::Response<super::StartContainerResponse>, tonic::Status>;
async fn stop_container(
&self,
request: tonic::Request<super::StopContainerRequest>,
) -> Result<tonic::Response<super::StopContainerResponse>, tonic::Status>;
async fn remove_container(
&self,
request: tonic::Request<super::RemoveContainerRequest>,
) -> Result<tonic::Response<super::RemoveContainerResponse>, tonic::Status>;
async fn list_containers(
&self,
request: tonic::Request<super::ListContainersRequest>,
) -> Result<tonic::Response<super::ListContainersResponse>, tonic::Status>;
async fn container_status(
&self,
request: tonic::Request<super::ContainerStatusRequest>,
) -> Result<tonic::Response<super::ContainerStatusResponse>, tonic::Status>;
async fn update_container_resources(
&self,
request: tonic::Request<super::UpdateContainerResourcesRequest>,
) -> Result<
tonic::Response<super::UpdateContainerResourcesResponse>,
tonic::Status,
>;
async fn reopen_container_log(
&self,
request: tonic::Request<super::ReopenContainerLogRequest>,
) -> Result<tonic::Response<super::ReopenContainerLogResponse>, tonic::Status>;
async fn exec_sync(
&self,
request: tonic::Request<super::ExecSyncRequest>,
) -> Result<tonic::Response<super::ExecSyncResponse>, tonic::Status>;
async fn exec(
&self,
request: tonic::Request<super::ExecRequest>,
) -> Result<tonic::Response<super::ExecResponse>, tonic::Status>;
async fn attach(
&self,
request: tonic::Request<super::AttachRequest>,
) -> Result<tonic::Response<super::AttachResponse>, tonic::Status>;
async fn port_forward(
&self,
request: tonic::Request<super::PortForwardRequest>,
) -> Result<tonic::Response<super::PortForwardResponse>, tonic::Status>;
async fn container_stats(
&self,
request: tonic::Request<super::ContainerStatsRequest>,
) -> Result<tonic::Response<super::ContainerStatsResponse>, tonic::Status>;
async fn list_container_stats(
&self,
request: tonic::Request<super::ListContainerStatsRequest>,
) -> Result<tonic::Response<super::ListContainerStatsResponse>, tonic::Status>;
async fn pod_sandbox_stats(
&self,
request: tonic::Request<super::PodSandboxStatsRequest>,
) -> Result<tonic::Response<super::PodSandboxStatsResponse>, tonic::Status>;
async fn list_pod_sandbox_stats(
&self,
request: tonic::Request<super::ListPodSandboxStatsRequest>,
) -> Result<tonic::Response<super::ListPodSandboxStatsResponse>, tonic::Status>;
async fn update_runtime_config(
&self,
request: tonic::Request<super::UpdateRuntimeConfigRequest>,
) -> Result<tonic::Response<super::UpdateRuntimeConfigResponse>, tonic::Status>;
async fn status(
&self,
request: tonic::Request<super::StatusRequest>,
) -> Result<tonic::Response<super::StatusResponse>, tonic::Status>;
async fn checkpoint_container(
&self,
request: tonic::Request<super::CheckpointContainerRequest>,
) -> Result<tonic::Response<super::CheckpointContainerResponse>, tonic::Status>;
type GetContainerEventsStream: futures_core::Stream<
Item = Result<super::ContainerEventResponse, tonic::Status>,
>
+ Send
+ 'static;
async fn get_container_events(
&self,
request: tonic::Request<super::GetEventsRequest>,
) -> Result<tonic::Response<Self::GetContainerEventsStream>, tonic::Status>;
}
#[derive(Debug)]
pub struct RuntimeServiceServer<T: RuntimeService> {
inner: _Inner<T>,
accept_compression_encodings: EnabledCompressionEncodings,
send_compression_encodings: EnabledCompressionEncodings,
}
struct _Inner<T>(Arc<T>);
impl<T: RuntimeService> RuntimeServiceServer<T> {
pub fn new(inner: T) -> Self {
Self::from_arc(Arc::new(inner))
}
pub fn from_arc(inner: Arc<T>) -> Self {
let inner = _Inner(inner);
Self {
inner,
accept_compression_encodings: Default::default(),
send_compression_encodings: Default::default(),
}
}
pub fn with_interceptor<F>(
inner: T,
interceptor: F,
) -> InterceptedService<Self, F>
where
F: tonic::service::Interceptor,
{
InterceptedService::new(Self::new(inner), interceptor)
}
#[must_use]
pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
self.accept_compression_encodings.enable(encoding);
self
}
#[must_use]
pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
self.send_compression_encodings.enable(encoding);
self
}
}
impl<T, B> tonic::codegen::Service<http::Request<B>> for RuntimeServiceServer<T>
where
T: RuntimeService,
B: Body + Send + 'static,
B::Error: Into<StdError> + Send + 'static,
{
type Response = http::Response<tonic::body::BoxBody>;
type Error = std::convert::Infallible;
type Future = BoxFuture<Self::Response, Self::Error>;
fn poll_ready(
&mut self,
_cx: &mut Context<'_>,
) -> Poll<Result<(), Self::Error>> {
Poll::Ready(Ok(()))
}
fn call(&mut self, req: http::Request<B>) -> Self::Future {
let inner = self.inner.clone();
match req.uri().path() {
"/runtime.v1.RuntimeService/Version" => {
#[allow(non_camel_case_types)]
struct VersionSvc<T: RuntimeService>(pub Arc<T>);
impl<
T: RuntimeService,
> tonic::server::UnaryService<super::VersionRequest>
for VersionSvc<T> {
type Response = super::VersionResponse;
type Future = BoxFuture<
tonic::Response<Self::Response>,
tonic::Status,
>;
fn call(
&mut self,
request: tonic::Request<super::VersionRequest>,
) -> Self::Future {
let inner = self.0.clone();
let fut = async move { (*inner).version(request).await };
Box::pin(fut)
}
}
let accept_compression_encodings = self.accept_compression_encodings;
let send_compression_encodings = self.send_compression_encodings;
let inner = self.inner.clone();
let fut = async move {
let inner = inner.0;
let method = VersionSvc(inner);
let codec = tonic::codec::ProstCodec::default();
let mut grpc = tonic::server::Grpc::new(codec)
.apply_compression_config(
accept_compression_encodings,
send_compression_encodings,
);
let res = grpc.unary(method, req).await;
Ok(res)
};
Box::pin(fut)
}
"/runtime.v1.RuntimeService/RunPodSandbox" => {
#[allow(non_camel_case_types)]
struct RunPodSandboxSvc<T: RuntimeService>(pub Arc<T>);
impl<
T: RuntimeService,
> tonic::server::UnaryService<super::RunPodSandboxRequest>
for RunPodSandboxSvc<T> {
type Response = super::RunPodSandboxResponse;
type Future = BoxFuture<
tonic::Response<Self::Response>,
tonic::Status,
>;
fn call(
&mut self,
request: tonic::Request<super::RunPodSandboxRequest>,
) -> Self::Future {
let inner = self.0.clone();
let fut = async move {
(*inner).run_pod_sandbox(request).await
};
Box::pin(fut)
}
}
let accept_compression_encodings = self.accept_compression_encodings;
let send_compression_encodings = self.send_compression_encodings;
let inner = self.inner.clone();
let fut = async move {
let inner = inner.0;
let method = RunPodSandboxSvc(inner);
let codec = tonic::codec::ProstCodec::default();
let mut grpc = tonic::server::Grpc::new(codec)
.apply_compression_config(
accept_compression_encodings,
send_compression_encodings,
);
let res = grpc.unary(method, req).await;
Ok(res)
};
Box::pin(fut)
}
"/runtime.v1.RuntimeService/StopPodSandbox" => {
#[allow(non_camel_case_types)]
struct StopPodSandboxSvc<T: RuntimeService>(pub Arc<T>);
impl<
T: RuntimeService,
> tonic::server::UnaryService<super::StopPodSandboxRequest>
for StopPodSandboxSvc<T> {
type Response = super::StopPodSandboxResponse;
type Future = BoxFuture<
tonic::Response<Self::Response>,
tonic::Status,
>;
fn call(
&mut self,
request: tonic::Request<super::StopPodSandboxRequest>,
) -> Self::Future {
let inner = self.0.clone();
let fut = async move {
(*inner).stop_pod_sandbox(request).await
};
Box::pin(fut)
}
}
let accept_compression_encodings = self.accept_compression_encodings;
let send_compression_encodings = self.send_compression_encodings;
let inner = self.inner.clone();
let fut = async move {
let inner = inner.0;
let method = StopPodSandboxSvc(inner);
let codec = tonic::codec::ProstCodec::default();
let mut grpc = tonic::server::Grpc::new(codec)
.apply_compression_config(
accept_compression_encodings,
send_compression_encodings,
);
let res = grpc.unary(method, req).await;
Ok(res)
};
Box::pin(fut)
}
"/runtime.v1.RuntimeService/RemovePodSandbox" => {
#[allow(non_camel_case_types)]
struct RemovePodSandboxSvc<T: RuntimeService>(pub Arc<T>);
impl<
T: RuntimeService,
> tonic::server::UnaryService<super::RemovePodSandboxRequest>
for RemovePodSandboxSvc<T> {
type Response = super::RemovePodSandboxResponse;
type Future = BoxFuture<
tonic::Response<Self::Response>,
tonic::Status,
>;
fn call(
&mut self,
request: tonic::Request<super::RemovePodSandboxRequest>,
) -> Self::Future {
let inner = self.0.clone();
let fut = async move {
(*inner).remove_pod_sandbox(request).await
};
Box::pin(fut)
}
}
let accept_compression_encodings = self.accept_compression_encodings;
let send_compression_encodings = self.send_compression_encodings;
let inner = self.inner.clone();
let fut = async move {
let inner = inner.0;
let method = RemovePodSandboxSvc(inner);
let codec = tonic::codec::ProstCodec::default();
let mut grpc = tonic::server::Grpc::new(codec)
.apply_compression_config(
accept_compression_encodings,
send_compression_encodings,
);
let res = grpc.unary(method, req).await;
Ok(res)
};
Box::pin(fut)
}
"/runtime.v1.RuntimeService/PodSandboxStatus" => {
#[allow(non_camel_case_types)]
struct PodSandboxStatusSvc<T: RuntimeService>(pub Arc<T>);
impl<
T: RuntimeService,
> tonic::server::UnaryService<super::PodSandboxStatusRequest>
for PodSandboxStatusSvc<T> {
type Response = super::PodSandboxStatusResponse;
type Future = BoxFuture<
tonic::Response<Self::Response>,
tonic::Status,
>;
fn call(
&mut self,
request: tonic::Request<super::PodSandboxStatusRequest>,
) -> Self::Future {
let inner = self.0.clone();
let fut = async move {
(*inner).pod_sandbox_status(request).await
};
Box::pin(fut)
}
}
let accept_compression_encodings = self.accept_compression_encodings;
let send_compression_encodings = self.send_compression_encodings;
let inner = self.inner.clone();
let fut = async move {
let inner = inner.0;
let method = PodSandboxStatusSvc(inner);
let codec = tonic::codec::ProstCodec::default();
let mut grpc = tonic::server::Grpc::new(codec)
.apply_compression_config(
accept_compression_encodings,
send_compression_encodings,
);
let res = grpc.unary(method, req).await;
Ok(res)
};
Box::pin(fut)
}
"/runtime.v1.RuntimeService/ListPodSandbox" => {
#[allow(non_camel_case_types)]
struct ListPodSandboxSvc<T: RuntimeService>(pub Arc<T>);
impl<
T: RuntimeService,
> tonic::server::UnaryService<super::ListPodSandboxRequest>
for ListPodSandboxSvc<T> {
type Response = super::ListPodSandboxResponse;
type Future = BoxFuture<
tonic::Response<Self::Response>,
tonic::Status,
>;
fn call(
&mut self,
request: tonic::Request<super::ListPodSandboxRequest>,
) -> Self::Future {
let inner = self.0.clone();
let fut = async move {
(*inner).list_pod_sandbox(request).await
};
Box::pin(fut)
}
}
let accept_compression_encodings = self.accept_compression_encodings;
let send_compression_encodings = self.send_compression_encodings;
let inner = self.inner.clone();
let fut = async move {
let inner = inner.0;
let method = ListPodSandboxSvc(inner);
let codec = tonic::codec::ProstCodec::default();
let mut grpc = tonic::server::Grpc::new(codec)
.apply_compression_config(
accept_compression_encodings,
send_compression_encodings,
);
let res = grpc.unary(method, req).await;
Ok(res)
};
Box::pin(fut)
}
"/runtime.v1.RuntimeService/CreateContainer" => {
#[allow(non_camel_case_types)]
struct CreateContainerSvc<T: RuntimeService>(pub Arc<T>);
impl<
T: RuntimeService,
> tonic::server::UnaryService<super::CreateContainerRequest>
for CreateContainerSvc<T> {
type Response = super::CreateContainerResponse;
type Future = BoxFuture<
tonic::Response<Self::Response>,
tonic::Status,
>;
fn call(
&mut self,
request: tonic::Request<super::CreateContainerRequest>,
) -> Self::Future {
let inner = self.0.clone();
let fut = async move {
(*inner).create_container(request).await
};
Box::pin(fut)
}
}
let accept_compression_encodings = self.accept_compression_encodings;
let send_compression_encodings = self.send_compression_encodings;
let inner = self.inner.clone();
let fut = async move {
let inner = inner.0;
let method = CreateContainerSvc(inner);
let codec = tonic::codec::ProstCodec::default();
let mut grpc = tonic::server::Grpc::new(codec)
.apply_compression_config(
accept_compression_encodings,
send_compression_encodings,
);
let res = grpc.unary(method, req).await;
Ok(res)
};
Box::pin(fut)
}
"/runtime.v1.RuntimeService/StartContainer" => {
#[allow(non_camel_case_types)]
struct StartContainerSvc<T: RuntimeService>(pub Arc<T>);
impl<
T: RuntimeService,
> tonic::server::UnaryService<super::StartContainerRequest>
for StartContainerSvc<T> {
type Response = super::StartContainerResponse;
type Future = BoxFuture<
tonic::Response<Self::Response>,
tonic::Status,
>;
fn call(
&mut self,
request: tonic::Request<super::StartContainerRequest>,
) -> Self::Future {
let inner = self.0.clone();
let fut = async move {
(*inner).start_container(request).await
};
Box::pin(fut)
}
}
let accept_compression_encodings = self.accept_compression_encodings;
let send_compression_encodings = self.send_compression_encodings;
let inner = self.inner.clone();
let fut = async move {
let inner = inner.0;
let method = StartContainerSvc(inner);
let codec = tonic::codec::ProstCodec::default();
let mut grpc = tonic::server::Grpc::new(codec)
.apply_compression_config(
accept_compression_encodings,
send_compression_encodings,
);
let res = grpc.unary(method, req).await;
Ok(res)
};
Box::pin(fut)
}
"/runtime.v1.RuntimeService/StopContainer" => {
#[allow(non_camel_case_types)]
struct StopContainerSvc<T: RuntimeService>(pub Arc<T>);
impl<
T: RuntimeService,
> tonic::server::UnaryService<super::StopContainerRequest>
for StopContainerSvc<T> {
type Response = super::StopContainerResponse;
type Future = BoxFuture<
tonic::Response<Self::Response>,
tonic::Status,
>;
fn call(
&mut self,
request: tonic::Request<super::StopContainerRequest>,
) -> Self::Future {
let inner = self.0.clone();
let fut = async move {
(*inner).stop_container(request).await
};
Box::pin(fut)
}
}
let accept_compression_encodings = self.accept_compression_encodings;
let send_compression_encodings = self.send_compression_encodings;
let inner = self.inner.clone();
let fut = async move {
let inner = inner.0;
let method = StopContainerSvc(inner);
let codec = tonic::codec::ProstCodec::default();
let mut grpc = tonic::server::Grpc::new(codec)
.apply_compression_config(
accept_compression_encodings,
send_compression_encodings,
);
let res = grpc.unary(method, req).await;
Ok(res)
};
Box::pin(fut)
}
"/runtime.v1.RuntimeService/RemoveContainer" => {
#[allow(non_camel_case_types)]
struct RemoveContainerSvc<T: RuntimeService>(pub Arc<T>);
impl<
T: RuntimeService,
> tonic::server::UnaryService<super::RemoveContainerRequest>
for RemoveContainerSvc<T> {
type Response = super::RemoveContainerResponse;
type Future = BoxFuture<
tonic::Response<Self::Response>,
tonic::Status,
>;
fn call(
&mut self,
request: tonic::Request<super::RemoveContainerRequest>,
) -> Self::Future {
let inner = self.0.clone();
let fut = async move {
(*inner).remove_container(request).await
};
Box::pin(fut)
}
}
let accept_compression_encodings = self.accept_compression_encodings;
let send_compression_encodings = self.send_compression_encodings;
let inner = self.inner.clone();
let fut = async move {
let inner = inner.0;
let method = RemoveContainerSvc(inner);
let codec = tonic::codec::ProstCodec::default();
let mut grpc = tonic::server::Grpc::new(codec)
.apply_compression_config(
accept_compression_encodings,
send_compression_encodings,
);
let res = grpc.unary(method, req).await;
Ok(res)
};
Box::pin(fut)
}
"/runtime.v1.RuntimeService/ListContainers" => {
#[allow(non_camel_case_types)]
struct ListContainersSvc<T: RuntimeService>(pub Arc<T>);
impl<
T: RuntimeService,
> tonic::server::UnaryService<super::ListContainersRequest>
for ListContainersSvc<T> {
type Response = super::ListContainersResponse;
type Future = BoxFuture<
tonic::Response<Self::Response>,
tonic::Status,
>;
fn call(
&mut self,
request: tonic::Request<super::ListContainersRequest>,
) -> Self::Future {
let inner = self.0.clone();
let fut = async move {
(*inner).list_containers(request).await
};
Box::pin(fut)
}
}
let accept_compression_encodings = self.accept_compression_encodings;
let send_compression_encodings = self.send_compression_encodings;
let inner = self.inner.clone();
let fut = async move {
let inner = inner.0;
let method = ListContainersSvc(inner);
let codec = tonic::codec::ProstCodec::default();
let mut grpc = tonic::server::Grpc::new(codec)
.apply_compression_config(
accept_compression_encodings,
send_compression_encodings,
);
let res = grpc.unary(method, req).await;
Ok(res)
};
Box::pin(fut)
}
"/runtime.v1.RuntimeService/ContainerStatus" => {
#[allow(non_camel_case_types)]
struct ContainerStatusSvc<T: RuntimeService>(pub Arc<T>);
impl<
T: RuntimeService,
> tonic::server::UnaryService<super::ContainerStatusRequest>
for ContainerStatusSvc<T> {
type Response = super::ContainerStatusResponse;
type Future = BoxFuture<
tonic::Response<Self::Response>,
tonic::Status,
>;
fn call(
&mut self,
request: tonic::Request<super::ContainerStatusRequest>,
) -> Self::Future {
let inner = self.0.clone();
let fut = async move {
(*inner).container_status(request).await
};
Box::pin(fut)
}
}
let accept_compression_encodings = self.accept_compression_encodings;
let send_compression_encodings = self.send_compression_encodings;
let inner = self.inner.clone();
let fut = async move {
let inner = inner.0;
let method = ContainerStatusSvc(inner);
let codec = tonic::codec::ProstCodec::default();
let mut grpc = tonic::server::Grpc::new(codec)
.apply_compression_config(
accept_compression_encodings,
send_compression_encodings,
);
let res = grpc.unary(method, req).await;
Ok(res)
};
Box::pin(fut)
}
"/runtime.v1.RuntimeService/UpdateContainerResources" => {
#[allow(non_camel_case_types)]
struct UpdateContainerResourcesSvc<T: RuntimeService>(pub Arc<T>);
impl<
T: RuntimeService,
> tonic::server::UnaryService<super::UpdateContainerResourcesRequest>
for UpdateContainerResourcesSvc<T> {
type Response = super::UpdateContainerResourcesResponse;
type Future = BoxFuture<
tonic::Response<Self::Response>,
tonic::Status,
>;
fn call(
&mut self,
request: tonic::Request<
super::UpdateContainerResourcesRequest,
>,
) -> Self::Future {
let inner = self.0.clone();
let fut = async move {
(*inner).update_container_resources(request).await
};
Box::pin(fut)
}
}
let accept_compression_encodings = self.accept_compression_encodings;
let send_compression_encodings = self.send_compression_encodings;
let inner = self.inner.clone();
let fut = async move {
let inner = inner.0;
let method = UpdateContainerResourcesSvc(inner);
let codec = tonic::codec::ProstCodec::default();
let mut grpc = tonic::server::Grpc::new(codec)
.apply_compression_config(
accept_compression_encodings,
send_compression_encodings,
);
let res = grpc.unary(method, req).await;
Ok(res)
};
Box::pin(fut)
}
"/runtime.v1.RuntimeService/ReopenContainerLog" => {
#[allow(non_camel_case_types)]
struct ReopenContainerLogSvc<T: RuntimeService>(pub Arc<T>);
impl<
T: RuntimeService,
> tonic::server::UnaryService<super::ReopenContainerLogRequest>
for ReopenContainerLogSvc<T> {
type Response = super::ReopenContainerLogResponse;
type Future = BoxFuture<
tonic::Response<Self::Response>,
tonic::Status,
>;
fn call(
&mut self,
request: tonic::Request<super::ReopenContainerLogRequest>,
) -> Self::Future {
let inner = self.0.clone();
let fut = async move {
(*inner).reopen_container_log(request).await
};
Box::pin(fut)
}
}
let accept_compression_encodings = self.accept_compression_encodings;
let send_compression_encodings = self.send_compression_encodings;
let inner = self.inner.clone();
let fut = async move {
let inner = inner.0;
let method = ReopenContainerLogSvc(inner);
let codec = tonic::codec::ProstCodec::default();
let mut grpc = tonic::server::Grpc::new(codec)
.apply_compression_config(
accept_compression_encodings,
send_compression_encodings,
);
let res = grpc.unary(method, req).await;
Ok(res)
};
Box::pin(fut)
}
"/runtime.v1.RuntimeService/ExecSync" => {
#[allow(non_camel_case_types)]
struct ExecSyncSvc<T: RuntimeService>(pub Arc<T>);
impl<
T: RuntimeService,
> tonic::server::UnaryService<super::ExecSyncRequest>
for ExecSyncSvc<T> {
type Response = super::ExecSyncResponse;
type Future = BoxFuture<
tonic::Response<Self::Response>,
tonic::Status,
>;
fn call(
&mut self,
request: tonic::Request<super::ExecSyncRequest>,
) -> Self::Future {
let inner = self.0.clone();
let fut = async move { (*inner).exec_sync(request).await };
Box::pin(fut)
}
}
let accept_compression_encodings = self.accept_compression_encodings;
let send_compression_encodings = self.send_compression_encodings;
let inner = self.inner.clone();
let fut = async move {
let inner = inner.0;
let method = ExecSyncSvc(inner);
let codec = tonic::codec::ProstCodec::default();
let mut grpc = tonic::server::Grpc::new(codec)
.apply_compression_config(
accept_compression_encodings,
send_compression_encodings,
);
let res = grpc.unary(method, req).await;
Ok(res)
};
Box::pin(fut)
}
"/runtime.v1.RuntimeService/Exec" => {
#[allow(non_camel_case_types)]
struct ExecSvc<T: RuntimeService>(pub Arc<T>);
impl<
T: RuntimeService,
> tonic::server::UnaryService<super::ExecRequest> for ExecSvc<T> {
type Response = super::ExecResponse;
type Future = BoxFuture<
tonic::Response<Self::Response>,
tonic::Status,
>;
fn call(
&mut self,
request: tonic::Request<super::ExecRequest>,
) -> Self::Future {
let inner = self.0.clone();
let fut = async move { (*inner).exec(request).await };
Box::pin(fut)
}
}
let accept_compression_encodings = self.accept_compression_encodings;
let send_compression_encodings = self.send_compression_encodings;
let inner = self.inner.clone();
let fut = async move {
let inner = inner.0;
let method = ExecSvc(inner);
let codec = tonic::codec::ProstCodec::default();
let mut grpc = tonic::server::Grpc::new(codec)
.apply_compression_config(
accept_compression_encodings,
send_compression_encodings,
);
let res = grpc.unary(method, req).await;
Ok(res)
};
Box::pin(fut)
}
"/runtime.v1.RuntimeService/Attach" => {
#[allow(non_camel_case_types)]
struct AttachSvc<T: RuntimeService>(pub Arc<T>);
impl<
T: RuntimeService,
> tonic::server::UnaryService<super::AttachRequest>
for AttachSvc<T> {
type Response = super::AttachResponse;
type Future = BoxFuture<
tonic::Response<Self::Response>,
tonic::Status,
>;
fn call(
&mut self,
request: tonic::Request<super::AttachRequest>,
) -> Self::Future {
let inner = self.0.clone();
let fut = async move { (*inner).attach(request).await };
Box::pin(fut)
}
}
let accept_compression_encodings = self.accept_compression_encodings;
let send_compression_encodings = self.send_compression_encodings;
let inner = self.inner.clone();
let fut = async move {
let inner = inner.0;
let method = AttachSvc(inner);
let codec = tonic::codec::ProstCodec::default();
let mut grpc = tonic::server::Grpc::new(codec)
.apply_compression_config(
accept_compression_encodings,
send_compression_encodings,
);
let res = grpc.unary(method, req).await;
Ok(res)
};
Box::pin(fut)
}
"/runtime.v1.RuntimeService/PortForward" => {
#[allow(non_camel_case_types)]
struct PortForwardSvc<T: RuntimeService>(pub Arc<T>);
impl<
T: RuntimeService,
> tonic::server::UnaryService<super::PortForwardRequest>
for PortForwardSvc<T> {
type Response = super::PortForwardResponse;
type Future = BoxFuture<
tonic::Response<Self::Response>,
tonic::Status,
>;
fn call(
&mut self,
request: tonic::Request<super::PortForwardRequest>,
) -> Self::Future {
let inner = self.0.clone();
let fut = async move {
(*inner).port_forward(request).await
};
Box::pin(fut)
}
}
let accept_compression_encodings = self.accept_compression_encodings;
let send_compression_encodings = self.send_compression_encodings;
let inner = self.inner.clone();
let fut = async move {
let inner = inner.0;
let method = PortForwardSvc(inner);
let codec = tonic::codec::ProstCodec::default();
let mut grpc = tonic::server::Grpc::new(codec)
.apply_compression_config(
accept_compression_encodings,
send_compression_encodings,
);
let res = grpc.unary(method, req).await;
Ok(res)
};
Box::pin(fut)
}
"/runtime.v1.RuntimeService/ContainerStats" => {
#[allow(non_camel_case_types)]
struct ContainerStatsSvc<T: RuntimeService>(pub Arc<T>);
impl<
T: RuntimeService,
> tonic::server::UnaryService<super::ContainerStatsRequest>
for ContainerStatsSvc<T> {
type Response = super::ContainerStatsResponse;
type Future = BoxFuture<
tonic::Response<Self::Response>,
tonic::Status,
>;
fn call(
&mut self,
request: tonic::Request<super::ContainerStatsRequest>,
) -> Self::Future {
let inner = self.0.clone();
let fut = async move {
(*inner).container_stats(request).await
};
Box::pin(fut)
}
}
let accept_compression_encodings = self.accept_compression_encodings;
let send_compression_encodings = self.send_compression_encodings;
let inner = self.inner.clone();
let fut = async move {
let inner = inner.0;
let method = ContainerStatsSvc(inner);
let codec = tonic::codec::ProstCodec::default();
let mut grpc = tonic::server::Grpc::new(codec)
.apply_compression_config(
accept_compression_encodings,
send_compression_encodings,
);
let res = grpc.unary(method, req).await;
Ok(res)
};
Box::pin(fut)
}
"/runtime.v1.RuntimeService/ListContainerStats" => {
#[allow(non_camel_case_types)]
struct ListContainerStatsSvc<T: RuntimeService>(pub Arc<T>);
impl<
T: RuntimeService,
> tonic::server::UnaryService<super::ListContainerStatsRequest>
for ListContainerStatsSvc<T> {
type Response = super::ListContainerStatsResponse;
type Future = BoxFuture<
tonic::Response<Self::Response>,
tonic::Status,
>;
fn call(
&mut self,
request: tonic::Request<super::ListContainerStatsRequest>,
) -> Self::Future {
let inner = self.0.clone();
let fut = async move {
(*inner).list_container_stats(request).await
};
Box::pin(fut)
}
}
let accept_compression_encodings = self.accept_compression_encodings;
let send_compression_encodings = self.send_compression_encodings;
let inner = self.inner.clone();
let fut = async move {
let inner = inner.0;
let method = ListContainerStatsSvc(inner);
let codec = tonic::codec::ProstCodec::default();
let mut grpc = tonic::server::Grpc::new(codec)
.apply_compression_config(
accept_compression_encodings,
send_compression_encodings,
);
let res = grpc.unary(method, req).await;
Ok(res)
};
Box::pin(fut)
}
"/runtime.v1.RuntimeService/PodSandboxStats" => {
#[allow(non_camel_case_types)]
struct PodSandboxStatsSvc<T: RuntimeService>(pub Arc<T>);
impl<
T: RuntimeService,
> tonic::server::UnaryService<super::PodSandboxStatsRequest>
for PodSandboxStatsSvc<T> {
type Response = super::PodSandboxStatsResponse;
type Future = BoxFuture<
tonic::Response<Self::Response>,
tonic::Status,
>;
fn call(
&mut self,
request: tonic::Request<super::PodSandboxStatsRequest>,
) -> Self::Future {
let inner = self.0.clone();
let fut = async move {
(*inner).pod_sandbox_stats(request).await
};
Box::pin(fut)
}
}
let accept_compression_encodings = self.accept_compression_encodings;
let send_compression_encodings = self.send_compression_encodings;
let inner = self.inner.clone();
let fut = async move {
let inner = inner.0;
let method = PodSandboxStatsSvc(inner);
let codec = tonic::codec::ProstCodec::default();
let mut grpc = tonic::server::Grpc::new(codec)
.apply_compression_config(
accept_compression_encodings,
send_compression_encodings,
);
let res = grpc.unary(method, req).await;
Ok(res)
};
Box::pin(fut)
}
"/runtime.v1.RuntimeService/ListPodSandboxStats" => {
#[allow(non_camel_case_types)]
struct ListPodSandboxStatsSvc<T: RuntimeService>(pub Arc<T>);
impl<
T: RuntimeService,
> tonic::server::UnaryService<super::ListPodSandboxStatsRequest>
for ListPodSandboxStatsSvc<T> {
type Response = super::ListPodSandboxStatsResponse;
type Future = BoxFuture<
tonic::Response<Self::Response>,
tonic::Status,
>;
fn call(
&mut self,
request: tonic::Request<super::ListPodSandboxStatsRequest>,
) -> Self::Future {
let inner = self.0.clone();
let fut = async move {
(*inner).list_pod_sandbox_stats(request).await
};
Box::pin(fut)
}
}
let accept_compression_encodings = self.accept_compression_encodings;
let send_compression_encodings = self.send_compression_encodings;
let inner = self.inner.clone();
let fut = async move {
let inner = inner.0;
let method = ListPodSandboxStatsSvc(inner);
let codec = tonic::codec::ProstCodec::default();
let mut grpc = tonic::server::Grpc::new(codec)
.apply_compression_config(
accept_compression_encodings,
send_compression_encodings,
);
let res = grpc.unary(method, req).await;
Ok(res)
};
Box::pin(fut)
}
"/runtime.v1.RuntimeService/UpdateRuntimeConfig" => {
#[allow(non_camel_case_types)]
struct UpdateRuntimeConfigSvc<T: RuntimeService>(pub Arc<T>);
impl<
T: RuntimeService,
> tonic::server::UnaryService<super::UpdateRuntimeConfigRequest>
for UpdateRuntimeConfigSvc<T> {
type Response = super::UpdateRuntimeConfigResponse;
type Future = BoxFuture<
tonic::Response<Self::Response>,
tonic::Status,
>;
fn call(
&mut self,
request: tonic::Request<super::UpdateRuntimeConfigRequest>,
) -> Self::Future {
let inner = self.0.clone();
let fut = async move {
(*inner).update_runtime_config(request).await
};
Box::pin(fut)
}
}
let accept_compression_encodings = self.accept_compression_encodings;
let send_compression_encodings = self.send_compression_encodings;
let inner = self.inner.clone();
let fut = async move {
let inner = inner.0;
let method = UpdateRuntimeConfigSvc(inner);
let codec = tonic::codec::ProstCodec::default();
let mut grpc = tonic::server::Grpc::new(codec)
.apply_compression_config(
accept_compression_encodings,
send_compression_encodings,
);
let res = grpc.unary(method, req).await;
Ok(res)
};
Box::pin(fut)
}
"/runtime.v1.RuntimeService/Status" => {
#[allow(non_camel_case_types)]
struct StatusSvc<T: RuntimeService>(pub Arc<T>);
impl<
T: RuntimeService,
> tonic::server::UnaryService<super::StatusRequest>
for StatusSvc<T> {
type Response = super::StatusResponse;
type Future = BoxFuture<
tonic::Response<Self::Response>,
tonic::Status,
>;
fn call(
&mut self,
request: tonic::Request<super::StatusRequest>,
) -> Self::Future {
let inner = self.0.clone();
let fut = async move { (*inner).status(request).await };
Box::pin(fut)
}
}
let accept_compression_encodings = self.accept_compression_encodings;
let send_compression_encodings = self.send_compression_encodings;
let inner = self.inner.clone();
let fut = async move {
let inner = inner.0;
let method = StatusSvc(inner);
let codec = tonic::codec::ProstCodec::default();
let mut grpc = tonic::server::Grpc::new(codec)
.apply_compression_config(
accept_compression_encodings,
send_compression_encodings,
);
let res = grpc.unary(method, req).await;
Ok(res)
};
Box::pin(fut)
}
"/runtime.v1.RuntimeService/CheckpointContainer" => {
#[allow(non_camel_case_types)]
struct CheckpointContainerSvc<T: RuntimeService>(pub Arc<T>);
impl<
T: RuntimeService,
> tonic::server::UnaryService<super::CheckpointContainerRequest>
for CheckpointContainerSvc<T> {
type Response = super::CheckpointContainerResponse;
type Future = BoxFuture<
tonic::Response<Self::Response>,
tonic::Status,
>;
fn call(
&mut self,
request: tonic::Request<super::CheckpointContainerRequest>,
) -> Self::Future {
let inner = self.0.clone();
let fut = async move {
(*inner).checkpoint_container(request).await
};
Box::pin(fut)
}
}
let accept_compression_encodings = self.accept_compression_encodings;
let send_compression_encodings = self.send_compression_encodings;
let inner = self.inner.clone();
let fut = async move {
let inner = inner.0;
let method = CheckpointContainerSvc(inner);
let codec = tonic::codec::ProstCodec::default();
let mut grpc = tonic::server::Grpc::new(codec)
.apply_compression_config(
accept_compression_encodings,
send_compression_encodings,
);
let res = grpc.unary(method, req).await;
Ok(res)
};
Box::pin(fut)
}
"/runtime.v1.RuntimeService/GetContainerEvents" => {
#[allow(non_camel_case_types)]
struct GetContainerEventsSvc<T: RuntimeService>(pub Arc<T>);
impl<
T: RuntimeService,
> tonic::server::ServerStreamingService<super::GetEventsRequest>
for GetContainerEventsSvc<T> {
type Response = super::ContainerEventResponse;
type ResponseStream = T::GetContainerEventsStream;
type Future = BoxFuture<
tonic::Response<Self::ResponseStream>,
tonic::Status,
>;
fn call(
&mut self,
request: tonic::Request<super::GetEventsRequest>,
) -> Self::Future {
let inner = self.0.clone();
let fut = async move {
(*inner).get_container_events(request).await
};
Box::pin(fut)
}
}
let accept_compression_encodings = self.accept_compression_encodings;
let send_compression_encodings = self.send_compression_encodings;
let inner = self.inner.clone();
let fut = async move {
let inner = inner.0;
let method = GetContainerEventsSvc(inner);
let codec = tonic::codec::ProstCodec::default();
let mut grpc = tonic::server::Grpc::new(codec)
.apply_compression_config(
accept_compression_encodings,
send_compression_encodings,
);
let res = grpc.server_streaming(method, req).await;
Ok(res)
};
Box::pin(fut)
}
_ => {
Box::pin(async move {
Ok(
http::Response::builder()
.status(200)
.header("grpc-status", "12")
.header("content-type", "application/grpc")
.body(empty_body())
.unwrap(),
)
})
}
}
}
}
impl<T: RuntimeService> Clone for RuntimeServiceServer<T> {
fn clone(&self) -> Self {
let inner = self.inner.clone();
Self {
inner,
accept_compression_encodings: self.accept_compression_encodings,
send_compression_encodings: self.send_compression_encodings,
}
}
}
impl<T: RuntimeService> Clone for _Inner<T> {
fn clone(&self) -> Self {
Self(self.0.clone())
}
}
impl<T: std::fmt::Debug> std::fmt::Debug for _Inner<T> {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(f, "{:?}", self.0)
}
}
impl<T: RuntimeService> tonic::server::NamedService for RuntimeServiceServer<T> {
const NAME: &'static str = "runtime.v1.RuntimeService";
}
}
pub mod image_service_server {
#![allow(unused_variables, dead_code, missing_docs, clippy::let_unit_value)]
use tonic::codegen::*;
#[async_trait]
pub trait ImageService: Send + Sync + 'static {
async fn list_images(
&self,
request: tonic::Request<super::ListImagesRequest>,
) -> Result<tonic::Response<super::ListImagesResponse>, tonic::Status>;
async fn image_status(
&self,
request: tonic::Request<super::ImageStatusRequest>,
) -> Result<tonic::Response<super::ImageStatusResponse>, tonic::Status>;
async fn pull_image(
&self,
request: tonic::Request<super::PullImageRequest>,
) -> Result<tonic::Response<super::PullImageResponse>, tonic::Status>;
async fn remove_image(
&self,
request: tonic::Request<super::RemoveImageRequest>,
) -> Result<tonic::Response<super::RemoveImageResponse>, tonic::Status>;
async fn image_fs_info(
&self,
request: tonic::Request<super::ImageFsInfoRequest>,
) -> Result<tonic::Response<super::ImageFsInfoResponse>, tonic::Status>;
}
#[derive(Debug)]
pub struct ImageServiceServer<T: ImageService> {
inner: _Inner<T>,
accept_compression_encodings: EnabledCompressionEncodings,
send_compression_encodings: EnabledCompressionEncodings,
}
struct _Inner<T>(Arc<T>);
impl<T: ImageService> ImageServiceServer<T> {
pub fn new(inner: T) -> Self {
Self::from_arc(Arc::new(inner))
}
pub fn from_arc(inner: Arc<T>) -> Self {
let inner = _Inner(inner);
Self {
inner,
accept_compression_encodings: Default::default(),
send_compression_encodings: Default::default(),
}
}
pub fn with_interceptor<F>(
inner: T,
interceptor: F,
) -> InterceptedService<Self, F>
where
F: tonic::service::Interceptor,
{
InterceptedService::new(Self::new(inner), interceptor)
}
#[must_use]
pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
self.accept_compression_encodings.enable(encoding);
self
}
#[must_use]
pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
self.send_compression_encodings.enable(encoding);
self
}
}
impl<T, B> tonic::codegen::Service<http::Request<B>> for ImageServiceServer<T>
where
T: ImageService,
B: Body + Send + 'static,
B::Error: Into<StdError> + Send + 'static,
{
type Response = http::Response<tonic::body::BoxBody>;
type Error = std::convert::Infallible;
type Future = BoxFuture<Self::Response, Self::Error>;
fn poll_ready(
&mut self,
_cx: &mut Context<'_>,
) -> Poll<Result<(), Self::Error>> {
Poll::Ready(Ok(()))
}
fn call(&mut self, req: http::Request<B>) -> Self::Future {
let inner = self.inner.clone();
match req.uri().path() {
"/runtime.v1.ImageService/ListImages" => {
#[allow(non_camel_case_types)]
struct ListImagesSvc<T: ImageService>(pub Arc<T>);
impl<
T: ImageService,
> tonic::server::UnaryService<super::ListImagesRequest>
for ListImagesSvc<T> {
type Response = super::ListImagesResponse;
type Future = BoxFuture<
tonic::Response<Self::Response>,
tonic::Status,
>;
fn call(
&mut self,
request: tonic::Request<super::ListImagesRequest>,
) -> Self::Future {
let inner = self.0.clone();
let fut = async move { (*inner).list_images(request).await };
Box::pin(fut)
}
}
let accept_compression_encodings = self.accept_compression_encodings;
let send_compression_encodings = self.send_compression_encodings;
let inner = self.inner.clone();
let fut = async move {
let inner = inner.0;
let method = ListImagesSvc(inner);
let codec = tonic::codec::ProstCodec::default();
let mut grpc = tonic::server::Grpc::new(codec)
.apply_compression_config(
accept_compression_encodings,
send_compression_encodings,
);
let res = grpc.unary(method, req).await;
Ok(res)
};
Box::pin(fut)
}
"/runtime.v1.ImageService/ImageStatus" => {
#[allow(non_camel_case_types)]
struct ImageStatusSvc<T: ImageService>(pub Arc<T>);
impl<
T: ImageService,
> tonic::server::UnaryService<super::ImageStatusRequest>
for ImageStatusSvc<T> {
type Response = super::ImageStatusResponse;
type Future = BoxFuture<
tonic::Response<Self::Response>,
tonic::Status,
>;
fn call(
&mut self,
request: tonic::Request<super::ImageStatusRequest>,
) -> Self::Future {
let inner = self.0.clone();
let fut = async move {
(*inner).image_status(request).await
};
Box::pin(fut)
}
}
let accept_compression_encodings = self.accept_compression_encodings;
let send_compression_encodings = self.send_compression_encodings;
let inner = self.inner.clone();
let fut = async move {
let inner = inner.0;
let method = ImageStatusSvc(inner);
let codec = tonic::codec::ProstCodec::default();
let mut grpc = tonic::server::Grpc::new(codec)
.apply_compression_config(
accept_compression_encodings,
send_compression_encodings,
);
let res = grpc.unary(method, req).await;
Ok(res)
};
Box::pin(fut)
}
"/runtime.v1.ImageService/PullImage" => {
#[allow(non_camel_case_types)]
struct PullImageSvc<T: ImageService>(pub Arc<T>);
impl<
T: ImageService,
> tonic::server::UnaryService<super::PullImageRequest>
for PullImageSvc<T> {
type Response = super::PullImageResponse;
type Future = BoxFuture<
tonic::Response<Self::Response>,
tonic::Status,
>;
fn call(
&mut self,
request: tonic::Request<super::PullImageRequest>,
) -> Self::Future {
let inner = self.0.clone();
let fut = async move { (*inner).pull_image(request).await };
Box::pin(fut)
}
}
let accept_compression_encodings = self.accept_compression_encodings;
let send_compression_encodings = self.send_compression_encodings;
let inner = self.inner.clone();
let fut = async move {
let inner = inner.0;
let method = PullImageSvc(inner);
let codec = tonic::codec::ProstCodec::default();
let mut grpc = tonic::server::Grpc::new(codec)
.apply_compression_config(
accept_compression_encodings,
send_compression_encodings,
);
let res = grpc.unary(method, req).await;
Ok(res)
};
Box::pin(fut)
}
"/runtime.v1.ImageService/RemoveImage" => {
#[allow(non_camel_case_types)]
struct RemoveImageSvc<T: ImageService>(pub Arc<T>);
impl<
T: ImageService,
> tonic::server::UnaryService<super::RemoveImageRequest>
for RemoveImageSvc<T> {
type Response = super::RemoveImageResponse;
type Future = BoxFuture<
tonic::Response<Self::Response>,
tonic::Status,
>;
fn call(
&mut self,
request: tonic::Request<super::RemoveImageRequest>,
) -> Self::Future {
let inner = self.0.clone();
let fut = async move {
(*inner).remove_image(request).await
};
Box::pin(fut)
}
}
let accept_compression_encodings = self.accept_compression_encodings;
let send_compression_encodings = self.send_compression_encodings;
let inner = self.inner.clone();
let fut = async move {
let inner = inner.0;
let method = RemoveImageSvc(inner);
let codec = tonic::codec::ProstCodec::default();
let mut grpc = tonic::server::Grpc::new(codec)
.apply_compression_config(
accept_compression_encodings,
send_compression_encodings,
);
let res = grpc.unary(method, req).await;
Ok(res)
};
Box::pin(fut)
}
"/runtime.v1.ImageService/ImageFsInfo" => {
#[allow(non_camel_case_types)]
struct ImageFsInfoSvc<T: ImageService>(pub Arc<T>);
impl<
T: ImageService,
> tonic::server::UnaryService<super::ImageFsInfoRequest>
for ImageFsInfoSvc<T> {
type Response = super::ImageFsInfoResponse;
type Future = BoxFuture<
tonic::Response<Self::Response>,
tonic::Status,
>;
fn call(
&mut self,
request: tonic::Request<super::ImageFsInfoRequest>,
) -> Self::Future {
let inner = self.0.clone();
let fut = async move {
(*inner).image_fs_info(request).await
};
Box::pin(fut)
}
}
let accept_compression_encodings = self.accept_compression_encodings;
let send_compression_encodings = self.send_compression_encodings;
let inner = self.inner.clone();
let fut = async move {
let inner = inner.0;
let method = ImageFsInfoSvc(inner);
let codec = tonic::codec::ProstCodec::default();
let mut grpc = tonic::server::Grpc::new(codec)
.apply_compression_config(
accept_compression_encodings,
send_compression_encodings,
);
let res = grpc.unary(method, req).await;
Ok(res)
};
Box::pin(fut)
}
_ => {
Box::pin(async move {
Ok(
http::Response::builder()
.status(200)
.header("grpc-status", "12")
.header("content-type", "application/grpc")
.body(empty_body())
.unwrap(),
)
})
}
}
}
}
impl<T: ImageService> Clone for ImageServiceServer<T> {
fn clone(&self) -> Self {
let inner = self.inner.clone();
Self {
inner,
accept_compression_encodings: self.accept_compression_encodings,
send_compression_encodings: self.send_compression_encodings,
}
}
}
impl<T: ImageService> Clone for _Inner<T> {
fn clone(&self) -> Self {
Self(self.0.clone())
}
}
impl<T: std::fmt::Debug> std::fmt::Debug for _Inner<T> {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(f, "{:?}", self.0)
}
}
impl<T: ImageService> tonic::server::NamedService for ImageServiceServer<T> {
const NAME: &'static str = "runtime.v1.ImageService";
}
}