Kubernetes CRI CLI: crictl-shaped client, simulator server, proxy
0

Configure Feed

Select the types of activity you want to include in your feed.

ocaml-cri / lib / runner.mli
7.4 kB 221 lines
1(** The container-runtime boundary for the CRI server, and an in-memory 2 simulator. 3 4 A {!module-type:S} implements every RuntimeService and ImageService 5 operation over its own state; {!Cri_server.Make} builds the gRPC server over 6 any backend. {!Memory} tracks a {e simulated} pod/container/image lifecycle 7 with no real process (created -> running -> exited is bookkeeping, stats are 8 zero, exec/attach return a URL but stream no bytes, exec_sync exits 0 with 9 empty output) -- documented simulations, never silent stubs, as in 10 [docker-runner]. A real runc/VMM backend is a separate {!module-type:S} 11 implementation. *) 12 13(** A failed operation. The server maps each constructor to a gRPC status: 14 {!Not_found} to [NOT_FOUND], {!Invalid_argument} to [INVALID_ARGUMENT], 15 {!Unimplemented} to [UNIMPLEMENTED], {!Internal} to [INTERNAL]. *) 16type error = 17 | Not_found of string 18 | Invalid_argument of string 19 | Unimplemented of string 20 | Internal of string 21 22module type S = sig 23 type t 24 (** Backend state. *) 25 26 val version : t -> Version.request -> (Version.response, error) result 27 (** The [version] RPC. *) 28 29 val run_pod_sandbox : 30 t -> 31 Pod_sandbox.run_pod_sandbox_request -> 32 (Pod_sandbox.run_pod_sandbox_response, error) result 33 (** The [run_pod_sandbox] RPC. *) 34 35 val stop_pod_sandbox : 36 t -> Pod_sandbox.stop_pod_sandbox_request -> (unit, error) result 37 (** The [stop_pod_sandbox] RPC. *) 38 39 val remove_pod_sandbox : 40 t -> Pod_sandbox.remove_pod_sandbox_request -> (unit, error) result 41 (** The [remove_pod_sandbox] RPC. *) 42 43 val pod_sandbox_status : 44 t -> 45 Pod_sandbox.status_request -> 46 (Pod_sandbox.status_response, error) result 47 (** The [pod_sandbox_status] RPC. *) 48 49 val list_pod_sandbox : 50 t -> 51 Pod_sandbox.list_pod_sandbox_request -> 52 (Pod_sandbox.list_pod_sandbox_response, error) result 53 (** The [list_pod_sandbox] RPC. *) 54 55 val stream_pod_sandboxes : 56 t -> 57 Pod_sandbox.stream_pod_sandboxes_request -> 58 (Pod_sandbox.stream_pod_sandboxes_response, error) result 59 (** The [stream_pod_sandboxes] RPC. *) 60 61 val pod_sandbox_stats : 62 t -> Pod_sandbox.stats_request -> (Pod_sandbox.stats_response, error) result 63 (** The [pod_sandbox_stats] RPC. *) 64 65 val list_pod_sandbox_stats : 66 t -> 67 Pod_sandbox.list_pod_sandbox_stats_request -> 68 (Pod_sandbox.list_pod_sandbox_stats_response, error) result 69 (** The [list_pod_sandbox_stats] RPC. *) 70 71 val stream_pod_sandbox_stats : 72 t -> 73 Pod_sandbox.stream_pod_sandbox_stats_request -> 74 (Pod_sandbox.stream_pod_sandbox_stats_response, error) result 75 (** The [stream_pod_sandbox_stats] RPC. *) 76 77 val update_pod_sandbox_resources : 78 t -> 79 Pod_sandbox.update_pod_sandbox_resources_request -> 80 (unit, error) result 81 (** The [update_pod_sandbox_resources] RPC. *) 82 83 val container_create : 84 t -> 85 Container.creation_request -> 86 (Container.creation_response, error) result 87 (** The [container_create] RPC. *) 88 89 val start_container : 90 t -> Container.start_container_request -> (unit, error) result 91 (** The [start_container] RPC. *) 92 93 val stop_container : 94 t -> Container.stop_container_request -> (unit, error) result 95 (** The [stop_container] RPC. *) 96 97 val remove_container : 98 t -> Container.remove_container_request -> (unit, error) result 99 (** The [remove_container] RPC. *) 100 101 val list_containers : 102 t -> 103 Container.list_containers_request -> 104 (Container.list_containers_response, error) result 105 (** The [list_containers] RPC. *) 106 107 val stream_containers : 108 t -> 109 Container.stream_containers_request -> 110 (Container.stream_containers_response, error) result 111 (** The [stream_containers] RPC. *) 112 113 val container_status : 114 t -> Container.status_request -> (Container.status_response, error) result 115 (** The [container_status] RPC. *) 116 117 val update_container_resources : 118 t -> Container.update_container_resources_request -> (unit, error) result 119 (** The [update_container_resources] RPC. *) 120 121 val reopen_container_log : 122 t -> Container.reopen_container_log_request -> (unit, error) result 123 (** The [reopen_container_log] RPC. *) 124 125 val checkpoint_container : 126 t -> Container.checkpoint_container_request -> (unit, error) result 127 (** The [checkpoint_container] RPC. *) 128 129 val container_stats : 130 t -> Container.stats_request -> (Container.stats_response, error) result 131 (** The [container_stats] RPC. *) 132 133 val list_container_stats : 134 t -> 135 Container.list_container_stats_request -> 136 (Container.list_container_stats_response, error) result 137 (** The [list_container_stats] RPC. *) 138 139 val stream_container_stats : 140 t -> 141 Container.stream_container_stats_request -> 142 (Container.stream_container_stats_response, error) result 143 (** The [stream_container_stats] RPC. *) 144 145 val exec_sync : t -> Exec.sync_request -> (Exec.sync_response, error) result 146 (** The [exec_sync] RPC. *) 147 148 val exec : t -> Exec.request -> (Exec.response, error) result 149 (** The [exec] RPC. *) 150 151 val attach : t -> Exec.attach_request -> (Exec.attach_response, error) result 152 (** The [attach] RPC. *) 153 154 val port_forward : 155 t -> Exec.port_forward_request -> (Exec.port_forward_response, error) result 156 (** The [port_forward] RPC. *) 157 158 val update_runtime_config : 159 t -> Runtime.update_runtime_config_request -> (unit, error) result 160 (** The [update_runtime_config] RPC. *) 161 162 val status : 163 t -> Runtime.status_request -> (Runtime.status_response, error) result 164 (** The [status] RPC. *) 165 166 val runtime_config : t -> unit -> (Runtime.config_response, error) result 167 (** The [runtime_config] RPC. *) 168 169 val container_events : 170 t -> unit -> (Event.container_event_response list, error) result 171 (** The [container_events] RPC. *) 172 173 val list_metric_descriptors : 174 t -> unit -> (Metrics.list_metric_descriptors_response, error) result 175 (** The [list_metric_descriptors] RPC. *) 176 177 val list_pod_sandbox_metrics : 178 t -> unit -> (Metrics.list_pod_sandbox_metrics_response, error) result 179 (** The [list_pod_sandbox_metrics] RPC. *) 180 181 val stream_pod_sandbox_metrics : 182 t -> unit -> (Metrics.stream_pod_sandbox_metrics_response, error) result 183 (** The [stream_pod_sandbox_metrics] RPC. *) 184 185 val list_images : 186 t -> Image.list_images_request -> (Image.list_images_response, error) result 187 (** The [list_images] RPC. *) 188 189 val stream_images : 190 t -> 191 Image.stream_images_request -> 192 (Image.stream_images_response, error) result 193 (** The [stream_images] RPC. *) 194 195 val image_status : 196 t -> Image.status_request -> (Image.status_response, error) result 197 (** The [image_status] RPC. *) 198 199 val pull_image : 200 t -> Image.pull_image_request -> (Image.pull_image_response, error) result 201 (** The [pull_image] RPC. *) 202 203 val remove_image : t -> Image.remove_image_request -> (unit, error) result 204 (** The [remove_image] RPC. *) 205 206 val image_fs_info : t -> unit -> (Image.fs_info_response, error) result 207 (** The [image_fs_info] RPC. *) 208end 209 210module type BACKEND = S 211(** Backwards-compatible name for {!module-type:S}. *) 212 213(** The in-memory simulator backend, for the [crictd --fake] daemon and tests. 214 Ids are assigned deterministically and timestamps come from a monotonic 215 counter, so runs are reproducible. *) 216module Memory : sig 217 include S 218 219 val v : unit -> t 220 (** [v ()] is a fresh, empty backend. *) 221end