summaryrefslogtreecommitdiff
path: root/vendor/k8s.io/kubernetes/pkg/kubelet
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/k8s.io/kubernetes/pkg/kubelet')
-rw-r--r--vendor/k8s.io/kubernetes/pkg/kubelet/apis/cri/v1alpha1/runtime/api.pb.go24201
-rw-r--r--vendor/k8s.io/kubernetes/pkg/kubelet/apis/cri/v1alpha1/runtime/api.proto1081
-rw-r--r--vendor/k8s.io/kubernetes/pkg/kubelet/apis/cri/v1alpha1/runtime/constants.go27
-rw-r--r--vendor/k8s.io/kubernetes/pkg/kubelet/container/cache.go199
-rw-r--r--vendor/k8s.io/kubernetes/pkg/kubelet/container/container_gc.go84
-rw-r--r--vendor/k8s.io/kubernetes/pkg/kubelet/container/container_reference_manager.go62
-rw-r--r--vendor/k8s.io/kubernetes/pkg/kubelet/container/helpers.go367
-rw-r--r--vendor/k8s.io/kubernetes/pkg/kubelet/container/os.go107
-rw-r--r--vendor/k8s.io/kubernetes/pkg/kubelet/container/pty_linux.go30
-rw-r--r--vendor/k8s.io/kubernetes/pkg/kubelet/container/pty_unsupported.go28
-rw-r--r--vendor/k8s.io/kubernetes/pkg/kubelet/container/ref.go73
-rw-r--r--vendor/k8s.io/kubernetes/pkg/kubelet/container/resize.go46
-rw-r--r--vendor/k8s.io/kubernetes/pkg/kubelet/container/runtime.go646
-rw-r--r--vendor/k8s.io/kubernetes/pkg/kubelet/container/runtime_cache.go96
-rw-r--r--vendor/k8s.io/kubernetes/pkg/kubelet/container/runtime_cache_fake.go45
-rw-r--r--vendor/k8s.io/kubernetes/pkg/kubelet/container/sync_result.go128
-rw-r--r--vendor/k8s.io/kubernetes/pkg/kubelet/events/event.go104
-rw-r--r--vendor/k8s.io/kubernetes/pkg/kubelet/leaky/leaky.go25
-rw-r--r--vendor/k8s.io/kubernetes/pkg/kubelet/network/hostport/fake_iptables.go331
-rw-r--r--vendor/k8s.io/kubernetes/pkg/kubelet/network/hostport/hostport.go200
-rw-r--r--vendor/k8s.io/kubernetes/pkg/kubelet/network/hostport/hostport_manager.go329
-rw-r--r--vendor/k8s.io/kubernetes/pkg/kubelet/network/hostport/hostport_syncer.go306
-rw-r--r--vendor/k8s.io/kubernetes/pkg/kubelet/server/portforward/constants.go23
-rw-r--r--vendor/k8s.io/kubernetes/pkg/kubelet/server/portforward/httpstream.go309
-rw-r--r--vendor/k8s.io/kubernetes/pkg/kubelet/server/portforward/portforward.go53
-rw-r--r--vendor/k8s.io/kubernetes/pkg/kubelet/server/portforward/websocket.go198
-rw-r--r--vendor/k8s.io/kubernetes/pkg/kubelet/server/remotecommand/attach.go59
-rw-r--r--vendor/k8s.io/kubernetes/pkg/kubelet/server/remotecommand/doc.go18
-rw-r--r--vendor/k8s.io/kubernetes/pkg/kubelet/server/remotecommand/exec.go79
-rw-r--r--vendor/k8s.io/kubernetes/pkg/kubelet/server/remotecommand/httpstream.go447
-rw-r--r--vendor/k8s.io/kubernetes/pkg/kubelet/server/remotecommand/websocket.go132
-rw-r--r--vendor/k8s.io/kubernetes/pkg/kubelet/server/streaming/errors.go55
-rw-r--r--vendor/k8s.io/kubernetes/pkg/kubelet/server/streaming/request_cache.go146
-rw-r--r--vendor/k8s.io/kubernetes/pkg/kubelet/server/streaming/server.go344
-rw-r--r--vendor/k8s.io/kubernetes/pkg/kubelet/types/constants.go22
-rw-r--r--vendor/k8s.io/kubernetes/pkg/kubelet/types/doc.go18
-rw-r--r--vendor/k8s.io/kubernetes/pkg/kubelet/types/labels.go40
-rw-r--r--vendor/k8s.io/kubernetes/pkg/kubelet/types/pod_update.go153
-rw-r--r--vendor/k8s.io/kubernetes/pkg/kubelet/types/types.go93
-rw-r--r--vendor/k8s.io/kubernetes/pkg/kubelet/util/format/pod.go72
-rw-r--r--vendor/k8s.io/kubernetes/pkg/kubelet/util/format/resources.go36
-rw-r--r--vendor/k8s.io/kubernetes/pkg/kubelet/util/ioutils/ioutils.go37
42 files changed, 30849 insertions, 0 deletions
diff --git a/vendor/k8s.io/kubernetes/pkg/kubelet/apis/cri/v1alpha1/runtime/api.pb.go b/vendor/k8s.io/kubernetes/pkg/kubelet/apis/cri/v1alpha1/runtime/api.pb.go
new file mode 100644
index 000000000..8377cd33b
--- /dev/null
+++ b/vendor/k8s.io/kubernetes/pkg/kubelet/apis/cri/v1alpha1/runtime/api.pb.go
@@ -0,0 +1,24201 @@
+/*
+Copyright 2017 The Kubernetes Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+// Code generated by protoc-gen-gogo.
+// source: api.proto
+// DO NOT EDIT!
+
+/*
+ Package runtime is a generated protocol buffer package.
+
+ It is generated from these files:
+ api.proto
+
+ It has these top-level messages:
+ VersionRequest
+ VersionResponse
+ DNSConfig
+ PortMapping
+ Mount
+ NamespaceOption
+ Int64Value
+ LinuxSandboxSecurityContext
+ LinuxPodSandboxConfig
+ PodSandboxMetadata
+ PodSandboxConfig
+ RunPodSandboxRequest
+ RunPodSandboxResponse
+ StopPodSandboxRequest
+ StopPodSandboxResponse
+ RemovePodSandboxRequest
+ RemovePodSandboxResponse
+ PodSandboxStatusRequest
+ PodSandboxNetworkStatus
+ Namespace
+ LinuxPodSandboxStatus
+ PodSandboxStatus
+ PodSandboxStatusResponse
+ PodSandboxStateValue
+ PodSandboxFilter
+ ListPodSandboxRequest
+ PodSandbox
+ ListPodSandboxResponse
+ ImageSpec
+ KeyValue
+ LinuxContainerResources
+ SELinuxOption
+ Capability
+ LinuxContainerSecurityContext
+ LinuxContainerConfig
+ ContainerMetadata
+ Device
+ ContainerConfig
+ CreateContainerRequest
+ CreateContainerResponse
+ StartContainerRequest
+ StartContainerResponse
+ StopContainerRequest
+ StopContainerResponse
+ RemoveContainerRequest
+ RemoveContainerResponse
+ ContainerStateValue
+ ContainerFilter
+ ListContainersRequest
+ Container
+ ListContainersResponse
+ ContainerStatusRequest
+ ContainerStatus
+ ContainerStatusResponse
+ ExecSyncRequest
+ ExecSyncResponse
+ ExecRequest
+ ExecResponse
+ AttachRequest
+ AttachResponse
+ PortForwardRequest
+ PortForwardResponse
+ ImageFilter
+ ListImagesRequest
+ Image
+ ListImagesResponse
+ ImageStatusRequest
+ ImageStatusResponse
+ AuthConfig
+ PullImageRequest
+ PullImageResponse
+ RemoveImageRequest
+ RemoveImageResponse
+ NetworkConfig
+ RuntimeConfig
+ UpdateRuntimeConfigRequest
+ UpdateRuntimeConfigResponse
+ RuntimeCondition
+ RuntimeStatus
+ StatusRequest
+ StatusResponse
+ ImageFsInfoRequest
+ UInt64Value
+ StorageIdentifier
+ FilesystemUsage
+ ImageFsInfoResponse
+ ContainerStatsRequest
+ ContainerStatsResponse
+ ListContainerStatsRequest
+ ContainerStatsFilter
+ ListContainerStatsResponse
+ ContainerAttributes
+ ContainerStats
+ CpuUsage
+ MemoryUsage
+*/
+package runtime
+
+import proto "github.com/gogo/protobuf/proto"
+import fmt "fmt"
+import math "math"
+import _ "github.com/gogo/protobuf/gogoproto"
+
+import (
+ context "golang.org/x/net/context"
+ grpc "google.golang.org/grpc"
+)
+
+import strings "strings"
+import reflect "reflect"
+import github_com_gogo_protobuf_sortkeys "github.com/gogo/protobuf/sortkeys"
+
+import io "io"
+
+// Reference imports to suppress errors if they are not otherwise used.
+var _ = proto.Marshal
+var _ = fmt.Errorf
+var _ = math.Inf
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the proto package it is being compiled against.
+// A compilation error at this line likely means your copy of the
+// proto package needs to be updated.
+const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package
+
+type Protocol int32
+
+const (
+ Protocol_TCP Protocol = 0
+ Protocol_UDP Protocol = 1
+)
+
+var Protocol_name = map[int32]string{
+ 0: "TCP",
+ 1: "UDP",
+}
+var Protocol_value = map[string]int32{
+ "TCP": 0,
+ "UDP": 1,
+}
+
+func (x Protocol) String() string {
+ return proto.EnumName(Protocol_name, int32(x))
+}
+func (Protocol) EnumDescriptor() ([]byte, []int) { return fileDescriptorApi, []int{0} }
+
+type PodSandboxState int32
+
+const (
+ PodSandboxState_SANDBOX_READY PodSandboxState = 0
+ PodSandboxState_SANDBOX_NOTREADY PodSandboxState = 1
+)
+
+var PodSandboxState_name = map[int32]string{
+ 0: "SANDBOX_READY",
+ 1: "SANDBOX_NOTREADY",
+}
+var PodSandboxState_value = map[string]int32{
+ "SANDBOX_READY": 0,
+ "SANDBOX_NOTREADY": 1,
+}
+
+func (x PodSandboxState) String() string {
+ return proto.EnumName(PodSandboxState_name, int32(x))
+}
+func (PodSandboxState) EnumDescriptor() ([]byte, []int) { return fileDescriptorApi, []int{1} }
+
+type ContainerState int32
+
+const (
+ ContainerState_CONTAINER_CREATED ContainerState = 0
+ ContainerState_CONTAINER_RUNNING ContainerState = 1
+ ContainerState_CONTAINER_EXITED ContainerState = 2
+ ContainerState_CONTAINER_UNKNOWN ContainerState = 3
+)
+
+var ContainerState_name = map[int32]string{
+ 0: "CONTAINER_CREATED",
+ 1: "CONTAINER_RUNNING",
+ 2: "CONTAINER_EXITED",
+ 3: "CONTAINER_UNKNOWN",
+}
+var ContainerState_value = map[string]int32{
+ "CONTAINER_CREATED": 0,
+ "CONTAINER_RUNNING": 1,
+ "CONTAINER_EXITED": 2,
+ "CONTAINER_UNKNOWN": 3,
+}
+
+func (x ContainerState) String() string {
+ return proto.EnumName(ContainerState_name, int32(x))
+}
+func (ContainerState) EnumDescriptor() ([]byte, []int) { return fileDescriptorApi, []int{2} }
+
+type VersionRequest struct {
+ // Version of the kubelet runtime API.
+ Version string `protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"`
+}
+
+func (m *VersionRequest) Reset() { *m = VersionRequest{} }
+func (*VersionRequest) ProtoMessage() {}
+func (*VersionRequest) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{0} }
+
+func (m *VersionRequest) GetVersion() string {
+ if m != nil {
+ return m.Version
+ }
+ return ""
+}
+
+type VersionResponse struct {
+ // Version of the kubelet runtime API.
+ Version string `protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"`
+ // Name of the container runtime.
+ RuntimeName string `protobuf:"bytes,2,opt,name=runtime_name,json=runtimeName,proto3" json:"runtime_name,omitempty"`
+ // Version of the container runtime. The string must be
+ // semver-compatible.
+ RuntimeVersion string `protobuf:"bytes,3,opt,name=runtime_version,json=runtimeVersion,proto3" json:"runtime_version,omitempty"`
+ // API version of the container runtime. The string must be
+ // semver-compatible.
+ RuntimeApiVersion string `protobuf:"bytes,4,opt,name=runtime_api_version,json=runtimeApiVersion,proto3" json:"runtime_api_version,omitempty"`
+}
+
+func (m *VersionResponse) Reset() { *m = VersionResponse{} }
+func (*VersionResponse) ProtoMessage() {}
+func (*VersionResponse) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{1} }
+
+func (m *VersionResponse) GetVersion() string {
+ if m != nil {
+ return m.Version
+ }
+ return ""
+}
+
+func (m *VersionResponse) GetRuntimeName() string {
+ if m != nil {
+ return m.RuntimeName
+ }
+ return ""
+}
+
+func (m *VersionResponse) GetRuntimeVersion() string {
+ if m != nil {
+ return m.RuntimeVersion
+ }
+ return ""
+}
+
+func (m *VersionResponse) GetRuntimeApiVersion() string {
+ if m != nil {
+ return m.RuntimeApiVersion
+ }
+ return ""
+}
+
+// DNSConfig specifies the DNS servers and search domains of a sandbox.
+type DNSConfig struct {
+ // List of DNS servers of the cluster.
+ Servers []string `protobuf:"bytes,1,rep,name=servers" json:"servers,omitempty"`
+ // List of DNS search domains of the cluster.
+ Searches []string `protobuf:"bytes,2,rep,name=searches" json:"searches,omitempty"`
+ // List of DNS options. See https://linux.die.net/man/5/resolv.conf
+ // for all available options.
+ Options []string `protobuf:"bytes,3,rep,name=options" json:"options,omitempty"`
+}
+
+func (m *DNSConfig) Reset() { *m = DNSConfig{} }
+func (*DNSConfig) ProtoMessage() {}
+func (*DNSConfig) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{2} }
+
+func (m *DNSConfig) GetServers() []string {
+ if m != nil {
+ return m.Servers
+ }
+ return nil
+}
+
+func (m *DNSConfig) GetSearches() []string {
+ if m != nil {
+ return m.Searches
+ }
+ return nil
+}
+
+func (m *DNSConfig) GetOptions() []string {
+ if m != nil {
+ return m.Options
+ }
+ return nil
+}
+
+// PortMapping specifies the port mapping configurations of a sandbox.
+type PortMapping struct {
+ // Protocol of the port mapping.
+ Protocol Protocol `protobuf:"varint,1,opt,name=protocol,proto3,enum=runtime.Protocol" json:"protocol,omitempty"`
+ // Port number within the container. Default: 0 (not specified).
+ ContainerPort int32 `protobuf:"varint,2,opt,name=container_port,json=containerPort,proto3" json:"container_port,omitempty"`
+ // Port number on the host. Default: 0 (not specified).
+ HostPort int32 `protobuf:"varint,3,opt,name=host_port,json=hostPort,proto3" json:"host_port,omitempty"`
+ // Host IP.
+ HostIp string `protobuf:"bytes,4,opt,name=host_ip,json=hostIp,proto3" json:"host_ip,omitempty"`
+}
+
+func (m *PortMapping) Reset() { *m = PortMapping{} }
+func (*PortMapping) ProtoMessage() {}
+func (*PortMapping) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{3} }
+
+func (m *PortMapping) GetProtocol() Protocol {
+ if m != nil {
+ return m.Protocol
+ }
+ return Protocol_TCP
+}
+
+func (m *PortMapping) GetContainerPort() int32 {
+ if m != nil {
+ return m.ContainerPort
+ }
+ return 0
+}
+
+func (m *PortMapping) GetHostPort() int32 {
+ if m != nil {
+ return m.HostPort
+ }
+ return 0
+}
+
+func (m *PortMapping) GetHostIp() string {
+ if m != nil {
+ return m.HostIp
+ }
+ return ""
+}
+
+// Mount specifies a host volume to mount into a container.
+type Mount struct {
+ // Path of the mount within the container.
+ ContainerPath string `protobuf:"bytes,1,opt,name=container_path,json=containerPath,proto3" json:"container_path,omitempty"`
+ // Path of the mount on the host.
+ HostPath string `protobuf:"bytes,2,opt,name=host_path,json=hostPath,proto3" json:"host_path,omitempty"`
+ // If set, the mount is read-only.
+ Readonly bool `protobuf:"varint,3,opt,name=readonly,proto3" json:"readonly,omitempty"`
+ // If set, the mount needs SELinux relabeling.
+ SelinuxRelabel bool `protobuf:"varint,4,opt,name=selinux_relabel,json=selinuxRelabel,proto3" json:"selinux_relabel,omitempty"`
+}
+
+func (m *Mount) Reset() { *m = Mount{} }
+func (*Mount) ProtoMessage() {}
+func (*Mount) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{4} }
+
+func (m *Mount) GetContainerPath() string {
+ if m != nil {
+ return m.ContainerPath
+ }
+ return ""
+}
+
+func (m *Mount) GetHostPath() string {
+ if m != nil {
+ return m.HostPath
+ }
+ return ""
+}
+
+func (m *Mount) GetReadonly() bool {
+ if m != nil {
+ return m.Readonly
+ }
+ return false
+}
+
+func (m *Mount) GetSelinuxRelabel() bool {
+ if m != nil {
+ return m.SelinuxRelabel
+ }
+ return false
+}
+
+// NamespaceOption provides options for Linux namespaces.
+type NamespaceOption struct {
+ // If set, use the host's network namespace.
+ HostNetwork bool `protobuf:"varint,1,opt,name=host_network,json=hostNetwork,proto3" json:"host_network,omitempty"`
+ // If set, use the host's PID namespace.
+ HostPid bool `protobuf:"varint,2,opt,name=host_pid,json=hostPid,proto3" json:"host_pid,omitempty"`
+ // If set, use the host's IPC namespace.
+ HostIpc bool `protobuf:"varint,3,opt,name=host_ipc,json=hostIpc,proto3" json:"host_ipc,omitempty"`
+}
+
+func (m *NamespaceOption) Reset() { *m = NamespaceOption{} }
+func (*NamespaceOption) ProtoMessage() {}
+func (*NamespaceOption) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{5} }
+
+func (m *NamespaceOption) GetHostNetwork() bool {
+ if m != nil {
+ return m.HostNetwork
+ }
+ return false
+}
+
+func (m *NamespaceOption) GetHostPid() bool {
+ if m != nil {
+ return m.HostPid
+ }
+ return false
+}
+
+func (m *NamespaceOption) GetHostIpc() bool {
+ if m != nil {
+ return m.HostIpc
+ }
+ return false
+}
+
+// Int64Value is the wrapper of int64.
+type Int64Value struct {
+ // The value.
+ Value int64 `protobuf:"varint,1,opt,name=value,proto3" json:"value,omitempty"`
+}
+
+func (m *Int64Value) Reset() { *m = Int64Value{} }
+func (*Int64Value) ProtoMessage() {}
+func (*Int64Value) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{6} }
+
+func (m *Int64Value) GetValue() int64 {
+ if m != nil {
+ return m.Value
+ }
+ return 0
+}
+
+// LinuxSandboxSecurityContext holds linux security configuration that will be
+// applied to a sandbox. Note that:
+// 1) It does not apply to containers in the pods.
+// 2) It may not be applicable to a PodSandbox which does not contain any running
+// process.
+type LinuxSandboxSecurityContext struct {
+ // Configurations for the sandbox's namespaces.
+ // This will be used only if the PodSandbox uses namespace for isolation.
+ NamespaceOptions *NamespaceOption `protobuf:"bytes,1,opt,name=namespace_options,json=namespaceOptions" json:"namespace_options,omitempty"`
+ // Optional SELinux context to be applied.
+ SelinuxOptions *SELinuxOption `protobuf:"bytes,2,opt,name=selinux_options,json=selinuxOptions" json:"selinux_options,omitempty"`
+ // UID to run sandbox processes as, when applicable.
+ RunAsUser *Int64Value `protobuf:"bytes,3,opt,name=run_as_user,json=runAsUser" json:"run_as_user,omitempty"`
+ // If set, the root filesystem of the sandbox is read-only.
+ ReadonlyRootfs bool `protobuf:"varint,4,opt,name=readonly_rootfs,json=readonlyRootfs,proto3" json:"readonly_rootfs,omitempty"`
+ // List of groups applied to the first process run in the sandbox, in
+ // addition to the sandbox's primary GID.
+ SupplementalGroups []int64 `protobuf:"varint,5,rep,packed,name=supplemental_groups,json=supplementalGroups" json:"supplemental_groups,omitempty"`
+ // Indicates whether the sandbox will be asked to run a privileged
+ // container. If a privileged container is to be executed within it, this
+ // MUST be true.
+ // This allows a sandbox to take additional security precautions if no
+ // privileged containers are expected to be run.
+ Privileged bool `protobuf:"varint,6,opt,name=privileged,proto3" json:"privileged,omitempty"`
+}
+
+func (m *LinuxSandboxSecurityContext) Reset() { *m = LinuxSandboxSecurityContext{} }
+func (*LinuxSandboxSecurityContext) ProtoMessage() {}
+func (*LinuxSandboxSecurityContext) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{7} }
+
+func (m *LinuxSandboxSecurityContext) GetNamespaceOptions() *NamespaceOption {
+ if m != nil {
+ return m.NamespaceOptions
+ }
+ return nil
+}
+
+func (m *LinuxSandboxSecurityContext) GetSelinuxOptions() *SELinuxOption {
+ if m != nil {
+ return m.SelinuxOptions
+ }
+ return nil
+}
+
+func (m *LinuxSandboxSecurityContext) GetRunAsUser() *Int64Value {
+ if m != nil {
+ return m.RunAsUser
+ }
+ return nil
+}
+
+func (m *LinuxSandboxSecurityContext) GetReadonlyRootfs() bool {
+ if m != nil {
+ return m.ReadonlyRootfs
+ }
+ return false
+}
+
+func (m *LinuxSandboxSecurityContext) GetSupplementalGroups() []int64 {
+ if m != nil {
+ return m.SupplementalGroups
+ }
+ return nil
+}
+
+func (m *LinuxSandboxSecurityContext) GetPrivileged() bool {
+ if m != nil {
+ return m.Privileged
+ }
+ return false
+}
+
+// LinuxPodSandboxConfig holds platform-specific configurations for Linux
+// host platforms and Linux-based containers.
+type LinuxPodSandboxConfig struct {
+ // Parent cgroup of the PodSandbox.
+ // The cgroupfs style syntax will be used, but the container runtime can
+ // convert it to systemd semantics if needed.
+ CgroupParent string `protobuf:"bytes,1,opt,name=cgroup_parent,json=cgroupParent,proto3" json:"cgroup_parent,omitempty"`
+ // LinuxSandboxSecurityContext holds sandbox security attributes.
+ SecurityContext *LinuxSandboxSecurityContext `protobuf:"bytes,2,opt,name=security_context,json=securityContext" json:"security_context,omitempty"`
+ // Sysctls holds linux sysctls config for the sandbox.
+ Sysctls map[string]string `protobuf:"bytes,3,rep,name=sysctls" json:"sysctls,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+}
+
+func (m *LinuxPodSandboxConfig) Reset() { *m = LinuxPodSandboxConfig{} }
+func (*LinuxPodSandboxConfig) ProtoMessage() {}
+func (*LinuxPodSandboxConfig) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{8} }
+
+func (m *LinuxPodSandboxConfig) GetCgroupParent() string {
+ if m != nil {
+ return m.CgroupParent
+ }
+ return ""
+}
+
+func (m *LinuxPodSandboxConfig) GetSecurityContext() *LinuxSandboxSecurityContext {
+ if m != nil {
+ return m.SecurityContext
+ }
+ return nil
+}
+
+func (m *LinuxPodSandboxConfig) GetSysctls() map[string]string {
+ if m != nil {
+ return m.Sysctls
+ }
+ return nil
+}
+
+// PodSandboxMetadata holds all necessary information for building the sandbox name.
+// The container runtime is encouraged to expose the metadata associated with the
+// PodSandbox in its user interface for better user experience. For example,
+// the runtime can construct a unique PodSandboxName based on the metadata.
+type PodSandboxMetadata struct {
+ // Pod name of the sandbox. Same as the pod name in the PodSpec.
+ Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+ // Pod UID of the sandbox. Same as the pod UID in the PodSpec.
+ Uid string `protobuf:"bytes,2,opt,name=uid,proto3" json:"uid,omitempty"`
+ // Pod namespace of the sandbox. Same as the pod namespace in the PodSpec.
+ Namespace string `protobuf:"bytes,3,opt,name=namespace,proto3" json:"namespace,omitempty"`
+ // Attempt number of creating the sandbox. Default: 0.
+ Attempt uint32 `protobuf:"varint,4,opt,name=attempt,proto3" json:"attempt,omitempty"`
+}
+
+func (m *PodSandboxMetadata) Reset() { *m = PodSandboxMetadata{} }
+func (*PodSandboxMetadata) ProtoMessage() {}
+func (*PodSandboxMetadata) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{9} }
+
+func (m *PodSandboxMetadata) GetName() string {
+ if m != nil {
+ return m.Name
+ }
+ return ""
+}
+
+func (m *PodSandboxMetadata) GetUid() string {
+ if m != nil {
+ return m.Uid
+ }
+ return ""
+}
+
+func (m *PodSandboxMetadata) GetNamespace() string {
+ if m != nil {
+ return m.Namespace
+ }
+ return ""
+}
+
+func (m *PodSandboxMetadata) GetAttempt() uint32 {
+ if m != nil {
+ return m.Attempt
+ }
+ return 0
+}
+
+// PodSandboxConfig holds all the required and optional fields for creating a
+// sandbox.
+type PodSandboxConfig struct {
+ // Metadata of the sandbox. This information will uniquely identify the
+ // sandbox, and the runtime should leverage this to ensure correct
+ // operation. The runtime may also use this information to improve UX, such
+ // as by constructing a readable name.
+ Metadata *PodSandboxMetadata `protobuf:"bytes,1,opt,name=metadata" json:"metadata,omitempty"`
+ // Hostname of the sandbox.
+ Hostname string `protobuf:"bytes,2,opt,name=hostname,proto3" json:"hostname,omitempty"`
+ // Path to the directory on the host in which container log files are
+ // stored.
+ // By default the log of a container going into the LogDirectory will be
+ // hooked up to STDOUT and STDERR. However, the LogDirectory may contain
+ // binary log files with structured logging data from the individual
+ // containers. For example, the files might be newline separated JSON
+ // structured logs, systemd-journald journal files, gRPC trace files, etc.
+ // E.g.,
+ // PodSandboxConfig.LogDirectory = `/var/log/pods/<podUID>/`
+ // ContainerConfig.LogPath = `containerName_Instance#.log`
+ //
+ // WARNING: Log management and how kubelet should interface with the
+ // container logs are under active discussion in
+ // https://issues.k8s.io/24677. There *may* be future change of direction
+ // for logging as the discussion carries on.
+ LogDirectory string `protobuf:"bytes,3,opt,name=log_directory,json=logDirectory,proto3" json:"log_directory,omitempty"`
+ // DNS config for the sandbox.
+ DnsConfig *DNSConfig `protobuf:"bytes,4,opt,name=dns_config,json=dnsConfig" json:"dns_config,omitempty"`
+ // Port mappings for the sandbox.
+ PortMappings []*PortMapping `protobuf:"bytes,5,rep,name=port_mappings,json=portMappings" json:"port_mappings,omitempty"`
+ // Key-value pairs that may be used to scope and select individual resources.
+ Labels map[string]string `protobuf:"bytes,6,rep,name=labels" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+ // Unstructured key-value map that may be set by the kubelet to store and
+ // retrieve arbitrary metadata. This will include any annotations set on a
+ // pod through the Kubernetes API.
+ //
+ // Annotations MUST NOT be altered by the runtime; the annotations stored
+ // here MUST be returned in the PodSandboxStatus associated with the pod
+ // this PodSandboxConfig creates.
+ //
+ // In general, in order to preserve a well-defined interface between the
+ // kubelet and the container runtime, annotations SHOULD NOT influence
+ // runtime behaviour. For legacy reasons, there are some annotations which
+ // currently explicitly break this rule, listed below; in future versions
+ // of the interface these will be promoted to typed features.
+ //
+ // Annotations can also be useful for runtime authors to experiment with
+ // new features that are opaque to the Kubernetes APIs (both user-facing
+ // and the CRI). Whenever possible, however, runtime authors SHOULD
+ // consider proposing new typed fields for any new features instead.
+ //
+ // 1. Seccomp
+ //
+ // key: security.alpha.kubernetes.io/seccomp/pod
+ // description: the seccomp profile for the containers of an entire pod.
+ // value: see below.
+ //
+ // key: security.alpha.kubernetes.io/seccomp/container/<container name>
+ // description: the seccomp profile for the container (overrides pod).
+ // value: see below
+ //
+ // The value of seccomp is runtime agnostic:
+ // * runtime/default: the default profile for the container runtime
+ // * unconfined: unconfined profile, ie, no seccomp sandboxing
+ // * localhost/<profile-name>: the profile installed to the node's
+ // local seccomp profile root. Note that profile root is set in
+ // kubelet, and it is not passed in CRI yet, see https://issues.k8s.io/36997.
+ //
+ Annotations map[string]string `protobuf:"bytes,7,rep,name=annotations" json:"annotations,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+ // Optional configurations specific to Linux hosts.
+ Linux *LinuxPodSandboxConfig `protobuf:"bytes,8,opt,name=linux" json:"linux,omitempty"`
+}
+
+func (m *PodSandboxConfig) Reset() { *m = PodSandboxConfig{} }
+func (*PodSandboxConfig) ProtoMessage() {}
+func (*PodSandboxConfig) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{10} }
+
+func (m *PodSandboxConfig) GetMetadata() *PodSandboxMetadata {
+ if m != nil {
+ return m.Metadata
+ }
+ return nil
+}
+
+func (m *PodSandboxConfig) GetHostname() string {
+ if m != nil {
+ return m.Hostname
+ }
+ return ""
+}
+
+func (m *PodSandboxConfig) GetLogDirectory() string {
+ if m != nil {
+ return m.LogDirectory
+ }
+ return ""
+}
+
+func (m *PodSandboxConfig) GetDnsConfig() *DNSConfig {
+ if m != nil {
+ return m.DnsConfig
+ }
+ return nil
+}
+
+func (m *PodSandboxConfig) GetPortMappings() []*PortMapping {
+ if m != nil {
+ return m.PortMappings
+ }
+ return nil
+}
+
+func (m *PodSandboxConfig) GetLabels() map[string]string {
+ if m != nil {
+ return m.Labels
+ }
+ return nil
+}
+
+func (m *PodSandboxConfig) GetAnnotations() map[string]string {
+ if m != nil {
+ return m.Annotations
+ }
+ return nil
+}
+
+func (m *PodSandboxConfig) GetLinux() *LinuxPodSandboxConfig {
+ if m != nil {
+ return m.Linux
+ }
+ return nil
+}
+
+type RunPodSandboxRequest struct {
+ // Configuration for creating a PodSandbox.
+ Config *PodSandboxConfig `protobuf:"bytes,1,opt,name=config" json:"config,omitempty"`
+}
+
+func (m *RunPodSandboxRequest) Reset() { *m = RunPodSandboxRequest{} }
+func (*RunPodSandboxRequest) ProtoMessage() {}
+func (*RunPodSandboxRequest) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{11} }
+
+func (m *RunPodSandboxRequest) GetConfig() *PodSandboxConfig {
+ if m != nil {
+ return m.Config
+ }
+ return nil
+}
+
+type RunPodSandboxResponse struct {
+ // ID of the PodSandbox to run.
+ PodSandboxId string `protobuf:"bytes,1,opt,name=pod_sandbox_id,json=podSandboxId,proto3" json:"pod_sandbox_id,omitempty"`
+}
+
+func (m *RunPodSandboxResponse) Reset() { *m = RunPodSandboxResponse{} }
+func (*RunPodSandboxResponse) ProtoMessage() {}
+func (*RunPodSandboxResponse) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{12} }
+
+func (m *RunPodSandboxResponse) GetPodSandboxId() string {
+ if m != nil {
+ return m.PodSandboxId
+ }
+ return ""
+}
+
+type StopPodSandboxRequest struct {
+ // ID of the PodSandbox to stop.
+ PodSandboxId string `protobuf:"bytes,1,opt,name=pod_sandbox_id,json=podSandboxId,proto3" json:"pod_sandbox_id,omitempty"`
+}
+
+func (m *StopPodSandboxRequest) Reset() { *m = StopPodSandboxRequest{} }
+func (*StopPodSandboxRequest) ProtoMessage() {}
+func (*StopPodSandboxRequest) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{13} }
+
+func (m *StopPodSandboxRequest) GetPodSandboxId() string {
+ if m != nil {
+ return m.PodSandboxId
+ }
+ return ""
+}
+
+type StopPodSandboxResponse struct {
+}
+
+func (m *StopPodSandboxResponse) Reset() { *m = StopPodSandboxResponse{} }
+func (*StopPodSandboxResponse) ProtoMessage() {}
+func (*StopPodSandboxResponse) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{14} }
+
+type RemovePodSandboxRequest struct {
+ // ID of the PodSandbox to remove.
+ PodSandboxId string `protobuf:"bytes,1,opt,name=pod_sandbox_id,json=podSandboxId,proto3" json:"pod_sandbox_id,omitempty"`
+}
+
+func (m *RemovePodSandboxRequest) Reset() { *m = RemovePodSandboxRequest{} }
+func (*RemovePodSandboxRequest) ProtoMessage() {}
+func (*RemovePodSandboxRequest) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{15} }
+
+func (m *RemovePodSandboxRequest) GetPodSandboxId() string {
+ if m != nil {
+ return m.PodSandboxId
+ }
+ return ""
+}
+
+type RemovePodSandboxResponse struct {
+}
+
+func (m *RemovePodSandboxResponse) Reset() { *m = RemovePodSandboxResponse{} }
+func (*RemovePodSandboxResponse) ProtoMessage() {}
+func (*RemovePodSandboxResponse) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{16} }
+
+type PodSandboxStatusRequest struct {
+ // ID of the PodSandbox for which to retrieve status.
+ PodSandboxId string `protobuf:"bytes,1,opt,name=pod_sandbox_id,json=podSandboxId,proto3" json:"pod_sandbox_id,omitempty"`
+}
+
+func (m *PodSandboxStatusRequest) Reset() { *m = PodSandboxStatusRequest{} }
+func (*PodSandboxStatusRequest) ProtoMessage() {}
+func (*PodSandboxStatusRequest) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{17} }
+
+func (m *PodSandboxStatusRequest) GetPodSandboxId() string {
+ if m != nil {
+ return m.PodSandboxId
+ }
+ return ""
+}
+
+// PodSandboxNetworkStatus is the status of the network for a PodSandbox.
+type PodSandboxNetworkStatus struct {
+ // IP address of the PodSandbox.
+ Ip string `protobuf:"bytes,1,opt,name=ip,proto3" json:"ip,omitempty"`
+}
+
+func (m *PodSandboxNetworkStatus) Reset() { *m = PodSandboxNetworkStatus{} }
+func (*PodSandboxNetworkStatus) ProtoMessage() {}
+func (*PodSandboxNetworkStatus) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{18} }
+
+func (m *PodSandboxNetworkStatus) GetIp() string {
+ if m != nil {
+ return m.Ip
+ }
+ return ""
+}
+
+// Namespace contains paths to the namespaces.
+type Namespace struct {
+ // Namespace options for Linux namespaces.
+ Options *NamespaceOption `protobuf:"bytes,2,opt,name=options" json:"options,omitempty"`
+}
+
+func (m *Namespace) Reset() { *m = Namespace{} }
+func (*Namespace) ProtoMessage() {}
+func (*Namespace) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{19} }
+
+func (m *Namespace) GetOptions() *NamespaceOption {
+ if m != nil {
+ return m.Options
+ }
+ return nil
+}
+
+// LinuxSandboxStatus contains status specific to Linux sandboxes.
+type LinuxPodSandboxStatus struct {
+ // Paths to the sandbox's namespaces.
+ Namespaces *Namespace `protobuf:"bytes,1,opt,name=namespaces" json:"namespaces,omitempty"`
+}
+
+func (m *LinuxPodSandboxStatus) Reset() { *m = LinuxPodSandboxStatus{} }
+func (*LinuxPodSandboxStatus) ProtoMessage() {}
+func (*LinuxPodSandboxStatus) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{20} }
+
+func (m *LinuxPodSandboxStatus) GetNamespaces() *Namespace {
+ if m != nil {
+ return m.Namespaces
+ }
+ return nil
+}
+
+// PodSandboxStatus contains the status of the PodSandbox.
+type PodSandboxStatus struct {
+ // ID of the sandbox.
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+ // Metadata of the sandbox.
+ Metadata *PodSandboxMetadata `protobuf:"bytes,2,opt,name=metadata" json:"metadata,omitempty"`
+ // State of the sandbox.
+ State PodSandboxState `protobuf:"varint,3,opt,name=state,proto3,enum=runtime.PodSandboxState" json:"state,omitempty"`
+ // Creation timestamp of the sandbox in nanoseconds. Must be > 0.
+ CreatedAt int64 `protobuf:"varint,4,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
+ // Network contains network status if network is handled by the runtime.
+ Network *PodSandboxNetworkStatus `protobuf:"bytes,5,opt,name=network" json:"network,omitempty"`
+ // Linux-specific status to a pod sandbox.
+ Linux *LinuxPodSandboxStatus `protobuf:"bytes,6,opt,name=linux" json:"linux,omitempty"`
+ // Labels are key-value pairs that may be used to scope and select individual resources.
+ Labels map[string]string `protobuf:"bytes,7,rep,name=labels" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+ // Unstructured key-value map holding arbitrary metadata.
+ // Annotations MUST NOT be altered by the runtime; the value of this field
+ // MUST be identical to that of the corresponding PodSandboxConfig used to
+ // instantiate the pod sandbox this status represents.
+ Annotations map[string]string `protobuf:"bytes,8,rep,name=annotations" json:"annotations,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+}
+
+func (m *PodSandboxStatus) Reset() { *m = PodSandboxStatus{} }
+func (*PodSandboxStatus) ProtoMessage() {}
+func (*PodSandboxStatus) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{21} }
+
+func (m *PodSandboxStatus) GetId() string {
+ if m != nil {
+ return m.Id
+ }
+ return ""
+}
+
+func (m *PodSandboxStatus) GetMetadata() *PodSandboxMetadata {
+ if m != nil {
+ return m.Metadata
+ }
+ return nil
+}
+
+func (m *PodSandboxStatus) GetState() PodSandboxState {
+ if m != nil {
+ return m.State
+ }
+ return PodSandboxState_SANDBOX_READY
+}
+
+func (m *PodSandboxStatus) GetCreatedAt() int64 {
+ if m != nil {
+ return m.CreatedAt
+ }
+ return 0
+}
+
+func (m *PodSandboxStatus) GetNetwork() *PodSandboxNetworkStatus {
+ if m != nil {
+ return m.Network
+ }
+ return nil
+}
+
+func (m *PodSandboxStatus) GetLinux() *LinuxPodSandboxStatus {
+ if m != nil {
+ return m.Linux
+ }
+ return nil
+}
+
+func (m *PodSandboxStatus) GetLabels() map[string]string {
+ if m != nil {
+ return m.Labels
+ }
+ return nil
+}
+
+func (m *PodSandboxStatus) GetAnnotations() map[string]string {
+ if m != nil {
+ return m.Annotations
+ }
+ return nil
+}
+
+type PodSandboxStatusResponse struct {
+ // Status of the PodSandbox.
+ Status *PodSandboxStatus `protobuf:"bytes,1,opt,name=status" json:"status,omitempty"`
+}
+
+func (m *PodSandboxStatusResponse) Reset() { *m = PodSandboxStatusResponse{} }
+func (*PodSandboxStatusResponse) ProtoMessage() {}
+func (*PodSandboxStatusResponse) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{22} }
+
+func (m *PodSandboxStatusResponse) GetStatus() *PodSandboxStatus {
+ if m != nil {
+ return m.Status
+ }
+ return nil
+}
+
+// PodSandboxStateValue is the wrapper of PodSandboxState.
+type PodSandboxStateValue struct {
+ // State of the sandbox.
+ State PodSandboxState `protobuf:"varint,1,opt,name=state,proto3,enum=runtime.PodSandboxState" json:"state,omitempty"`
+}
+
+func (m *PodSandboxStateValue) Reset() { *m = PodSandboxStateValue{} }
+func (*PodSandboxStateValue) ProtoMessage() {}
+func (*PodSandboxStateValue) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{23} }
+
+func (m *PodSandboxStateValue) GetState() PodSandboxState {
+ if m != nil {
+ return m.State
+ }
+ return PodSandboxState_SANDBOX_READY
+}
+
+// PodSandboxFilter is used to filter a list of PodSandboxes.
+// All those fields are combined with 'AND'
+type PodSandboxFilter struct {
+ // ID of the sandbox.
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+ // State of the sandbox.
+ State *PodSandboxStateValue `protobuf:"bytes,2,opt,name=state" json:"state,omitempty"`
+ // LabelSelector to select matches.
+ // Only api.MatchLabels is supported for now and the requirements
+ // are ANDed. MatchExpressions is not supported yet.
+ LabelSelector map[string]string `protobuf:"bytes,3,rep,name=label_selector,json=labelSelector" json:"label_selector,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+}
+
+func (m *PodSandboxFilter) Reset() { *m = PodSandboxFilter{} }
+func (*PodSandboxFilter) ProtoMessage() {}
+func (*PodSandboxFilter) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{24} }
+
+func (m *PodSandboxFilter) GetId() string {
+ if m != nil {
+ return m.Id
+ }
+ return ""
+}
+
+func (m *PodSandboxFilter) GetState() *PodSandboxStateValue {
+ if m != nil {
+ return m.State
+ }
+ return nil
+}
+
+func (m *PodSandboxFilter) GetLabelSelector() map[string]string {
+ if m != nil {
+ return m.LabelSelector
+ }
+ return nil
+}
+
+type ListPodSandboxRequest struct {
+ // PodSandboxFilter to filter a list of PodSandboxes.
+ Filter *PodSandboxFilter `protobuf:"bytes,1,opt,name=filter" json:"filter,omitempty"`
+}
+
+func (m *ListPodSandboxRequest) Reset() { *m = ListPodSandboxRequest{} }
+func (*ListPodSandboxRequest) ProtoMessage() {}
+func (*ListPodSandboxRequest) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{25} }
+
+func (m *ListPodSandboxRequest) GetFilter() *PodSandboxFilter {
+ if m != nil {
+ return m.Filter
+ }
+ return nil
+}
+
+// PodSandbox contains minimal information about a sandbox.
+type PodSandbox struct {
+ // ID of the PodSandbox.
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+ // Metadata of the PodSandbox.
+ Metadata *PodSandboxMetadata `protobuf:"bytes,2,opt,name=metadata" json:"metadata,omitempty"`
+ // State of the PodSandbox.
+ State PodSandboxState `protobuf:"varint,3,opt,name=state,proto3,enum=runtime.PodSandboxState" json:"state,omitempty"`
+ // Creation timestamps of the PodSandbox in nanoseconds. Must be > 0.
+ CreatedAt int64 `protobuf:"varint,4,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
+ // Labels of the PodSandbox.
+ Labels map[string]string `protobuf:"bytes,5,rep,name=labels" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+ // Unstructured key-value map holding arbitrary metadata.
+ // Annotations MUST NOT be altered by the runtime; the value of this field
+ // MUST be identical to that of the corresponding PodSandboxConfig used to
+ // instantiate this PodSandbox.
+ Annotations map[string]string `protobuf:"bytes,6,rep,name=annotations" json:"annotations,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+}
+
+func (m *PodSandbox) Reset() { *m = PodSandbox{} }
+func (*PodSandbox) ProtoMessage() {}
+func (*PodSandbox) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{26} }
+
+func (m *PodSandbox) GetId() string {
+ if m != nil {
+ return m.Id
+ }
+ return ""
+}
+
+func (m *PodSandbox) GetMetadata() *PodSandboxMetadata {
+ if m != nil {
+ return m.Metadata
+ }
+ return nil
+}
+
+func (m *PodSandbox) GetState() PodSandboxState {
+ if m != nil {
+ return m.State
+ }
+ return PodSandboxState_SANDBOX_READY
+}
+
+func (m *PodSandbox) GetCreatedAt() int64 {
+ if m != nil {
+ return m.CreatedAt
+ }
+ return 0
+}
+
+func (m *PodSandbox) GetLabels() map[string]string {
+ if m != nil {
+ return m.Labels
+ }
+ return nil
+}
+
+func (m *PodSandbox) GetAnnotations() map[string]string {
+ if m != nil {
+ return m.Annotations
+ }
+ return nil
+}
+
+type ListPodSandboxResponse struct {
+ // List of PodSandboxes.
+ Items []*PodSandbox `protobuf:"bytes,1,rep,name=items" json:"items,omitempty"`
+}
+
+func (m *ListPodSandboxResponse) Reset() { *m = ListPodSandboxResponse{} }
+func (*ListPodSandboxResponse) ProtoMessage() {}
+func (*ListPodSandboxResponse) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{27} }
+
+func (m *ListPodSandboxResponse) GetItems() []*PodSandbox {
+ if m != nil {
+ return m.Items
+ }
+ return nil
+}
+
+// ImageSpec is an internal representation of an image. Currently, it wraps the
+// value of a Container's Image field (e.g. imageID or imageDigest), but in the
+// future it will include more detailed information about the different image types.
+type ImageSpec struct {
+ Image string `protobuf:"bytes,1,opt,name=image,proto3" json:"image,omitempty"`
+}
+
+func (m *ImageSpec) Reset() { *m = ImageSpec{} }
+func (*ImageSpec) ProtoMessage() {}
+func (*ImageSpec) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{28} }
+
+func (m *ImageSpec) GetImage() string {
+ if m != nil {
+ return m.Image
+ }
+ return ""
+}
+
+type KeyValue struct {
+ Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
+ Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
+}
+
+func (m *KeyValue) Reset() { *m = KeyValue{} }
+func (*KeyValue) ProtoMessage() {}
+func (*KeyValue) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{29} }
+
+func (m *KeyValue) GetKey() string {
+ if m != nil {
+ return m.Key
+ }
+ return ""
+}
+
+func (m *KeyValue) GetValue() string {
+ if m != nil {
+ return m.Value
+ }
+ return ""
+}
+
+// LinuxContainerResources specifies Linux specific configuration for
+// resources.
+// TODO: Consider using Resources from opencontainers/runtime-spec/specs-go
+// directly.
+type LinuxContainerResources struct {
+ // CPU CFS (Completely Fair Scheduler) period. Default: 0 (not specified).
+ CpuPeriod int64 `protobuf:"varint,1,opt,name=cpu_period,json=cpuPeriod,proto3" json:"cpu_period,omitempty"`
+ // CPU CFS (Completely Fair Scheduler) quota. Default: 0 (not specified).
+ CpuQuota int64 `protobuf:"varint,2,opt,name=cpu_quota,json=cpuQuota,proto3" json:"cpu_quota,omitempty"`
+ // CPU shares (relative weight vs. other containers). Default: 0 (not specified).
+ CpuShares int64 `protobuf:"varint,3,opt,name=cpu_shares,json=cpuShares,proto3" json:"cpu_shares,omitempty"`
+ // Memory limit in bytes. Default: 0 (not specified).
+ MemoryLimitInBytes int64 `protobuf:"varint,4,opt,name=memory_limit_in_bytes,json=memoryLimitInBytes,proto3" json:"memory_limit_in_bytes,omitempty"`
+ // OOMScoreAdj adjusts the oom-killer score. Default: 0 (not specified).
+ OomScoreAdj int64 `protobuf:"varint,5,opt,name=oom_score_adj,json=oomScoreAdj,proto3" json:"oom_score_adj,omitempty"`
+}
+
+func (m *LinuxContainerResources) Reset() { *m = LinuxContainerResources{} }
+func (*LinuxContainerResources) ProtoMessage() {}
+func (*LinuxContainerResources) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{30} }
+
+func (m *LinuxContainerResources) GetCpuPeriod() int64 {
+ if m != nil {
+ return m.CpuPeriod
+ }
+ return 0
+}
+
+func (m *LinuxContainerResources) GetCpuQuota() int64 {
+ if m != nil {
+ return m.CpuQuota
+ }
+ return 0
+}
+
+func (m *LinuxContainerResources) GetCpuShares() int64 {
+ if m != nil {
+ return m.CpuShares
+ }
+ return 0
+}
+
+func (m *LinuxContainerResources) GetMemoryLimitInBytes() int64 {
+ if m != nil {
+ return m.MemoryLimitInBytes
+ }
+ return 0
+}
+
+func (m *LinuxContainerResources) GetOomScoreAdj() int64 {
+ if m != nil {
+ return m.OomScoreAdj
+ }
+ return 0
+}
+
+// SELinuxOption are the labels to be applied to the container.
+type SELinuxOption struct {
+ User string `protobuf:"bytes,1,opt,name=user,proto3" json:"user,omitempty"`
+ Role string `protobuf:"bytes,2,opt,name=role,proto3" json:"role,omitempty"`
+ Type string `protobuf:"bytes,3,opt,name=type,proto3" json:"type,omitempty"`
+ Level string `protobuf:"bytes,4,opt,name=level,proto3" json:"level,omitempty"`
+}
+
+func (m *SELinuxOption) Reset() { *m = SELinuxOption{} }
+func (*SELinuxOption) ProtoMessage() {}
+func (*SELinuxOption) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{31} }
+
+func (m *SELinuxOption) GetUser() string {
+ if m != nil {
+ return m.User
+ }
+ return ""
+}
+
+func (m *SELinuxOption) GetRole() string {
+ if m != nil {
+ return m.Role
+ }
+ return ""
+}
+
+func (m *SELinuxOption) GetType() string {
+ if m != nil {
+ return m.Type
+ }
+ return ""
+}
+
+func (m *SELinuxOption) GetLevel() string {
+ if m != nil {
+ return m.Level
+ }
+ return ""
+}
+
+// Capability contains the container capabilities to add or drop
+type Capability struct {
+ // List of capabilities to add.
+ AddCapabilities []string `protobuf:"bytes,1,rep,name=add_capabilities,json=addCapabilities" json:"add_capabilities,omitempty"`
+ // List of capabilities to drop.
+ DropCapabilities []string `protobuf:"bytes,2,rep,name=drop_capabilities,json=dropCapabilities" json:"drop_capabilities,omitempty"`
+}
+
+func (m *Capability) Reset() { *m = Capability{} }
+func (*Capability) ProtoMessage() {}
+func (*Capability) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{32} }
+
+func (m *Capability) GetAddCapabilities() []string {
+ if m != nil {
+ return m.AddCapabilities
+ }
+ return nil
+}
+
+func (m *Capability) GetDropCapabilities() []string {
+ if m != nil {
+ return m.DropCapabilities
+ }
+ return nil
+}
+
+// LinuxContainerSecurityContext holds linux security configuration that will be applied to a container.
+type LinuxContainerSecurityContext struct {
+ // Capabilities to add or drop.
+ Capabilities *Capability `protobuf:"bytes,1,opt,name=capabilities" json:"capabilities,omitempty"`
+ // If set, run container in privileged mode.
+ // Privileged mode is incompatible with the following options. If
+ // privileged is set, the following features MAY have no effect:
+ // 1. capabilities
+ // 2. selinux_options
+ // 4. seccomp
+ // 5. apparmor
+ //
+ // Privileged mode implies the following specific options are applied:
+ // 1. All capabilities are added.
+ // 2. Sensitive paths, such as kernel module paths within sysfs, are not masked.
+ // 3. Any sysfs and procfs mounts are mounted RW.
+ // 4. Apparmor confinement is not applied.
+ // 5. Seccomp restrictions are not applied.
+ // 6. The device cgroup does not restrict access to any devices.
+ // 7. All devices from the host's /dev are available within the container.
+ // 8. SELinux restrictions are not applied (e.g. label=disabled).
+ Privileged bool `protobuf:"varint,2,opt,name=privileged,proto3" json:"privileged,omitempty"`
+ // Configurations for the container's namespaces.
+ // Only used if the container uses namespace for isolation.
+ NamespaceOptions *NamespaceOption `protobuf:"bytes,3,opt,name=namespace_options,json=namespaceOptions" json:"namespace_options,omitempty"`
+ // SELinux context to be optionally applied.
+ SelinuxOptions *SELinuxOption `protobuf:"bytes,4,opt,name=selinux_options,json=selinuxOptions" json:"selinux_options,omitempty"`
+ // UID to run the container process as. Only one of run_as_user and
+ // run_as_username can be specified at a time.
+ RunAsUser *Int64Value `protobuf:"bytes,5,opt,name=run_as_user,json=runAsUser" json:"run_as_user,omitempty"`
+ // User name to run the container process as. If specified, the user MUST
+ // exist in the container image (i.e. in the /etc/passwd inside the image),
+ // and be resolved there by the runtime; otherwise, the runtime MUST error.
+ RunAsUsername string `protobuf:"bytes,6,opt,name=run_as_username,json=runAsUsername,proto3" json:"run_as_username,omitempty"`
+ // If set, the root filesystem of the container is read-only.
+ ReadonlyRootfs bool `protobuf:"varint,7,opt,name=readonly_rootfs,json=readonlyRootfs,proto3" json:"readonly_rootfs,omitempty"`
+ // List of groups applied to the first process run in the container, in
+ // addition to the container's primary GID.
+ SupplementalGroups []int64 `protobuf:"varint,8,rep,packed,name=supplemental_groups,json=supplementalGroups" json:"supplemental_groups,omitempty"`
+ // AppArmor profile for the container, candidate values are:
+ // * runtime/default: equivalent to not specifying a profile.
+ // * localhost/<profile_name>: profile loaded on the node
+ // (localhost) by name. The possible profile names are detailed at
+ // http://wiki.apparmor.net/index.php/AppArmor_Core_Policy_Reference
+ ApparmorProfile string `protobuf:"bytes,9,opt,name=apparmor_profile,json=apparmorProfile,proto3" json:"apparmor_profile,omitempty"`
+}
+
+func (m *LinuxContainerSecurityContext) Reset() { *m = LinuxContainerSecurityContext{} }
+func (*LinuxContainerSecurityContext) ProtoMessage() {}
+func (*LinuxContainerSecurityContext) Descriptor() ([]byte, []int) {
+ return fileDescriptorApi, []int{33}
+}
+
+func (m *LinuxContainerSecurityContext) GetCapabilities() *Capability {
+ if m != nil {
+ return m.Capabilities
+ }
+ return nil
+}
+
+func (m *LinuxContainerSecurityContext) GetPrivileged() bool {
+ if m != nil {
+ return m.Privileged
+ }
+ return false
+}
+
+func (m *LinuxContainerSecurityContext) GetNamespaceOptions() *NamespaceOption {
+ if m != nil {
+ return m.NamespaceOptions
+ }
+ return nil
+}
+
+func (m *LinuxContainerSecurityContext) GetSelinuxOptions() *SELinuxOption {
+ if m != nil {
+ return m.SelinuxOptions
+ }
+ return nil
+}
+
+func (m *LinuxContainerSecurityContext) GetRunAsUser() *Int64Value {
+ if m != nil {
+ return m.RunAsUser
+ }
+ return nil
+}
+
+func (m *LinuxContainerSecurityContext) GetRunAsUsername() string {
+ if m != nil {
+ return m.RunAsUsername
+ }
+ return ""
+}
+
+func (m *LinuxContainerSecurityContext) GetReadonlyRootfs() bool {
+ if m != nil {
+ return m.ReadonlyRootfs
+ }
+ return false
+}
+
+func (m *LinuxContainerSecurityContext) GetSupplementalGroups() []int64 {
+ if m != nil {
+ return m.SupplementalGroups
+ }
+ return nil
+}
+
+func (m *LinuxContainerSecurityContext) GetApparmorProfile() string {
+ if m != nil {
+ return m.ApparmorProfile
+ }
+ return ""
+}
+
+// LinuxContainerConfig contains platform-specific configuration for
+// Linux-based containers.
+type LinuxContainerConfig struct {
+ // Resources specification for the container.
+ Resources *LinuxContainerResources `protobuf:"bytes,1,opt,name=resources" json:"resources,omitempty"`
+ // LinuxContainerSecurityContext configuration for the container.
+ SecurityContext *LinuxContainerSecurityContext `protobuf:"bytes,2,opt,name=security_context,json=securityContext" json:"security_context,omitempty"`
+}
+
+func (m *LinuxContainerConfig) Reset() { *m = LinuxContainerConfig{} }
+func (*LinuxContainerConfig) ProtoMessage() {}
+func (*LinuxContainerConfig) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{34} }
+
+func (m *LinuxContainerConfig) GetResources() *LinuxContainerResources {
+ if m != nil {
+ return m.Resources
+ }
+ return nil
+}
+
+func (m *LinuxContainerConfig) GetSecurityContext() *LinuxContainerSecurityContext {
+ if m != nil {
+ return m.SecurityContext
+ }
+ return nil
+}
+
+// ContainerMetadata holds all necessary information for building the container
+// name. The container runtime is encouraged to expose the metadata in its user
+// interface for better user experience. E.g., runtime can construct a unique
+// container name based on the metadata. Note that (name, attempt) is unique
+// within a sandbox for the entire lifetime of the sandbox.
+type ContainerMetadata struct {
+ // Name of the container. Same as the container name in the PodSpec.
+ Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+ // Attempt number of creating the container. Default: 0.
+ Attempt uint32 `protobuf:"varint,2,opt,name=attempt,proto3" json:"attempt,omitempty"`
+}
+
+func (m *ContainerMetadata) Reset() { *m = ContainerMetadata{} }
+func (*ContainerMetadata) ProtoMessage() {}
+func (*ContainerMetadata) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{35} }
+
+func (m *ContainerMetadata) GetName() string {
+ if m != nil {
+ return m.Name
+ }
+ return ""
+}
+
+func (m *ContainerMetadata) GetAttempt() uint32 {
+ if m != nil {
+ return m.Attempt
+ }
+ return 0
+}
+
+// Device specifies a host device to mount into a container.
+type Device struct {
+ // Path of the device within the container.
+ ContainerPath string `protobuf:"bytes,1,opt,name=container_path,json=containerPath,proto3" json:"container_path,omitempty"`
+ // Path of the device on the host.
+ HostPath string `protobuf:"bytes,2,opt,name=host_path,json=hostPath,proto3" json:"host_path,omitempty"`
+ // Cgroups permissions of the device, candidates are one or more of
+ // * r - allows container to read from the specified device.
+ // * w - allows container to write to the specified device.
+ // * m - allows container to create device files that do not yet exist.
+ Permissions string `protobuf:"bytes,3,opt,name=permissions,proto3" json:"permissions,omitempty"`
+}
+
+func (m *Device) Reset() { *m = Device{} }
+func (*Device) ProtoMessage() {}
+func (*Device) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{36} }
+
+func (m *Device) GetContainerPath() string {
+ if m != nil {
+ return m.ContainerPath
+ }
+ return ""
+}
+
+func (m *Device) GetHostPath() string {
+ if m != nil {
+ return m.HostPath
+ }
+ return ""
+}
+
+func (m *Device) GetPermissions() string {
+ if m != nil {
+ return m.Permissions
+ }
+ return ""
+}
+
+// ContainerConfig holds all the required and optional fields for creating a
+// container.
+type ContainerConfig struct {
+ // Metadata of the container. This information will uniquely identify the
+ // container, and the runtime should leverage this to ensure correct
+ // operation. The runtime may also use this information to improve UX, such
+ // as by constructing a readable name.
+ Metadata *ContainerMetadata `protobuf:"bytes,1,opt,name=metadata" json:"metadata,omitempty"`
+ // Image to use.
+ Image *ImageSpec `protobuf:"bytes,2,opt,name=image" json:"image,omitempty"`
+ // Command to execute (i.e., entrypoint for docker)
+ Command []string `protobuf:"bytes,3,rep,name=command" json:"command,omitempty"`
+ // Args for the Command (i.e., command for docker)
+ Args []string `protobuf:"bytes,4,rep,name=args" json:"args,omitempty"`
+ // Current working directory of the command.
+ WorkingDir string `protobuf:"bytes,5,opt,name=working_dir,json=workingDir,proto3" json:"working_dir,omitempty"`
+ // List of environment variable to set in the container.
+ Envs []*KeyValue `protobuf:"bytes,6,rep,name=envs" json:"envs,omitempty"`
+ // Mounts for the container.
+ Mounts []*Mount `protobuf:"bytes,7,rep,name=mounts" json:"mounts,omitempty"`
+ // Devices for the container.
+ Devices []*Device `protobuf:"bytes,8,rep,name=devices" json:"devices,omitempty"`
+ // Key-value pairs that may be used to scope and select individual resources.
+ // Label keys are of the form:
+ // label-key ::= prefixed-name | name
+ // prefixed-name ::= prefix '/' name
+ // prefix ::= DNS_SUBDOMAIN
+ // name ::= DNS_LABEL
+ Labels map[string]string `protobuf:"bytes,9,rep,name=labels" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+ // Unstructured key-value map that may be used by the kubelet to store and
+ // retrieve arbitrary metadata.
+ //
+ // Annotations MUST NOT be altered by the runtime; the annotations stored
+ // here MUST be returned in the ContainerStatus associated with the container
+ // this ContainerConfig creates.
+ //
+ // In general, in order to preserve a well-defined interface between the
+ // kubelet and the container runtime, annotations SHOULD NOT influence
+ // runtime behaviour.
+ Annotations map[string]string `protobuf:"bytes,10,rep,name=annotations" json:"annotations,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+ // Path relative to PodSandboxConfig.LogDirectory for container to store
+ // the log (STDOUT and STDERR) on the host.
+ // E.g.,
+ // PodSandboxConfig.LogDirectory = `/var/log/pods/<podUID>/`
+ // ContainerConfig.LogPath = `containerName_Instance#.log`
+ //
+ // WARNING: Log management and how kubelet should interface with the
+ // container logs are under active discussion in
+ // https://issues.k8s.io/24677. There *may* be future change of direction
+ // for logging as the discussion carries on.
+ LogPath string `protobuf:"bytes,11,opt,name=log_path,json=logPath,proto3" json:"log_path,omitempty"`
+ // Variables for interactive containers, these have very specialized
+ // use-cases (e.g. debugging).
+ // TODO: Determine if we need to continue supporting these fields that are
+ // part of Kubernetes's Container Spec.
+ Stdin bool `protobuf:"varint,12,opt,name=stdin,proto3" json:"stdin,omitempty"`
+ StdinOnce bool `protobuf:"varint,13,opt,name=stdin_once,json=stdinOnce,proto3" json:"stdin_once,omitempty"`
+ Tty bool `protobuf:"varint,14,opt,name=tty,proto3" json:"tty,omitempty"`
+ // Configuration specific to Linux containers.
+ Linux *LinuxContainerConfig `protobuf:"bytes,15,opt,name=linux" json:"linux,omitempty"`
+}
+
+func (m *ContainerConfig) Reset() { *m = ContainerConfig{} }
+func (*ContainerConfig) ProtoMessage() {}
+func (*ContainerConfig) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{37} }
+
+func (m *ContainerConfig) GetMetadata() *ContainerMetadata {
+ if m != nil {
+ return m.Metadata
+ }
+ return nil
+}
+
+func (m *ContainerConfig) GetImage() *ImageSpec {
+ if m != nil {
+ return m.Image
+ }
+ return nil
+}
+
+func (m *ContainerConfig) GetCommand() []string {
+ if m != nil {
+ return m.Command
+ }
+ return nil
+}
+
+func (m *ContainerConfig) GetArgs() []string {
+ if m != nil {
+ return m.Args
+ }
+ return nil
+}
+
+func (m *ContainerConfig) GetWorkingDir() string {
+ if m != nil {
+ return m.WorkingDir
+ }
+ return ""
+}
+
+func (m *ContainerConfig) GetEnvs() []*KeyValue {
+ if m != nil {
+ return m.Envs
+ }
+ return nil
+}
+
+func (m *ContainerConfig) GetMounts() []*Mount {
+ if m != nil {
+ return m.Mounts
+ }
+ return nil
+}
+
+func (m *ContainerConfig) GetDevices() []*Device {
+ if m != nil {
+ return m.Devices
+ }
+ return nil
+}
+
+func (m *ContainerConfig) GetLabels() map[string]string {
+ if m != nil {
+ return m.Labels
+ }
+ return nil
+}
+
+func (m *ContainerConfig) GetAnnotations() map[string]string {
+ if m != nil {
+ return m.Annotations
+ }
+ return nil
+}
+
+func (m *ContainerConfig) GetLogPath() string {
+ if m != nil {
+ return m.LogPath
+ }
+ return ""
+}
+
+func (m *ContainerConfig) GetStdin() bool {
+ if m != nil {
+ return m.Stdin
+ }
+ return false
+}
+
+func (m *ContainerConfig) GetStdinOnce() bool {
+ if m != nil {
+ return m.StdinOnce
+ }
+ return false
+}
+
+func (m *ContainerConfig) GetTty() bool {
+ if m != nil {
+ return m.Tty
+ }
+ return false
+}
+
+func (m *ContainerConfig) GetLinux() *LinuxContainerConfig {
+ if m != nil {
+ return m.Linux
+ }
+ return nil
+}
+
+type CreateContainerRequest struct {
+ // ID of the PodSandbox in which the container should be created.
+ PodSandboxId string `protobuf:"bytes,1,opt,name=pod_sandbox_id,json=podSandboxId,proto3" json:"pod_sandbox_id,omitempty"`
+ // Config of the container.
+ Config *ContainerConfig `protobuf:"bytes,2,opt,name=config" json:"config,omitempty"`
+ // Config of the PodSandbox. This is the same config that was passed
+ // to RunPodSandboxRequest to create the PodSandbox. It is passed again
+ // here just for easy reference. The PodSandboxConfig is immutable and
+ // remains the same throughout the lifetime of the pod.
+ SandboxConfig *PodSandboxConfig `protobuf:"bytes,3,opt,name=sandbox_config,json=sandboxConfig" json:"sandbox_config,omitempty"`
+}
+
+func (m *CreateContainerRequest) Reset() { *m = CreateContainerRequest{} }
+func (*CreateContainerRequest) ProtoMessage() {}
+func (*CreateContainerRequest) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{38} }
+
+func (m *CreateContainerRequest) GetPodSandboxId() string {
+ if m != nil {
+ return m.PodSandboxId
+ }
+ return ""
+}
+
+func (m *CreateContainerRequest) GetConfig() *ContainerConfig {
+ if m != nil {
+ return m.Config
+ }
+ return nil
+}
+
+func (m *CreateContainerRequest) GetSandboxConfig() *PodSandboxConfig {
+ if m != nil {
+ return m.SandboxConfig
+ }
+ return nil
+}
+
+type CreateContainerResponse struct {
+ // ID of the created container.
+ ContainerId string `protobuf:"bytes,1,opt,name=container_id,json=containerId,proto3" json:"container_id,omitempty"`
+}
+
+func (m *CreateContainerResponse) Reset() { *m = CreateContainerResponse{} }
+func (*CreateContainerResponse) ProtoMessage() {}
+func (*CreateContainerResponse) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{39} }
+
+func (m *CreateContainerResponse) GetContainerId() string {
+ if m != nil {
+ return m.ContainerId
+ }
+ return ""
+}
+
+type StartContainerRequest struct {
+ // ID of the container to start.
+ ContainerId string `protobuf:"bytes,1,opt,name=container_id,json=containerId,proto3" json:"container_id,omitempty"`
+}
+
+func (m *StartContainerRequest) Reset() { *m = StartContainerRequest{} }
+func (*StartContainerRequest) ProtoMessage() {}
+func (*StartContainerRequest) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{40} }
+
+func (m *StartContainerRequest) GetContainerId() string {
+ if m != nil {
+ return m.ContainerId
+ }
+ return ""
+}
+
+type StartContainerResponse struct {
+}
+
+func (m *StartContainerResponse) Reset() { *m = StartContainerResponse{} }
+func (*StartContainerResponse) ProtoMessage() {}
+func (*StartContainerResponse) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{41} }
+
+type StopContainerRequest struct {
+ // ID of the container to stop.
+ ContainerId string `protobuf:"bytes,1,opt,name=container_id,json=containerId,proto3" json:"container_id,omitempty"`
+ // Timeout in seconds to wait for the container to stop before forcibly
+ // terminating it. Default: 0 (forcibly terminate the container immediately)
+ Timeout int64 `protobuf:"varint,2,opt,name=timeout,proto3" json:"timeout,omitempty"`
+}
+
+func (m *StopContainerRequest) Reset() { *m = StopContainerRequest{} }
+func (*StopContainerRequest) ProtoMessage() {}
+func (*StopContainerRequest) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{42} }
+
+func (m *StopContainerRequest) GetContainerId() string {
+ if m != nil {
+ return m.ContainerId
+ }
+ return ""
+}
+
+func (m *StopContainerRequest) GetTimeout() int64 {
+ if m != nil {
+ return m.Timeout
+ }
+ return 0
+}
+
+type StopContainerResponse struct {
+}
+
+func (m *StopContainerResponse) Reset() { *m = StopContainerResponse{} }
+func (*StopContainerResponse) ProtoMessage() {}
+func (*StopContainerResponse) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{43} }
+
+type RemoveContainerRequest struct {
+ // ID of the container to remove.
+ ContainerId string `protobuf:"bytes,1,opt,name=container_id,json=containerId,proto3" json:"container_id,omitempty"`
+}
+
+func (m *RemoveContainerRequest) Reset() { *m = RemoveContainerRequest{} }
+func (*RemoveContainerRequest) ProtoMessage() {}
+func (*RemoveContainerRequest) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{44} }
+
+func (m *RemoveContainerRequest) GetContainerId() string {
+ if m != nil {
+ return m.ContainerId
+ }
+ return ""
+}
+
+type RemoveContainerResponse struct {
+}
+
+func (m *RemoveContainerResponse) Reset() { *m = RemoveContainerResponse{} }
+func (*RemoveContainerResponse) ProtoMessage() {}
+func (*RemoveContainerResponse) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{45} }
+
+// ContainerStateValue is the wrapper of ContainerState.
+type ContainerStateValue struct {
+ // State of the container.
+ State ContainerState `protobuf:"varint,1,opt,name=state,proto3,enum=runtime.ContainerState" json:"state,omitempty"`
+}
+
+func (m *ContainerStateValue) Reset() { *m = ContainerStateValue{} }
+func (*ContainerStateValue) ProtoMessage() {}
+func (*ContainerStateValue) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{46} }
+
+func (m *ContainerStateValue) GetState() ContainerState {
+ if m != nil {
+ return m.State
+ }
+ return ContainerState_CONTAINER_CREATED
+}
+
+// ContainerFilter is used to filter containers.
+// All those fields are combined with 'AND'
+type ContainerFilter struct {
+ // ID of the container.
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+ // State of the container.
+ State *ContainerStateValue `protobuf:"bytes,2,opt,name=state" json:"state,omitempty"`
+ // ID of the PodSandbox.
+ PodSandboxId string `protobuf:"bytes,3,opt,name=pod_sandbox_id,json=podSandboxId,proto3" json:"pod_sandbox_id,omitempty"`
+ // LabelSelector to select matches.
+ // Only api.MatchLabels is supported for now and the requirements
+ // are ANDed. MatchExpressions is not supported yet.
+ LabelSelector map[string]string `protobuf:"bytes,4,rep,name=label_selector,json=labelSelector" json:"label_selector,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+}
+
+func (m *ContainerFilter) Reset() { *m = ContainerFilter{} }
+func (*ContainerFilter) ProtoMessage() {}
+func (*ContainerFilter) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{47} }
+
+func (m *ContainerFilter) GetId() string {
+ if m != nil {
+ return m.Id
+ }
+ return ""
+}
+
+func (m *ContainerFilter) GetState() *ContainerStateValue {
+ if m != nil {
+ return m.State
+ }
+ return nil
+}
+
+func (m *ContainerFilter) GetPodSandboxId() string {
+ if m != nil {
+ return m.PodSandboxId
+ }
+ return ""
+}
+
+func (m *ContainerFilter) GetLabelSelector() map[string]string {
+ if m != nil {
+ return m.LabelSelector
+ }
+ return nil
+}
+
+type ListContainersRequest struct {
+ Filter *ContainerFilter `protobuf:"bytes,1,opt,name=filter" json:"filter,omitempty"`
+}
+
+func (m *ListContainersRequest) Reset() { *m = ListContainersRequest{} }
+func (*ListContainersRequest) ProtoMessage() {}
+func (*ListContainersRequest) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{48} }
+
+func (m *ListContainersRequest) GetFilter() *ContainerFilter {
+ if m != nil {
+ return m.Filter
+ }
+ return nil
+}
+
+// Container provides the runtime information for a container, such as ID, hash,
+// state of the container.
+type Container struct {
+ // ID of the container, used by the container runtime to identify
+ // a container.
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+ // ID of the sandbox to which this container belongs.
+ PodSandboxId string `protobuf:"bytes,2,opt,name=pod_sandbox_id,json=podSandboxId,proto3" json:"pod_sandbox_id,omitempty"`
+ // Metadata of the container.
+ Metadata *ContainerMetadata `protobuf:"bytes,3,opt,name=metadata" json:"metadata,omitempty"`
+ // Spec of the image.
+ Image *ImageSpec `protobuf:"bytes,4,opt,name=image" json:"image,omitempty"`
+ // Reference to the image in use. For most runtimes, this should be an
+ // image ID.
+ ImageRef string `protobuf:"bytes,5,opt,name=image_ref,json=imageRef,proto3" json:"image_ref,omitempty"`
+ // State of the container.
+ State ContainerState `protobuf:"varint,6,opt,name=state,proto3,enum=runtime.ContainerState" json:"state,omitempty"`
+ // Creation time of the container in nanoseconds.
+ CreatedAt int64 `protobuf:"varint,7,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
+ // Key-value pairs that may be used to scope and select individual resources.
+ Labels map[string]string `protobuf:"bytes,8,rep,name=labels" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+ // Unstructured key-value map holding arbitrary metadata.
+ // Annotations MUST NOT be altered by the runtime; the value of this field
+ // MUST be identical to that of the corresponding ContainerConfig used to
+ // instantiate this Container.
+ Annotations map[string]string `protobuf:"bytes,9,rep,name=annotations" json:"annotations,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+}
+
+func (m *Container) Reset() { *m = Container{} }
+func (*Container) ProtoMessage() {}
+func (*Container) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{49} }
+
+func (m *Container) GetId() string {
+ if m != nil {
+ return m.Id
+ }
+ return ""
+}
+
+func (m *Container) GetPodSandboxId() string {
+ if m != nil {
+ return m.PodSandboxId
+ }
+ return ""
+}
+
+func (m *Container) GetMetadata() *ContainerMetadata {
+ if m != nil {
+ return m.Metadata
+ }
+ return nil
+}
+
+func (m *Container) GetImage() *ImageSpec {
+ if m != nil {
+ return m.Image
+ }
+ return nil
+}
+
+func (m *Container) GetImageRef() string {
+ if m != nil {
+ return m.ImageRef
+ }
+ return ""
+}
+
+func (m *Container) GetState() ContainerState {
+ if m != nil {
+ return m.State
+ }
+ return ContainerState_CONTAINER_CREATED
+}
+
+func (m *Container) GetCreatedAt() int64 {
+ if m != nil {
+ return m.CreatedAt
+ }
+ return 0
+}
+
+func (m *Container) GetLabels() map[string]string {
+ if m != nil {
+ return m.Labels
+ }
+ return nil
+}
+
+func (m *Container) GetAnnotations() map[string]string {
+ if m != nil {
+ return m.Annotations
+ }
+ return nil
+}
+
+type ListContainersResponse struct {
+ // List of containers.
+ Containers []*Container `protobuf:"bytes,1,rep,name=containers" json:"containers,omitempty"`
+}
+
+func (m *ListContainersResponse) Reset() { *m = ListContainersResponse{} }
+func (*ListContainersResponse) ProtoMessage() {}
+func (*ListContainersResponse) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{50} }
+
+func (m *ListContainersResponse) GetContainers() []*Container {
+ if m != nil {
+ return m.Containers
+ }
+ return nil
+}
+
+type ContainerStatusRequest struct {
+ // ID of the container for which to retrieve status.
+ ContainerId string `protobuf:"bytes,1,opt,name=container_id,json=containerId,proto3" json:"container_id,omitempty"`
+}
+
+func (m *ContainerStatusRequest) Reset() { *m = ContainerStatusRequest{} }
+func (*ContainerStatusRequest) ProtoMessage() {}
+func (*ContainerStatusRequest) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{51} }
+
+func (m *ContainerStatusRequest) GetContainerId() string {
+ if m != nil {
+ return m.ContainerId
+ }
+ return ""
+}
+
+// ContainerStatus represents the status of a container.
+type ContainerStatus struct {
+ // ID of the container.
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+ // Metadata of the container.
+ Metadata *ContainerMetadata `protobuf:"bytes,2,opt,name=metadata" json:"metadata,omitempty"`
+ // Status of the container.
+ State ContainerState `protobuf:"varint,3,opt,name=state,proto3,enum=runtime.ContainerState" json:"state,omitempty"`
+ // Creation time of the container in nanoseconds.
+ CreatedAt int64 `protobuf:"varint,4,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
+ // Start time of the container in nanoseconds. Default: 0 (not specified).
+ StartedAt int64 `protobuf:"varint,5,opt,name=started_at,json=startedAt,proto3" json:"started_at,omitempty"`
+ // Finish time of the container in nanoseconds. Default: 0 (not specified).
+ FinishedAt int64 `protobuf:"varint,6,opt,name=finished_at,json=finishedAt,proto3" json:"finished_at,omitempty"`
+ // Exit code of the container. Only required when finished_at != 0. Default: 0.
+ ExitCode int32 `protobuf:"varint,7,opt,name=exit_code,json=exitCode,proto3" json:"exit_code,omitempty"`
+ // Spec of the image.
+ Image *ImageSpec `protobuf:"bytes,8,opt,name=image" json:"image,omitempty"`
+ // Reference to the image in use. For most runtimes, this should be an
+ // image ID
+ ImageRef string `protobuf:"bytes,9,opt,name=image_ref,json=imageRef,proto3" json:"image_ref,omitempty"`
+ // Brief CamelCase string explaining why container is in its current state.
+ Reason string `protobuf:"bytes,10,opt,name=reason,proto3" json:"reason,omitempty"`
+ // Human-readable message indicating details about why container is in its
+ // current state.
+ Message string `protobuf:"bytes,11,opt,name=message,proto3" json:"message,omitempty"`
+ // Key-value pairs that may be used to scope and select individual resources.
+ Labels map[string]string `protobuf:"bytes,12,rep,name=labels" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+ // Unstructured key-value map holding arbitrary metadata.
+ // Annotations MUST NOT be altered by the runtime; the value of this field
+ // MUST be identical to that of the corresponding ContainerConfig used to
+ // instantiate the Container this status represents.
+ Annotations map[string]string `protobuf:"bytes,13,rep,name=annotations" json:"annotations,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+ // Mounts for the container.
+ Mounts []*Mount `protobuf:"bytes,14,rep,name=mounts" json:"mounts,omitempty"`
+ // Log path of container.
+ LogPath string `protobuf:"bytes,15,opt,name=log_path,json=logPath,proto3" json:"log_path,omitempty"`
+}
+
+func (m *ContainerStatus) Reset() { *m = ContainerStatus{} }
+func (*ContainerStatus) ProtoMessage() {}
+func (*ContainerStatus) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{52} }
+
+func (m *ContainerStatus) GetId() string {
+ if m != nil {
+ return m.Id
+ }
+ return ""
+}
+
+func (m *ContainerStatus) GetMetadata() *ContainerMetadata {
+ if m != nil {
+ return m.Metadata
+ }
+ return nil
+}
+
+func (m *ContainerStatus) GetState() ContainerState {
+ if m != nil {
+ return m.State
+ }
+ return ContainerState_CONTAINER_CREATED
+}
+
+func (m *ContainerStatus) GetCreatedAt() int64 {
+ if m != nil {
+ return m.CreatedAt
+ }
+ return 0
+}
+
+func (m *ContainerStatus) GetStartedAt() int64 {
+ if m != nil {
+ return m.StartedAt
+ }
+ return 0
+}
+
+func (m *ContainerStatus) GetFinishedAt() int64 {
+ if m != nil {
+ return m.FinishedAt
+ }
+ return 0
+}
+
+func (m *ContainerStatus) GetExitCode() int32 {
+ if m != nil {
+ return m.ExitCode
+ }
+ return 0
+}
+
+func (m *ContainerStatus) GetImage() *ImageSpec {
+ if m != nil {
+ return m.Image
+ }
+ return nil
+}
+
+func (m *ContainerStatus) GetImageRef() string {
+ if m != nil {
+ return m.ImageRef
+ }
+ return ""
+}
+
+func (m *ContainerStatus) GetReason() string {
+ if m != nil {
+ return m.Reason
+ }
+ return ""
+}
+
+func (m *ContainerStatus) GetMessage() string {
+ if m != nil {
+ return m.Message
+ }
+ return ""
+}
+
+func (m *ContainerStatus) GetLabels() map[string]string {
+ if m != nil {
+ return m.Labels
+ }
+ return nil
+}
+
+func (m *ContainerStatus) GetAnnotations() map[string]string {
+ if m != nil {
+ return m.Annotations
+ }
+ return nil
+}
+
+func (m *ContainerStatus) GetMounts() []*Mount {
+ if m != nil {
+ return m.Mounts
+ }
+ return nil
+}
+
+func (m *ContainerStatus) GetLogPath() string {
+ if m != nil {
+ return m.LogPath
+ }
+ return ""
+}
+
+type ContainerStatusResponse struct {
+ // Status of the container.
+ Status *ContainerStatus `protobuf:"bytes,1,opt,name=status" json:"status,omitempty"`
+}
+
+func (m *ContainerStatusResponse) Reset() { *m = ContainerStatusResponse{} }
+func (*ContainerStatusResponse) ProtoMessage() {}
+func (*ContainerStatusResponse) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{53} }
+
+func (m *ContainerStatusResponse) GetStatus() *ContainerStatus {
+ if m != nil {
+ return m.Status
+ }
+ return nil
+}
+
+type ExecSyncRequest struct {
+ // ID of the container.
+ ContainerId string `protobuf:"bytes,1,opt,name=container_id,json=containerId,proto3" json:"container_id,omitempty"`
+ // Command to execute.
+ Cmd []string `protobuf:"bytes,2,rep,name=cmd" json:"cmd,omitempty"`
+ // Timeout in seconds to stop the command. Default: 0 (run forever).
+ Timeout int64 `protobuf:"varint,3,opt,name=timeout,proto3" json:"timeout,omitempty"`
+}
+
+func (m *ExecSyncRequest) Reset() { *m = ExecSyncRequest{} }
+func (*ExecSyncRequest) ProtoMessage() {}
+func (*ExecSyncRequest) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{54} }
+
+func (m *ExecSyncRequest) GetContainerId() string {
+ if m != nil {
+ return m.ContainerId
+ }
+ return ""
+}
+
+func (m *ExecSyncRequest) GetCmd() []string {
+ if m != nil {
+ return m.Cmd
+ }
+ return nil
+}
+
+func (m *ExecSyncRequest) GetTimeout() int64 {
+ if m != nil {
+ return m.Timeout
+ }
+ return 0
+}
+
+type ExecSyncResponse struct {
+ // Captured command stdout output.
+ Stdout []byte `protobuf:"bytes,1,opt,name=stdout,proto3" json:"stdout,omitempty"`
+ // Captured command stderr output.
+ Stderr []byte `protobuf:"bytes,2,opt,name=stderr,proto3" json:"stderr,omitempty"`
+ // Exit code the command finished with. Default: 0 (success).
+ ExitCode int32 `protobuf:"varint,3,opt,name=exit_code,json=exitCode,proto3" json:"exit_code,omitempty"`
+}
+
+func (m *ExecSyncResponse) Reset() { *m = ExecSyncResponse{} }
+func (*ExecSyncResponse) ProtoMessage() {}
+func (*ExecSyncResponse) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{55} }
+
+func (m *ExecSyncResponse) GetStdout() []byte {
+ if m != nil {
+ return m.Stdout
+ }
+ return nil
+}
+
+func (m *ExecSyncResponse) GetStderr() []byte {
+ if m != nil {
+ return m.Stderr
+ }
+ return nil
+}
+
+func (m *ExecSyncResponse) GetExitCode() int32 {
+ if m != nil {
+ return m.ExitCode
+ }
+ return 0
+}
+
+type ExecRequest struct {
+ // ID of the container in which to execute the command.
+ ContainerId string `protobuf:"bytes,1,opt,name=container_id,json=containerId,proto3" json:"container_id,omitempty"`
+ // Command to execute.
+ Cmd []string `protobuf:"bytes,2,rep,name=cmd" json:"cmd,omitempty"`
+ // Whether to exec the command in a TTY.
+ Tty bool `protobuf:"varint,3,opt,name=tty,proto3" json:"tty,omitempty"`
+ // Whether to stream stdin.
+ Stdin bool `protobuf:"varint,4,opt,name=stdin,proto3" json:"stdin,omitempty"`
+}
+
+func (m *ExecRequest) Reset() { *m = ExecRequest{} }
+func (*ExecRequest) ProtoMessage() {}
+func (*ExecRequest) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{56} }
+
+func (m *ExecRequest) GetContainerId() string {
+ if m != nil {
+ return m.ContainerId
+ }
+ return ""
+}
+
+func (m *ExecRequest) GetCmd() []string {
+ if m != nil {
+ return m.Cmd
+ }
+ return nil
+}
+
+func (m *ExecRequest) GetTty() bool {
+ if m != nil {
+ return m.Tty
+ }
+ return false
+}
+
+func (m *ExecRequest) GetStdin() bool {
+ if m != nil {
+ return m.Stdin
+ }
+ return false
+}
+
+type ExecResponse struct {
+ // Fully qualified URL of the exec streaming server.
+ Url string `protobuf:"bytes,1,opt,name=url,proto3" json:"url,omitempty"`
+}
+
+func (m *ExecResponse) Reset() { *m = ExecResponse{} }
+func (*ExecResponse) ProtoMessage() {}
+func (*ExecResponse) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{57} }
+
+func (m *ExecResponse) GetUrl() string {
+ if m != nil {
+ return m.Url
+ }
+ return ""
+}
+
+type AttachRequest struct {
+ // ID of the container to which to attach.
+ ContainerId string `protobuf:"bytes,1,opt,name=container_id,json=containerId,proto3" json:"container_id,omitempty"`
+ // Whether to stream stdin.
+ Stdin bool `protobuf:"varint,2,opt,name=stdin,proto3" json:"stdin,omitempty"`
+ // Whether the process being attached is running in a TTY.
+ // This must match the TTY setting in the ContainerConfig.
+ Tty bool `protobuf:"varint,3,opt,name=tty,proto3" json:"tty,omitempty"`
+}
+
+func (m *AttachRequest) Reset() { *m = AttachRequest{} }
+func (*AttachRequest) ProtoMessage() {}
+func (*AttachRequest) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{58} }
+
+func (m *AttachRequest) GetContainerId() string {
+ if m != nil {
+ return m.ContainerId
+ }
+ return ""
+}
+
+func (m *AttachRequest) GetStdin() bool {
+ if m != nil {
+ return m.Stdin
+ }
+ return false
+}
+
+func (m *AttachRequest) GetTty() bool {
+ if m != nil {
+ return m.Tty
+ }
+ return false
+}
+
+type AttachResponse struct {
+ // Fully qualified URL of the attach streaming server.
+ Url string `protobuf:"bytes,1,opt,name=url,proto3" json:"url,omitempty"`
+}
+
+func (m *AttachResponse) Reset() { *m = AttachResponse{} }
+func (*AttachResponse) ProtoMessage() {}
+func (*AttachResponse) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{59} }
+
+func (m *AttachResponse) GetUrl() string {
+ if m != nil {
+ return m.Url
+ }
+ return ""
+}
+
+type PortForwardRequest struct {
+ // ID of the container to which to forward the port.
+ PodSandboxId string `protobuf:"bytes,1,opt,name=pod_sandbox_id,json=podSandboxId,proto3" json:"pod_sandbox_id,omitempty"`
+ // Port to forward.
+ Port []int32 `protobuf:"varint,2,rep,packed,name=port" json:"port,omitempty"`
+}
+
+func (m *PortForwardRequest) Reset() { *m = PortForwardRequest{} }
+func (*PortForwardRequest) ProtoMessage() {}
+func (*PortForwardRequest) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{60} }
+
+func (m *PortForwardRequest) GetPodSandboxId() string {
+ if m != nil {
+ return m.PodSandboxId
+ }
+ return ""
+}
+
+func (m *PortForwardRequest) GetPort() []int32 {
+ if m != nil {
+ return m.Port
+ }
+ return nil
+}
+
+type PortForwardResponse struct {
+ // Fully qualified URL of the port-forward streaming server.
+ Url string `protobuf:"bytes,1,opt,name=url,proto3" json:"url,omitempty"`
+}
+
+func (m *PortForwardResponse) Reset() { *m = PortForwardResponse{} }
+func (*PortForwardResponse) ProtoMessage() {}
+func (*PortForwardResponse) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{61} }
+
+func (m *PortForwardResponse) GetUrl() string {
+ if m != nil {
+ return m.Url
+ }
+ return ""
+}
+
+type ImageFilter struct {
+ // Spec of the image.
+ Image *ImageSpec `protobuf:"bytes,1,opt,name=image" json:"image,omitempty"`
+}
+
+func (m *ImageFilter) Reset() { *m = ImageFilter{} }
+func (*ImageFilter) ProtoMessage() {}
+func (*ImageFilter) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{62} }
+
+func (m *ImageFilter) GetImage() *ImageSpec {
+ if m != nil {
+ return m.Image
+ }
+ return nil
+}
+
+type ListImagesRequest struct {
+ // Filter to list images.
+ Filter *ImageFilter `protobuf:"bytes,1,opt,name=filter" json:"filter,omitempty"`
+}
+
+func (m *ListImagesRequest) Reset() { *m = ListImagesRequest{} }
+func (*ListImagesRequest) ProtoMessage() {}
+func (*ListImagesRequest) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{63} }
+
+func (m *ListImagesRequest) GetFilter() *ImageFilter {
+ if m != nil {
+ return m.Filter
+ }
+ return nil
+}
+
+// Basic information about a container image.
+type Image struct {
+ // ID of the image.
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+ // Other names by which this image is known.
+ RepoTags []string `protobuf:"bytes,2,rep,name=repo_tags,json=repoTags" json:"repo_tags,omitempty"`
+ // Digests by which this image is known.
+ RepoDigests []string `protobuf:"bytes,3,rep,name=repo_digests,json=repoDigests" json:"repo_digests,omitempty"`
+ // Size of the image in bytes. Must be > 0.
+ Size_ uint64 `protobuf:"varint,4,opt,name=size,proto3" json:"size,omitempty"`
+ // UID that will run the command(s). This is used as a default if no user is
+ // specified when creating the container. UID and the following user name
+ // are mutually exclusive.
+ Uid *Int64Value `protobuf:"bytes,5,opt,name=uid" json:"uid,omitempty"`
+ // User name that will run the command(s). This is used if UID is not set
+ // and no user is specified when creating container.
+ Username string `protobuf:"bytes,6,opt,name=username,proto3" json:"username,omitempty"`
+}
+
+func (m *Image) Reset() { *m = Image{} }
+func (*Image) ProtoMessage() {}
+func (*Image) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{64} }
+
+func (m *Image) GetId() string {
+ if m != nil {
+ return m.Id
+ }
+ return ""
+}
+
+func (m *Image) GetRepoTags() []string {
+ if m != nil {
+ return m.RepoTags
+ }
+ return nil
+}
+
+func (m *Image) GetRepoDigests() []string {
+ if m != nil {
+ return m.RepoDigests
+ }
+ return nil
+}
+
+func (m *Image) GetSize_() uint64 {
+ if m != nil {
+ return m.Size_
+ }
+ return 0
+}
+
+func (m *Image) GetUid() *Int64Value {
+ if m != nil {
+ return m.Uid
+ }
+ return nil
+}
+
+func (m *Image) GetUsername() string {
+ if m != nil {
+ return m.Username
+ }
+ return ""
+}
+
+type ListImagesResponse struct {
+ // List of images.
+ Images []*Image `protobuf:"bytes,1,rep,name=images" json:"images,omitempty"`
+}
+
+func (m *ListImagesResponse) Reset() { *m = ListImagesResponse{} }
+func (*ListImagesResponse) ProtoMessage() {}
+func (*ListImagesResponse) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{65} }
+
+func (m *ListImagesResponse) GetImages() []*Image {
+ if m != nil {
+ return m.Images
+ }
+ return nil
+}
+
+type ImageStatusRequest struct {
+ // Spec of the image.
+ Image *ImageSpec `protobuf:"bytes,1,opt,name=image" json:"image,omitempty"`
+}
+
+func (m *ImageStatusRequest) Reset() { *m = ImageStatusRequest{} }
+func (*ImageStatusRequest) ProtoMessage() {}
+func (*ImageStatusRequest) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{66} }
+
+func (m *ImageStatusRequest) GetImage() *ImageSpec {
+ if m != nil {
+ return m.Image
+ }
+ return nil
+}
+
+type ImageStatusResponse struct {
+ // Status of the image.
+ Image *Image `protobuf:"bytes,1,opt,name=image" json:"image,omitempty"`
+}
+
+func (m *ImageStatusResponse) Reset() { *m = ImageStatusResponse{} }
+func (*ImageStatusResponse) ProtoMessage() {}
+func (*ImageStatusResponse) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{67} }
+
+func (m *ImageStatusResponse) GetImage() *Image {
+ if m != nil {
+ return m.Image
+ }
+ return nil
+}
+
+// AuthConfig contains authorization information for connecting to a registry.
+type AuthConfig struct {
+ Username string `protobuf:"bytes,1,opt,name=username,proto3" json:"username,omitempty"`
+ Password string `protobuf:"bytes,2,opt,name=password,proto3" json:"password,omitempty"`
+ Auth string `protobuf:"bytes,3,opt,name=auth,proto3" json:"auth,omitempty"`
+ ServerAddress string `protobuf:"bytes,4,opt,name=server_address,json=serverAddress,proto3" json:"server_address,omitempty"`
+ // IdentityToken is used to authenticate the user and get
+ // an access token for the registry.
+ IdentityToken string `protobuf:"bytes,5,opt,name=identity_token,json=identityToken,proto3" json:"identity_token,omitempty"`
+ // RegistryToken is a bearer token to be sent to a registry
+ RegistryToken string `protobuf:"bytes,6,opt,name=registry_token,json=registryToken,proto3" json:"registry_token,omitempty"`
+}
+
+func (m *AuthConfig) Reset() { *m = AuthConfig{} }
+func (*AuthConfig) ProtoMessage() {}
+func (*AuthConfig) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{68} }
+
+func (m *AuthConfig) GetUsername() string {
+ if m != nil {
+ return m.Username
+ }
+ return ""
+}
+
+func (m *AuthConfig) GetPassword() string {
+ if m != nil {
+ return m.Password
+ }
+ return ""
+}
+
+func (m *AuthConfig) GetAuth() string {
+ if m != nil {
+ return m.Auth
+ }
+ return ""
+}
+
+func (m *AuthConfig) GetServerAddress() string {
+ if m != nil {
+ return m.ServerAddress
+ }
+ return ""
+}
+
+func (m *AuthConfig) GetIdentityToken() string {
+ if m != nil {
+ return m.IdentityToken
+ }
+ return ""
+}
+
+func (m *AuthConfig) GetRegistryToken() string {
+ if m != nil {
+ return m.RegistryToken
+ }
+ return ""
+}
+
+type PullImageRequest struct {
+ // Spec of the image.
+ Image *ImageSpec `protobuf:"bytes,1,opt,name=image" json:"image,omitempty"`
+ // Authentication configuration for pulling the image.
+ Auth *AuthConfig `protobuf:"bytes,2,opt,name=auth" json:"auth,omitempty"`
+ // Config of the PodSandbox, which is used to pull image in PodSandbox context.
+ SandboxConfig *PodSandboxConfig `protobuf:"bytes,3,opt,name=sandbox_config,json=sandboxConfig" json:"sandbox_config,omitempty"`
+}
+
+func (m *PullImageRequest) Reset() { *m = PullImageRequest{} }
+func (*PullImageRequest) ProtoMessage() {}
+func (*PullImageRequest) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{69} }
+
+func (m *PullImageRequest) GetImage() *ImageSpec {
+ if m != nil {
+ return m.Image
+ }
+ return nil
+}
+
+func (m *PullImageRequest) GetAuth() *AuthConfig {
+ if m != nil {
+ return m.Auth
+ }
+ return nil
+}
+
+func (m *PullImageRequest) GetSandboxConfig() *PodSandboxConfig {
+ if m != nil {
+ return m.SandboxConfig
+ }
+ return nil
+}
+
+type PullImageResponse struct {
+ // Reference to the image in use. For most runtimes, this should be an
+ // image ID or digest.
+ ImageRef string `protobuf:"bytes,1,opt,name=image_ref,json=imageRef,proto3" json:"image_ref,omitempty"`
+}
+
+func (m *PullImageResponse) Reset() { *m = PullImageResponse{} }
+func (*PullImageResponse) ProtoMessage() {}
+func (*PullImageResponse) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{70} }
+
+func (m *PullImageResponse) GetImageRef() string {
+ if m != nil {
+ return m.ImageRef
+ }
+ return ""
+}
+
+type RemoveImageRequest struct {
+ // Spec of the image to remove.
+ Image *ImageSpec `protobuf:"bytes,1,opt,name=image" json:"image,omitempty"`
+}
+
+func (m *RemoveImageRequest) Reset() { *m = RemoveImageRequest{} }
+func (*RemoveImageRequest) ProtoMessage() {}
+func (*RemoveImageRequest) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{71} }
+
+func (m *RemoveImageRequest) GetImage() *ImageSpec {
+ if m != nil {
+ return m.Image
+ }
+ return nil
+}
+
+type RemoveImageResponse struct {
+}
+
+func (m *RemoveImageResponse) Reset() { *m = RemoveImageResponse{} }
+func (*RemoveImageResponse) ProtoMessage() {}
+func (*RemoveImageResponse) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{72} }
+
+type NetworkConfig struct {
+ // CIDR to use for pod IP addresses.
+ PodCidr string `protobuf:"bytes,1,opt,name=pod_cidr,json=podCidr,proto3" json:"pod_cidr,omitempty"`
+}
+
+func (m *NetworkConfig) Reset() { *m = NetworkConfig{} }
+func (*NetworkConfig) ProtoMessage() {}
+func (*NetworkConfig) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{73} }
+
+func (m *NetworkConfig) GetPodCidr() string {
+ if m != nil {
+ return m.PodCidr
+ }
+ return ""
+}
+
+type RuntimeConfig struct {
+ NetworkConfig *NetworkConfig `protobuf:"bytes,1,opt,name=network_config,json=networkConfig" json:"network_config,omitempty"`
+}
+
+func (m *RuntimeConfig) Reset() { *m = RuntimeConfig{} }
+func (*RuntimeConfig) ProtoMessage() {}
+func (*RuntimeConfig) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{74} }
+
+func (m *RuntimeConfig) GetNetworkConfig() *NetworkConfig {
+ if m != nil {
+ return m.NetworkConfig
+ }
+ return nil
+}
+
+type UpdateRuntimeConfigRequest struct {
+ RuntimeConfig *RuntimeConfig `protobuf:"bytes,1,opt,name=runtime_config,json=runtimeConfig" json:"runtime_config,omitempty"`
+}
+
+func (m *UpdateRuntimeConfigRequest) Reset() { *m = UpdateRuntimeConfigRequest{} }
+func (*UpdateRuntimeConfigRequest) ProtoMessage() {}
+func (*UpdateRuntimeConfigRequest) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{75} }
+
+func (m *UpdateRuntimeConfigRequest) GetRuntimeConfig() *RuntimeConfig {
+ if m != nil {
+ return m.RuntimeConfig
+ }
+ return nil
+}
+
+type UpdateRuntimeConfigResponse struct {
+}
+
+func (m *UpdateRuntimeConfigResponse) Reset() { *m = UpdateRuntimeConfigResponse{} }
+func (*UpdateRuntimeConfigResponse) ProtoMessage() {}
+func (*UpdateRuntimeConfigResponse) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{76} }
+
+// RuntimeCondition contains condition information for the runtime.
+// There are 2 kinds of runtime conditions:
+// 1. Required conditions: Conditions are required for kubelet to work
+// properly. If any required condition is unmet, the node will be not ready.
+// The required conditions include:
+// * RuntimeReady: RuntimeReady means the runtime is up and ready to accept
+// basic containers e.g. container only needs host network.
+// * NetworkReady: NetworkReady means the runtime network is up and ready to
+// accept containers which require container network.
+// 2. Optional conditions: Conditions are informative to the user, but kubelet
+// will not rely on. Since condition type is an arbitrary string, all conditions
+// not required are optional. These conditions will be exposed to users to help
+// them understand the status of the system.
+type RuntimeCondition struct {
+ // Type of runtime condition.
+ Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"`
+ // Status of the condition, one of true/false. Default: false.
+ Status bool `protobuf:"varint,2,opt,name=status,proto3" json:"status,omitempty"`
+ // Brief CamelCase string containing reason for the condition's last transition.
+ Reason string `protobuf:"bytes,3,opt,name=reason,proto3" json:"reason,omitempty"`
+ // Human-readable message indicating details about last transition.
+ Message string `protobuf:"bytes,4,opt,name=message,proto3" json:"message,omitempty"`
+}
+
+func (m *RuntimeCondition) Reset() { *m = RuntimeCondition{} }
+func (*RuntimeCondition) ProtoMessage() {}
+func (*RuntimeCondition) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{77} }
+
+func (m *RuntimeCondition) GetType() string {
+ if m != nil {
+ return m.Type
+ }
+ return ""
+}
+
+func (m *RuntimeCondition) GetStatus() bool {
+ if m != nil {
+ return m.Status
+ }
+ return false
+}
+
+func (m *RuntimeCondition) GetReason() string {
+ if m != nil {
+ return m.Reason
+ }
+ return ""
+}
+
+func (m *RuntimeCondition) GetMessage() string {
+ if m != nil {
+ return m.Message
+ }
+ return ""
+}
+
+// RuntimeStatus is information about the current status of the runtime.
+type RuntimeStatus struct {
+ // List of current observed runtime conditions.
+ Conditions []*RuntimeCondition `protobuf:"bytes,1,rep,name=conditions" json:"conditions,omitempty"`
+}
+
+func (m *RuntimeStatus) Reset() { *m = RuntimeStatus{} }
+func (*RuntimeStatus) ProtoMessage() {}
+func (*RuntimeStatus) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{78} }
+
+func (m *RuntimeStatus) GetConditions() []*RuntimeCondition {
+ if m != nil {
+ return m.Conditions
+ }
+ return nil
+}
+
+type StatusRequest struct {
+}
+
+func (m *StatusRequest) Reset() { *m = StatusRequest{} }
+func (*StatusRequest) ProtoMessage() {}
+func (*StatusRequest) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{79} }
+
+type StatusResponse struct {
+ // Status of the Runtime.
+ Status *RuntimeStatus `protobuf:"bytes,1,opt,name=status" json:"status,omitempty"`
+}
+
+func (m *StatusResponse) Reset() { *m = StatusResponse{} }
+func (*StatusResponse) ProtoMessage() {}
+func (*StatusResponse) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{80} }
+
+func (m *StatusResponse) GetStatus() *RuntimeStatus {
+ if m != nil {
+ return m.Status
+ }
+ return nil
+}
+
+type ImageFsInfoRequest struct {
+}
+
+func (m *ImageFsInfoRequest) Reset() { *m = ImageFsInfoRequest{} }
+func (*ImageFsInfoRequest) ProtoMessage() {}
+func (*ImageFsInfoRequest) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{81} }
+
+// UInt64Value is the wrapper of uint64.
+type UInt64Value struct {
+ // The value.
+ Value uint64 `protobuf:"varint,1,opt,name=value,proto3" json:"value,omitempty"`
+}
+
+func (m *UInt64Value) Reset() { *m = UInt64Value{} }
+func (*UInt64Value) ProtoMessage() {}
+func (*UInt64Value) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{82} }
+
+func (m *UInt64Value) GetValue() uint64 {
+ if m != nil {
+ return m.Value
+ }
+ return 0
+}
+
+// StorageIdentifier uniquely identify the storage..
+type StorageIdentifier struct {
+ // UUID of the device.
+ Uuid string `protobuf:"bytes,1,opt,name=uuid,proto3" json:"uuid,omitempty"`
+}
+
+func (m *StorageIdentifier) Reset() { *m = StorageIdentifier{} }
+func (*StorageIdentifier) ProtoMessage() {}
+func (*StorageIdentifier) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{83} }
+
+func (m *StorageIdentifier) GetUuid() string {
+ if m != nil {
+ return m.Uuid
+ }
+ return ""
+}
+
+// FilesystemUsage provides the filesystem usage information.
+type FilesystemUsage struct {
+ // Timestamp in nanoseconds at which the information were collected. Must be > 0.
+ Timestamp int64 `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"`
+ // The underlying storage of the filesystem.
+ StorageId *StorageIdentifier `protobuf:"bytes,2,opt,name=storage_id,json=storageId" json:"storage_id,omitempty"`
+ // UsedBytes represents the bytes used for images on the filesystem.
+ // This may differ from the total bytes used on the filesystem and may not
+ // equal CapacityBytes - AvailableBytes.
+ UsedBytes *UInt64Value `protobuf:"bytes,3,opt,name=used_bytes,json=usedBytes" json:"used_bytes,omitempty"`
+ // InodesUsed represents the inodes used by the images.
+ // This may not equal InodesCapacity - InodesAvailable because the underlying
+ // filesystem may also be used for purposes other than storing images.
+ InodesUsed *UInt64Value `protobuf:"bytes,4,opt,name=inodes_used,json=inodesUsed" json:"inodes_used,omitempty"`
+}
+
+func (m *FilesystemUsage) Reset() { *m = FilesystemUsage{} }
+func (*FilesystemUsage) ProtoMessage() {}
+func (*FilesystemUsage) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{84} }
+
+func (m *FilesystemUsage) GetTimestamp() int64 {
+ if m != nil {
+ return m.Timestamp
+ }
+ return 0
+}
+
+func (m *FilesystemUsage) GetStorageId() *StorageIdentifier {
+ if m != nil {
+ return m.StorageId
+ }
+ return nil
+}
+
+func (m *FilesystemUsage) GetUsedBytes() *UInt64Value {
+ if m != nil {
+ return m.UsedBytes
+ }
+ return nil
+}
+
+func (m *FilesystemUsage) GetInodesUsed() *UInt64Value {
+ if m != nil {
+ return m.InodesUsed
+ }
+ return nil
+}
+
+type ImageFsInfoResponse struct {
+ // Information of image filesystem(s).
+ ImageFilesystems []*FilesystemUsage `protobuf:"bytes,1,rep,name=image_filesystems,json=imageFilesystems" json:"image_filesystems,omitempty"`
+}
+
+func (m *ImageFsInfoResponse) Reset() { *m = ImageFsInfoResponse{} }
+func (*ImageFsInfoResponse) ProtoMessage() {}
+func (*ImageFsInfoResponse) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{85} }
+
+func (m *ImageFsInfoResponse) GetImageFilesystems() []*FilesystemUsage {
+ if m != nil {
+ return m.ImageFilesystems
+ }
+ return nil
+}
+
+type ContainerStatsRequest struct {
+ // ID of the container for which to retrieve stats.
+ ContainerId string `protobuf:"bytes,1,opt,name=container_id,json=containerId,proto3" json:"container_id,omitempty"`
+}
+
+func (m *ContainerStatsRequest) Reset() { *m = ContainerStatsRequest{} }
+func (*ContainerStatsRequest) ProtoMessage() {}
+func (*ContainerStatsRequest) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{86} }
+
+func (m *ContainerStatsRequest) GetContainerId() string {
+ if m != nil {
+ return m.ContainerId
+ }
+ return ""
+}
+
+type ContainerStatsResponse struct {
+ // Stats of the container.
+ Stats *ContainerStats `protobuf:"bytes,1,opt,name=stats" json:"stats,omitempty"`
+}
+
+func (m *ContainerStatsResponse) Reset() { *m = ContainerStatsResponse{} }
+func (*ContainerStatsResponse) ProtoMessage() {}
+func (*ContainerStatsResponse) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{87} }
+
+func (m *ContainerStatsResponse) GetStats() *ContainerStats {
+ if m != nil {
+ return m.Stats
+ }
+ return nil
+}
+
+type ListContainerStatsRequest struct {
+ // Filter for the list request.
+ Filter *ContainerStatsFilter `protobuf:"bytes,1,opt,name=filter" json:"filter,omitempty"`
+}
+
+func (m *ListContainerStatsRequest) Reset() { *m = ListContainerStatsRequest{} }
+func (*ListContainerStatsRequest) ProtoMessage() {}
+func (*ListContainerStatsRequest) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{88} }
+
+func (m *ListContainerStatsRequest) GetFilter() *ContainerStatsFilter {
+ if m != nil {
+ return m.Filter
+ }
+ return nil
+}
+
+// ContainerStatsFilter is used to filter containers.
+// All those fields are combined with 'AND'
+type ContainerStatsFilter struct {
+ // ID of the container.
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+ // ID of the PodSandbox.
+ PodSandboxId string `protobuf:"bytes,2,opt,name=pod_sandbox_id,json=podSandboxId,proto3" json:"pod_sandbox_id,omitempty"`
+ // LabelSelector to select matches.
+ // Only api.MatchLabels is supported for now and the requirements
+ // are ANDed. MatchExpressions is not supported yet.
+ LabelSelector map[string]string `protobuf:"bytes,3,rep,name=label_selector,json=labelSelector" json:"label_selector,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+}
+
+func (m *ContainerStatsFilter) Reset() { *m = ContainerStatsFilter{} }
+func (*ContainerStatsFilter) ProtoMessage() {}
+func (*ContainerStatsFilter) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{89} }
+
+func (m *ContainerStatsFilter) GetId() string {
+ if m != nil {
+ return m.Id
+ }
+ return ""
+}
+
+func (m *ContainerStatsFilter) GetPodSandboxId() string {
+ if m != nil {
+ return m.PodSandboxId
+ }
+ return ""
+}
+
+func (m *ContainerStatsFilter) GetLabelSelector() map[string]string {
+ if m != nil {
+ return m.LabelSelector
+ }
+ return nil
+}
+
+type ListContainerStatsResponse struct {
+ // Stats of the container.
+ Stats []*ContainerStats `protobuf:"bytes,1,rep,name=stats" json:"stats,omitempty"`
+}
+
+func (m *ListContainerStatsResponse) Reset() { *m = ListContainerStatsResponse{} }
+func (*ListContainerStatsResponse) ProtoMessage() {}
+func (*ListContainerStatsResponse) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{90} }
+
+func (m *ListContainerStatsResponse) GetStats() []*ContainerStats {
+ if m != nil {
+ return m.Stats
+ }
+ return nil
+}
+
+// ContainerAttributes provides basic information of the container.
+type ContainerAttributes struct {
+ // ID of the container.
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+ // Metadata of the container.
+ Metadata *ContainerMetadata `protobuf:"bytes,2,opt,name=metadata" json:"metadata,omitempty"`
+ // Key-value pairs that may be used to scope and select individual resources.
+ Labels map[string]string `protobuf:"bytes,3,rep,name=labels" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+ // Unstructured key-value map holding arbitrary metadata.
+ // Annotations MUST NOT be altered by the runtime; the value of this field
+ // MUST be identical to that of the corresponding ContainerConfig used to
+ // instantiate the Container this status represents.
+ Annotations map[string]string `protobuf:"bytes,4,rep,name=annotations" json:"annotations,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+}
+
+func (m *ContainerAttributes) Reset() { *m = ContainerAttributes{} }
+func (*ContainerAttributes) ProtoMessage() {}
+func (*ContainerAttributes) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{91} }
+
+func (m *ContainerAttributes) GetId() string {
+ if m != nil {
+ return m.Id
+ }
+ return ""
+}
+
+func (m *ContainerAttributes) GetMetadata() *ContainerMetadata {
+ if m != nil {
+ return m.Metadata
+ }
+ return nil
+}
+
+func (m *ContainerAttributes) GetLabels() map[string]string {
+ if m != nil {
+ return m.Labels
+ }
+ return nil
+}
+
+func (m *ContainerAttributes) GetAnnotations() map[string]string {
+ if m != nil {
+ return m.Annotations
+ }
+ return nil
+}
+
+// ContainerStats provides the resource usage statistics for a container.
+type ContainerStats struct {
+ // Information of the container.
+ Attributes *ContainerAttributes `protobuf:"bytes,1,opt,name=attributes" json:"attributes,omitempty"`
+ // CPU usage gathered from the container.
+ Cpu *CpuUsage `protobuf:"bytes,2,opt,name=cpu" json:"cpu,omitempty"`
+ // Memory usage gathered from the container.
+ Memory *MemoryUsage `protobuf:"bytes,3,opt,name=memory" json:"memory,omitempty"`
+ // Usage of the writeable layer.
+ WritableLayer *FilesystemUsage `protobuf:"bytes,4,opt,name=writable_layer,json=writableLayer" json:"writable_layer,omitempty"`
+}
+
+func (m *ContainerStats) Reset() { *m = ContainerStats{} }
+func (*ContainerStats) ProtoMessage() {}
+func (*ContainerStats) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{92} }
+
+func (m *ContainerStats) GetAttributes() *ContainerAttributes {
+ if m != nil {
+ return m.Attributes
+ }
+ return nil
+}
+
+func (m *ContainerStats) GetCpu() *CpuUsage {
+ if m != nil {
+ return m.Cpu
+ }
+ return nil
+}
+
+func (m *ContainerStats) GetMemory() *MemoryUsage {
+ if m != nil {
+ return m.Memory
+ }
+ return nil
+}
+
+func (m *ContainerStats) GetWritableLayer() *FilesystemUsage {
+ if m != nil {
+ return m.WritableLayer
+ }
+ return nil
+}
+
+// CpuUsage provides the CPU usage information.
+type CpuUsage struct {
+ // Timestamp in nanoseconds at which the information were collected. Must be > 0.
+ Timestamp int64 `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"`
+ // Cumulative CPU usage (sum across all cores) since object creation.
+ UsageCoreNanoSeconds *UInt64Value `protobuf:"bytes,2,opt,name=usage_core_nano_seconds,json=usageCoreNanoSeconds" json:"usage_core_nano_seconds,omitempty"`
+}
+
+func (m *CpuUsage) Reset() { *m = CpuUsage{} }
+func (*CpuUsage) ProtoMessage() {}
+func (*CpuUsage) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{93} }
+
+func (m *CpuUsage) GetTimestamp() int64 {
+ if m != nil {
+ return m.Timestamp
+ }
+ return 0
+}
+
+func (m *CpuUsage) GetUsageCoreNanoSeconds() *UInt64Value {
+ if m != nil {
+ return m.UsageCoreNanoSeconds
+ }
+ return nil
+}
+
+// MemoryUsage provides the memory usage information.
+type MemoryUsage struct {
+ // Timestamp in nanoseconds at which the information were collected. Must be > 0.
+ Timestamp int64 `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"`
+ // The amount of working set memory in bytes.
+ WorkingSetBytes *UInt64Value `protobuf:"bytes,2,opt,name=working_set_bytes,json=workingSetBytes" json:"working_set_bytes,omitempty"`
+}
+
+func (m *MemoryUsage) Reset() { *m = MemoryUsage{} }
+func (*MemoryUsage) ProtoMessage() {}
+func (*MemoryUsage) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{94} }
+
+func (m *MemoryUsage) GetTimestamp() int64 {
+ if m != nil {
+ return m.Timestamp
+ }
+ return 0
+}
+
+func (m *MemoryUsage) GetWorkingSetBytes() *UInt64Value {
+ if m != nil {
+ return m.WorkingSetBytes
+ }
+ return nil
+}
+
+func init() {
+ proto.RegisterType((*VersionRequest)(nil), "runtime.VersionRequest")
+ proto.RegisterType((*VersionResponse)(nil), "runtime.VersionResponse")
+ proto.RegisterType((*DNSConfig)(nil), "runtime.DNSConfig")
+ proto.RegisterType((*PortMapping)(nil), "runtime.PortMapping")
+ proto.RegisterType((*Mount)(nil), "runtime.Mount")
+ proto.RegisterType((*NamespaceOption)(nil), "runtime.NamespaceOption")
+ proto.RegisterType((*Int64Value)(nil), "runtime.Int64Value")
+ proto.RegisterType((*LinuxSandboxSecurityContext)(nil), "runtime.LinuxSandboxSecurityContext")
+ proto.RegisterType((*LinuxPodSandboxConfig)(nil), "runtime.LinuxPodSandboxConfig")
+ proto.RegisterType((*PodSandboxMetadata)(nil), "runtime.PodSandboxMetadata")
+ proto.RegisterType((*PodSandboxConfig)(nil), "runtime.PodSandboxConfig")
+ proto.RegisterType((*RunPodSandboxRequest)(nil), "runtime.RunPodSandboxRequest")
+ proto.RegisterType((*RunPodSandboxResponse)(nil), "runtime.RunPodSandboxResponse")
+ proto.RegisterType((*StopPodSandboxRequest)(nil), "runtime.StopPodSandboxRequest")
+ proto.RegisterType((*StopPodSandboxResponse)(nil), "runtime.StopPodSandboxResponse")
+ proto.RegisterType((*RemovePodSandboxRequest)(nil), "runtime.RemovePodSandboxRequest")
+ proto.RegisterType((*RemovePodSandboxResponse)(nil), "runtime.RemovePodSandboxResponse")
+ proto.RegisterType((*PodSandboxStatusRequest)(nil), "runtime.PodSandboxStatusRequest")
+ proto.RegisterType((*PodSandboxNetworkStatus)(nil), "runtime.PodSandboxNetworkStatus")
+ proto.RegisterType((*Namespace)(nil), "runtime.Namespace")
+ proto.RegisterType((*LinuxPodSandboxStatus)(nil), "runtime.LinuxPodSandboxStatus")
+ proto.RegisterType((*PodSandboxStatus)(nil), "runtime.PodSandboxStatus")
+ proto.RegisterType((*PodSandboxStatusResponse)(nil), "runtime.PodSandboxStatusResponse")
+ proto.RegisterType((*PodSandboxStateValue)(nil), "runtime.PodSandboxStateValue")
+ proto.RegisterType((*PodSandboxFilter)(nil), "runtime.PodSandboxFilter")
+ proto.RegisterType((*ListPodSandboxRequest)(nil), "runtime.ListPodSandboxRequest")
+ proto.RegisterType((*PodSandbox)(nil), "runtime.PodSandbox")
+ proto.RegisterType((*ListPodSandboxResponse)(nil), "runtime.ListPodSandboxResponse")
+ proto.RegisterType((*ImageSpec)(nil), "runtime.ImageSpec")
+ proto.RegisterType((*KeyValue)(nil), "runtime.KeyValue")
+ proto.RegisterType((*LinuxContainerResources)(nil), "runtime.LinuxContainerResources")
+ proto.RegisterType((*SELinuxOption)(nil), "runtime.SELinuxOption")
+ proto.RegisterType((*Capability)(nil), "runtime.Capability")
+ proto.RegisterType((*LinuxContainerSecurityContext)(nil), "runtime.LinuxContainerSecurityContext")
+ proto.RegisterType((*LinuxContainerConfig)(nil), "runtime.LinuxContainerConfig")
+ proto.RegisterType((*ContainerMetadata)(nil), "runtime.ContainerMetadata")
+ proto.RegisterType((*Device)(nil), "runtime.Device")
+ proto.RegisterType((*ContainerConfig)(nil), "runtime.ContainerConfig")
+ proto.RegisterType((*CreateContainerRequest)(nil), "runtime.CreateContainerRequest")
+ proto.RegisterType((*CreateContainerResponse)(nil), "runtime.CreateContainerResponse")
+ proto.RegisterType((*StartContainerRequest)(nil), "runtime.StartContainerRequest")
+ proto.RegisterType((*StartContainerResponse)(nil), "runtime.StartContainerResponse")
+ proto.RegisterType((*StopContainerRequest)(nil), "runtime.StopContainerRequest")
+ proto.RegisterType((*StopContainerResponse)(nil), "runtime.StopContainerResponse")
+ proto.RegisterType((*RemoveContainerRequest)(nil), "runtime.RemoveContainerRequest")
+ proto.RegisterType((*RemoveContainerResponse)(nil), "runtime.RemoveContainerResponse")
+ proto.RegisterType((*ContainerStateValue)(nil), "runtime.ContainerStateValue")
+ proto.RegisterType((*ContainerFilter)(nil), "runtime.ContainerFilter")
+ proto.RegisterType((*ListContainersRequest)(nil), "runtime.ListContainersRequest")
+ proto.RegisterType((*Container)(nil), "runtime.Container")
+ proto.RegisterType((*ListContainersResponse)(nil), "runtime.ListContainersResponse")
+ proto.RegisterType((*ContainerStatusRequest)(nil), "runtime.ContainerStatusRequest")
+ proto.RegisterType((*ContainerStatus)(nil), "runtime.ContainerStatus")
+ proto.RegisterType((*ContainerStatusResponse)(nil), "runtime.ContainerStatusResponse")
+ proto.RegisterType((*ExecSyncRequest)(nil), "runtime.ExecSyncRequest")
+ proto.RegisterType((*ExecSyncResponse)(nil), "runtime.ExecSyncResponse")
+ proto.RegisterType((*ExecRequest)(nil), "runtime.ExecRequest")
+ proto.RegisterType((*ExecResponse)(nil), "runtime.ExecResponse")
+ proto.RegisterType((*AttachRequest)(nil), "runtime.AttachRequest")
+ proto.RegisterType((*AttachResponse)(nil), "runtime.AttachResponse")
+ proto.RegisterType((*PortForwardRequest)(nil), "runtime.PortForwardRequest")
+ proto.RegisterType((*PortForwardResponse)(nil), "runtime.PortForwardResponse")
+ proto.RegisterType((*ImageFilter)(nil), "runtime.ImageFilter")
+ proto.RegisterType((*ListImagesRequest)(nil), "runtime.ListImagesRequest")
+ proto.RegisterType((*Image)(nil), "runtime.Image")
+ proto.RegisterType((*ListImagesResponse)(nil), "runtime.ListImagesResponse")
+ proto.RegisterType((*ImageStatusRequest)(nil), "runtime.ImageStatusRequest")
+ proto.RegisterType((*ImageStatusResponse)(nil), "runtime.ImageStatusResponse")
+ proto.RegisterType((*AuthConfig)(nil), "runtime.AuthConfig")
+ proto.RegisterType((*PullImageRequest)(nil), "runtime.PullImageRequest")
+ proto.RegisterType((*PullImageResponse)(nil), "runtime.PullImageResponse")
+ proto.RegisterType((*RemoveImageRequest)(nil), "runtime.RemoveImageRequest")
+ proto.RegisterType((*RemoveImageResponse)(nil), "runtime.RemoveImageResponse")
+ proto.RegisterType((*NetworkConfig)(nil), "runtime.NetworkConfig")
+ proto.RegisterType((*RuntimeConfig)(nil), "runtime.RuntimeConfig")
+ proto.RegisterType((*UpdateRuntimeConfigRequest)(nil), "runtime.UpdateRuntimeConfigRequest")
+ proto.RegisterType((*UpdateRuntimeConfigResponse)(nil), "runtime.UpdateRuntimeConfigResponse")
+ proto.RegisterType((*RuntimeCondition)(nil), "runtime.RuntimeCondition")
+ proto.RegisterType((*RuntimeStatus)(nil), "runtime.RuntimeStatus")
+ proto.RegisterType((*StatusRequest)(nil), "runtime.StatusRequest")
+ proto.RegisterType((*StatusResponse)(nil), "runtime.StatusResponse")
+ proto.RegisterType((*ImageFsInfoRequest)(nil), "runtime.ImageFsInfoRequest")
+ proto.RegisterType((*UInt64Value)(nil), "runtime.UInt64Value")
+ proto.RegisterType((*StorageIdentifier)(nil), "runtime.StorageIdentifier")
+ proto.RegisterType((*FilesystemUsage)(nil), "runtime.FilesystemUsage")
+ proto.RegisterType((*ImageFsInfoResponse)(nil), "runtime.ImageFsInfoResponse")
+ proto.RegisterType((*ContainerStatsRequest)(nil), "runtime.ContainerStatsRequest")
+ proto.RegisterType((*ContainerStatsResponse)(nil), "runtime.ContainerStatsResponse")
+ proto.RegisterType((*ListContainerStatsRequest)(nil), "runtime.ListContainerStatsRequest")
+ proto.RegisterType((*ContainerStatsFilter)(nil), "runtime.ContainerStatsFilter")
+ proto.RegisterType((*ListContainerStatsResponse)(nil), "runtime.ListContainerStatsResponse")
+ proto.RegisterType((*ContainerAttributes)(nil), "runtime.ContainerAttributes")
+ proto.RegisterType((*ContainerStats)(nil), "runtime.ContainerStats")
+ proto.RegisterType((*CpuUsage)(nil), "runtime.CpuUsage")
+ proto.RegisterType((*MemoryUsage)(nil), "runtime.MemoryUsage")
+ proto.RegisterEnum("runtime.Protocol", Protocol_name, Protocol_value)
+ proto.RegisterEnum("runtime.PodSandboxState", PodSandboxState_name, PodSandboxState_value)
+ proto.RegisterEnum("runtime.ContainerState", ContainerState_name, ContainerState_value)
+}
+
+// Reference imports to suppress errors if they are not otherwise used.
+var _ context.Context
+var _ grpc.ClientConn
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the grpc package it is being compiled against.
+const _ = grpc.SupportPackageIsVersion4
+
+// Client API for RuntimeService service
+
+type RuntimeServiceClient interface {
+ // Version returns the runtime name, runtime version, and runtime API version.
+ Version(ctx context.Context, in *VersionRequest, opts ...grpc.CallOption) (*VersionResponse, error)
+ // RunPodSandbox creates and starts a pod-level sandbox. Runtimes must ensure
+ // the sandbox is in the ready state on success.
+ RunPodSandbox(ctx context.Context, in *RunPodSandboxRequest, opts ...grpc.CallOption) (*RunPodSandboxResponse, error)
+ // StopPodSandbox stops any running process that is part of the sandbox and
+ // reclaims network resources (e.g., IP addresses) allocated to the sandbox.
+ // If there are any running containers in the sandbox, they must be forcibly
+ // terminated.
+ // This call is idempotent, and must not return an error if all relevant
+ // resources have already been reclaimed. kubelet will call StopPodSandbox
+ // at least once before calling RemovePodSandbox. It will also attempt to
+ // reclaim resources eagerly, as soon as a sandbox is not needed. Hence,
+ // multiple StopPodSandbox calls are expected.
+ StopPodSandbox(ctx context.Context, in *StopPodSandboxRequest, opts ...grpc.CallOption) (*StopPodSandboxResponse, error)
+ // RemovePodSandbox removes the sandbox. If there are any running containers
+ // in the sandbox, they must be forcibly terminated and removed.
+ // This call is idempotent, and must not return an error if the sandbox has
+ // already been removed.
+ RemovePodSandbox(ctx context.Context, in *RemovePodSandboxRequest, opts ...grpc.CallOption) (*RemovePodSandboxResponse, error)
+ // PodSandboxStatus returns the status of the PodSandbox. If the PodSandbox is not
+ // present, returns an error.
+ PodSandboxStatus(ctx context.Context, in *PodSandboxStatusRequest, opts ...grpc.CallOption) (*PodSandboxStatusResponse, error)
+ // ListPodSandbox returns a list of PodSandboxes.
+ ListPodSandbox(ctx context.Context, in *ListPodSandboxRequest, opts ...grpc.CallOption) (*ListPodSandboxResponse, error)
+ // CreateContainer creates a new container in specified PodSandbox
+ CreateContainer(ctx context.Context, in *CreateContainerRequest, opts ...grpc.CallOption) (*CreateContainerResponse, error)
+ // StartContainer starts the container.
+ StartContainer(ctx context.Context, in *StartContainerRequest, opts ...grpc.CallOption) (*StartContainerResponse, error)
+ // StopContainer stops a running container with a grace period (i.e., timeout).
+ // This call is idempotent, and must not return an error if the container has
+ // already been stopped.
+ // TODO: what must the runtime do after the grace period is reached?
+ StopContainer(ctx context.Context, in *StopContainerRequest, opts ...grpc.CallOption) (*StopContainerResponse, error)
+ // RemoveContainer removes the container. If the container is running, the
+ // container must be forcibly removed.
+ // This call is idempotent, and must not return an error if the container has
+ // already been removed.
+ RemoveContainer(ctx context.Context, in *RemoveContainerRequest, opts ...grpc.CallOption) (*RemoveContainerResponse, error)
+ // ListContainers lists all containers by filters.
+ ListContainers(ctx context.Context, in *ListContainersRequest, opts ...grpc.CallOption) (*ListContainersResponse, error)
+ // ContainerStatus returns status of the container. If the container is not
+ // present, returns an error.
+ ContainerStatus(ctx context.Context, in *ContainerStatusRequest, opts ...grpc.CallOption) (*ContainerStatusResponse, error)
+ // ExecSync runs a command in a container synchronously.
+ ExecSync(ctx context.Context, in *ExecSyncRequest, opts ...grpc.CallOption) (*ExecSyncResponse, error)
+ // Exec prepares a streaming endpoint to execute a command in the container.
+ Exec(ctx context.Context, in *ExecRequest, opts ...grpc.CallOption) (*ExecResponse, error)
+ // Attach prepares a streaming endpoint to attach to a running container.
+ Attach(ctx context.Context, in *AttachRequest, opts ...grpc.CallOption) (*AttachResponse, error)
+ // PortForward prepares a streaming endpoint to forward ports from a PodSandbox.
+ PortForward(ctx context.Context, in *PortForwardRequest, opts ...grpc.CallOption) (*PortForwardResponse, error)
+ // ContainerStats returns stats of the container. If the container does not
+ // exist, the call returns an error.
+ ContainerStats(ctx context.Context, in *ContainerStatsRequest, opts ...grpc.CallOption) (*ContainerStatsResponse, error)
+ // ListContainerStats returns stats of all running containers.
+ ListContainerStats(ctx context.Context, in *ListContainerStatsRequest, opts ...grpc.CallOption) (*ListContainerStatsResponse, error)
+ // UpdateRuntimeConfig updates the runtime configuration based on the given request.
+ UpdateRuntimeConfig(ctx context.Context, in *UpdateRuntimeConfigRequest, opts ...grpc.CallOption) (*UpdateRuntimeConfigResponse, error)
+ // Status returns the status of the runtime.
+ Status(ctx context.Context, in *StatusRequest, opts ...grpc.CallOption) (*StatusResponse, error)
+}
+
+type runtimeServiceClient struct {
+ cc *grpc.ClientConn
+}
+
+func NewRuntimeServiceClient(cc *grpc.ClientConn) RuntimeServiceClient {
+ return &runtimeServiceClient{cc}
+}
+
+func (c *runtimeServiceClient) Version(ctx context.Context, in *VersionRequest, opts ...grpc.CallOption) (*VersionResponse, error) {
+ out := new(VersionResponse)
+ err := grpc.Invoke(ctx, "/runtime.RuntimeService/Version", in, out, c.cc, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *runtimeServiceClient) RunPodSandbox(ctx context.Context, in *RunPodSandboxRequest, opts ...grpc.CallOption) (*RunPodSandboxResponse, error) {
+ out := new(RunPodSandboxResponse)
+ err := grpc.Invoke(ctx, "/runtime.RuntimeService/RunPodSandbox", in, out, c.cc, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *runtimeServiceClient) StopPodSandbox(ctx context.Context, in *StopPodSandboxRequest, opts ...grpc.CallOption) (*StopPodSandboxResponse, error) {
+ out := new(StopPodSandboxResponse)
+ err := grpc.Invoke(ctx, "/runtime.RuntimeService/StopPodSandbox", in, out, c.cc, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *runtimeServiceClient) RemovePodSandbox(ctx context.Context, in *RemovePodSandboxRequest, opts ...grpc.CallOption) (*RemovePodSandboxResponse, error) {
+ out := new(RemovePodSandboxResponse)
+ err := grpc.Invoke(ctx, "/runtime.RuntimeService/RemovePodSandbox", in, out, c.cc, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *runtimeServiceClient) PodSandboxStatus(ctx context.Context, in *PodSandboxStatusRequest, opts ...grpc.CallOption) (*PodSandboxStatusResponse, error) {
+ out := new(PodSandboxStatusResponse)
+ err := grpc.Invoke(ctx, "/runtime.RuntimeService/PodSandboxStatus", in, out, c.cc, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *runtimeServiceClient) ListPodSandbox(ctx context.Context, in *ListPodSandboxRequest, opts ...grpc.CallOption) (*ListPodSandboxResponse, error) {
+ out := new(ListPodSandboxResponse)
+ err := grpc.Invoke(ctx, "/runtime.RuntimeService/ListPodSandbox", in, out, c.cc, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *runtimeServiceClient) CreateContainer(ctx context.Context, in *CreateContainerRequest, opts ...grpc.CallOption) (*CreateContainerResponse, error) {
+ out := new(CreateContainerResponse)
+ err := grpc.Invoke(ctx, "/runtime.RuntimeService/CreateContainer", in, out, c.cc, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *runtimeServiceClient) StartContainer(ctx context.Context, in *StartContainerRequest, opts ...grpc.CallOption) (*StartContainerResponse, error) {
+ out := new(StartContainerResponse)
+ err := grpc.Invoke(ctx, "/runtime.RuntimeService/StartContainer", in, out, c.cc, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *runtimeServiceClient) StopContainer(ctx context.Context, in *StopContainerRequest, opts ...grpc.CallOption) (*StopContainerResponse, error) {
+ out := new(StopContainerResponse)
+ err := grpc.Invoke(ctx, "/runtime.RuntimeService/StopContainer", in, out, c.cc, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *runtimeServiceClient) RemoveContainer(ctx context.Context, in *RemoveContainerRequest, opts ...grpc.CallOption) (*RemoveContainerResponse, error) {
+ out := new(RemoveContainerResponse)
+ err := grpc.Invoke(ctx, "/runtime.RuntimeService/RemoveContainer", in, out, c.cc, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *runtimeServiceClient) ListContainers(ctx context.Context, in *ListContainersRequest, opts ...grpc.CallOption) (*ListContainersResponse, error) {
+ out := new(ListContainersResponse)
+ err := grpc.Invoke(ctx, "/runtime.RuntimeService/ListContainers", in, out, c.cc, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *runtimeServiceClient) ContainerStatus(ctx context.Context, in *ContainerStatusRequest, opts ...grpc.CallOption) (*ContainerStatusResponse, error) {
+ out := new(ContainerStatusResponse)
+ err := grpc.Invoke(ctx, "/runtime.RuntimeService/ContainerStatus", in, out, c.cc, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *runtimeServiceClient) ExecSync(ctx context.Context, in *ExecSyncRequest, opts ...grpc.CallOption) (*ExecSyncResponse, error) {
+ out := new(ExecSyncResponse)
+ err := grpc.Invoke(ctx, "/runtime.RuntimeService/ExecSync", in, out, c.cc, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *runtimeServiceClient) Exec(ctx context.Context, in *ExecRequest, opts ...grpc.CallOption) (*ExecResponse, error) {
+ out := new(ExecResponse)
+ err := grpc.Invoke(ctx, "/runtime.RuntimeService/Exec", in, out, c.cc, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *runtimeServiceClient) Attach(ctx context.Context, in *AttachRequest, opts ...grpc.CallOption) (*AttachResponse, error) {
+ out := new(AttachResponse)
+ err := grpc.Invoke(ctx, "/runtime.RuntimeService/Attach", in, out, c.cc, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *runtimeServiceClient) PortForward(ctx context.Context, in *PortForwardRequest, opts ...grpc.CallOption) (*PortForwardResponse, error) {
+ out := new(PortForwardResponse)
+ err := grpc.Invoke(ctx, "/runtime.RuntimeService/PortForward", in, out, c.cc, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *runtimeServiceClient) ContainerStats(ctx context.Context, in *ContainerStatsRequest, opts ...grpc.CallOption) (*ContainerStatsResponse, error) {
+ out := new(ContainerStatsResponse)
+ err := grpc.Invoke(ctx, "/runtime.RuntimeService/ContainerStats", in, out, c.cc, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *runtimeServiceClient) ListContainerStats(ctx context.Context, in *ListContainerStatsRequest, opts ...grpc.CallOption) (*ListContainerStatsResponse, error) {
+ out := new(ListContainerStatsResponse)
+ err := grpc.Invoke(ctx, "/runtime.RuntimeService/ListContainerStats", in, out, c.cc, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *runtimeServiceClient) UpdateRuntimeConfig(ctx context.Context, in *UpdateRuntimeConfigRequest, opts ...grpc.CallOption) (*UpdateRuntimeConfigResponse, error) {
+ out := new(UpdateRuntimeConfigResponse)
+ err := grpc.Invoke(ctx, "/runtime.RuntimeService/UpdateRuntimeConfig", in, out, c.cc, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *runtimeServiceClient) Status(ctx context.Context, in *StatusRequest, opts ...grpc.CallOption) (*StatusResponse, error) {
+ out := new(StatusResponse)
+ err := grpc.Invoke(ctx, "/runtime.RuntimeService/Status", in, out, c.cc, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+// Server API for RuntimeService service
+
+type RuntimeServiceServer interface {
+ // Version returns the runtime name, runtime version, and runtime API version.
+ Version(context.Context, *VersionRequest) (*VersionResponse, error)
+ // RunPodSandbox creates and starts a pod-level sandbox. Runtimes must ensure
+ // the sandbox is in the ready state on success.
+ RunPodSandbox(context.Context, *RunPodSandboxRequest) (*RunPodSandboxResponse, error)
+ // StopPodSandbox stops any running process that is part of the sandbox and
+ // reclaims network resources (e.g., IP addresses) allocated to the sandbox.
+ // If there are any running containers in the sandbox, they must be forcibly
+ // terminated.
+ // This call is idempotent, and must not return an error if all relevant
+ // resources have already been reclaimed. kubelet will call StopPodSandbox
+ // at least once before calling RemovePodSandbox. It will also attempt to
+ // reclaim resources eagerly, as soon as a sandbox is not needed. Hence,
+ // multiple StopPodSandbox calls are expected.
+ StopPodSandbox(context.Context, *StopPodSandboxRequest) (*StopPodSandboxResponse, error)
+ // RemovePodSandbox removes the sandbox. If there are any running containers
+ // in the sandbox, they must be forcibly terminated and removed.
+ // This call is idempotent, and must not return an error if the sandbox has
+ // already been removed.
+ RemovePodSandbox(context.Context, *RemovePodSandboxRequest) (*RemovePodSandboxResponse, error)
+ // PodSandboxStatus returns the status of the PodSandbox. If the PodSandbox is not
+ // present, returns an error.
+ PodSandboxStatus(context.Context, *PodSandboxStatusRequest) (*PodSandboxStatusResponse, error)
+ // ListPodSandbox returns a list of PodSandboxes.
+ ListPodSandbox(context.Context, *ListPodSandboxRequest) (*ListPodSandboxResponse, error)
+ // CreateContainer creates a new container in specified PodSandbox
+ CreateContainer(context.Context, *CreateContainerRequest) (*CreateContainerResponse, error)
+ // StartContainer starts the container.
+ StartContainer(context.Context, *StartContainerRequest) (*StartContainerResponse, error)
+ // StopContainer stops a running container with a grace period (i.e., timeout).
+ // This call is idempotent, and must not return an error if the container has
+ // already been stopped.
+ // TODO: what must the runtime do after the grace period is reached?
+ StopContainer(context.Context, *StopContainerRequest) (*StopContainerResponse, error)
+ // RemoveContainer removes the container. If the container is running, the
+ // container must be forcibly removed.
+ // This call is idempotent, and must not return an error if the container has
+ // already been removed.
+ RemoveContainer(context.Context, *RemoveContainerRequest) (*RemoveContainerResponse, error)
+ // ListContainers lists all containers by filters.
+ ListContainers(context.Context, *ListContainersRequest) (*ListContainersResponse, error)
+ // ContainerStatus returns status of the container. If the container is not
+ // present, returns an error.
+ ContainerStatus(context.Context, *ContainerStatusRequest) (*ContainerStatusResponse, error)
+ // ExecSync runs a command in a container synchronously.
+ ExecSync(context.Context, *ExecSyncRequest) (*ExecSyncResponse, error)
+ // Exec prepares a streaming endpoint to execute a command in the container.
+ Exec(context.Context, *ExecRequest) (*ExecResponse, error)
+ // Attach prepares a streaming endpoint to attach to a running container.
+ Attach(context.Context, *AttachRequest) (*AttachResponse, error)
+ // PortForward prepares a streaming endpoint to forward ports from a PodSandbox.
+ PortForward(context.Context, *PortForwardRequest) (*PortForwardResponse, error)
+ // ContainerStats returns stats of the container. If the container does not
+ // exist, the call returns an error.
+ ContainerStats(context.Context, *ContainerStatsRequest) (*ContainerStatsResponse, error)
+ // ListContainerStats returns stats of all running containers.
+ ListContainerStats(context.Context, *ListContainerStatsRequest) (*ListContainerStatsResponse, error)
+ // UpdateRuntimeConfig updates the runtime configuration based on the given request.
+ UpdateRuntimeConfig(context.Context, *UpdateRuntimeConfigRequest) (*UpdateRuntimeConfigResponse, error)
+ // Status returns the status of the runtime.
+ Status(context.Context, *StatusRequest) (*StatusResponse, error)
+}
+
+func RegisterRuntimeServiceServer(s *grpc.Server, srv RuntimeServiceServer) {
+ s.RegisterService(&_RuntimeService_serviceDesc, srv)
+}
+
+func _RuntimeService_Version_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(VersionRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(RuntimeServiceServer).Version(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/runtime.RuntimeService/Version",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(RuntimeServiceServer).Version(ctx, req.(*VersionRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _RuntimeService_RunPodSandbox_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(RunPodSandboxRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(RuntimeServiceServer).RunPodSandbox(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/runtime.RuntimeService/RunPodSandbox",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(RuntimeServiceServer).RunPodSandbox(ctx, req.(*RunPodSandboxRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _RuntimeService_StopPodSandbox_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(StopPodSandboxRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(RuntimeServiceServer).StopPodSandbox(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/runtime.RuntimeService/StopPodSandbox",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(RuntimeServiceServer).StopPodSandbox(ctx, req.(*StopPodSandboxRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _RuntimeService_RemovePodSandbox_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(RemovePodSandboxRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(RuntimeServiceServer).RemovePodSandbox(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/runtime.RuntimeService/RemovePodSandbox",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(RuntimeServiceServer).RemovePodSandbox(ctx, req.(*RemovePodSandboxRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _RuntimeService_PodSandboxStatus_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(PodSandboxStatusRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(RuntimeServiceServer).PodSandboxStatus(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/runtime.RuntimeService/PodSandboxStatus",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(RuntimeServiceServer).PodSandboxStatus(ctx, req.(*PodSandboxStatusRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _RuntimeService_ListPodSandbox_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(ListPodSandboxRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(RuntimeServiceServer).ListPodSandbox(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/runtime.RuntimeService/ListPodSandbox",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(RuntimeServiceServer).ListPodSandbox(ctx, req.(*ListPodSandboxRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _RuntimeService_CreateContainer_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(CreateContainerRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(RuntimeServiceServer).CreateContainer(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/runtime.RuntimeService/CreateContainer",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(RuntimeServiceServer).CreateContainer(ctx, req.(*CreateContainerRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _RuntimeService_StartContainer_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(StartContainerRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(RuntimeServiceServer).StartContainer(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/runtime.RuntimeService/StartContainer",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(RuntimeServiceServer).StartContainer(ctx, req.(*StartContainerRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _RuntimeService_StopContainer_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(StopContainerRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(RuntimeServiceServer).StopContainer(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/runtime.RuntimeService/StopContainer",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(RuntimeServiceServer).StopContainer(ctx, req.(*StopContainerRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _RuntimeService_RemoveContainer_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(RemoveContainerRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(RuntimeServiceServer).RemoveContainer(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/runtime.RuntimeService/RemoveContainer",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(RuntimeServiceServer).RemoveContainer(ctx, req.(*RemoveContainerRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _RuntimeService_ListContainers_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(ListContainersRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(RuntimeServiceServer).ListContainers(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/runtime.RuntimeService/ListContainers",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(RuntimeServiceServer).ListContainers(ctx, req.(*ListContainersRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _RuntimeService_ContainerStatus_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(ContainerStatusRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(RuntimeServiceServer).ContainerStatus(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/runtime.RuntimeService/ContainerStatus",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(RuntimeServiceServer).ContainerStatus(ctx, req.(*ContainerStatusRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _RuntimeService_ExecSync_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(ExecSyncRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(RuntimeServiceServer).ExecSync(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/runtime.RuntimeService/ExecSync",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(RuntimeServiceServer).ExecSync(ctx, req.(*ExecSyncRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _RuntimeService_Exec_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(ExecRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(RuntimeServiceServer).Exec(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/runtime.RuntimeService/Exec",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(RuntimeServiceServer).Exec(ctx, req.(*ExecRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _RuntimeService_Attach_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(AttachRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(RuntimeServiceServer).Attach(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/runtime.RuntimeService/Attach",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(RuntimeServiceServer).Attach(ctx, req.(*AttachRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _RuntimeService_PortForward_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(PortForwardRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(RuntimeServiceServer).PortForward(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/runtime.RuntimeService/PortForward",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(RuntimeServiceServer).PortForward(ctx, req.(*PortForwardRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _RuntimeService_ContainerStats_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(ContainerStatsRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(RuntimeServiceServer).ContainerStats(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/runtime.RuntimeService/ContainerStats",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(RuntimeServiceServer).ContainerStats(ctx, req.(*ContainerStatsRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _RuntimeService_ListContainerStats_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(ListContainerStatsRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(RuntimeServiceServer).ListContainerStats(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/runtime.RuntimeService/ListContainerStats",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(RuntimeServiceServer).ListContainerStats(ctx, req.(*ListContainerStatsRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _RuntimeService_UpdateRuntimeConfig_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(UpdateRuntimeConfigRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(RuntimeServiceServer).UpdateRuntimeConfig(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/runtime.RuntimeService/UpdateRuntimeConfig",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(RuntimeServiceServer).UpdateRuntimeConfig(ctx, req.(*UpdateRuntimeConfigRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _RuntimeService_Status_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(StatusRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(RuntimeServiceServer).Status(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/runtime.RuntimeService/Status",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(RuntimeServiceServer).Status(ctx, req.(*StatusRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+var _RuntimeService_serviceDesc = grpc.ServiceDesc{
+ ServiceName: "runtime.RuntimeService",
+ HandlerType: (*RuntimeServiceServer)(nil),
+ Methods: []grpc.MethodDesc{
+ {
+ MethodName: "Version",
+ Handler: _RuntimeService_Version_Handler,
+ },
+ {
+ MethodName: "RunPodSandbox",
+ Handler: _RuntimeService_RunPodSandbox_Handler,
+ },
+ {
+ MethodName: "StopPodSandbox",
+ Handler: _RuntimeService_StopPodSandbox_Handler,
+ },
+ {
+ MethodName: "RemovePodSandbox",
+ Handler: _RuntimeService_RemovePodSandbox_Handler,
+ },
+ {
+ MethodName: "PodSandboxStatus",
+ Handler: _RuntimeService_PodSandboxStatus_Handler,
+ },
+ {
+ MethodName: "ListPodSandbox",
+ Handler: _RuntimeService_ListPodSandbox_Handler,
+ },
+ {
+ MethodName: "CreateContainer",
+ Handler: _RuntimeService_CreateContainer_Handler,
+ },
+ {
+ MethodName: "StartContainer",
+ Handler: _RuntimeService_StartContainer_Handler,
+ },
+ {
+ MethodName: "StopContainer",
+ Handler: _RuntimeService_StopContainer_Handler,
+ },
+ {
+ MethodName: "RemoveContainer",
+ Handler: _RuntimeService_RemoveContainer_Handler,
+ },
+ {
+ MethodName: "ListContainers",
+ Handler: _RuntimeService_ListContainers_Handler,
+ },
+ {
+ MethodName: "ContainerStatus",
+ Handler: _RuntimeService_ContainerStatus_Handler,
+ },
+ {
+ MethodName: "ExecSync",
+ Handler: _RuntimeService_ExecSync_Handler,
+ },
+ {
+ MethodName: "Exec",
+ Handler: _RuntimeService_Exec_Handler,
+ },
+ {
+ MethodName: "Attach",
+ Handler: _RuntimeService_Attach_Handler,
+ },
+ {
+ MethodName: "PortForward",
+ Handler: _RuntimeService_PortForward_Handler,
+ },
+ {
+ MethodName: "ContainerStats",
+ Handler: _RuntimeService_ContainerStats_Handler,
+ },
+ {
+ MethodName: "ListContainerStats",
+ Handler: _RuntimeService_ListContainerStats_Handler,
+ },
+ {
+ MethodName: "UpdateRuntimeConfig",
+ Handler: _RuntimeService_UpdateRuntimeConfig_Handler,
+ },
+ {
+ MethodName: "Status",
+ Handler: _RuntimeService_Status_Handler,
+ },
+ },
+ Streams: []grpc.StreamDesc{},
+ Metadata: "api.proto",
+}
+
+// Client API for ImageService service
+
+type ImageServiceClient interface {
+ // ListImages lists existing images.
+ ListImages(ctx context.Context, in *ListImagesRequest, opts ...grpc.CallOption) (*ListImagesResponse, error)
+ // ImageStatus returns the status of the image. If the image is not
+ // present, returns a response with ImageStatusResponse.Image set to
+ // nil.
+ ImageStatus(ctx context.Context, in *ImageStatusRequest, opts ...grpc.CallOption) (*ImageStatusResponse, error)
+ // PullImage pulls an image with authentication config.
+ PullImage(ctx context.Context, in *PullImageRequest, opts ...grpc.CallOption) (*PullImageResponse, error)
+ // RemoveImage removes the image.
+ // This call is idempotent, and must not return an error if the image has
+ // already been removed.
+ RemoveImage(ctx context.Context, in *RemoveImageRequest, opts ...grpc.CallOption) (*RemoveImageResponse, error)
+ // ImageFSInfo returns information of the filesystem that is used to store images.
+ ImageFsInfo(ctx context.Context, in *ImageFsInfoRequest, opts ...grpc.CallOption) (*ImageFsInfoResponse, error)
+}
+
+type imageServiceClient struct {
+ cc *grpc.ClientConn
+}
+
+func NewImageServiceClient(cc *grpc.ClientConn) ImageServiceClient {
+ return &imageServiceClient{cc}
+}
+
+func (c *imageServiceClient) ListImages(ctx context.Context, in *ListImagesRequest, opts ...grpc.CallOption) (*ListImagesResponse, error) {
+ out := new(ListImagesResponse)
+ err := grpc.Invoke(ctx, "/runtime.ImageService/ListImages", in, out, c.cc, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *imageServiceClient) ImageStatus(ctx context.Context, in *ImageStatusRequest, opts ...grpc.CallOption) (*ImageStatusResponse, error) {
+ out := new(ImageStatusResponse)
+ err := grpc.Invoke(ctx, "/runtime.ImageService/ImageStatus", in, out, c.cc, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *imageServiceClient) PullImage(ctx context.Context, in *PullImageRequest, opts ...grpc.CallOption) (*PullImageResponse, error) {
+ out := new(PullImageResponse)
+ err := grpc.Invoke(ctx, "/runtime.ImageService/PullImage", in, out, c.cc, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *imageServiceClient) RemoveImage(ctx context.Context, in *RemoveImageRequest, opts ...grpc.CallOption) (*RemoveImageResponse, error) {
+ out := new(RemoveImageResponse)
+ err := grpc.Invoke(ctx, "/runtime.ImageService/RemoveImage", in, out, c.cc, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *imageServiceClient) ImageFsInfo(ctx context.Context, in *ImageFsInfoRequest, opts ...grpc.CallOption) (*ImageFsInfoResponse, error) {
+ out := new(ImageFsInfoResponse)
+ err := grpc.Invoke(ctx, "/runtime.ImageService/ImageFsInfo", in, out, c.cc, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+// Server API for ImageService service
+
+type ImageServiceServer interface {
+ // ListImages lists existing images.
+ ListImages(context.Context, *ListImagesRequest) (*ListImagesResponse, error)
+ // ImageStatus returns the status of the image. If the image is not
+ // present, returns a response with ImageStatusResponse.Image set to
+ // nil.
+ ImageStatus(context.Context, *ImageStatusRequest) (*ImageStatusResponse, error)
+ // PullImage pulls an image with authentication config.
+ PullImage(context.Context, *PullImageRequest) (*PullImageResponse, error)
+ // RemoveImage removes the image.
+ // This call is idempotent, and must not return an error if the image has
+ // already been removed.
+ RemoveImage(context.Context, *RemoveImageRequest) (*RemoveImageResponse, error)
+ // ImageFSInfo returns information of the filesystem that is used to store images.
+ ImageFsInfo(context.Context, *ImageFsInfoRequest) (*ImageFsInfoResponse, error)
+}
+
+func RegisterImageServiceServer(s *grpc.Server, srv ImageServiceServer) {
+ s.RegisterService(&_ImageService_serviceDesc, srv)
+}
+
+func _ImageService_ListImages_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(ListImagesRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(ImageServiceServer).ListImages(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/runtime.ImageService/ListImages",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(ImageServiceServer).ListImages(ctx, req.(*ListImagesRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _ImageService_ImageStatus_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(ImageStatusRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(ImageServiceServer).ImageStatus(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/runtime.ImageService/ImageStatus",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(ImageServiceServer).ImageStatus(ctx, req.(*ImageStatusRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _ImageService_PullImage_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(PullImageRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(ImageServiceServer).PullImage(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/runtime.ImageService/PullImage",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(ImageServiceServer).PullImage(ctx, req.(*PullImageRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _ImageService_RemoveImage_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(RemoveImageRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(ImageServiceServer).RemoveImage(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/runtime.ImageService/RemoveImage",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(ImageServiceServer).RemoveImage(ctx, req.(*RemoveImageRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _ImageService_ImageFsInfo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(ImageFsInfoRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(ImageServiceServer).ImageFsInfo(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/runtime.ImageService/ImageFsInfo",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(ImageServiceServer).ImageFsInfo(ctx, req.(*ImageFsInfoRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+var _ImageService_serviceDesc = grpc.ServiceDesc{
+ ServiceName: "runtime.ImageService",
+ HandlerType: (*ImageServiceServer)(nil),
+ Methods: []grpc.MethodDesc{
+ {
+ MethodName: "ListImages",
+ Handler: _ImageService_ListImages_Handler,
+ },
+ {
+ MethodName: "ImageStatus",
+ Handler: _ImageService_ImageStatus_Handler,
+ },
+ {
+ MethodName: "PullImage",
+ Handler: _ImageService_PullImage_Handler,
+ },
+ {
+ MethodName: "RemoveImage",
+ Handler: _ImageService_RemoveImage_Handler,
+ },
+ {
+ MethodName: "ImageFsInfo",
+ Handler: _ImageService_ImageFsInfo_Handler,
+ },
+ },
+ Streams: []grpc.StreamDesc{},
+ Metadata: "api.proto",
+}
+
+func (m *VersionRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *VersionRequest) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ if len(m.Version) > 0 {
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(len(m.Version)))
+ i += copy(dAtA[i:], m.Version)
+ }
+ return i, nil
+}
+
+func (m *VersionResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *VersionResponse) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ if len(m.Version) > 0 {
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(len(m.Version)))
+ i += copy(dAtA[i:], m.Version)
+ }
+ if len(m.RuntimeName) > 0 {
+ dAtA[i] = 0x12
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(len(m.RuntimeName)))
+ i += copy(dAtA[i:], m.RuntimeName)
+ }
+ if len(m.RuntimeVersion) > 0 {
+ dAtA[i] = 0x1a
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(len(m.RuntimeVersion)))
+ i += copy(dAtA[i:], m.RuntimeVersion)
+ }
+ if len(m.RuntimeApiVersion) > 0 {
+ dAtA[i] = 0x22
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(len(m.RuntimeApiVersion)))
+ i += copy(dAtA[i:], m.RuntimeApiVersion)
+ }
+ return i, nil
+}
+
+func (m *DNSConfig) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *DNSConfig) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ if len(m.Servers) > 0 {
+ for _, s := range m.Servers {
+ dAtA[i] = 0xa
+ i++
+ l = len(s)
+ for l >= 1<<7 {
+ dAtA[i] = uint8(uint64(l)&0x7f | 0x80)
+ l >>= 7
+ i++
+ }
+ dAtA[i] = uint8(l)
+ i++
+ i += copy(dAtA[i:], s)
+ }
+ }
+ if len(m.Searches) > 0 {
+ for _, s := range m.Searches {
+ dAtA[i] = 0x12
+ i++
+ l = len(s)
+ for l >= 1<<7 {
+ dAtA[i] = uint8(uint64(l)&0x7f | 0x80)
+ l >>= 7
+ i++
+ }
+ dAtA[i] = uint8(l)
+ i++
+ i += copy(dAtA[i:], s)
+ }
+ }
+ if len(m.Options) > 0 {
+ for _, s := range m.Options {
+ dAtA[i] = 0x1a
+ i++
+ l = len(s)
+ for l >= 1<<7 {
+ dAtA[i] = uint8(uint64(l)&0x7f | 0x80)
+ l >>= 7
+ i++
+ }
+ dAtA[i] = uint8(l)
+ i++
+ i += copy(dAtA[i:], s)
+ }
+ }
+ return i, nil
+}
+
+func (m *PortMapping) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *PortMapping) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ if m.Protocol != 0 {
+ dAtA[i] = 0x8
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(m.Protocol))
+ }
+ if m.ContainerPort != 0 {
+ dAtA[i] = 0x10
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(m.ContainerPort))
+ }
+ if m.HostPort != 0 {
+ dAtA[i] = 0x18
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(m.HostPort))
+ }
+ if len(m.HostIp) > 0 {
+ dAtA[i] = 0x22
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(len(m.HostIp)))
+ i += copy(dAtA[i:], m.HostIp)
+ }
+ return i, nil
+}
+
+func (m *Mount) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *Mount) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ if len(m.ContainerPath) > 0 {
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(len(m.ContainerPath)))
+ i += copy(dAtA[i:], m.ContainerPath)
+ }
+ if len(m.HostPath) > 0 {
+ dAtA[i] = 0x12
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(len(m.HostPath)))
+ i += copy(dAtA[i:], m.HostPath)
+ }
+ if m.Readonly {
+ dAtA[i] = 0x18
+ i++
+ if m.Readonly {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i++
+ }
+ if m.SelinuxRelabel {
+ dAtA[i] = 0x20
+ i++
+ if m.SelinuxRelabel {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i++
+ }
+ return i, nil
+}
+
+func (m *NamespaceOption) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *NamespaceOption) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ if m.HostNetwork {
+ dAtA[i] = 0x8
+ i++
+ if m.HostNetwork {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i++
+ }
+ if m.HostPid {
+ dAtA[i] = 0x10
+ i++
+ if m.HostPid {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i++
+ }
+ if m.HostIpc {
+ dAtA[i] = 0x18
+ i++
+ if m.HostIpc {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i++
+ }
+ return i, nil
+}
+
+func (m *Int64Value) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *Int64Value) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ if m.Value != 0 {
+ dAtA[i] = 0x8
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(m.Value))
+ }
+ return i, nil
+}
+
+func (m *LinuxSandboxSecurityContext) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *LinuxSandboxSecurityContext) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ if m.NamespaceOptions != nil {
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(m.NamespaceOptions.Size()))
+ n1, err := m.NamespaceOptions.MarshalTo(dAtA[i:])
+ if err != nil {
+ return 0, err
+ }
+ i += n1
+ }
+ if m.SelinuxOptions != nil {
+ dAtA[i] = 0x12
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(m.SelinuxOptions.Size()))
+ n2, err := m.SelinuxOptions.MarshalTo(dAtA[i:])
+ if err != nil {
+ return 0, err
+ }
+ i += n2
+ }
+ if m.RunAsUser != nil {
+ dAtA[i] = 0x1a
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(m.RunAsUser.Size()))
+ n3, err := m.RunAsUser.MarshalTo(dAtA[i:])
+ if err != nil {
+ return 0, err
+ }
+ i += n3
+ }
+ if m.ReadonlyRootfs {
+ dAtA[i] = 0x20
+ i++
+ if m.ReadonlyRootfs {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i++
+ }
+ if len(m.SupplementalGroups) > 0 {
+ dAtA5 := make([]byte, len(m.SupplementalGroups)*10)
+ var j4 int
+ for _, num1 := range m.SupplementalGroups {
+ num := uint64(num1)
+ for num >= 1<<7 {
+ dAtA5[j4] = uint8(uint64(num)&0x7f | 0x80)
+ num >>= 7
+ j4++
+ }
+ dAtA5[j4] = uint8(num)
+ j4++
+ }
+ dAtA[i] = 0x2a
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(j4))
+ i += copy(dAtA[i:], dAtA5[:j4])
+ }
+ if m.Privileged {
+ dAtA[i] = 0x30
+ i++
+ if m.Privileged {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i++
+ }
+ return i, nil
+}
+
+func (m *LinuxPodSandboxConfig) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *LinuxPodSandboxConfig) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ if len(m.CgroupParent) > 0 {
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(len(m.CgroupParent)))
+ i += copy(dAtA[i:], m.CgroupParent)
+ }
+ if m.SecurityContext != nil {
+ dAtA[i] = 0x12
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(m.SecurityContext.Size()))
+ n6, err := m.SecurityContext.MarshalTo(dAtA[i:])
+ if err != nil {
+ return 0, err
+ }
+ i += n6
+ }
+ if len(m.Sysctls) > 0 {
+ for k := range m.Sysctls {
+ dAtA[i] = 0x1a
+ i++
+ v := m.Sysctls[k]
+ mapSize := 1 + len(k) + sovApi(uint64(len(k))) + 1 + len(v) + sovApi(uint64(len(v)))
+ i = encodeVarintApi(dAtA, i, uint64(mapSize))
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(len(k)))
+ i += copy(dAtA[i:], k)
+ dAtA[i] = 0x12
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(len(v)))
+ i += copy(dAtA[i:], v)
+ }
+ }
+ return i, nil
+}
+
+func (m *PodSandboxMetadata) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *PodSandboxMetadata) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ if len(m.Name) > 0 {
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(len(m.Name)))
+ i += copy(dAtA[i:], m.Name)
+ }
+ if len(m.Uid) > 0 {
+ dAtA[i] = 0x12
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(len(m.Uid)))
+ i += copy(dAtA[i:], m.Uid)
+ }
+ if len(m.Namespace) > 0 {
+ dAtA[i] = 0x1a
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(len(m.Namespace)))
+ i += copy(dAtA[i:], m.Namespace)
+ }
+ if m.Attempt != 0 {
+ dAtA[i] = 0x20
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(m.Attempt))
+ }
+ return i, nil
+}
+
+func (m *PodSandboxConfig) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *PodSandboxConfig) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ if m.Metadata != nil {
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(m.Metadata.Size()))
+ n7, err := m.Metadata.MarshalTo(dAtA[i:])
+ if err != nil {
+ return 0, err
+ }
+ i += n7
+ }
+ if len(m.Hostname) > 0 {
+ dAtA[i] = 0x12
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(len(m.Hostname)))
+ i += copy(dAtA[i:], m.Hostname)
+ }
+ if len(m.LogDirectory) > 0 {
+ dAtA[i] = 0x1a
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(len(m.LogDirectory)))
+ i += copy(dAtA[i:], m.LogDirectory)
+ }
+ if m.DnsConfig != nil {
+ dAtA[i] = 0x22
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(m.DnsConfig.Size()))
+ n8, err := m.DnsConfig.MarshalTo(dAtA[i:])
+ if err != nil {
+ return 0, err
+ }
+ i += n8
+ }
+ if len(m.PortMappings) > 0 {
+ for _, msg := range m.PortMappings {
+ dAtA[i] = 0x2a
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(msg.Size()))
+ n, err := msg.MarshalTo(dAtA[i:])
+ if err != nil {
+ return 0, err
+ }
+ i += n
+ }
+ }
+ if len(m.Labels) > 0 {
+ for k := range m.Labels {
+ dAtA[i] = 0x32
+ i++
+ v := m.Labels[k]
+ mapSize := 1 + len(k) + sovApi(uint64(len(k))) + 1 + len(v) + sovApi(uint64(len(v)))
+ i = encodeVarintApi(dAtA, i, uint64(mapSize))
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(len(k)))
+ i += copy(dAtA[i:], k)
+ dAtA[i] = 0x12
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(len(v)))
+ i += copy(dAtA[i:], v)
+ }
+ }
+ if len(m.Annotations) > 0 {
+ for k := range m.Annotations {
+ dAtA[i] = 0x3a
+ i++
+ v := m.Annotations[k]
+ mapSize := 1 + len(k) + sovApi(uint64(len(k))) + 1 + len(v) + sovApi(uint64(len(v)))
+ i = encodeVarintApi(dAtA, i, uint64(mapSize))
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(len(k)))
+ i += copy(dAtA[i:], k)
+ dAtA[i] = 0x12
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(len(v)))
+ i += copy(dAtA[i:], v)
+ }
+ }
+ if m.Linux != nil {
+ dAtA[i] = 0x42
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(m.Linux.Size()))
+ n9, err := m.Linux.MarshalTo(dAtA[i:])
+ if err != nil {
+ return 0, err
+ }
+ i += n9
+ }
+ return i, nil
+}
+
+func (m *RunPodSandboxRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *RunPodSandboxRequest) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ if m.Config != nil {
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(m.Config.Size()))
+ n10, err := m.Config.MarshalTo(dAtA[i:])
+ if err != nil {
+ return 0, err
+ }
+ i += n10
+ }
+ return i, nil
+}
+
+func (m *RunPodSandboxResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *RunPodSandboxResponse) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ if len(m.PodSandboxId) > 0 {
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(len(m.PodSandboxId)))
+ i += copy(dAtA[i:], m.PodSandboxId)
+ }
+ return i, nil
+}
+
+func (m *StopPodSandboxRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *StopPodSandboxRequest) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ if len(m.PodSandboxId) > 0 {
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(len(m.PodSandboxId)))
+ i += copy(dAtA[i:], m.PodSandboxId)
+ }
+ return i, nil
+}
+
+func (m *StopPodSandboxResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *StopPodSandboxResponse) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ return i, nil
+}
+
+func (m *RemovePodSandboxRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *RemovePodSandboxRequest) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ if len(m.PodSandboxId) > 0 {
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(len(m.PodSandboxId)))
+ i += copy(dAtA[i:], m.PodSandboxId)
+ }
+ return i, nil
+}
+
+func (m *RemovePodSandboxResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *RemovePodSandboxResponse) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ return i, nil
+}
+
+func (m *PodSandboxStatusRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *PodSandboxStatusRequest) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ if len(m.PodSandboxId) > 0 {
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(len(m.PodSandboxId)))
+ i += copy(dAtA[i:], m.PodSandboxId)
+ }
+ return i, nil
+}
+
+func (m *PodSandboxNetworkStatus) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *PodSandboxNetworkStatus) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ if len(m.Ip) > 0 {
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(len(m.Ip)))
+ i += copy(dAtA[i:], m.Ip)
+ }
+ return i, nil
+}
+
+func (m *Namespace) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *Namespace) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ if m.Options != nil {
+ dAtA[i] = 0x12
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(m.Options.Size()))
+ n11, err := m.Options.MarshalTo(dAtA[i:])
+ if err != nil {
+ return 0, err
+ }
+ i += n11
+ }
+ return i, nil
+}
+
+func (m *LinuxPodSandboxStatus) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *LinuxPodSandboxStatus) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ if m.Namespaces != nil {
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(m.Namespaces.Size()))
+ n12, err := m.Namespaces.MarshalTo(dAtA[i:])
+ if err != nil {
+ return 0, err
+ }
+ i += n12
+ }
+ return i, nil
+}
+
+func (m *PodSandboxStatus) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *PodSandboxStatus) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ if len(m.Id) > 0 {
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(len(m.Id)))
+ i += copy(dAtA[i:], m.Id)
+ }
+ if m.Metadata != nil {
+ dAtA[i] = 0x12
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(m.Metadata.Size()))
+ n13, err := m.Metadata.MarshalTo(dAtA[i:])
+ if err != nil {
+ return 0, err
+ }
+ i += n13
+ }
+ if m.State != 0 {
+ dAtA[i] = 0x18
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(m.State))
+ }
+ if m.CreatedAt != 0 {
+ dAtA[i] = 0x20
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(m.CreatedAt))
+ }
+ if m.Network != nil {
+ dAtA[i] = 0x2a
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(m.Network.Size()))
+ n14, err := m.Network.MarshalTo(dAtA[i:])
+ if err != nil {
+ return 0, err
+ }
+ i += n14
+ }
+ if m.Linux != nil {
+ dAtA[i] = 0x32
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(m.Linux.Size()))
+ n15, err := m.Linux.MarshalTo(dAtA[i:])
+ if err != nil {
+ return 0, err
+ }
+ i += n15
+ }
+ if len(m.Labels) > 0 {
+ for k := range m.Labels {
+ dAtA[i] = 0x3a
+ i++
+ v := m.Labels[k]
+ mapSize := 1 + len(k) + sovApi(uint64(len(k))) + 1 + len(v) + sovApi(uint64(len(v)))
+ i = encodeVarintApi(dAtA, i, uint64(mapSize))
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(len(k)))
+ i += copy(dAtA[i:], k)
+ dAtA[i] = 0x12
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(len(v)))
+ i += copy(dAtA[i:], v)
+ }
+ }
+ if len(m.Annotations) > 0 {
+ for k := range m.Annotations {
+ dAtA[i] = 0x42
+ i++
+ v := m.Annotations[k]
+ mapSize := 1 + len(k) + sovApi(uint64(len(k))) + 1 + len(v) + sovApi(uint64(len(v)))
+ i = encodeVarintApi(dAtA, i, uint64(mapSize))
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(len(k)))
+ i += copy(dAtA[i:], k)
+ dAtA[i] = 0x12
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(len(v)))
+ i += copy(dAtA[i:], v)
+ }
+ }
+ return i, nil
+}
+
+func (m *PodSandboxStatusResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *PodSandboxStatusResponse) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ if m.Status != nil {
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(m.Status.Size()))
+ n16, err := m.Status.MarshalTo(dAtA[i:])
+ if err != nil {
+ return 0, err
+ }
+ i += n16
+ }
+ return i, nil
+}
+
+func (m *PodSandboxStateValue) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *PodSandboxStateValue) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ if m.State != 0 {
+ dAtA[i] = 0x8
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(m.State))
+ }
+ return i, nil
+}
+
+func (m *PodSandboxFilter) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *PodSandboxFilter) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ if len(m.Id) > 0 {
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(len(m.Id)))
+ i += copy(dAtA[i:], m.Id)
+ }
+ if m.State != nil {
+ dAtA[i] = 0x12
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(m.State.Size()))
+ n17, err := m.State.MarshalTo(dAtA[i:])
+ if err != nil {
+ return 0, err
+ }
+ i += n17
+ }
+ if len(m.LabelSelector) > 0 {
+ for k := range m.LabelSelector {
+ dAtA[i] = 0x1a
+ i++
+ v := m.LabelSelector[k]
+ mapSize := 1 + len(k) + sovApi(uint64(len(k))) + 1 + len(v) + sovApi(uint64(len(v)))
+ i = encodeVarintApi(dAtA, i, uint64(mapSize))
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(len(k)))
+ i += copy(dAtA[i:], k)
+ dAtA[i] = 0x12
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(len(v)))
+ i += copy(dAtA[i:], v)
+ }
+ }
+ return i, nil
+}
+
+func (m *ListPodSandboxRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ListPodSandboxRequest) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ if m.Filter != nil {
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(m.Filter.Size()))
+ n18, err := m.Filter.MarshalTo(dAtA[i:])
+ if err != nil {
+ return 0, err
+ }
+ i += n18
+ }
+ return i, nil
+}
+
+func (m *PodSandbox) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *PodSandbox) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ if len(m.Id) > 0 {
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(len(m.Id)))
+ i += copy(dAtA[i:], m.Id)
+ }
+ if m.Metadata != nil {
+ dAtA[i] = 0x12
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(m.Metadata.Size()))
+ n19, err := m.Metadata.MarshalTo(dAtA[i:])
+ if err != nil {
+ return 0, err
+ }
+ i += n19
+ }
+ if m.State != 0 {
+ dAtA[i] = 0x18
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(m.State))
+ }
+ if m.CreatedAt != 0 {
+ dAtA[i] = 0x20
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(m.CreatedAt))
+ }
+ if len(m.Labels) > 0 {
+ for k := range m.Labels {
+ dAtA[i] = 0x2a
+ i++
+ v := m.Labels[k]
+ mapSize := 1 + len(k) + sovApi(uint64(len(k))) + 1 + len(v) + sovApi(uint64(len(v)))
+ i = encodeVarintApi(dAtA, i, uint64(mapSize))
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(len(k)))
+ i += copy(dAtA[i:], k)
+ dAtA[i] = 0x12
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(len(v)))
+ i += copy(dAtA[i:], v)
+ }
+ }
+ if len(m.Annotations) > 0 {
+ for k := range m.Annotations {
+ dAtA[i] = 0x32
+ i++
+ v := m.Annotations[k]
+ mapSize := 1 + len(k) + sovApi(uint64(len(k))) + 1 + len(v) + sovApi(uint64(len(v)))
+ i = encodeVarintApi(dAtA, i, uint64(mapSize))
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(len(k)))
+ i += copy(dAtA[i:], k)
+ dAtA[i] = 0x12
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(len(v)))
+ i += copy(dAtA[i:], v)
+ }
+ }
+ return i, nil
+}
+
+func (m *ListPodSandboxResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ListPodSandboxResponse) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ if len(m.Items) > 0 {
+ for _, msg := range m.Items {
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(msg.Size()))
+ n, err := msg.MarshalTo(dAtA[i:])
+ if err != nil {
+ return 0, err
+ }
+ i += n
+ }
+ }
+ return i, nil
+}
+
+func (m *ImageSpec) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ImageSpec) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ if len(m.Image) > 0 {
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(len(m.Image)))
+ i += copy(dAtA[i:], m.Image)
+ }
+ return i, nil
+}
+
+func (m *KeyValue) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *KeyValue) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ if len(m.Key) > 0 {
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(len(m.Key)))
+ i += copy(dAtA[i:], m.Key)
+ }
+ if len(m.Value) > 0 {
+ dAtA[i] = 0x12
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(len(m.Value)))
+ i += copy(dAtA[i:], m.Value)
+ }
+ return i, nil
+}
+
+func (m *LinuxContainerResources) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *LinuxContainerResources) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ if m.CpuPeriod != 0 {
+ dAtA[i] = 0x8
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(m.CpuPeriod))
+ }
+ if m.CpuQuota != 0 {
+ dAtA[i] = 0x10
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(m.CpuQuota))
+ }
+ if m.CpuShares != 0 {
+ dAtA[i] = 0x18
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(m.CpuShares))
+ }
+ if m.MemoryLimitInBytes != 0 {
+ dAtA[i] = 0x20
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(m.MemoryLimitInBytes))
+ }
+ if m.OomScoreAdj != 0 {
+ dAtA[i] = 0x28
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(m.OomScoreAdj))
+ }
+ return i, nil
+}
+
+func (m *SELinuxOption) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *SELinuxOption) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ if len(m.User) > 0 {
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(len(m.User)))
+ i += copy(dAtA[i:], m.User)
+ }
+ if len(m.Role) > 0 {
+ dAtA[i] = 0x12
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(len(m.Role)))
+ i += copy(dAtA[i:], m.Role)
+ }
+ if len(m.Type) > 0 {
+ dAtA[i] = 0x1a
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(len(m.Type)))
+ i += copy(dAtA[i:], m.Type)
+ }
+ if len(m.Level) > 0 {
+ dAtA[i] = 0x22
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(len(m.Level)))
+ i += copy(dAtA[i:], m.Level)
+ }
+ return i, nil
+}
+
+func (m *Capability) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *Capability) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ if len(m.AddCapabilities) > 0 {
+ for _, s := range m.AddCapabilities {
+ dAtA[i] = 0xa
+ i++
+ l = len(s)
+ for l >= 1<<7 {
+ dAtA[i] = uint8(uint64(l)&0x7f | 0x80)
+ l >>= 7
+ i++
+ }
+ dAtA[i] = uint8(l)
+ i++
+ i += copy(dAtA[i:], s)
+ }
+ }
+ if len(m.DropCapabilities) > 0 {
+ for _, s := range m.DropCapabilities {
+ dAtA[i] = 0x12
+ i++
+ l = len(s)
+ for l >= 1<<7 {
+ dAtA[i] = uint8(uint64(l)&0x7f | 0x80)
+ l >>= 7
+ i++
+ }
+ dAtA[i] = uint8(l)
+ i++
+ i += copy(dAtA[i:], s)
+ }
+ }
+ return i, nil
+}
+
+func (m *LinuxContainerSecurityContext) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *LinuxContainerSecurityContext) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ if m.Capabilities != nil {
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(m.Capabilities.Size()))
+ n20, err := m.Capabilities.MarshalTo(dAtA[i:])
+ if err != nil {
+ return 0, err
+ }
+ i += n20
+ }
+ if m.Privileged {
+ dAtA[i] = 0x10
+ i++
+ if m.Privileged {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i++
+ }
+ if m.NamespaceOptions != nil {
+ dAtA[i] = 0x1a
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(m.NamespaceOptions.Size()))
+ n21, err := m.NamespaceOptions.MarshalTo(dAtA[i:])
+ if err != nil {
+ return 0, err
+ }
+ i += n21
+ }
+ if m.SelinuxOptions != nil {
+ dAtA[i] = 0x22
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(m.SelinuxOptions.Size()))
+ n22, err := m.SelinuxOptions.MarshalTo(dAtA[i:])
+ if err != nil {
+ return 0, err
+ }
+ i += n22
+ }
+ if m.RunAsUser != nil {
+ dAtA[i] = 0x2a
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(m.RunAsUser.Size()))
+ n23, err := m.RunAsUser.MarshalTo(dAtA[i:])
+ if err != nil {
+ return 0, err
+ }
+ i += n23
+ }
+ if len(m.RunAsUsername) > 0 {
+ dAtA[i] = 0x32
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(len(m.RunAsUsername)))
+ i += copy(dAtA[i:], m.RunAsUsername)
+ }
+ if m.ReadonlyRootfs {
+ dAtA[i] = 0x38
+ i++
+ if m.ReadonlyRootfs {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i++
+ }
+ if len(m.SupplementalGroups) > 0 {
+ dAtA25 := make([]byte, len(m.SupplementalGroups)*10)
+ var j24 int
+ for _, num1 := range m.SupplementalGroups {
+ num := uint64(num1)
+ for num >= 1<<7 {
+ dAtA25[j24] = uint8(uint64(num)&0x7f | 0x80)
+ num >>= 7
+ j24++
+ }
+ dAtA25[j24] = uint8(num)
+ j24++
+ }
+ dAtA[i] = 0x42
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(j24))
+ i += copy(dAtA[i:], dAtA25[:j24])
+ }
+ if len(m.ApparmorProfile) > 0 {
+ dAtA[i] = 0x4a
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(len(m.ApparmorProfile)))
+ i += copy(dAtA[i:], m.ApparmorProfile)
+ }
+ return i, nil
+}
+
+func (m *LinuxContainerConfig) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *LinuxContainerConfig) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ if m.Resources != nil {
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(m.Resources.Size()))
+ n26, err := m.Resources.MarshalTo(dAtA[i:])
+ if err != nil {
+ return 0, err
+ }
+ i += n26
+ }
+ if m.SecurityContext != nil {
+ dAtA[i] = 0x12
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(m.SecurityContext.Size()))
+ n27, err := m.SecurityContext.MarshalTo(dAtA[i:])
+ if err != nil {
+ return 0, err
+ }
+ i += n27
+ }
+ return i, nil
+}
+
+func (m *ContainerMetadata) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ContainerMetadata) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ if len(m.Name) > 0 {
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(len(m.Name)))
+ i += copy(dAtA[i:], m.Name)
+ }
+ if m.Attempt != 0 {
+ dAtA[i] = 0x10
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(m.Attempt))
+ }
+ return i, nil
+}
+
+func (m *Device) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *Device) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ if len(m.ContainerPath) > 0 {
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(len(m.ContainerPath)))
+ i += copy(dAtA[i:], m.ContainerPath)
+ }
+ if len(m.HostPath) > 0 {
+ dAtA[i] = 0x12
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(len(m.HostPath)))
+ i += copy(dAtA[i:], m.HostPath)
+ }
+ if len(m.Permissions) > 0 {
+ dAtA[i] = 0x1a
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(len(m.Permissions)))
+ i += copy(dAtA[i:], m.Permissions)
+ }
+ return i, nil
+}
+
+func (m *ContainerConfig) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ContainerConfig) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ if m.Metadata != nil {
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(m.Metadata.Size()))
+ n28, err := m.Metadata.MarshalTo(dAtA[i:])
+ if err != nil {
+ return 0, err
+ }
+ i += n28
+ }
+ if m.Image != nil {
+ dAtA[i] = 0x12
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(m.Image.Size()))
+ n29, err := m.Image.MarshalTo(dAtA[i:])
+ if err != nil {
+ return 0, err
+ }
+ i += n29
+ }
+ if len(m.Command) > 0 {
+ for _, s := range m.Command {
+ dAtA[i] = 0x1a
+ i++
+ l = len(s)
+ for l >= 1<<7 {
+ dAtA[i] = uint8(uint64(l)&0x7f | 0x80)
+ l >>= 7
+ i++
+ }
+ dAtA[i] = uint8(l)
+ i++
+ i += copy(dAtA[i:], s)
+ }
+ }
+ if len(m.Args) > 0 {
+ for _, s := range m.Args {
+ dAtA[i] = 0x22
+ i++
+ l = len(s)
+ for l >= 1<<7 {
+ dAtA[i] = uint8(uint64(l)&0x7f | 0x80)
+ l >>= 7
+ i++
+ }
+ dAtA[i] = uint8(l)
+ i++
+ i += copy(dAtA[i:], s)
+ }
+ }
+ if len(m.WorkingDir) > 0 {
+ dAtA[i] = 0x2a
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(len(m.WorkingDir)))
+ i += copy(dAtA[i:], m.WorkingDir)
+ }
+ if len(m.Envs) > 0 {
+ for _, msg := range m.Envs {
+ dAtA[i] = 0x32
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(msg.Size()))
+ n, err := msg.MarshalTo(dAtA[i:])
+ if err != nil {
+ return 0, err
+ }
+ i += n
+ }
+ }
+ if len(m.Mounts) > 0 {
+ for _, msg := range m.Mounts {
+ dAtA[i] = 0x3a
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(msg.Size()))
+ n, err := msg.MarshalTo(dAtA[i:])
+ if err != nil {
+ return 0, err
+ }
+ i += n
+ }
+ }
+ if len(m.Devices) > 0 {
+ for _, msg := range m.Devices {
+ dAtA[i] = 0x42
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(msg.Size()))
+ n, err := msg.MarshalTo(dAtA[i:])
+ if err != nil {
+ return 0, err
+ }
+ i += n
+ }
+ }
+ if len(m.Labels) > 0 {
+ for k := range m.Labels {
+ dAtA[i] = 0x4a
+ i++
+ v := m.Labels[k]
+ mapSize := 1 + len(k) + sovApi(uint64(len(k))) + 1 + len(v) + sovApi(uint64(len(v)))
+ i = encodeVarintApi(dAtA, i, uint64(mapSize))
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(len(k)))
+ i += copy(dAtA[i:], k)
+ dAtA[i] = 0x12
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(len(v)))
+ i += copy(dAtA[i:], v)
+ }
+ }
+ if len(m.Annotations) > 0 {
+ for k := range m.Annotations {
+ dAtA[i] = 0x52
+ i++
+ v := m.Annotations[k]
+ mapSize := 1 + len(k) + sovApi(uint64(len(k))) + 1 + len(v) + sovApi(uint64(len(v)))
+ i = encodeVarintApi(dAtA, i, uint64(mapSize))
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(len(k)))
+ i += copy(dAtA[i:], k)
+ dAtA[i] = 0x12
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(len(v)))
+ i += copy(dAtA[i:], v)
+ }
+ }
+ if len(m.LogPath) > 0 {
+ dAtA[i] = 0x5a
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(len(m.LogPath)))
+ i += copy(dAtA[i:], m.LogPath)
+ }
+ if m.Stdin {
+ dAtA[i] = 0x60
+ i++
+ if m.Stdin {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i++
+ }
+ if m.StdinOnce {
+ dAtA[i] = 0x68
+ i++
+ if m.StdinOnce {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i++
+ }
+ if m.Tty {
+ dAtA[i] = 0x70
+ i++
+ if m.Tty {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i++
+ }
+ if m.Linux != nil {
+ dAtA[i] = 0x7a
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(m.Linux.Size()))
+ n30, err := m.Linux.MarshalTo(dAtA[i:])
+ if err != nil {
+ return 0, err
+ }
+ i += n30
+ }
+ return i, nil
+}
+
+func (m *CreateContainerRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *CreateContainerRequest) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ if len(m.PodSandboxId) > 0 {
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(len(m.PodSandboxId)))
+ i += copy(dAtA[i:], m.PodSandboxId)
+ }
+ if m.Config != nil {
+ dAtA[i] = 0x12
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(m.Config.Size()))
+ n31, err := m.Config.MarshalTo(dAtA[i:])
+ if err != nil {
+ return 0, err
+ }
+ i += n31
+ }
+ if m.SandboxConfig != nil {
+ dAtA[i] = 0x1a
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(m.SandboxConfig.Size()))
+ n32, err := m.SandboxConfig.MarshalTo(dAtA[i:])
+ if err != nil {
+ return 0, err
+ }
+ i += n32
+ }
+ return i, nil
+}
+
+func (m *CreateContainerResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *CreateContainerResponse) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ if len(m.ContainerId) > 0 {
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(len(m.ContainerId)))
+ i += copy(dAtA[i:], m.ContainerId)
+ }
+ return i, nil
+}
+
+func (m *StartContainerRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *StartContainerRequest) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ if len(m.ContainerId) > 0 {
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(len(m.ContainerId)))
+ i += copy(dAtA[i:], m.ContainerId)
+ }
+ return i, nil
+}
+
+func (m *StartContainerResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *StartContainerResponse) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ return i, nil
+}
+
+func (m *StopContainerRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *StopContainerRequest) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ if len(m.ContainerId) > 0 {
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(len(m.ContainerId)))
+ i += copy(dAtA[i:], m.ContainerId)
+ }
+ if m.Timeout != 0 {
+ dAtA[i] = 0x10
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(m.Timeout))
+ }
+ return i, nil
+}
+
+func (m *StopContainerResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *StopContainerResponse) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ return i, nil
+}
+
+func (m *RemoveContainerRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *RemoveContainerRequest) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ if len(m.ContainerId) > 0 {
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(len(m.ContainerId)))
+ i += copy(dAtA[i:], m.ContainerId)
+ }
+ return i, nil
+}
+
+func (m *RemoveContainerResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *RemoveContainerResponse) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ return i, nil
+}
+
+func (m *ContainerStateValue) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ContainerStateValue) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ if m.State != 0 {
+ dAtA[i] = 0x8
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(m.State))
+ }
+ return i, nil
+}
+
+func (m *ContainerFilter) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ContainerFilter) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ if len(m.Id) > 0 {
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(len(m.Id)))
+ i += copy(dAtA[i:], m.Id)
+ }
+ if m.State != nil {
+ dAtA[i] = 0x12
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(m.State.Size()))
+ n33, err := m.State.MarshalTo(dAtA[i:])
+ if err != nil {
+ return 0, err
+ }
+ i += n33
+ }
+ if len(m.PodSandboxId) > 0 {
+ dAtA[i] = 0x1a
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(len(m.PodSandboxId)))
+ i += copy(dAtA[i:], m.PodSandboxId)
+ }
+ if len(m.LabelSelector) > 0 {
+ for k := range m.LabelSelector {
+ dAtA[i] = 0x22
+ i++
+ v := m.LabelSelector[k]
+ mapSize := 1 + len(k) + sovApi(uint64(len(k))) + 1 + len(v) + sovApi(uint64(len(v)))
+ i = encodeVarintApi(dAtA, i, uint64(mapSize))
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(len(k)))
+ i += copy(dAtA[i:], k)
+ dAtA[i] = 0x12
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(len(v)))
+ i += copy(dAtA[i:], v)
+ }
+ }
+ return i, nil
+}
+
+func (m *ListContainersRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ListContainersRequest) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ if m.Filter != nil {
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(m.Filter.Size()))
+ n34, err := m.Filter.MarshalTo(dAtA[i:])
+ if err != nil {
+ return 0, err
+ }
+ i += n34
+ }
+ return i, nil
+}
+
+func (m *Container) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *Container) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ if len(m.Id) > 0 {
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(len(m.Id)))
+ i += copy(dAtA[i:], m.Id)
+ }
+ if len(m.PodSandboxId) > 0 {
+ dAtA[i] = 0x12
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(len(m.PodSandboxId)))
+ i += copy(dAtA[i:], m.PodSandboxId)
+ }
+ if m.Metadata != nil {
+ dAtA[i] = 0x1a
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(m.Metadata.Size()))
+ n35, err := m.Metadata.MarshalTo(dAtA[i:])
+ if err != nil {
+ return 0, err
+ }
+ i += n35
+ }
+ if m.Image != nil {
+ dAtA[i] = 0x22
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(m.Image.Size()))
+ n36, err := m.Image.MarshalTo(dAtA[i:])
+ if err != nil {
+ return 0, err
+ }
+ i += n36
+ }
+ if len(m.ImageRef) > 0 {
+ dAtA[i] = 0x2a
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(len(m.ImageRef)))
+ i += copy(dAtA[i:], m.ImageRef)
+ }
+ if m.State != 0 {
+ dAtA[i] = 0x30
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(m.State))
+ }
+ if m.CreatedAt != 0 {
+ dAtA[i] = 0x38
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(m.CreatedAt))
+ }
+ if len(m.Labels) > 0 {
+ for k := range m.Labels {
+ dAtA[i] = 0x42
+ i++
+ v := m.Labels[k]
+ mapSize := 1 + len(k) + sovApi(uint64(len(k))) + 1 + len(v) + sovApi(uint64(len(v)))
+ i = encodeVarintApi(dAtA, i, uint64(mapSize))
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(len(k)))
+ i += copy(dAtA[i:], k)
+ dAtA[i] = 0x12
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(len(v)))
+ i += copy(dAtA[i:], v)
+ }
+ }
+ if len(m.Annotations) > 0 {
+ for k := range m.Annotations {
+ dAtA[i] = 0x4a
+ i++
+ v := m.Annotations[k]
+ mapSize := 1 + len(k) + sovApi(uint64(len(k))) + 1 + len(v) + sovApi(uint64(len(v)))
+ i = encodeVarintApi(dAtA, i, uint64(mapSize))
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(len(k)))
+ i += copy(dAtA[i:], k)
+ dAtA[i] = 0x12
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(len(v)))
+ i += copy(dAtA[i:], v)
+ }
+ }
+ return i, nil
+}
+
+func (m *ListContainersResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ListContainersResponse) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ if len(m.Containers) > 0 {
+ for _, msg := range m.Containers {
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(msg.Size()))
+ n, err := msg.MarshalTo(dAtA[i:])
+ if err != nil {
+ return 0, err
+ }
+ i += n
+ }
+ }
+ return i, nil
+}
+
+func (m *ContainerStatusRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ContainerStatusRequest) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ if len(m.ContainerId) > 0 {
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(len(m.ContainerId)))
+ i += copy(dAtA[i:], m.ContainerId)
+ }
+ return i, nil
+}
+
+func (m *ContainerStatus) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ContainerStatus) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ if len(m.Id) > 0 {
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(len(m.Id)))
+ i += copy(dAtA[i:], m.Id)
+ }
+ if m.Metadata != nil {
+ dAtA[i] = 0x12
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(m.Metadata.Size()))
+ n37, err := m.Metadata.MarshalTo(dAtA[i:])
+ if err != nil {
+ return 0, err
+ }
+ i += n37
+ }
+ if m.State != 0 {
+ dAtA[i] = 0x18
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(m.State))
+ }
+ if m.CreatedAt != 0 {
+ dAtA[i] = 0x20
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(m.CreatedAt))
+ }
+ if m.StartedAt != 0 {
+ dAtA[i] = 0x28
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(m.StartedAt))
+ }
+ if m.FinishedAt != 0 {
+ dAtA[i] = 0x30
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(m.FinishedAt))
+ }
+ if m.ExitCode != 0 {
+ dAtA[i] = 0x38
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(m.ExitCode))
+ }
+ if m.Image != nil {
+ dAtA[i] = 0x42
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(m.Image.Size()))
+ n38, err := m.Image.MarshalTo(dAtA[i:])
+ if err != nil {
+ return 0, err
+ }
+ i += n38
+ }
+ if len(m.ImageRef) > 0 {
+ dAtA[i] = 0x4a
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(len(m.ImageRef)))
+ i += copy(dAtA[i:], m.ImageRef)
+ }
+ if len(m.Reason) > 0 {
+ dAtA[i] = 0x52
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(len(m.Reason)))
+ i += copy(dAtA[i:], m.Reason)
+ }
+ if len(m.Message) > 0 {
+ dAtA[i] = 0x5a
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(len(m.Message)))
+ i += copy(dAtA[i:], m.Message)
+ }
+ if len(m.Labels) > 0 {
+ for k := range m.Labels {
+ dAtA[i] = 0x62
+ i++
+ v := m.Labels[k]
+ mapSize := 1 + len(k) + sovApi(uint64(len(k))) + 1 + len(v) + sovApi(uint64(len(v)))
+ i = encodeVarintApi(dAtA, i, uint64(mapSize))
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(len(k)))
+ i += copy(dAtA[i:], k)
+ dAtA[i] = 0x12
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(len(v)))
+ i += copy(dAtA[i:], v)
+ }
+ }
+ if len(m.Annotations) > 0 {
+ for k := range m.Annotations {
+ dAtA[i] = 0x6a
+ i++
+ v := m.Annotations[k]
+ mapSize := 1 + len(k) + sovApi(uint64(len(k))) + 1 + len(v) + sovApi(uint64(len(v)))
+ i = encodeVarintApi(dAtA, i, uint64(mapSize))
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(len(k)))
+ i += copy(dAtA[i:], k)
+ dAtA[i] = 0x12
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(len(v)))
+ i += copy(dAtA[i:], v)
+ }
+ }
+ if len(m.Mounts) > 0 {
+ for _, msg := range m.Mounts {
+ dAtA[i] = 0x72
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(msg.Size()))
+ n, err := msg.MarshalTo(dAtA[i:])
+ if err != nil {
+ return 0, err
+ }
+ i += n
+ }
+ }
+ if len(m.LogPath) > 0 {
+ dAtA[i] = 0x7a
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(len(m.LogPath)))
+ i += copy(dAtA[i:], m.LogPath)
+ }
+ return i, nil
+}
+
+func (m *ContainerStatusResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ContainerStatusResponse) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ if m.Status != nil {
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(m.Status.Size()))
+ n39, err := m.Status.MarshalTo(dAtA[i:])
+ if err != nil {
+ return 0, err
+ }
+ i += n39
+ }
+ return i, nil
+}
+
+func (m *ExecSyncRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ExecSyncRequest) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ if len(m.ContainerId) > 0 {
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(len(m.ContainerId)))
+ i += copy(dAtA[i:], m.ContainerId)
+ }
+ if len(m.Cmd) > 0 {
+ for _, s := range m.Cmd {
+ dAtA[i] = 0x12
+ i++
+ l = len(s)
+ for l >= 1<<7 {
+ dAtA[i] = uint8(uint64(l)&0x7f | 0x80)
+ l >>= 7
+ i++
+ }
+ dAtA[i] = uint8(l)
+ i++
+ i += copy(dAtA[i:], s)
+ }
+ }
+ if m.Timeout != 0 {
+ dAtA[i] = 0x18
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(m.Timeout))
+ }
+ return i, nil
+}
+
+func (m *ExecSyncResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ExecSyncResponse) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ if len(m.Stdout) > 0 {
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(len(m.Stdout)))
+ i += copy(dAtA[i:], m.Stdout)
+ }
+ if len(m.Stderr) > 0 {
+ dAtA[i] = 0x12
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(len(m.Stderr)))
+ i += copy(dAtA[i:], m.Stderr)
+ }
+ if m.ExitCode != 0 {
+ dAtA[i] = 0x18
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(m.ExitCode))
+ }
+ return i, nil
+}
+
+func (m *ExecRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ExecRequest) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ if len(m.ContainerId) > 0 {
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(len(m.ContainerId)))
+ i += copy(dAtA[i:], m.ContainerId)
+ }
+ if len(m.Cmd) > 0 {
+ for _, s := range m.Cmd {
+ dAtA[i] = 0x12
+ i++
+ l = len(s)
+ for l >= 1<<7 {
+ dAtA[i] = uint8(uint64(l)&0x7f | 0x80)
+ l >>= 7
+ i++
+ }
+ dAtA[i] = uint8(l)
+ i++
+ i += copy(dAtA[i:], s)
+ }
+ }
+ if m.Tty {
+ dAtA[i] = 0x18
+ i++
+ if m.Tty {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i++
+ }
+ if m.Stdin {
+ dAtA[i] = 0x20
+ i++
+ if m.Stdin {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i++
+ }
+ return i, nil
+}
+
+func (m *ExecResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ExecResponse) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ if len(m.Url) > 0 {
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(len(m.Url)))
+ i += copy(dAtA[i:], m.Url)
+ }
+ return i, nil
+}
+
+func (m *AttachRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *AttachRequest) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ if len(m.ContainerId) > 0 {
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(len(m.ContainerId)))
+ i += copy(dAtA[i:], m.ContainerId)
+ }
+ if m.Stdin {
+ dAtA[i] = 0x10
+ i++
+ if m.Stdin {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i++
+ }
+ if m.Tty {
+ dAtA[i] = 0x18
+ i++
+ if m.Tty {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i++
+ }
+ return i, nil
+}
+
+func (m *AttachResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *AttachResponse) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ if len(m.Url) > 0 {
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(len(m.Url)))
+ i += copy(dAtA[i:], m.Url)
+ }
+ return i, nil
+}
+
+func (m *PortForwardRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *PortForwardRequest) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ if len(m.PodSandboxId) > 0 {
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(len(m.PodSandboxId)))
+ i += copy(dAtA[i:], m.PodSandboxId)
+ }
+ if len(m.Port) > 0 {
+ dAtA41 := make([]byte, len(m.Port)*10)
+ var j40 int
+ for _, num1 := range m.Port {
+ num := uint64(num1)
+ for num >= 1<<7 {
+ dAtA41[j40] = uint8(uint64(num)&0x7f | 0x80)
+ num >>= 7
+ j40++
+ }
+ dAtA41[j40] = uint8(num)
+ j40++
+ }
+ dAtA[i] = 0x12
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(j40))
+ i += copy(dAtA[i:], dAtA41[:j40])
+ }
+ return i, nil
+}
+
+func (m *PortForwardResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *PortForwardResponse) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ if len(m.Url) > 0 {
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(len(m.Url)))
+ i += copy(dAtA[i:], m.Url)
+ }
+ return i, nil
+}
+
+func (m *ImageFilter) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ImageFilter) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ if m.Image != nil {
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(m.Image.Size()))
+ n42, err := m.Image.MarshalTo(dAtA[i:])
+ if err != nil {
+ return 0, err
+ }
+ i += n42
+ }
+ return i, nil
+}
+
+func (m *ListImagesRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ListImagesRequest) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ if m.Filter != nil {
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(m.Filter.Size()))
+ n43, err := m.Filter.MarshalTo(dAtA[i:])
+ if err != nil {
+ return 0, err
+ }
+ i += n43
+ }
+ return i, nil
+}
+
+func (m *Image) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *Image) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ if len(m.Id) > 0 {
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(len(m.Id)))
+ i += copy(dAtA[i:], m.Id)
+ }
+ if len(m.RepoTags) > 0 {
+ for _, s := range m.RepoTags {
+ dAtA[i] = 0x12
+ i++
+ l = len(s)
+ for l >= 1<<7 {
+ dAtA[i] = uint8(uint64(l)&0x7f | 0x80)
+ l >>= 7
+ i++
+ }
+ dAtA[i] = uint8(l)
+ i++
+ i += copy(dAtA[i:], s)
+ }
+ }
+ if len(m.RepoDigests) > 0 {
+ for _, s := range m.RepoDigests {
+ dAtA[i] = 0x1a
+ i++
+ l = len(s)
+ for l >= 1<<7 {
+ dAtA[i] = uint8(uint64(l)&0x7f | 0x80)
+ l >>= 7
+ i++
+ }
+ dAtA[i] = uint8(l)
+ i++
+ i += copy(dAtA[i:], s)
+ }
+ }
+ if m.Size_ != 0 {
+ dAtA[i] = 0x20
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(m.Size_))
+ }
+ if m.Uid != nil {
+ dAtA[i] = 0x2a
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(m.Uid.Size()))
+ n44, err := m.Uid.MarshalTo(dAtA[i:])
+ if err != nil {
+ return 0, err
+ }
+ i += n44
+ }
+ if len(m.Username) > 0 {
+ dAtA[i] = 0x32
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(len(m.Username)))
+ i += copy(dAtA[i:], m.Username)
+ }
+ return i, nil
+}
+
+func (m *ListImagesResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ListImagesResponse) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ if len(m.Images) > 0 {
+ for _, msg := range m.Images {
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(msg.Size()))
+ n, err := msg.MarshalTo(dAtA[i:])
+ if err != nil {
+ return 0, err
+ }
+ i += n
+ }
+ }
+ return i, nil
+}
+
+func (m *ImageStatusRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ImageStatusRequest) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ if m.Image != nil {
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(m.Image.Size()))
+ n45, err := m.Image.MarshalTo(dAtA[i:])
+ if err != nil {
+ return 0, err
+ }
+ i += n45
+ }
+ return i, nil
+}
+
+func (m *ImageStatusResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ImageStatusResponse) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ if m.Image != nil {
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(m.Image.Size()))
+ n46, err := m.Image.MarshalTo(dAtA[i:])
+ if err != nil {
+ return 0, err
+ }
+ i += n46
+ }
+ return i, nil
+}
+
+func (m *AuthConfig) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *AuthConfig) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ if len(m.Username) > 0 {
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(len(m.Username)))
+ i += copy(dAtA[i:], m.Username)
+ }
+ if len(m.Password) > 0 {
+ dAtA[i] = 0x12
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(len(m.Password)))
+ i += copy(dAtA[i:], m.Password)
+ }
+ if len(m.Auth) > 0 {
+ dAtA[i] = 0x1a
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(len(m.Auth)))
+ i += copy(dAtA[i:], m.Auth)
+ }
+ if len(m.ServerAddress) > 0 {
+ dAtA[i] = 0x22
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(len(m.ServerAddress)))
+ i += copy(dAtA[i:], m.ServerAddress)
+ }
+ if len(m.IdentityToken) > 0 {
+ dAtA[i] = 0x2a
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(len(m.IdentityToken)))
+ i += copy(dAtA[i:], m.IdentityToken)
+ }
+ if len(m.RegistryToken) > 0 {
+ dAtA[i] = 0x32
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(len(m.RegistryToken)))
+ i += copy(dAtA[i:], m.RegistryToken)
+ }
+ return i, nil
+}
+
+func (m *PullImageRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *PullImageRequest) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ if m.Image != nil {
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(m.Image.Size()))
+ n47, err := m.Image.MarshalTo(dAtA[i:])
+ if err != nil {
+ return 0, err
+ }
+ i += n47
+ }
+ if m.Auth != nil {
+ dAtA[i] = 0x12
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(m.Auth.Size()))
+ n48, err := m.Auth.MarshalTo(dAtA[i:])
+ if err != nil {
+ return 0, err
+ }
+ i += n48
+ }
+ if m.SandboxConfig != nil {
+ dAtA[i] = 0x1a
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(m.SandboxConfig.Size()))
+ n49, err := m.SandboxConfig.MarshalTo(dAtA[i:])
+ if err != nil {
+ return 0, err
+ }
+ i += n49
+ }
+ return i, nil
+}
+
+func (m *PullImageResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *PullImageResponse) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ if len(m.ImageRef) > 0 {
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(len(m.ImageRef)))
+ i += copy(dAtA[i:], m.ImageRef)
+ }
+ return i, nil
+}
+
+func (m *RemoveImageRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *RemoveImageRequest) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ if m.Image != nil {
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(m.Image.Size()))
+ n50, err := m.Image.MarshalTo(dAtA[i:])
+ if err != nil {
+ return 0, err
+ }
+ i += n50
+ }
+ return i, nil
+}
+
+func (m *RemoveImageResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *RemoveImageResponse) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ return i, nil
+}
+
+func (m *NetworkConfig) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *NetworkConfig) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ if len(m.PodCidr) > 0 {
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(len(m.PodCidr)))
+ i += copy(dAtA[i:], m.PodCidr)
+ }
+ return i, nil
+}
+
+func (m *RuntimeConfig) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *RuntimeConfig) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ if m.NetworkConfig != nil {
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(m.NetworkConfig.Size()))
+ n51, err := m.NetworkConfig.MarshalTo(dAtA[i:])
+ if err != nil {
+ return 0, err
+ }
+ i += n51
+ }
+ return i, nil
+}
+
+func (m *UpdateRuntimeConfigRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *UpdateRuntimeConfigRequest) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ if m.RuntimeConfig != nil {
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(m.RuntimeConfig.Size()))
+ n52, err := m.RuntimeConfig.MarshalTo(dAtA[i:])
+ if err != nil {
+ return 0, err
+ }
+ i += n52
+ }
+ return i, nil
+}
+
+func (m *UpdateRuntimeConfigResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *UpdateRuntimeConfigResponse) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ return i, nil
+}
+
+func (m *RuntimeCondition) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *RuntimeCondition) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ if len(m.Type) > 0 {
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(len(m.Type)))
+ i += copy(dAtA[i:], m.Type)
+ }
+ if m.Status {
+ dAtA[i] = 0x10
+ i++
+ if m.Status {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i++
+ }
+ if len(m.Reason) > 0 {
+ dAtA[i] = 0x1a
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(len(m.Reason)))
+ i += copy(dAtA[i:], m.Reason)
+ }
+ if len(m.Message) > 0 {
+ dAtA[i] = 0x22
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(len(m.Message)))
+ i += copy(dAtA[i:], m.Message)
+ }
+ return i, nil
+}
+
+func (m *RuntimeStatus) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *RuntimeStatus) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ if len(m.Conditions) > 0 {
+ for _, msg := range m.Conditions {
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(msg.Size()))
+ n, err := msg.MarshalTo(dAtA[i:])
+ if err != nil {
+ return 0, err
+ }
+ i += n
+ }
+ }
+ return i, nil
+}
+
+func (m *StatusRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *StatusRequest) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ return i, nil
+}
+
+func (m *StatusResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *StatusResponse) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ if m.Status != nil {
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(m.Status.Size()))
+ n53, err := m.Status.MarshalTo(dAtA[i:])
+ if err != nil {
+ return 0, err
+ }
+ i += n53
+ }
+ return i, nil
+}
+
+func (m *ImageFsInfoRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ImageFsInfoRequest) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ return i, nil
+}
+
+func (m *UInt64Value) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *UInt64Value) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ if m.Value != 0 {
+ dAtA[i] = 0x8
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(m.Value))
+ }
+ return i, nil
+}
+
+func (m *StorageIdentifier) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *StorageIdentifier) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ if len(m.Uuid) > 0 {
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(len(m.Uuid)))
+ i += copy(dAtA[i:], m.Uuid)
+ }
+ return i, nil
+}
+
+func (m *FilesystemUsage) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *FilesystemUsage) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ if m.Timestamp != 0 {
+ dAtA[i] = 0x8
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(m.Timestamp))
+ }
+ if m.StorageId != nil {
+ dAtA[i] = 0x12
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(m.StorageId.Size()))
+ n54, err := m.StorageId.MarshalTo(dAtA[i:])
+ if err != nil {
+ return 0, err
+ }
+ i += n54
+ }
+ if m.UsedBytes != nil {
+ dAtA[i] = 0x1a
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(m.UsedBytes.Size()))
+ n55, err := m.UsedBytes.MarshalTo(dAtA[i:])
+ if err != nil {
+ return 0, err
+ }
+ i += n55
+ }
+ if m.InodesUsed != nil {
+ dAtA[i] = 0x22
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(m.InodesUsed.Size()))
+ n56, err := m.InodesUsed.MarshalTo(dAtA[i:])
+ if err != nil {
+ return 0, err
+ }
+ i += n56
+ }
+ return i, nil
+}
+
+func (m *ImageFsInfoResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ImageFsInfoResponse) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ if len(m.ImageFilesystems) > 0 {
+ for _, msg := range m.ImageFilesystems {
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(msg.Size()))
+ n, err := msg.MarshalTo(dAtA[i:])
+ if err != nil {
+ return 0, err
+ }
+ i += n
+ }
+ }
+ return i, nil
+}
+
+func (m *ContainerStatsRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ContainerStatsRequest) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ if len(m.ContainerId) > 0 {
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(len(m.ContainerId)))
+ i += copy(dAtA[i:], m.ContainerId)
+ }
+ return i, nil
+}
+
+func (m *ContainerStatsResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ContainerStatsResponse) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ if m.Stats != nil {
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(m.Stats.Size()))
+ n57, err := m.Stats.MarshalTo(dAtA[i:])
+ if err != nil {
+ return 0, err
+ }
+ i += n57
+ }
+ return i, nil
+}
+
+func (m *ListContainerStatsRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ListContainerStatsRequest) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ if m.Filter != nil {
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(m.Filter.Size()))
+ n58, err := m.Filter.MarshalTo(dAtA[i:])
+ if err != nil {
+ return 0, err
+ }
+ i += n58
+ }
+ return i, nil
+}
+
+func (m *ContainerStatsFilter) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ContainerStatsFilter) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ if len(m.Id) > 0 {
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(len(m.Id)))
+ i += copy(dAtA[i:], m.Id)
+ }
+ if len(m.PodSandboxId) > 0 {
+ dAtA[i] = 0x12
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(len(m.PodSandboxId)))
+ i += copy(dAtA[i:], m.PodSandboxId)
+ }
+ if len(m.LabelSelector) > 0 {
+ for k := range m.LabelSelector {
+ dAtA[i] = 0x1a
+ i++
+ v := m.LabelSelector[k]
+ mapSize := 1 + len(k) + sovApi(uint64(len(k))) + 1 + len(v) + sovApi(uint64(len(v)))
+ i = encodeVarintApi(dAtA, i, uint64(mapSize))
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(len(k)))
+ i += copy(dAtA[i:], k)
+ dAtA[i] = 0x12
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(len(v)))
+ i += copy(dAtA[i:], v)
+ }
+ }
+ return i, nil
+}
+
+func (m *ListContainerStatsResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ListContainerStatsResponse) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ if len(m.Stats) > 0 {
+ for _, msg := range m.Stats {
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(msg.Size()))
+ n, err := msg.MarshalTo(dAtA[i:])
+ if err != nil {
+ return 0, err
+ }
+ i += n
+ }
+ }
+ return i, nil
+}
+
+func (m *ContainerAttributes) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ContainerAttributes) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ if len(m.Id) > 0 {
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(len(m.Id)))
+ i += copy(dAtA[i:], m.Id)
+ }
+ if m.Metadata != nil {
+ dAtA[i] = 0x12
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(m.Metadata.Size()))
+ n59, err := m.Metadata.MarshalTo(dAtA[i:])
+ if err != nil {
+ return 0, err
+ }
+ i += n59
+ }
+ if len(m.Labels) > 0 {
+ for k := range m.Labels {
+ dAtA[i] = 0x1a
+ i++
+ v := m.Labels[k]
+ mapSize := 1 + len(k) + sovApi(uint64(len(k))) + 1 + len(v) + sovApi(uint64(len(v)))
+ i = encodeVarintApi(dAtA, i, uint64(mapSize))
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(len(k)))
+ i += copy(dAtA[i:], k)
+ dAtA[i] = 0x12
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(len(v)))
+ i += copy(dAtA[i:], v)
+ }
+ }
+ if len(m.Annotations) > 0 {
+ for k := range m.Annotations {
+ dAtA[i] = 0x22
+ i++
+ v := m.Annotations[k]
+ mapSize := 1 + len(k) + sovApi(uint64(len(k))) + 1 + len(v) + sovApi(uint64(len(v)))
+ i = encodeVarintApi(dAtA, i, uint64(mapSize))
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(len(k)))
+ i += copy(dAtA[i:], k)
+ dAtA[i] = 0x12
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(len(v)))
+ i += copy(dAtA[i:], v)
+ }
+ }
+ return i, nil
+}
+
+func (m *ContainerStats) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ContainerStats) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ if m.Attributes != nil {
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(m.Attributes.Size()))
+ n60, err := m.Attributes.MarshalTo(dAtA[i:])
+ if err != nil {
+ return 0, err
+ }
+ i += n60
+ }
+ if m.Cpu != nil {
+ dAtA[i] = 0x12
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(m.Cpu.Size()))
+ n61, err := m.Cpu.MarshalTo(dAtA[i:])
+ if err != nil {
+ return 0, err
+ }
+ i += n61
+ }
+ if m.Memory != nil {
+ dAtA[i] = 0x1a
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(m.Memory.Size()))
+ n62, err := m.Memory.MarshalTo(dAtA[i:])
+ if err != nil {
+ return 0, err
+ }
+ i += n62
+ }
+ if m.WritableLayer != nil {
+ dAtA[i] = 0x22
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(m.WritableLayer.Size()))
+ n63, err := m.WritableLayer.MarshalTo(dAtA[i:])
+ if err != nil {
+ return 0, err
+ }
+ i += n63
+ }
+ return i, nil
+}
+
+func (m *CpuUsage) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *CpuUsage) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ if m.Timestamp != 0 {
+ dAtA[i] = 0x8
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(m.Timestamp))
+ }
+ if m.UsageCoreNanoSeconds != nil {
+ dAtA[i] = 0x12
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(m.UsageCoreNanoSeconds.Size()))
+ n64, err := m.UsageCoreNanoSeconds.MarshalTo(dAtA[i:])
+ if err != nil {
+ return 0, err
+ }
+ i += n64
+ }
+ return i, nil
+}
+
+func (m *MemoryUsage) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *MemoryUsage) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ if m.Timestamp != 0 {
+ dAtA[i] = 0x8
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(m.Timestamp))
+ }
+ if m.WorkingSetBytes != nil {
+ dAtA[i] = 0x12
+ i++
+ i = encodeVarintApi(dAtA, i, uint64(m.WorkingSetBytes.Size()))
+ n65, err := m.WorkingSetBytes.MarshalTo(dAtA[i:])
+ if err != nil {
+ return 0, err
+ }
+ i += n65
+ }
+ return i, nil
+}
+
+func encodeFixed64Api(dAtA []byte, offset int, v uint64) int {
+ dAtA[offset] = uint8(v)
+ dAtA[offset+1] = uint8(v >> 8)
+ dAtA[offset+2] = uint8(v >> 16)
+ dAtA[offset+3] = uint8(v >> 24)
+ dAtA[offset+4] = uint8(v >> 32)
+ dAtA[offset+5] = uint8(v >> 40)
+ dAtA[offset+6] = uint8(v >> 48)
+ dAtA[offset+7] = uint8(v >> 56)
+ return offset + 8
+}
+func encodeFixed32Api(dAtA []byte, offset int, v uint32) int {
+ dAtA[offset] = uint8(v)
+ dAtA[offset+1] = uint8(v >> 8)
+ dAtA[offset+2] = uint8(v >> 16)
+ dAtA[offset+3] = uint8(v >> 24)
+ return offset + 4
+}
+func encodeVarintApi(dAtA []byte, offset int, v uint64) int {
+ for v >= 1<<7 {
+ dAtA[offset] = uint8(v&0x7f | 0x80)
+ v >>= 7
+ offset++
+ }
+ dAtA[offset] = uint8(v)
+ return offset + 1
+}
+func (m *VersionRequest) Size() (n int) {
+ var l int
+ _ = l
+ l = len(m.Version)
+ if l > 0 {
+ n += 1 + l + sovApi(uint64(l))
+ }
+ return n
+}
+
+func (m *VersionResponse) Size() (n int) {
+ var l int
+ _ = l
+ l = len(m.Version)
+ if l > 0 {
+ n += 1 + l + sovApi(uint64(l))
+ }
+ l = len(m.RuntimeName)
+ if l > 0 {
+ n += 1 + l + sovApi(uint64(l))
+ }
+ l = len(m.RuntimeVersion)
+ if l > 0 {
+ n += 1 + l + sovApi(uint64(l))
+ }
+ l = len(m.RuntimeApiVersion)
+ if l > 0 {
+ n += 1 + l + sovApi(uint64(l))
+ }
+ return n
+}
+
+func (m *DNSConfig) Size() (n int) {
+ var l int
+ _ = l
+ if len(m.Servers) > 0 {
+ for _, s := range m.Servers {
+ l = len(s)
+ n += 1 + l + sovApi(uint64(l))
+ }
+ }
+ if len(m.Searches) > 0 {
+ for _, s := range m.Searches {
+ l = len(s)
+ n += 1 + l + sovApi(uint64(l))
+ }
+ }
+ if len(m.Options) > 0 {
+ for _, s := range m.Options {
+ l = len(s)
+ n += 1 + l + sovApi(uint64(l))
+ }
+ }
+ return n
+}
+
+func (m *PortMapping) Size() (n int) {
+ var l int
+ _ = l
+ if m.Protocol != 0 {
+ n += 1 + sovApi(uint64(m.Protocol))
+ }
+ if m.ContainerPort != 0 {
+ n += 1 + sovApi(uint64(m.ContainerPort))
+ }
+ if m.HostPort != 0 {
+ n += 1 + sovApi(uint64(m.HostPort))
+ }
+ l = len(m.HostIp)
+ if l > 0 {
+ n += 1 + l + sovApi(uint64(l))
+ }
+ return n
+}
+
+func (m *Mount) Size() (n int) {
+ var l int
+ _ = l
+ l = len(m.ContainerPath)
+ if l > 0 {
+ n += 1 + l + sovApi(uint64(l))
+ }
+ l = len(m.HostPath)
+ if l > 0 {
+ n += 1 + l + sovApi(uint64(l))
+ }
+ if m.Readonly {
+ n += 2
+ }
+ if m.SelinuxRelabel {
+ n += 2
+ }
+ return n
+}
+
+func (m *NamespaceOption) Size() (n int) {
+ var l int
+ _ = l
+ if m.HostNetwork {
+ n += 2
+ }
+ if m.HostPid {
+ n += 2
+ }
+ if m.HostIpc {
+ n += 2
+ }
+ return n
+}
+
+func (m *Int64Value) Size() (n int) {
+ var l int
+ _ = l
+ if m.Value != 0 {
+ n += 1 + sovApi(uint64(m.Value))
+ }
+ return n
+}
+
+func (m *LinuxSandboxSecurityContext) Size() (n int) {
+ var l int
+ _ = l
+ if m.NamespaceOptions != nil {
+ l = m.NamespaceOptions.Size()
+ n += 1 + l + sovApi(uint64(l))
+ }
+ if m.SelinuxOptions != nil {
+ l = m.SelinuxOptions.Size()
+ n += 1 + l + sovApi(uint64(l))
+ }
+ if m.RunAsUser != nil {
+ l = m.RunAsUser.Size()
+ n += 1 + l + sovApi(uint64(l))
+ }
+ if m.ReadonlyRootfs {
+ n += 2
+ }
+ if len(m.SupplementalGroups) > 0 {
+ l = 0
+ for _, e := range m.SupplementalGroups {
+ l += sovApi(uint64(e))
+ }
+ n += 1 + sovApi(uint64(l)) + l
+ }
+ if m.Privileged {
+ n += 2
+ }
+ return n
+}
+
+func (m *LinuxPodSandboxConfig) Size() (n int) {
+ var l int
+ _ = l
+ l = len(m.CgroupParent)
+ if l > 0 {
+ n += 1 + l + sovApi(uint64(l))
+ }
+ if m.SecurityContext != nil {
+ l = m.SecurityContext.Size()
+ n += 1 + l + sovApi(uint64(l))
+ }
+ if len(m.Sysctls) > 0 {
+ for k, v := range m.Sysctls {
+ _ = k
+ _ = v
+ mapEntrySize := 1 + len(k) + sovApi(uint64(len(k))) + 1 + len(v) + sovApi(uint64(len(v)))
+ n += mapEntrySize + 1 + sovApi(uint64(mapEntrySize))
+ }
+ }
+ return n
+}
+
+func (m *PodSandboxMetadata) Size() (n int) {
+ var l int
+ _ = l
+ l = len(m.Name)
+ if l > 0 {
+ n += 1 + l + sovApi(uint64(l))
+ }
+ l = len(m.Uid)
+ if l > 0 {
+ n += 1 + l + sovApi(uint64(l))
+ }
+ l = len(m.Namespace)
+ if l > 0 {
+ n += 1 + l + sovApi(uint64(l))
+ }
+ if m.Attempt != 0 {
+ n += 1 + sovApi(uint64(m.Attempt))
+ }
+ return n
+}
+
+func (m *PodSandboxConfig) Size() (n int) {
+ var l int
+ _ = l
+ if m.Metadata != nil {
+ l = m.Metadata.Size()
+ n += 1 + l + sovApi(uint64(l))
+ }
+ l = len(m.Hostname)
+ if l > 0 {
+ n += 1 + l + sovApi(uint64(l))
+ }
+ l = len(m.LogDirectory)
+ if l > 0 {
+ n += 1 + l + sovApi(uint64(l))
+ }
+ if m.DnsConfig != nil {
+ l = m.DnsConfig.Size()
+ n += 1 + l + sovApi(uint64(l))
+ }
+ if len(m.PortMappings) > 0 {
+ for _, e := range m.PortMappings {
+ l = e.Size()
+ n += 1 + l + sovApi(uint64(l))
+ }
+ }
+ if len(m.Labels) > 0 {
+ for k, v := range m.Labels {
+ _ = k
+ _ = v
+ mapEntrySize := 1 + len(k) + sovApi(uint64(len(k))) + 1 + len(v) + sovApi(uint64(len(v)))
+ n += mapEntrySize + 1 + sovApi(uint64(mapEntrySize))
+ }
+ }
+ if len(m.Annotations) > 0 {
+ for k, v := range m.Annotations {
+ _ = k
+ _ = v
+ mapEntrySize := 1 + len(k) + sovApi(uint64(len(k))) + 1 + len(v) + sovApi(uint64(len(v)))
+ n += mapEntrySize + 1 + sovApi(uint64(mapEntrySize))
+ }
+ }
+ if m.Linux != nil {
+ l = m.Linux.Size()
+ n += 1 + l + sovApi(uint64(l))
+ }
+ return n
+}
+
+func (m *RunPodSandboxRequest) Size() (n int) {
+ var l int
+ _ = l
+ if m.Config != nil {
+ l = m.Config.Size()
+ n += 1 + l + sovApi(uint64(l))
+ }
+ return n
+}
+
+func (m *RunPodSandboxResponse) Size() (n int) {
+ var l int
+ _ = l
+ l = len(m.PodSandboxId)
+ if l > 0 {
+ n += 1 + l + sovApi(uint64(l))
+ }
+ return n
+}
+
+func (m *StopPodSandboxRequest) Size() (n int) {
+ var l int
+ _ = l
+ l = len(m.PodSandboxId)
+ if l > 0 {
+ n += 1 + l + sovApi(uint64(l))
+ }
+ return n
+}
+
+func (m *StopPodSandboxResponse) Size() (n int) {
+ var l int
+ _ = l
+ return n
+}
+
+func (m *RemovePodSandboxRequest) Size() (n int) {
+ var l int
+ _ = l
+ l = len(m.PodSandboxId)
+ if l > 0 {
+ n += 1 + l + sovApi(uint64(l))
+ }
+ return n
+}
+
+func (m *RemovePodSandboxResponse) Size() (n int) {
+ var l int
+ _ = l
+ return n
+}
+
+func (m *PodSandboxStatusRequest) Size() (n int) {
+ var l int
+ _ = l
+ l = len(m.PodSandboxId)
+ if l > 0 {
+ n += 1 + l + sovApi(uint64(l))
+ }
+ return n
+}
+
+func (m *PodSandboxNetworkStatus) Size() (n int) {
+ var l int
+ _ = l
+ l = len(m.Ip)
+ if l > 0 {
+ n += 1 + l + sovApi(uint64(l))
+ }
+ return n
+}
+
+func (m *Namespace) Size() (n int) {
+ var l int
+ _ = l
+ if m.Options != nil {
+ l = m.Options.Size()
+ n += 1 + l + sovApi(uint64(l))
+ }
+ return n
+}
+
+func (m *LinuxPodSandboxStatus) Size() (n int) {
+ var l int
+ _ = l
+ if m.Namespaces != nil {
+ l = m.Namespaces.Size()
+ n += 1 + l + sovApi(uint64(l))
+ }
+ return n
+}
+
+func (m *PodSandboxStatus) Size() (n int) {
+ var l int
+ _ = l
+ l = len(m.Id)
+ if l > 0 {
+ n += 1 + l + sovApi(uint64(l))
+ }
+ if m.Metadata != nil {
+ l = m.Metadata.Size()
+ n += 1 + l + sovApi(uint64(l))
+ }
+ if m.State != 0 {
+ n += 1 + sovApi(uint64(m.State))
+ }
+ if m.CreatedAt != 0 {
+ n += 1 + sovApi(uint64(m.CreatedAt))
+ }
+ if m.Network != nil {
+ l = m.Network.Size()
+ n += 1 + l + sovApi(uint64(l))
+ }
+ if m.Linux != nil {
+ l = m.Linux.Size()
+ n += 1 + l + sovApi(uint64(l))
+ }
+ if len(m.Labels) > 0 {
+ for k, v := range m.Labels {
+ _ = k
+ _ = v
+ mapEntrySize := 1 + len(k) + sovApi(uint64(len(k))) + 1 + len(v) + sovApi(uint64(len(v)))
+ n += mapEntrySize + 1 + sovApi(uint64(mapEntrySize))
+ }
+ }
+ if len(m.Annotations) > 0 {
+ for k, v := range m.Annotations {
+ _ = k
+ _ = v
+ mapEntrySize := 1 + len(k) + sovApi(uint64(len(k))) + 1 + len(v) + sovApi(uint64(len(v)))
+ n += mapEntrySize + 1 + sovApi(uint64(mapEntrySize))
+ }
+ }
+ return n
+}
+
+func (m *PodSandboxStatusResponse) Size() (n int) {
+ var l int
+ _ = l
+ if m.Status != nil {
+ l = m.Status.Size()
+ n += 1 + l + sovApi(uint64(l))
+ }
+ return n
+}
+
+func (m *PodSandboxStateValue) Size() (n int) {
+ var l int
+ _ = l
+ if m.State != 0 {
+ n += 1 + sovApi(uint64(m.State))
+ }
+ return n
+}
+
+func (m *PodSandboxFilter) Size() (n int) {
+ var l int
+ _ = l
+ l = len(m.Id)
+ if l > 0 {
+ n += 1 + l + sovApi(uint64(l))
+ }
+ if m.State != nil {
+ l = m.State.Size()
+ n += 1 + l + sovApi(uint64(l))
+ }
+ if len(m.LabelSelector) > 0 {
+ for k, v := range m.LabelSelector {
+ _ = k
+ _ = v
+ mapEntrySize := 1 + len(k) + sovApi(uint64(len(k))) + 1 + len(v) + sovApi(uint64(len(v)))
+ n += mapEntrySize + 1 + sovApi(uint64(mapEntrySize))
+ }
+ }
+ return n
+}
+
+func (m *ListPodSandboxRequest) Size() (n int) {
+ var l int
+ _ = l
+ if m.Filter != nil {
+ l = m.Filter.Size()
+ n += 1 + l + sovApi(uint64(l))
+ }
+ return n
+}
+
+func (m *PodSandbox) Size() (n int) {
+ var l int
+ _ = l
+ l = len(m.Id)
+ if l > 0 {
+ n += 1 + l + sovApi(uint64(l))
+ }
+ if m.Metadata != nil {
+ l = m.Metadata.Size()
+ n += 1 + l + sovApi(uint64(l))
+ }
+ if m.State != 0 {
+ n += 1 + sovApi(uint64(m.State))
+ }
+ if m.CreatedAt != 0 {
+ n += 1 + sovApi(uint64(m.CreatedAt))
+ }
+ if len(m.Labels) > 0 {
+ for k, v := range m.Labels {
+ _ = k
+ _ = v
+ mapEntrySize := 1 + len(k) + sovApi(uint64(len(k))) + 1 + len(v) + sovApi(uint64(len(v)))
+ n += mapEntrySize + 1 + sovApi(uint64(mapEntrySize))
+ }
+ }
+ if len(m.Annotations) > 0 {
+ for k, v := range m.Annotations {
+ _ = k
+ _ = v
+ mapEntrySize := 1 + len(k) + sovApi(uint64(len(k))) + 1 + len(v) + sovApi(uint64(len(v)))
+ n += mapEntrySize + 1 + sovApi(uint64(mapEntrySize))
+ }
+ }
+ return n
+}
+
+func (m *ListPodSandboxResponse) Size() (n int) {
+ var l int
+ _ = l
+ if len(m.Items) > 0 {
+ for _, e := range m.Items {
+ l = e.Size()
+ n += 1 + l + sovApi(uint64(l))
+ }
+ }
+ return n
+}
+
+func (m *ImageSpec) Size() (n int) {
+ var l int
+ _ = l
+ l = len(m.Image)
+ if l > 0 {
+ n += 1 + l + sovApi(uint64(l))
+ }
+ return n
+}
+
+func (m *KeyValue) Size() (n int) {
+ var l int
+ _ = l
+ l = len(m.Key)
+ if l > 0 {
+ n += 1 + l + sovApi(uint64(l))
+ }
+ l = len(m.Value)
+ if l > 0 {
+ n += 1 + l + sovApi(uint64(l))
+ }
+ return n
+}
+
+func (m *LinuxContainerResources) Size() (n int) {
+ var l int
+ _ = l
+ if m.CpuPeriod != 0 {
+ n += 1 + sovApi(uint64(m.CpuPeriod))
+ }
+ if m.CpuQuota != 0 {
+ n += 1 + sovApi(uint64(m.CpuQuota))
+ }
+ if m.CpuShares != 0 {
+ n += 1 + sovApi(uint64(m.CpuShares))
+ }
+ if m.MemoryLimitInBytes != 0 {
+ n += 1 + sovApi(uint64(m.MemoryLimitInBytes))
+ }
+ if m.OomScoreAdj != 0 {
+ n += 1 + sovApi(uint64(m.OomScoreAdj))
+ }
+ return n
+}
+
+func (m *SELinuxOption) Size() (n int) {
+ var l int
+ _ = l
+ l = len(m.User)
+ if l > 0 {
+ n += 1 + l + sovApi(uint64(l))
+ }
+ l = len(m.Role)
+ if l > 0 {
+ n += 1 + l + sovApi(uint64(l))
+ }
+ l = len(m.Type)
+ if l > 0 {
+ n += 1 + l + sovApi(uint64(l))
+ }
+ l = len(m.Level)
+ if l > 0 {
+ n += 1 + l + sovApi(uint64(l))
+ }
+ return n
+}
+
+func (m *Capability) Size() (n int) {
+ var l int
+ _ = l
+ if len(m.AddCapabilities) > 0 {
+ for _, s := range m.AddCapabilities {
+ l = len(s)
+ n += 1 + l + sovApi(uint64(l))
+ }
+ }
+ if len(m.DropCapabilities) > 0 {
+ for _, s := range m.DropCapabilities {
+ l = len(s)
+ n += 1 + l + sovApi(uint64(l))
+ }
+ }
+ return n
+}
+
+func (m *LinuxContainerSecurityContext) Size() (n int) {
+ var l int
+ _ = l
+ if m.Capabilities != nil {
+ l = m.Capabilities.Size()
+ n += 1 + l + sovApi(uint64(l))
+ }
+ if m.Privileged {
+ n += 2
+ }
+ if m.NamespaceOptions != nil {
+ l = m.NamespaceOptions.Size()
+ n += 1 + l + sovApi(uint64(l))
+ }
+ if m.SelinuxOptions != nil {
+ l = m.SelinuxOptions.Size()
+ n += 1 + l + sovApi(uint64(l))
+ }
+ if m.RunAsUser != nil {
+ l = m.RunAsUser.Size()
+ n += 1 + l + sovApi(uint64(l))
+ }
+ l = len(m.RunAsUsername)
+ if l > 0 {
+ n += 1 + l + sovApi(uint64(l))
+ }
+ if m.ReadonlyRootfs {
+ n += 2
+ }
+ if len(m.SupplementalGroups) > 0 {
+ l = 0
+ for _, e := range m.SupplementalGroups {
+ l += sovApi(uint64(e))
+ }
+ n += 1 + sovApi(uint64(l)) + l
+ }
+ l = len(m.ApparmorProfile)
+ if l > 0 {
+ n += 1 + l + sovApi(uint64(l))
+ }
+ return n
+}
+
+func (m *LinuxContainerConfig) Size() (n int) {
+ var l int
+ _ = l
+ if m.Resources != nil {
+ l = m.Resources.Size()
+ n += 1 + l + sovApi(uint64(l))
+ }
+ if m.SecurityContext != nil {
+ l = m.SecurityContext.Size()
+ n += 1 + l + sovApi(uint64(l))
+ }
+ return n
+}
+
+func (m *ContainerMetadata) Size() (n int) {
+ var l int
+ _ = l
+ l = len(m.Name)
+ if l > 0 {
+ n += 1 + l + sovApi(uint64(l))
+ }
+ if m.Attempt != 0 {
+ n += 1 + sovApi(uint64(m.Attempt))
+ }
+ return n
+}
+
+func (m *Device) Size() (n int) {
+ var l int
+ _ = l
+ l = len(m.ContainerPath)
+ if l > 0 {
+ n += 1 + l + sovApi(uint64(l))
+ }
+ l = len(m.HostPath)
+ if l > 0 {
+ n += 1 + l + sovApi(uint64(l))
+ }
+ l = len(m.Permissions)
+ if l > 0 {
+ n += 1 + l + sovApi(uint64(l))
+ }
+ return n
+}
+
+func (m *ContainerConfig) Size() (n int) {
+ var l int
+ _ = l
+ if m.Metadata != nil {
+ l = m.Metadata.Size()
+ n += 1 + l + sovApi(uint64(l))
+ }
+ if m.Image != nil {
+ l = m.Image.Size()
+ n += 1 + l + sovApi(uint64(l))
+ }
+ if len(m.Command) > 0 {
+ for _, s := range m.Command {
+ l = len(s)
+ n += 1 + l + sovApi(uint64(l))
+ }
+ }
+ if len(m.Args) > 0 {
+ for _, s := range m.Args {
+ l = len(s)
+ n += 1 + l + sovApi(uint64(l))
+ }
+ }
+ l = len(m.WorkingDir)
+ if l > 0 {
+ n += 1 + l + sovApi(uint64(l))
+ }
+ if len(m.Envs) > 0 {
+ for _, e := range m.Envs {
+ l = e.Size()
+ n += 1 + l + sovApi(uint64(l))
+ }
+ }
+ if len(m.Mounts) > 0 {
+ for _, e := range m.Mounts {
+ l = e.Size()
+ n += 1 + l + sovApi(uint64(l))
+ }
+ }
+ if len(m.Devices) > 0 {
+ for _, e := range m.Devices {
+ l = e.Size()
+ n += 1 + l + sovApi(uint64(l))
+ }
+ }
+ if len(m.Labels) > 0 {
+ for k, v := range m.Labels {
+ _ = k
+ _ = v
+ mapEntrySize := 1 + len(k) + sovApi(uint64(len(k))) + 1 + len(v) + sovApi(uint64(len(v)))
+ n += mapEntrySize + 1 + sovApi(uint64(mapEntrySize))
+ }
+ }
+ if len(m.Annotations) > 0 {
+ for k, v := range m.Annotations {
+ _ = k
+ _ = v
+ mapEntrySize := 1 + len(k) + sovApi(uint64(len(k))) + 1 + len(v) + sovApi(uint64(len(v)))
+ n += mapEntrySize + 1 + sovApi(uint64(mapEntrySize))
+ }
+ }
+ l = len(m.LogPath)
+ if l > 0 {
+ n += 1 + l + sovApi(uint64(l))
+ }
+ if m.Stdin {
+ n += 2
+ }
+ if m.StdinOnce {
+ n += 2
+ }
+ if m.Tty {
+ n += 2
+ }
+ if m.Linux != nil {
+ l = m.Linux.Size()
+ n += 1 + l + sovApi(uint64(l))
+ }
+ return n
+}
+
+func (m *CreateContainerRequest) Size() (n int) {
+ var l int
+ _ = l
+ l = len(m.PodSandboxId)
+ if l > 0 {
+ n += 1 + l + sovApi(uint64(l))
+ }
+ if m.Config != nil {
+ l = m.Config.Size()
+ n += 1 + l + sovApi(uint64(l))
+ }
+ if m.SandboxConfig != nil {
+ l = m.SandboxConfig.Size()
+ n += 1 + l + sovApi(uint64(l))
+ }
+ return n
+}
+
+func (m *CreateContainerResponse) Size() (n int) {
+ var l int
+ _ = l
+ l = len(m.ContainerId)
+ if l > 0 {
+ n += 1 + l + sovApi(uint64(l))
+ }
+ return n
+}
+
+func (m *StartContainerRequest) Size() (n int) {
+ var l int
+ _ = l
+ l = len(m.ContainerId)
+ if l > 0 {
+ n += 1 + l + sovApi(uint64(l))
+ }
+ return n
+}
+
+func (m *StartContainerResponse) Size() (n int) {
+ var l int
+ _ = l
+ return n
+}
+
+func (m *StopContainerRequest) Size() (n int) {
+ var l int
+ _ = l
+ l = len(m.ContainerId)
+ if l > 0 {
+ n += 1 + l + sovApi(uint64(l))
+ }
+ if m.Timeout != 0 {
+ n += 1 + sovApi(uint64(m.Timeout))
+ }
+ return n
+}
+
+func (m *StopContainerResponse) Size() (n int) {
+ var l int
+ _ = l
+ return n
+}
+
+func (m *RemoveContainerRequest) Size() (n int) {
+ var l int
+ _ = l
+ l = len(m.ContainerId)
+ if l > 0 {
+ n += 1 + l + sovApi(uint64(l))
+ }
+ return n
+}
+
+func (m *RemoveContainerResponse) Size() (n int) {
+ var l int
+ _ = l
+ return n
+}
+
+func (m *ContainerStateValue) Size() (n int) {
+ var l int
+ _ = l
+ if m.State != 0 {
+ n += 1 + sovApi(uint64(m.State))
+ }
+ return n
+}
+
+func (m *ContainerFilter) Size() (n int) {
+ var l int
+ _ = l
+ l = len(m.Id)
+ if l > 0 {
+ n += 1 + l + sovApi(uint64(l))
+ }
+ if m.State != nil {
+ l = m.State.Size()
+ n += 1 + l + sovApi(uint64(l))
+ }
+ l = len(m.PodSandboxId)
+ if l > 0 {
+ n += 1 + l + sovApi(uint64(l))
+ }
+ if len(m.LabelSelector) > 0 {
+ for k, v := range m.LabelSelector {
+ _ = k
+ _ = v
+ mapEntrySize := 1 + len(k) + sovApi(uint64(len(k))) + 1 + len(v) + sovApi(uint64(len(v)))
+ n += mapEntrySize + 1 + sovApi(uint64(mapEntrySize))
+ }
+ }
+ return n
+}
+
+func (m *ListContainersRequest) Size() (n int) {
+ var l int
+ _ = l
+ if m.Filter != nil {
+ l = m.Filter.Size()
+ n += 1 + l + sovApi(uint64(l))
+ }
+ return n
+}
+
+func (m *Container) Size() (n int) {
+ var l int
+ _ = l
+ l = len(m.Id)
+ if l > 0 {
+ n += 1 + l + sovApi(uint64(l))
+ }
+ l = len(m.PodSandboxId)
+ if l > 0 {
+ n += 1 + l + sovApi(uint64(l))
+ }
+ if m.Metadata != nil {
+ l = m.Metadata.Size()
+ n += 1 + l + sovApi(uint64(l))
+ }
+ if m.Image != nil {
+ l = m.Image.Size()
+ n += 1 + l + sovApi(uint64(l))
+ }
+ l = len(m.ImageRef)
+ if l > 0 {
+ n += 1 + l + sovApi(uint64(l))
+ }
+ if m.State != 0 {
+ n += 1 + sovApi(uint64(m.State))
+ }
+ if m.CreatedAt != 0 {
+ n += 1 + sovApi(uint64(m.CreatedAt))
+ }
+ if len(m.Labels) > 0 {
+ for k, v := range m.Labels {
+ _ = k
+ _ = v
+ mapEntrySize := 1 + len(k) + sovApi(uint64(len(k))) + 1 + len(v) + sovApi(uint64(len(v)))
+ n += mapEntrySize + 1 + sovApi(uint64(mapEntrySize))
+ }
+ }
+ if len(m.Annotations) > 0 {
+ for k, v := range m.Annotations {
+ _ = k
+ _ = v
+ mapEntrySize := 1 + len(k) + sovApi(uint64(len(k))) + 1 + len(v) + sovApi(uint64(len(v)))
+ n += mapEntrySize + 1 + sovApi(uint64(mapEntrySize))
+ }
+ }
+ return n
+}
+
+func (m *ListContainersResponse) Size() (n int) {
+ var l int
+ _ = l
+ if len(m.Containers) > 0 {
+ for _, e := range m.Containers {
+ l = e.Size()
+ n += 1 + l + sovApi(uint64(l))
+ }
+ }
+ return n
+}
+
+func (m *ContainerStatusRequest) Size() (n int) {
+ var l int
+ _ = l
+ l = len(m.ContainerId)
+ if l > 0 {
+ n += 1 + l + sovApi(uint64(l))
+ }
+ return n
+}
+
+func (m *ContainerStatus) Size() (n int) {
+ var l int
+ _ = l
+ l = len(m.Id)
+ if l > 0 {
+ n += 1 + l + sovApi(uint64(l))
+ }
+ if m.Metadata != nil {
+ l = m.Metadata.Size()
+ n += 1 + l + sovApi(uint64(l))
+ }
+ if m.State != 0 {
+ n += 1 + sovApi(uint64(m.State))
+ }
+ if m.CreatedAt != 0 {
+ n += 1 + sovApi(uint64(m.CreatedAt))
+ }
+ if m.StartedAt != 0 {
+ n += 1 + sovApi(uint64(m.StartedAt))
+ }
+ if m.FinishedAt != 0 {
+ n += 1 + sovApi(uint64(m.FinishedAt))
+ }
+ if m.ExitCode != 0 {
+ n += 1 + sovApi(uint64(m.ExitCode))
+ }
+ if m.Image != nil {
+ l = m.Image.Size()
+ n += 1 + l + sovApi(uint64(l))
+ }
+ l = len(m.ImageRef)
+ if l > 0 {
+ n += 1 + l + sovApi(uint64(l))
+ }
+ l = len(m.Reason)
+ if l > 0 {
+ n += 1 + l + sovApi(uint64(l))
+ }
+ l = len(m.Message)
+ if l > 0 {
+ n += 1 + l + sovApi(uint64(l))
+ }
+ if len(m.Labels) > 0 {
+ for k, v := range m.Labels {
+ _ = k
+ _ = v
+ mapEntrySize := 1 + len(k) + sovApi(uint64(len(k))) + 1 + len(v) + sovApi(uint64(len(v)))
+ n += mapEntrySize + 1 + sovApi(uint64(mapEntrySize))
+ }
+ }
+ if len(m.Annotations) > 0 {
+ for k, v := range m.Annotations {
+ _ = k
+ _ = v
+ mapEntrySize := 1 + len(k) + sovApi(uint64(len(k))) + 1 + len(v) + sovApi(uint64(len(v)))
+ n += mapEntrySize + 1 + sovApi(uint64(mapEntrySize))
+ }
+ }
+ if len(m.Mounts) > 0 {
+ for _, e := range m.Mounts {
+ l = e.Size()
+ n += 1 + l + sovApi(uint64(l))
+ }
+ }
+ l = len(m.LogPath)
+ if l > 0 {
+ n += 1 + l + sovApi(uint64(l))
+ }
+ return n
+}
+
+func (m *ContainerStatusResponse) Size() (n int) {
+ var l int
+ _ = l
+ if m.Status != nil {
+ l = m.Status.Size()
+ n += 1 + l + sovApi(uint64(l))
+ }
+ return n
+}
+
+func (m *ExecSyncRequest) Size() (n int) {
+ var l int
+ _ = l
+ l = len(m.ContainerId)
+ if l > 0 {
+ n += 1 + l + sovApi(uint64(l))
+ }
+ if len(m.Cmd) > 0 {
+ for _, s := range m.Cmd {
+ l = len(s)
+ n += 1 + l + sovApi(uint64(l))
+ }
+ }
+ if m.Timeout != 0 {
+ n += 1 + sovApi(uint64(m.Timeout))
+ }
+ return n
+}
+
+func (m *ExecSyncResponse) Size() (n int) {
+ var l int
+ _ = l
+ l = len(m.Stdout)
+ if l > 0 {
+ n += 1 + l + sovApi(uint64(l))
+ }
+ l = len(m.Stderr)
+ if l > 0 {
+ n += 1 + l + sovApi(uint64(l))
+ }
+ if m.ExitCode != 0 {
+ n += 1 + sovApi(uint64(m.ExitCode))
+ }
+ return n
+}
+
+func (m *ExecRequest) Size() (n int) {
+ var l int
+ _ = l
+ l = len(m.ContainerId)
+ if l > 0 {
+ n += 1 + l + sovApi(uint64(l))
+ }
+ if len(m.Cmd) > 0 {
+ for _, s := range m.Cmd {
+ l = len(s)
+ n += 1 + l + sovApi(uint64(l))
+ }
+ }
+ if m.Tty {
+ n += 2
+ }
+ if m.Stdin {
+ n += 2
+ }
+ return n
+}
+
+func (m *ExecResponse) Size() (n int) {
+ var l int
+ _ = l
+ l = len(m.Url)
+ if l > 0 {
+ n += 1 + l + sovApi(uint64(l))
+ }
+ return n
+}
+
+func (m *AttachRequest) Size() (n int) {
+ var l int
+ _ = l
+ l = len(m.ContainerId)
+ if l > 0 {
+ n += 1 + l + sovApi(uint64(l))
+ }
+ if m.Stdin {
+ n += 2
+ }
+ if m.Tty {
+ n += 2
+ }
+ return n
+}
+
+func (m *AttachResponse) Size() (n int) {
+ var l int
+ _ = l
+ l = len(m.Url)
+ if l > 0 {
+ n += 1 + l + sovApi(uint64(l))
+ }
+ return n
+}
+
+func (m *PortForwardRequest) Size() (n int) {
+ var l int
+ _ = l
+ l = len(m.PodSandboxId)
+ if l > 0 {
+ n += 1 + l + sovApi(uint64(l))
+ }
+ if len(m.Port) > 0 {
+ l = 0
+ for _, e := range m.Port {
+ l += sovApi(uint64(e))
+ }
+ n += 1 + sovApi(uint64(l)) + l
+ }
+ return n
+}
+
+func (m *PortForwardResponse) Size() (n int) {
+ var l int
+ _ = l
+ l = len(m.Url)
+ if l > 0 {
+ n += 1 + l + sovApi(uint64(l))
+ }
+ return n
+}
+
+func (m *ImageFilter) Size() (n int) {
+ var l int
+ _ = l
+ if m.Image != nil {
+ l = m.Image.Size()
+ n += 1 + l + sovApi(uint64(l))
+ }
+ return n
+}
+
+func (m *ListImagesRequest) Size() (n int) {
+ var l int
+ _ = l
+ if m.Filter != nil {
+ l = m.Filter.Size()
+ n += 1 + l + sovApi(uint64(l))
+ }
+ return n
+}
+
+func (m *Image) Size() (n int) {
+ var l int
+ _ = l
+ l = len(m.Id)
+ if l > 0 {
+ n += 1 + l + sovApi(uint64(l))
+ }
+ if len(m.RepoTags) > 0 {
+ for _, s := range m.RepoTags {
+ l = len(s)
+ n += 1 + l + sovApi(uint64(l))
+ }
+ }
+ if len(m.RepoDigests) > 0 {
+ for _, s := range m.RepoDigests {
+ l = len(s)
+ n += 1 + l + sovApi(uint64(l))
+ }
+ }
+ if m.Size_ != 0 {
+ n += 1 + sovApi(uint64(m.Size_))
+ }
+ if m.Uid != nil {
+ l = m.Uid.Size()
+ n += 1 + l + sovApi(uint64(l))
+ }
+ l = len(m.Username)
+ if l > 0 {
+ n += 1 + l + sovApi(uint64(l))
+ }
+ return n
+}
+
+func (m *ListImagesResponse) Size() (n int) {
+ var l int
+ _ = l
+ if len(m.Images) > 0 {
+ for _, e := range m.Images {
+ l = e.Size()
+ n += 1 + l + sovApi(uint64(l))
+ }
+ }
+ return n
+}
+
+func (m *ImageStatusRequest) Size() (n int) {
+ var l int
+ _ = l
+ if m.Image != nil {
+ l = m.Image.Size()
+ n += 1 + l + sovApi(uint64(l))
+ }
+ return n
+}
+
+func (m *ImageStatusResponse) Size() (n int) {
+ var l int
+ _ = l
+ if m.Image != nil {
+ l = m.Image.Size()
+ n += 1 + l + sovApi(uint64(l))
+ }
+ return n
+}
+
+func (m *AuthConfig) Size() (n int) {
+ var l int
+ _ = l
+ l = len(m.Username)
+ if l > 0 {
+ n += 1 + l + sovApi(uint64(l))
+ }
+ l = len(m.Password)
+ if l > 0 {
+ n += 1 + l + sovApi(uint64(l))
+ }
+ l = len(m.Auth)
+ if l > 0 {
+ n += 1 + l + sovApi(uint64(l))
+ }
+ l = len(m.ServerAddress)
+ if l > 0 {
+ n += 1 + l + sovApi(uint64(l))
+ }
+ l = len(m.IdentityToken)
+ if l > 0 {
+ n += 1 + l + sovApi(uint64(l))
+ }
+ l = len(m.RegistryToken)
+ if l > 0 {
+ n += 1 + l + sovApi(uint64(l))
+ }
+ return n
+}
+
+func (m *PullImageRequest) Size() (n int) {
+ var l int
+ _ = l
+ if m.Image != nil {
+ l = m.Image.Size()
+ n += 1 + l + sovApi(uint64(l))
+ }
+ if m.Auth != nil {
+ l = m.Auth.Size()
+ n += 1 + l + sovApi(uint64(l))
+ }
+ if m.SandboxConfig != nil {
+ l = m.SandboxConfig.Size()
+ n += 1 + l + sovApi(uint64(l))
+ }
+ return n
+}
+
+func (m *PullImageResponse) Size() (n int) {
+ var l int
+ _ = l
+ l = len(m.ImageRef)
+ if l > 0 {
+ n += 1 + l + sovApi(uint64(l))
+ }
+ return n
+}
+
+func (m *RemoveImageRequest) Size() (n int) {
+ var l int
+ _ = l
+ if m.Image != nil {
+ l = m.Image.Size()
+ n += 1 + l + sovApi(uint64(l))
+ }
+ return n
+}
+
+func (m *RemoveImageResponse) Size() (n int) {
+ var l int
+ _ = l
+ return n
+}
+
+func (m *NetworkConfig) Size() (n int) {
+ var l int
+ _ = l
+ l = len(m.PodCidr)
+ if l > 0 {
+ n += 1 + l + sovApi(uint64(l))
+ }
+ return n
+}
+
+func (m *RuntimeConfig) Size() (n int) {
+ var l int
+ _ = l
+ if m.NetworkConfig != nil {
+ l = m.NetworkConfig.Size()
+ n += 1 + l + sovApi(uint64(l))
+ }
+ return n
+}
+
+func (m *UpdateRuntimeConfigRequest) Size() (n int) {
+ var l int
+ _ = l
+ if m.RuntimeConfig != nil {
+ l = m.RuntimeConfig.Size()
+ n += 1 + l + sovApi(uint64(l))
+ }
+ return n
+}
+
+func (m *UpdateRuntimeConfigResponse) Size() (n int) {
+ var l int
+ _ = l
+ return n
+}
+
+func (m *RuntimeCondition) Size() (n int) {
+ var l int
+ _ = l
+ l = len(m.Type)
+ if l > 0 {
+ n += 1 + l + sovApi(uint64(l))
+ }
+ if m.Status {
+ n += 2
+ }
+ l = len(m.Reason)
+ if l > 0 {
+ n += 1 + l + sovApi(uint64(l))
+ }
+ l = len(m.Message)
+ if l > 0 {
+ n += 1 + l + sovApi(uint64(l))
+ }
+ return n
+}
+
+func (m *RuntimeStatus) Size() (n int) {
+ var l int
+ _ = l
+ if len(m.Conditions) > 0 {
+ for _, e := range m.Conditions {
+ l = e.Size()
+ n += 1 + l + sovApi(uint64(l))
+ }
+ }
+ return n
+}
+
+func (m *StatusRequest) Size() (n int) {
+ var l int
+ _ = l
+ return n
+}
+
+func (m *StatusResponse) Size() (n int) {
+ var l int
+ _ = l
+ if m.Status != nil {
+ l = m.Status.Size()
+ n += 1 + l + sovApi(uint64(l))
+ }
+ return n
+}
+
+func (m *ImageFsInfoRequest) Size() (n int) {
+ var l int
+ _ = l
+ return n
+}
+
+func (m *UInt64Value) Size() (n int) {
+ var l int
+ _ = l
+ if m.Value != 0 {
+ n += 1 + sovApi(uint64(m.Value))
+ }
+ return n
+}
+
+func (m *StorageIdentifier) Size() (n int) {
+ var l int
+ _ = l
+ l = len(m.Uuid)
+ if l > 0 {
+ n += 1 + l + sovApi(uint64(l))
+ }
+ return n
+}
+
+func (m *FilesystemUsage) Size() (n int) {
+ var l int
+ _ = l
+ if m.Timestamp != 0 {
+ n += 1 + sovApi(uint64(m.Timestamp))
+ }
+ if m.StorageId != nil {
+ l = m.StorageId.Size()
+ n += 1 + l + sovApi(uint64(l))
+ }
+ if m.UsedBytes != nil {
+ l = m.UsedBytes.Size()
+ n += 1 + l + sovApi(uint64(l))
+ }
+ if m.InodesUsed != nil {
+ l = m.InodesUsed.Size()
+ n += 1 + l + sovApi(uint64(l))
+ }
+ return n
+}
+
+func (m *ImageFsInfoResponse) Size() (n int) {
+ var l int
+ _ = l
+ if len(m.ImageFilesystems) > 0 {
+ for _, e := range m.ImageFilesystems {
+ l = e.Size()
+ n += 1 + l + sovApi(uint64(l))
+ }
+ }
+ return n
+}
+
+func (m *ContainerStatsRequest) Size() (n int) {
+ var l int
+ _ = l
+ l = len(m.ContainerId)
+ if l > 0 {
+ n += 1 + l + sovApi(uint64(l))
+ }
+ return n
+}
+
+func (m *ContainerStatsResponse) Size() (n int) {
+ var l int
+ _ = l
+ if m.Stats != nil {
+ l = m.Stats.Size()
+ n += 1 + l + sovApi(uint64(l))
+ }
+ return n
+}
+
+func (m *ListContainerStatsRequest) Size() (n int) {
+ var l int
+ _ = l
+ if m.Filter != nil {
+ l = m.Filter.Size()
+ n += 1 + l + sovApi(uint64(l))
+ }
+ return n
+}
+
+func (m *ContainerStatsFilter) Size() (n int) {
+ var l int
+ _ = l
+ l = len(m.Id)
+ if l > 0 {
+ n += 1 + l + sovApi(uint64(l))
+ }
+ l = len(m.PodSandboxId)
+ if l > 0 {
+ n += 1 + l + sovApi(uint64(l))
+ }
+ if len(m.LabelSelector) > 0 {
+ for k, v := range m.LabelSelector {
+ _ = k
+ _ = v
+ mapEntrySize := 1 + len(k) + sovApi(uint64(len(k))) + 1 + len(v) + sovApi(uint64(len(v)))
+ n += mapEntrySize + 1 + sovApi(uint64(mapEntrySize))
+ }
+ }
+ return n
+}
+
+func (m *ListContainerStatsResponse) Size() (n int) {
+ var l int
+ _ = l
+ if len(m.Stats) > 0 {
+ for _, e := range m.Stats {
+ l = e.Size()
+ n += 1 + l + sovApi(uint64(l))
+ }
+ }
+ return n
+}
+
+func (m *ContainerAttributes) Size() (n int) {
+ var l int
+ _ = l
+ l = len(m.Id)
+ if l > 0 {
+ n += 1 + l + sovApi(uint64(l))
+ }
+ if m.Metadata != nil {
+ l = m.Metadata.Size()
+ n += 1 + l + sovApi(uint64(l))
+ }
+ if len(m.Labels) > 0 {
+ for k, v := range m.Labels {
+ _ = k
+ _ = v
+ mapEntrySize := 1 + len(k) + sovApi(uint64(len(k))) + 1 + len(v) + sovApi(uint64(len(v)))
+ n += mapEntrySize + 1 + sovApi(uint64(mapEntrySize))
+ }
+ }
+ if len(m.Annotations) > 0 {
+ for k, v := range m.Annotations {
+ _ = k
+ _ = v
+ mapEntrySize := 1 + len(k) + sovApi(uint64(len(k))) + 1 + len(v) + sovApi(uint64(len(v)))
+ n += mapEntrySize + 1 + sovApi(uint64(mapEntrySize))
+ }
+ }
+ return n
+}
+
+func (m *ContainerStats) Size() (n int) {
+ var l int
+ _ = l
+ if m.Attributes != nil {
+ l = m.Attributes.Size()
+ n += 1 + l + sovApi(uint64(l))
+ }
+ if m.Cpu != nil {
+ l = m.Cpu.Size()
+ n += 1 + l + sovApi(uint64(l))
+ }
+ if m.Memory != nil {
+ l = m.Memory.Size()
+ n += 1 + l + sovApi(uint64(l))
+ }
+ if m.WritableLayer != nil {
+ l = m.WritableLayer.Size()
+ n += 1 + l + sovApi(uint64(l))
+ }
+ return n
+}
+
+func (m *CpuUsage) Size() (n int) {
+ var l int
+ _ = l
+ if m.Timestamp != 0 {
+ n += 1 + sovApi(uint64(m.Timestamp))
+ }
+ if m.UsageCoreNanoSeconds != nil {
+ l = m.UsageCoreNanoSeconds.Size()
+ n += 1 + l + sovApi(uint64(l))
+ }
+ return n
+}
+
+func (m *MemoryUsage) Size() (n int) {
+ var l int
+ _ = l
+ if m.Timestamp != 0 {
+ n += 1 + sovApi(uint64(m.Timestamp))
+ }
+ if m.WorkingSetBytes != nil {
+ l = m.WorkingSetBytes.Size()
+ n += 1 + l + sovApi(uint64(l))
+ }
+ return n
+}
+
+func sovApi(x uint64) (n int) {
+ for {
+ n++
+ x >>= 7
+ if x == 0 {
+ break
+ }
+ }
+ return n
+}
+func sozApi(x uint64) (n int) {
+ return sovApi(uint64((x << 1) ^ uint64((int64(x) >> 63))))
+}
+func (this *VersionRequest) String() string {
+ if this == nil {
+ return "nil"
+ }
+ s := strings.Join([]string{`&VersionRequest{`,
+ `Version:` + fmt.Sprintf("%v", this.Version) + `,`,
+ `}`,
+ }, "")
+ return s
+}
+func (this *VersionResponse) String() string {
+ if this == nil {
+ return "nil"
+ }
+ s := strings.Join([]string{`&VersionResponse{`,
+ `Version:` + fmt.Sprintf("%v", this.Version) + `,`,
+ `RuntimeName:` + fmt.Sprintf("%v", this.RuntimeName) + `,`,
+ `RuntimeVersion:` + fmt.Sprintf("%v", this.RuntimeVersion) + `,`,
+ `RuntimeApiVersion:` + fmt.Sprintf("%v", this.RuntimeApiVersion) + `,`,
+ `}`,
+ }, "")
+ return s
+}
+func (this *DNSConfig) String() string {
+ if this == nil {
+ return "nil"
+ }
+ s := strings.Join([]string{`&DNSConfig{`,
+ `Servers:` + fmt.Sprintf("%v", this.Servers) + `,`,
+ `Searches:` + fmt.Sprintf("%v", this.Searches) + `,`,
+ `Options:` + fmt.Sprintf("%v", this.Options) + `,`,
+ `}`,
+ }, "")
+ return s
+}
+func (this *PortMapping) String() string {
+ if this == nil {
+ return "nil"
+ }
+ s := strings.Join([]string{`&PortMapping{`,
+ `Protocol:` + fmt.Sprintf("%v", this.Protocol) + `,`,
+ `ContainerPort:` + fmt.Sprintf("%v", this.ContainerPort) + `,`,
+ `HostPort:` + fmt.Sprintf("%v", this.HostPort) + `,`,
+ `HostIp:` + fmt.Sprintf("%v", this.HostIp) + `,`,
+ `}`,
+ }, "")
+ return s
+}
+func (this *Mount) String() string {
+ if this == nil {
+ return "nil"
+ }
+ s := strings.Join([]string{`&Mount{`,
+ `ContainerPath:` + fmt.Sprintf("%v", this.ContainerPath) + `,`,
+ `HostPath:` + fmt.Sprintf("%v", this.HostPath) + `,`,
+ `Readonly:` + fmt.Sprintf("%v", this.Readonly) + `,`,
+ `SelinuxRelabel:` + fmt.Sprintf("%v", this.SelinuxRelabel) + `,`,
+ `}`,
+ }, "")
+ return s
+}
+func (this *NamespaceOption) String() string {
+ if this == nil {
+ return "nil"
+ }
+ s := strings.Join([]string{`&NamespaceOption{`,
+ `HostNetwork:` + fmt.Sprintf("%v", this.HostNetwork) + `,`,
+ `HostPid:` + fmt.Sprintf("%v", this.HostPid) + `,`,
+ `HostIpc:` + fmt.Sprintf("%v", this.HostIpc) + `,`,
+ `}`,
+ }, "")
+ return s
+}
+func (this *Int64Value) String() string {
+ if this == nil {
+ return "nil"
+ }
+ s := strings.Join([]string{`&Int64Value{`,
+ `Value:` + fmt.Sprintf("%v", this.Value) + `,`,
+ `}`,
+ }, "")
+ return s
+}
+func (this *LinuxSandboxSecurityContext) String() string {
+ if this == nil {
+ return "nil"
+ }
+ s := strings.Join([]string{`&LinuxSandboxSecurityContext{`,
+ `NamespaceOptions:` + strings.Replace(fmt.Sprintf("%v", this.NamespaceOptions), "NamespaceOption", "NamespaceOption", 1) + `,`,
+ `SelinuxOptions:` + strings.Replace(fmt.Sprintf("%v", this.SelinuxOptions), "SELinuxOption", "SELinuxOption", 1) + `,`,
+ `RunAsUser:` + strings.Replace(fmt.Sprintf("%v", this.RunAsUser), "Int64Value", "Int64Value", 1) + `,`,
+ `ReadonlyRootfs:` + fmt.Sprintf("%v", this.ReadonlyRootfs) + `,`,
+ `SupplementalGroups:` + fmt.Sprintf("%v", this.SupplementalGroups) + `,`,
+ `Privileged:` + fmt.Sprintf("%v", this.Privileged) + `,`,
+ `}`,
+ }, "")
+ return s
+}
+func (this *LinuxPodSandboxConfig) String() string {
+ if this == nil {
+ return "nil"
+ }
+ keysForSysctls := make([]string, 0, len(this.Sysctls))
+ for k := range this.Sysctls {
+ keysForSysctls = append(keysForSysctls, k)
+ }
+ github_com_gogo_protobuf_sortkeys.Strings(keysForSysctls)
+ mapStringForSysctls := "map[string]string{"
+ for _, k := range keysForSysctls {
+ mapStringForSysctls += fmt.Sprintf("%v: %v,", k, this.Sysctls[k])
+ }
+ mapStringForSysctls += "}"
+ s := strings.Join([]string{`&LinuxPodSandboxConfig{`,
+ `CgroupParent:` + fmt.Sprintf("%v", this.CgroupParent) + `,`,
+ `SecurityContext:` + strings.Replace(fmt.Sprintf("%v", this.SecurityContext), "LinuxSandboxSecurityContext", "LinuxSandboxSecurityContext", 1) + `,`,
+ `Sysctls:` + mapStringForSysctls + `,`,
+ `}`,
+ }, "")
+ return s
+}
+func (this *PodSandboxMetadata) String() string {
+ if this == nil {
+ return "nil"
+ }
+ s := strings.Join([]string{`&PodSandboxMetadata{`,
+ `Name:` + fmt.Sprintf("%v", this.Name) + `,`,
+ `Uid:` + fmt.Sprintf("%v", this.Uid) + `,`,
+ `Namespace:` + fmt.Sprintf("%v", this.Namespace) + `,`,
+ `Attempt:` + fmt.Sprintf("%v", this.Attempt) + `,`,
+ `}`,
+ }, "")
+ return s
+}
+func (this *PodSandboxConfig) String() string {
+ if this == nil {
+ return "nil"
+ }
+ keysForLabels := make([]string, 0, len(this.Labels))
+ for k := range this.Labels {
+ keysForLabels = append(keysForLabels, k)
+ }
+ github_com_gogo_protobuf_sortkeys.Strings(keysForLabels)
+ mapStringForLabels := "map[string]string{"
+ for _, k := range keysForLabels {
+ mapStringForLabels += fmt.Sprintf("%v: %v,", k, this.Labels[k])
+ }
+ mapStringForLabels += "}"
+ keysForAnnotations := make([]string, 0, len(this.Annotations))
+ for k := range this.Annotations {
+ keysForAnnotations = append(keysForAnnotations, k)
+ }
+ github_com_gogo_protobuf_sortkeys.Strings(keysForAnnotations)
+ mapStringForAnnotations := "map[string]string{"
+ for _, k := range keysForAnnotations {
+ mapStringForAnnotations += fmt.Sprintf("%v: %v,", k, this.Annotations[k])
+ }
+ mapStringForAnnotations += "}"
+ s := strings.Join([]string{`&PodSandboxConfig{`,
+ `Metadata:` + strings.Replace(fmt.Sprintf("%v", this.Metadata), "PodSandboxMetadata", "PodSandboxMetadata", 1) + `,`,
+ `Hostname:` + fmt.Sprintf("%v", this.Hostname) + `,`,
+ `LogDirectory:` + fmt.Sprintf("%v", this.LogDirectory) + `,`,
+ `DnsConfig:` + strings.Replace(fmt.Sprintf("%v", this.DnsConfig), "DNSConfig", "DNSConfig", 1) + `,`,
+ `PortMappings:` + strings.Replace(fmt.Sprintf("%v", this.PortMappings), "PortMapping", "PortMapping", 1) + `,`,
+ `Labels:` + mapStringForLabels + `,`,
+ `Annotations:` + mapStringForAnnotations + `,`,
+ `Linux:` + strings.Replace(fmt.Sprintf("%v", this.Linux), "LinuxPodSandboxConfig", "LinuxPodSandboxConfig", 1) + `,`,
+ `}`,
+ }, "")
+ return s
+}
+func (this *RunPodSandboxRequest) String() string {
+ if this == nil {
+ return "nil"
+ }
+ s := strings.Join([]string{`&RunPodSandboxRequest{`,
+ `Config:` + strings.Replace(fmt.Sprintf("%v", this.Config), "PodSandboxConfig", "PodSandboxConfig", 1) + `,`,
+ `}`,
+ }, "")
+ return s
+}
+func (this *RunPodSandboxResponse) String() string {
+ if this == nil {
+ return "nil"
+ }
+ s := strings.Join([]string{`&RunPodSandboxResponse{`,
+ `PodSandboxId:` + fmt.Sprintf("%v", this.PodSandboxId) + `,`,
+ `}`,
+ }, "")
+ return s
+}
+func (this *StopPodSandboxRequest) String() string {
+ if this == nil {
+ return "nil"
+ }
+ s := strings.Join([]string{`&StopPodSandboxRequest{`,
+ `PodSandboxId:` + fmt.Sprintf("%v", this.PodSandboxId) + `,`,
+ `}`,
+ }, "")
+ return s
+}
+func (this *StopPodSandboxResponse) String() string {
+ if this == nil {
+ return "nil"
+ }
+ s := strings.Join([]string{`&StopPodSandboxResponse{`,
+ `}`,
+ }, "")
+ return s
+}
+func (this *RemovePodSandboxRequest) String() string {
+ if this == nil {
+ return "nil"
+ }
+ s := strings.Join([]string{`&RemovePodSandboxRequest{`,
+ `PodSandboxId:` + fmt.Sprintf("%v", this.PodSandboxId) + `,`,
+ `}`,
+ }, "")
+ return s
+}
+func (this *RemovePodSandboxResponse) String() string {
+ if this == nil {
+ return "nil"
+ }
+ s := strings.Join([]string{`&RemovePodSandboxResponse{`,
+ `}`,
+ }, "")
+ return s
+}
+func (this *PodSandboxStatusRequest) String() string {
+ if this == nil {
+ return "nil"
+ }
+ s := strings.Join([]string{`&PodSandboxStatusRequest{`,
+ `PodSandboxId:` + fmt.Sprintf("%v", this.PodSandboxId) + `,`,
+ `}`,
+ }, "")
+ return s
+}
+func (this *PodSandboxNetworkStatus) String() string {
+ if this == nil {
+ return "nil"
+ }
+ s := strings.Join([]string{`&PodSandboxNetworkStatus{`,
+ `Ip:` + fmt.Sprintf("%v", this.Ip) + `,`,
+ `}`,
+ }, "")
+ return s
+}
+func (this *Namespace) String() string {
+ if this == nil {
+ return "nil"
+ }
+ s := strings.Join([]string{`&Namespace{`,
+ `Options:` + strings.Replace(fmt.Sprintf("%v", this.Options), "NamespaceOption", "NamespaceOption", 1) + `,`,
+ `}`,
+ }, "")
+ return s
+}
+func (this *LinuxPodSandboxStatus) String() string {
+ if this == nil {
+ return "nil"
+ }
+ s := strings.Join([]string{`&LinuxPodSandboxStatus{`,
+ `Namespaces:` + strings.Replace(fmt.Sprintf("%v", this.Namespaces), "Namespace", "Namespace", 1) + `,`,
+ `}`,
+ }, "")
+ return s
+}
+func (this *PodSandboxStatus) String() string {
+ if this == nil {
+ return "nil"
+ }
+ keysForLabels := make([]string, 0, len(this.Labels))
+ for k := range this.Labels {
+ keysForLabels = append(keysForLabels, k)
+ }
+ github_com_gogo_protobuf_sortkeys.Strings(keysForLabels)
+ mapStringForLabels := "map[string]string{"
+ for _, k := range keysForLabels {
+ mapStringForLabels += fmt.Sprintf("%v: %v,", k, this.Labels[k])
+ }
+ mapStringForLabels += "}"
+ keysForAnnotations := make([]string, 0, len(this.Annotations))
+ for k := range this.Annotations {
+ keysForAnnotations = append(keysForAnnotations, k)
+ }
+ github_com_gogo_protobuf_sortkeys.Strings(keysForAnnotations)
+ mapStringForAnnotations := "map[string]string{"
+ for _, k := range keysForAnnotations {
+ mapStringForAnnotations += fmt.Sprintf("%v: %v,", k, this.Annotations[k])
+ }
+ mapStringForAnnotations += "}"
+ s := strings.Join([]string{`&PodSandboxStatus{`,
+ `Id:` + fmt.Sprintf("%v", this.Id) + `,`,
+ `Metadata:` + strings.Replace(fmt.Sprintf("%v", this.Metadata), "PodSandboxMetadata", "PodSandboxMetadata", 1) + `,`,
+ `State:` + fmt.Sprintf("%v", this.State) + `,`,
+ `CreatedAt:` + fmt.Sprintf("%v", this.CreatedAt) + `,`,
+ `Network:` + strings.Replace(fmt.Sprintf("%v", this.Network), "PodSandboxNetworkStatus", "PodSandboxNetworkStatus", 1) + `,`,
+ `Linux:` + strings.Replace(fmt.Sprintf("%v", this.Linux), "LinuxPodSandboxStatus", "LinuxPodSandboxStatus", 1) + `,`,
+ `Labels:` + mapStringForLabels + `,`,
+ `Annotations:` + mapStringForAnnotations + `,`,
+ `}`,
+ }, "")
+ return s
+}
+func (this *PodSandboxStatusResponse) String() string {
+ if this == nil {
+ return "nil"
+ }
+ s := strings.Join([]string{`&PodSandboxStatusResponse{`,
+ `Status:` + strings.Replace(fmt.Sprintf("%v", this.Status), "PodSandboxStatus", "PodSandboxStatus", 1) + `,`,
+ `}`,
+ }, "")
+ return s
+}
+func (this *PodSandboxStateValue) String() string {
+ if this == nil {
+ return "nil"
+ }
+ s := strings.Join([]string{`&PodSandboxStateValue{`,
+ `State:` + fmt.Sprintf("%v", this.State) + `,`,
+ `}`,
+ }, "")
+ return s
+}
+func (this *PodSandboxFilter) String() string {
+ if this == nil {
+ return "nil"
+ }
+ keysForLabelSelector := make([]string, 0, len(this.LabelSelector))
+ for k := range this.LabelSelector {
+ keysForLabelSelector = append(keysForLabelSelector, k)
+ }
+ github_com_gogo_protobuf_sortkeys.Strings(keysForLabelSelector)
+ mapStringForLabelSelector := "map[string]string{"
+ for _, k := range keysForLabelSelector {
+ mapStringForLabelSelector += fmt.Sprintf("%v: %v,", k, this.LabelSelector[k])
+ }
+ mapStringForLabelSelector += "}"
+ s := strings.Join([]string{`&PodSandboxFilter{`,
+ `Id:` + fmt.Sprintf("%v", this.Id) + `,`,
+ `State:` + strings.Replace(fmt.Sprintf("%v", this.State), "PodSandboxStateValue", "PodSandboxStateValue", 1) + `,`,
+ `LabelSelector:` + mapStringForLabelSelector + `,`,
+ `}`,
+ }, "")
+ return s
+}
+func (this *ListPodSandboxRequest) String() string {
+ if this == nil {
+ return "nil"
+ }
+ s := strings.Join([]string{`&ListPodSandboxRequest{`,
+ `Filter:` + strings.Replace(fmt.Sprintf("%v", this.Filter), "PodSandboxFilter", "PodSandboxFilter", 1) + `,`,
+ `}`,
+ }, "")
+ return s
+}
+func (this *PodSandbox) String() string {
+ if this == nil {
+ return "nil"
+ }
+ keysForLabels := make([]string, 0, len(this.Labels))
+ for k := range this.Labels {
+ keysForLabels = append(keysForLabels, k)
+ }
+ github_com_gogo_protobuf_sortkeys.Strings(keysForLabels)
+ mapStringForLabels := "map[string]string{"
+ for _, k := range keysForLabels {
+ mapStringForLabels += fmt.Sprintf("%v: %v,", k, this.Labels[k])
+ }
+ mapStringForLabels += "}"
+ keysForAnnotations := make([]string, 0, len(this.Annotations))
+ for k := range this.Annotations {
+ keysForAnnotations = append(keysForAnnotations, k)
+ }
+ github_com_gogo_protobuf_sortkeys.Strings(keysForAnnotations)
+ mapStringForAnnotations := "map[string]string{"
+ for _, k := range keysForAnnotations {
+ mapStringForAnnotations += fmt.Sprintf("%v: %v,", k, this.Annotations[k])
+ }
+ mapStringForAnnotations += "}"
+ s := strings.Join([]string{`&PodSandbox{`,
+ `Id:` + fmt.Sprintf("%v", this.Id) + `,`,
+ `Metadata:` + strings.Replace(fmt.Sprintf("%v", this.Metadata), "PodSandboxMetadata", "PodSandboxMetadata", 1) + `,`,
+ `State:` + fmt.Sprintf("%v", this.State) + `,`,
+ `CreatedAt:` + fmt.Sprintf("%v", this.CreatedAt) + `,`,
+ `Labels:` + mapStringForLabels + `,`,
+ `Annotations:` + mapStringForAnnotations + `,`,
+ `}`,
+ }, "")
+ return s
+}
+func (this *ListPodSandboxResponse) String() string {
+ if this == nil {
+ return "nil"
+ }
+ s := strings.Join([]string{`&ListPodSandboxResponse{`,
+ `Items:` + strings.Replace(fmt.Sprintf("%v", this.Items), "PodSandbox", "PodSandbox", 1) + `,`,
+ `}`,
+ }, "")
+ return s
+}
+func (this *ImageSpec) String() string {
+ if this == nil {
+ return "nil"
+ }
+ s := strings.Join([]string{`&ImageSpec{`,
+ `Image:` + fmt.Sprintf("%v", this.Image) + `,`,
+ `}`,
+ }, "")
+ return s
+}
+func (this *KeyValue) String() string {
+ if this == nil {
+ return "nil"
+ }
+ s := strings.Join([]string{`&KeyValue{`,
+ `Key:` + fmt.Sprintf("%v", this.Key) + `,`,
+ `Value:` + fmt.Sprintf("%v", this.Value) + `,`,
+ `}`,
+ }, "")
+ return s
+}
+func (this *LinuxContainerResources) String() string {
+ if this == nil {
+ return "nil"
+ }
+ s := strings.Join([]string{`&LinuxContainerResources{`,
+ `CpuPeriod:` + fmt.Sprintf("%v", this.CpuPeriod) + `,`,
+ `CpuQuota:` + fmt.Sprintf("%v", this.CpuQuota) + `,`,
+ `CpuShares:` + fmt.Sprintf("%v", this.CpuShares) + `,`,
+ `MemoryLimitInBytes:` + fmt.Sprintf("%v", this.MemoryLimitInBytes) + `,`,
+ `OomScoreAdj:` + fmt.Sprintf("%v", this.OomScoreAdj) + `,`,
+ `}`,
+ }, "")
+ return s
+}
+func (this *SELinuxOption) String() string {
+ if this == nil {
+ return "nil"
+ }
+ s := strings.Join([]string{`&SELinuxOption{`,
+ `User:` + fmt.Sprintf("%v", this.User) + `,`,
+ `Role:` + fmt.Sprintf("%v", this.Role) + `,`,
+ `Type:` + fmt.Sprintf("%v", this.Type) + `,`,
+ `Level:` + fmt.Sprintf("%v", this.Level) + `,`,
+ `}`,
+ }, "")
+ return s
+}
+func (this *Capability) String() string {
+ if this == nil {
+ return "nil"
+ }
+ s := strings.Join([]string{`&Capability{`,
+ `AddCapabilities:` + fmt.Sprintf("%v", this.AddCapabilities) + `,`,
+ `DropCapabilities:` + fmt.Sprintf("%v", this.DropCapabilities) + `,`,
+ `}`,
+ }, "")
+ return s
+}
+func (this *LinuxContainerSecurityContext) String() string {
+ if this == nil {
+ return "nil"
+ }
+ s := strings.Join([]string{`&LinuxContainerSecurityContext{`,
+ `Capabilities:` + strings.Replace(fmt.Sprintf("%v", this.Capabilities), "Capability", "Capability", 1) + `,`,
+ `Privileged:` + fmt.Sprintf("%v", this.Privileged) + `,`,
+ `NamespaceOptions:` + strings.Replace(fmt.Sprintf("%v", this.NamespaceOptions), "NamespaceOption", "NamespaceOption", 1) + `,`,
+ `SelinuxOptions:` + strings.Replace(fmt.Sprintf("%v", this.SelinuxOptions), "SELinuxOption", "SELinuxOption", 1) + `,`,
+ `RunAsUser:` + strings.Replace(fmt.Sprintf("%v", this.RunAsUser), "Int64Value", "Int64Value", 1) + `,`,
+ `RunAsUsername:` + fmt.Sprintf("%v", this.RunAsUsername) + `,`,
+ `ReadonlyRootfs:` + fmt.Sprintf("%v", this.ReadonlyRootfs) + `,`,
+ `SupplementalGroups:` + fmt.Sprintf("%v", this.SupplementalGroups) + `,`,
+ `ApparmorProfile:` + fmt.Sprintf("%v", this.ApparmorProfile) + `,`,
+ `}`,
+ }, "")
+ return s
+}
+func (this *LinuxContainerConfig) String() string {
+ if this == nil {
+ return "nil"
+ }
+ s := strings.Join([]string{`&LinuxContainerConfig{`,
+ `Resources:` + strings.Replace(fmt.Sprintf("%v", this.Resources), "LinuxContainerResources", "LinuxContainerResources", 1) + `,`,
+ `SecurityContext:` + strings.Replace(fmt.Sprintf("%v", this.SecurityContext), "LinuxContainerSecurityContext", "LinuxContainerSecurityContext", 1) + `,`,
+ `}`,
+ }, "")
+ return s
+}
+func (this *ContainerMetadata) String() string {
+ if this == nil {
+ return "nil"
+ }
+ s := strings.Join([]string{`&ContainerMetadata{`,
+ `Name:` + fmt.Sprintf("%v", this.Name) + `,`,
+ `Attempt:` + fmt.Sprintf("%v", this.Attempt) + `,`,
+ `}`,
+ }, "")
+ return s
+}
+func (this *Device) String() string {
+ if this == nil {
+ return "nil"
+ }
+ s := strings.Join([]string{`&Device{`,
+ `ContainerPath:` + fmt.Sprintf("%v", this.ContainerPath) + `,`,
+ `HostPath:` + fmt.Sprintf("%v", this.HostPath) + `,`,
+ `Permissions:` + fmt.Sprintf("%v", this.Permissions) + `,`,
+ `}`,
+ }, "")
+ return s
+}
+func (this *ContainerConfig) String() string {
+ if this == nil {
+ return "nil"
+ }
+ keysForLabels := make([]string, 0, len(this.Labels))
+ for k := range this.Labels {
+ keysForLabels = append(keysForLabels, k)
+ }
+ github_com_gogo_protobuf_sortkeys.Strings(keysForLabels)
+ mapStringForLabels := "map[string]string{"
+ for _, k := range keysForLabels {
+ mapStringForLabels += fmt.Sprintf("%v: %v,", k, this.Labels[k])
+ }
+ mapStringForLabels += "}"
+ keysForAnnotations := make([]string, 0, len(this.Annotations))
+ for k := range this.Annotations {
+ keysForAnnotations = append(keysForAnnotations, k)
+ }
+ github_com_gogo_protobuf_sortkeys.Strings(keysForAnnotations)
+ mapStringForAnnotations := "map[string]string{"
+ for _, k := range keysForAnnotations {
+ mapStringForAnnotations += fmt.Sprintf("%v: %v,", k, this.Annotations[k])
+ }
+ mapStringForAnnotations += "}"
+ s := strings.Join([]string{`&ContainerConfig{`,
+ `Metadata:` + strings.Replace(fmt.Sprintf("%v", this.Metadata), "ContainerMetadata", "ContainerMetadata", 1) + `,`,
+ `Image:` + strings.Replace(fmt.Sprintf("%v", this.Image), "ImageSpec", "ImageSpec", 1) + `,`,
+ `Command:` + fmt.Sprintf("%v", this.Command) + `,`,
+ `Args:` + fmt.Sprintf("%v", this.Args) + `,`,
+ `WorkingDir:` + fmt.Sprintf("%v", this.WorkingDir) + `,`,
+ `Envs:` + strings.Replace(fmt.Sprintf("%v", this.Envs), "KeyValue", "KeyValue", 1) + `,`,
+ `Mounts:` + strings.Replace(fmt.Sprintf("%v", this.Mounts), "Mount", "Mount", 1) + `,`,
+ `Devices:` + strings.Replace(fmt.Sprintf("%v", this.Devices), "Device", "Device", 1) + `,`,
+ `Labels:` + mapStringForLabels + `,`,
+ `Annotations:` + mapStringForAnnotations + `,`,
+ `LogPath:` + fmt.Sprintf("%v", this.LogPath) + `,`,
+ `Stdin:` + fmt.Sprintf("%v", this.Stdin) + `,`,
+ `StdinOnce:` + fmt.Sprintf("%v", this.StdinOnce) + `,`,
+ `Tty:` + fmt.Sprintf("%v", this.Tty) + `,`,
+ `Linux:` + strings.Replace(fmt.Sprintf("%v", this.Linux), "LinuxContainerConfig", "LinuxContainerConfig", 1) + `,`,
+ `}`,
+ }, "")
+ return s
+}
+func (this *CreateContainerRequest) String() string {
+ if this == nil {
+ return "nil"
+ }
+ s := strings.Join([]string{`&CreateContainerRequest{`,
+ `PodSandboxId:` + fmt.Sprintf("%v", this.PodSandboxId) + `,`,
+ `Config:` + strings.Replace(fmt.Sprintf("%v", this.Config), "ContainerConfig", "ContainerConfig", 1) + `,`,
+ `SandboxConfig:` + strings.Replace(fmt.Sprintf("%v", this.SandboxConfig), "PodSandboxConfig", "PodSandboxConfig", 1) + `,`,
+ `}`,
+ }, "")
+ return s
+}
+func (this *CreateContainerResponse) String() string {
+ if this == nil {
+ return "nil"
+ }
+ s := strings.Join([]string{`&CreateContainerResponse{`,
+ `ContainerId:` + fmt.Sprintf("%v", this.ContainerId) + `,`,
+ `}`,
+ }, "")
+ return s
+}
+func (this *StartContainerRequest) String() string {
+ if this == nil {
+ return "nil"
+ }
+ s := strings.Join([]string{`&StartContainerRequest{`,
+ `ContainerId:` + fmt.Sprintf("%v", this.ContainerId) + `,`,
+ `}`,
+ }, "")
+ return s
+}
+func (this *StartContainerResponse) String() string {
+ if this == nil {
+ return "nil"
+ }
+ s := strings.Join([]string{`&StartContainerResponse{`,
+ `}`,
+ }, "")
+ return s
+}
+func (this *StopContainerRequest) String() string {
+ if this == nil {
+ return "nil"
+ }
+ s := strings.Join([]string{`&StopContainerRequest{`,
+ `ContainerId:` + fmt.Sprintf("%v", this.ContainerId) + `,`,
+ `Timeout:` + fmt.Sprintf("%v", this.Timeout) + `,`,
+ `}`,
+ }, "")
+ return s
+}
+func (this *StopContainerResponse) String() string {
+ if this == nil {
+ return "nil"
+ }
+ s := strings.Join([]string{`&StopContainerResponse{`,
+ `}`,
+ }, "")
+ return s
+}
+func (this *RemoveContainerRequest) String() string {
+ if this == nil {
+ return "nil"
+ }
+ s := strings.Join([]string{`&RemoveContainerRequest{`,
+ `ContainerId:` + fmt.Sprintf("%v", this.ContainerId) + `,`,
+ `}`,
+ }, "")
+ return s
+}
+func (this *RemoveContainerResponse) String() string {
+ if this == nil {
+ return "nil"
+ }
+ s := strings.Join([]string{`&RemoveContainerResponse{`,
+ `}`,
+ }, "")
+ return s
+}
+func (this *ContainerStateValue) String() string {
+ if this == nil {
+ return "nil"
+ }
+ s := strings.Join([]string{`&ContainerStateValue{`,
+ `State:` + fmt.Sprintf("%v", this.State) + `,`,
+ `}`,
+ }, "")
+ return s
+}
+func (this *ContainerFilter) String() string {
+ if this == nil {
+ return "nil"
+ }
+ keysForLabelSelector := make([]string, 0, len(this.LabelSelector))
+ for k := range this.LabelSelector {
+ keysForLabelSelector = append(keysForLabelSelector, k)
+ }
+ github_com_gogo_protobuf_sortkeys.Strings(keysForLabelSelector)
+ mapStringForLabelSelector := "map[string]string{"
+ for _, k := range keysForLabelSelector {
+ mapStringForLabelSelector += fmt.Sprintf("%v: %v,", k, this.LabelSelector[k])
+ }
+ mapStringForLabelSelector += "}"
+ s := strings.Join([]string{`&ContainerFilter{`,
+ `Id:` + fmt.Sprintf("%v", this.Id) + `,`,
+ `State:` + strings.Replace(fmt.Sprintf("%v", this.State), "ContainerStateValue", "ContainerStateValue", 1) + `,`,
+ `PodSandboxId:` + fmt.Sprintf("%v", this.PodSandboxId) + `,`,
+ `LabelSelector:` + mapStringForLabelSelector + `,`,
+ `}`,
+ }, "")
+ return s
+}
+func (this *ListContainersRequest) String() string {
+ if this == nil {
+ return "nil"
+ }
+ s := strings.Join([]string{`&ListContainersRequest{`,
+ `Filter:` + strings.Replace(fmt.Sprintf("%v", this.Filter), "ContainerFilter", "ContainerFilter", 1) + `,`,
+ `}`,
+ }, "")
+ return s
+}
+func (this *Container) String() string {
+ if this == nil {
+ return "nil"
+ }
+ keysForLabels := make([]string, 0, len(this.Labels))
+ for k := range this.Labels {
+ keysForLabels = append(keysForLabels, k)
+ }
+ github_com_gogo_protobuf_sortkeys.Strings(keysForLabels)
+ mapStringForLabels := "map[string]string{"
+ for _, k := range keysForLabels {
+ mapStringForLabels += fmt.Sprintf("%v: %v,", k, this.Labels[k])
+ }
+ mapStringForLabels += "}"
+ keysForAnnotations := make([]string, 0, len(this.Annotations))
+ for k := range this.Annotations {
+ keysForAnnotations = append(keysForAnnotations, k)
+ }
+ github_com_gogo_protobuf_sortkeys.Strings(keysForAnnotations)
+ mapStringForAnnotations := "map[string]string{"
+ for _, k := range keysForAnnotations {
+ mapStringForAnnotations += fmt.Sprintf("%v: %v,", k, this.Annotations[k])
+ }
+ mapStringForAnnotations += "}"
+ s := strings.Join([]string{`&Container{`,
+ `Id:` + fmt.Sprintf("%v", this.Id) + `,`,
+ `PodSandboxId:` + fmt.Sprintf("%v", this.PodSandboxId) + `,`,
+ `Metadata:` + strings.Replace(fmt.Sprintf("%v", this.Metadata), "ContainerMetadata", "ContainerMetadata", 1) + `,`,
+ `Image:` + strings.Replace(fmt.Sprintf("%v", this.Image), "ImageSpec", "ImageSpec", 1) + `,`,
+ `ImageRef:` + fmt.Sprintf("%v", this.ImageRef) + `,`,
+ `State:` + fmt.Sprintf("%v", this.State) + `,`,
+ `CreatedAt:` + fmt.Sprintf("%v", this.CreatedAt) + `,`,
+ `Labels:` + mapStringForLabels + `,`,
+ `Annotations:` + mapStringForAnnotations + `,`,
+ `}`,
+ }, "")
+ return s
+}
+func (this *ListContainersResponse) String() string {
+ if this == nil {
+ return "nil"
+ }
+ s := strings.Join([]string{`&ListContainersResponse{`,
+ `Containers:` + strings.Replace(fmt.Sprintf("%v", this.Containers), "Container", "Container", 1) + `,`,
+ `}`,
+ }, "")
+ return s
+}
+func (this *ContainerStatusRequest) String() string {
+ if this == nil {
+ return "nil"
+ }
+ s := strings.Join([]string{`&ContainerStatusRequest{`,
+ `ContainerId:` + fmt.Sprintf("%v", this.ContainerId) + `,`,
+ `}`,
+ }, "")
+ return s
+}
+func (this *ContainerStatus) String() string {
+ if this == nil {
+ return "nil"
+ }
+ keysForLabels := make([]string, 0, len(this.Labels))
+ for k := range this.Labels {
+ keysForLabels = append(keysForLabels, k)
+ }
+ github_com_gogo_protobuf_sortkeys.Strings(keysForLabels)
+ mapStringForLabels := "map[string]string{"
+ for _, k := range keysForLabels {
+ mapStringForLabels += fmt.Sprintf("%v: %v,", k, this.Labels[k])
+ }
+ mapStringForLabels += "}"
+ keysForAnnotations := make([]string, 0, len(this.Annotations))
+ for k := range this.Annotations {
+ keysForAnnotations = append(keysForAnnotations, k)
+ }
+ github_com_gogo_protobuf_sortkeys.Strings(keysForAnnotations)
+ mapStringForAnnotations := "map[string]string{"
+ for _, k := range keysForAnnotations {
+ mapStringForAnnotations += fmt.Sprintf("%v: %v,", k, this.Annotations[k])
+ }
+ mapStringForAnnotations += "}"
+ s := strings.Join([]string{`&ContainerStatus{`,
+ `Id:` + fmt.Sprintf("%v", this.Id) + `,`,
+ `Metadata:` + strings.Replace(fmt.Sprintf("%v", this.Metadata), "ContainerMetadata", "ContainerMetadata", 1) + `,`,
+ `State:` + fmt.Sprintf("%v", this.State) + `,`,
+ `CreatedAt:` + fmt.Sprintf("%v", this.CreatedAt) + `,`,
+ `StartedAt:` + fmt.Sprintf("%v", this.StartedAt) + `,`,
+ `FinishedAt:` + fmt.Sprintf("%v", this.FinishedAt) + `,`,
+ `ExitCode:` + fmt.Sprintf("%v", this.ExitCode) + `,`,
+ `Image:` + strings.Replace(fmt.Sprintf("%v", this.Image), "ImageSpec", "ImageSpec", 1) + `,`,
+ `ImageRef:` + fmt.Sprintf("%v", this.ImageRef) + `,`,
+ `Reason:` + fmt.Sprintf("%v", this.Reason) + `,`,
+ `Message:` + fmt.Sprintf("%v", this.Message) + `,`,
+ `Labels:` + mapStringForLabels + `,`,
+ `Annotations:` + mapStringForAnnotations + `,`,
+ `Mounts:` + strings.Replace(fmt.Sprintf("%v", this.Mounts), "Mount", "Mount", 1) + `,`,
+ `LogPath:` + fmt.Sprintf("%v", this.LogPath) + `,`,
+ `}`,
+ }, "")
+ return s
+}
+func (this *ContainerStatusResponse) String() string {
+ if this == nil {
+ return "nil"
+ }
+ s := strings.Join([]string{`&ContainerStatusResponse{`,
+ `Status:` + strings.Replace(fmt.Sprintf("%v", this.Status), "ContainerStatus", "ContainerStatus", 1) + `,`,
+ `}`,
+ }, "")
+ return s
+}
+func (this *ExecSyncRequest) String() string {
+ if this == nil {
+ return "nil"
+ }
+ s := strings.Join([]string{`&ExecSyncRequest{`,
+ `ContainerId:` + fmt.Sprintf("%v", this.ContainerId) + `,`,
+ `Cmd:` + fmt.Sprintf("%v", this.Cmd) + `,`,
+ `Timeout:` + fmt.Sprintf("%v", this.Timeout) + `,`,
+ `}`,
+ }, "")
+ return s
+}
+func (this *ExecSyncResponse) String() string {
+ if this == nil {
+ return "nil"
+ }
+ s := strings.Join([]string{`&ExecSyncResponse{`,
+ `Stdout:` + fmt.Sprintf("%v", this.Stdout) + `,`,
+ `Stderr:` + fmt.Sprintf("%v", this.Stderr) + `,`,
+ `ExitCode:` + fmt.Sprintf("%v", this.ExitCode) + `,`,
+ `}`,
+ }, "")
+ return s
+}
+func (this *ExecRequest) String() string {
+ if this == nil {
+ return "nil"
+ }
+ s := strings.Join([]string{`&ExecRequest{`,
+ `ContainerId:` + fmt.Sprintf("%v", this.ContainerId) + `,`,
+ `Cmd:` + fmt.Sprintf("%v", this.Cmd) + `,`,
+ `Tty:` + fmt.Sprintf("%v", this.Tty) + `,`,
+ `Stdin:` + fmt.Sprintf("%v", this.Stdin) + `,`,
+ `}`,
+ }, "")
+ return s
+}
+func (this *ExecResponse) String() string {
+ if this == nil {
+ return "nil"
+ }
+ s := strings.Join([]string{`&ExecResponse{`,
+ `Url:` + fmt.Sprintf("%v", this.Url) + `,`,
+ `}`,
+ }, "")
+ return s
+}
+func (this *AttachRequest) String() string {
+ if this == nil {
+ return "nil"
+ }
+ s := strings.Join([]string{`&AttachRequest{`,
+ `ContainerId:` + fmt.Sprintf("%v", this.ContainerId) + `,`,
+ `Stdin:` + fmt.Sprintf("%v", this.Stdin) + `,`,
+ `Tty:` + fmt.Sprintf("%v", this.Tty) + `,`,
+ `}`,
+ }, "")
+ return s
+}
+func (this *AttachResponse) String() string {
+ if this == nil {
+ return "nil"
+ }
+ s := strings.Join([]string{`&AttachResponse{`,
+ `Url:` + fmt.Sprintf("%v", this.Url) + `,`,
+ `}`,
+ }, "")
+ return s
+}
+func (this *PortForwardRequest) String() string {
+ if this == nil {
+ return "nil"
+ }
+ s := strings.Join([]string{`&PortForwardRequest{`,
+ `PodSandboxId:` + fmt.Sprintf("%v", this.PodSandboxId) + `,`,
+ `Port:` + fmt.Sprintf("%v", this.Port) + `,`,
+ `}`,
+ }, "")
+ return s
+}
+func (this *PortForwardResponse) String() string {
+ if this == nil {
+ return "nil"
+ }
+ s := strings.Join([]string{`&PortForwardResponse{`,
+ `Url:` + fmt.Sprintf("%v", this.Url) + `,`,
+ `}`,
+ }, "")
+ return s
+}
+func (this *ImageFilter) String() string {
+ if this == nil {
+ return "nil"
+ }
+ s := strings.Join([]string{`&ImageFilter{`,
+ `Image:` + strings.Replace(fmt.Sprintf("%v", this.Image), "ImageSpec", "ImageSpec", 1) + `,`,
+ `}`,
+ }, "")
+ return s
+}
+func (this *ListImagesRequest) String() string {
+ if this == nil {
+ return "nil"
+ }
+ s := strings.Join([]string{`&ListImagesRequest{`,
+ `Filter:` + strings.Replace(fmt.Sprintf("%v", this.Filter), "ImageFilter", "ImageFilter", 1) + `,`,
+ `}`,
+ }, "")
+ return s
+}
+func (this *Image) String() string {
+ if this == nil {
+ return "nil"
+ }
+ s := strings.Join([]string{`&Image{`,
+ `Id:` + fmt.Sprintf("%v", this.Id) + `,`,
+ `RepoTags:` + fmt.Sprintf("%v", this.RepoTags) + `,`,
+ `RepoDigests:` + fmt.Sprintf("%v", this.RepoDigests) + `,`,
+ `Size_:` + fmt.Sprintf("%v", this.Size_) + `,`,
+ `Uid:` + strings.Replace(fmt.Sprintf("%v", this.Uid), "Int64Value", "Int64Value", 1) + `,`,
+ `Username:` + fmt.Sprintf("%v", this.Username) + `,`,
+ `}`,
+ }, "")
+ return s
+}
+func (this *ListImagesResponse) String() string {
+ if this == nil {
+ return "nil"
+ }
+ s := strings.Join([]string{`&ListImagesResponse{`,
+ `Images:` + strings.Replace(fmt.Sprintf("%v", this.Images), "Image", "Image", 1) + `,`,
+ `}`,
+ }, "")
+ return s
+}
+func (this *ImageStatusRequest) String() string {
+ if this == nil {
+ return "nil"
+ }
+ s := strings.Join([]string{`&ImageStatusRequest{`,
+ `Image:` + strings.Replace(fmt.Sprintf("%v", this.Image), "ImageSpec", "ImageSpec", 1) + `,`,
+ `}`,
+ }, "")
+ return s
+}
+func (this *ImageStatusResponse) String() string {
+ if this == nil {
+ return "nil"
+ }
+ s := strings.Join([]string{`&ImageStatusResponse{`,
+ `Image:` + strings.Replace(fmt.Sprintf("%v", this.Image), "Image", "Image", 1) + `,`,
+ `}`,
+ }, "")
+ return s
+}
+func (this *AuthConfig) String() string {
+ if this == nil {
+ return "nil"
+ }
+ s := strings.Join([]string{`&AuthConfig{`,
+ `Username:` + fmt.Sprintf("%v", this.Username) + `,`,
+ `Password:` + fmt.Sprintf("%v", this.Password) + `,`,
+ `Auth:` + fmt.Sprintf("%v", this.Auth) + `,`,
+ `ServerAddress:` + fmt.Sprintf("%v", this.ServerAddress) + `,`,
+ `IdentityToken:` + fmt.Sprintf("%v", this.IdentityToken) + `,`,
+ `RegistryToken:` + fmt.Sprintf("%v", this.RegistryToken) + `,`,
+ `}`,
+ }, "")
+ return s
+}
+func (this *PullImageRequest) String() string {
+ if this == nil {
+ return "nil"
+ }
+ s := strings.Join([]string{`&PullImageRequest{`,
+ `Image:` + strings.Replace(fmt.Sprintf("%v", this.Image), "ImageSpec", "ImageSpec", 1) + `,`,
+ `Auth:` + strings.Replace(fmt.Sprintf("%v", this.Auth), "AuthConfig", "AuthConfig", 1) + `,`,
+ `SandboxConfig:` + strings.Replace(fmt.Sprintf("%v", this.SandboxConfig), "PodSandboxConfig", "PodSandboxConfig", 1) + `,`,
+ `}`,
+ }, "")
+ return s
+}
+func (this *PullImageResponse) String() string {
+ if this == nil {
+ return "nil"
+ }
+ s := strings.Join([]string{`&PullImageResponse{`,
+ `ImageRef:` + fmt.Sprintf("%v", this.ImageRef) + `,`,
+ `}`,
+ }, "")
+ return s
+}
+func (this *RemoveImageRequest) String() string {
+ if this == nil {
+ return "nil"
+ }
+ s := strings.Join([]string{`&RemoveImageRequest{`,
+ `Image:` + strings.Replace(fmt.Sprintf("%v", this.Image), "ImageSpec", "ImageSpec", 1) + `,`,
+ `}`,
+ }, "")
+ return s
+}
+func (this *RemoveImageResponse) String() string {
+ if this == nil {
+ return "nil"
+ }
+ s := strings.Join([]string{`&RemoveImageResponse{`,
+ `}`,
+ }, "")
+ return s
+}
+func (this *NetworkConfig) String() string {
+ if this == nil {
+ return "nil"
+ }
+ s := strings.Join([]string{`&NetworkConfig{`,
+ `PodCidr:` + fmt.Sprintf("%v", this.PodCidr) + `,`,
+ `}`,
+ }, "")
+ return s
+}
+func (this *RuntimeConfig) String() string {
+ if this == nil {
+ return "nil"
+ }
+ s := strings.Join([]string{`&RuntimeConfig{`,
+ `NetworkConfig:` + strings.Replace(fmt.Sprintf("%v", this.NetworkConfig), "NetworkConfig", "NetworkConfig", 1) + `,`,
+ `}`,
+ }, "")
+ return s
+}
+func (this *UpdateRuntimeConfigRequest) String() string {
+ if this == nil {
+ return "nil"
+ }
+ s := strings.Join([]string{`&UpdateRuntimeConfigRequest{`,
+ `RuntimeConfig:` + strings.Replace(fmt.Sprintf("%v", this.RuntimeConfig), "RuntimeConfig", "RuntimeConfig", 1) + `,`,
+ `}`,
+ }, "")
+ return s
+}
+func (this *UpdateRuntimeConfigResponse) String() string {
+ if this == nil {
+ return "nil"
+ }
+ s := strings.Join([]string{`&UpdateRuntimeConfigResponse{`,
+ `}`,
+ }, "")
+ return s
+}
+func (this *RuntimeCondition) String() string {
+ if this == nil {
+ return "nil"
+ }
+ s := strings.Join([]string{`&RuntimeCondition{`,
+ `Type:` + fmt.Sprintf("%v", this.Type) + `,`,
+ `Status:` + fmt.Sprintf("%v", this.Status) + `,`,
+ `Reason:` + fmt.Sprintf("%v", this.Reason) + `,`,
+ `Message:` + fmt.Sprintf("%v", this.Message) + `,`,
+ `}`,
+ }, "")
+ return s
+}
+func (this *RuntimeStatus) String() string {
+ if this == nil {
+ return "nil"
+ }
+ s := strings.Join([]string{`&RuntimeStatus{`,
+ `Conditions:` + strings.Replace(fmt.Sprintf("%v", this.Conditions), "RuntimeCondition", "RuntimeCondition", 1) + `,`,
+ `}`,
+ }, "")
+ return s
+}
+func (this *StatusRequest) String() string {
+ if this == nil {
+ return "nil"
+ }
+ s := strings.Join([]string{`&StatusRequest{`,
+ `}`,
+ }, "")
+ return s
+}
+func (this *StatusResponse) String() string {
+ if this == nil {
+ return "nil"
+ }
+ s := strings.Join([]string{`&StatusResponse{`,
+ `Status:` + strings.Replace(fmt.Sprintf("%v", this.Status), "RuntimeStatus", "RuntimeStatus", 1) + `,`,
+ `}`,
+ }, "")
+ return s
+}
+func (this *ImageFsInfoRequest) String() string {
+ if this == nil {
+ return "nil"
+ }
+ s := strings.Join([]string{`&ImageFsInfoRequest{`,
+ `}`,
+ }, "")
+ return s
+}
+func (this *UInt64Value) String() string {
+ if this == nil {
+ return "nil"
+ }
+ s := strings.Join([]string{`&UInt64Value{`,
+ `Value:` + fmt.Sprintf("%v", this.Value) + `,`,
+ `}`,
+ }, "")
+ return s
+}
+func (this *StorageIdentifier) String() string {
+ if this == nil {
+ return "nil"
+ }
+ s := strings.Join([]string{`&StorageIdentifier{`,
+ `Uuid:` + fmt.Sprintf("%v", this.Uuid) + `,`,
+ `}`,
+ }, "")
+ return s
+}
+func (this *FilesystemUsage) String() string {
+ if this == nil {
+ return "nil"
+ }
+ s := strings.Join([]string{`&FilesystemUsage{`,
+ `Timestamp:` + fmt.Sprintf("%v", this.Timestamp) + `,`,
+ `StorageId:` + strings.Replace(fmt.Sprintf("%v", this.StorageId), "StorageIdentifier", "StorageIdentifier", 1) + `,`,
+ `UsedBytes:` + strings.Replace(fmt.Sprintf("%v", this.UsedBytes), "UInt64Value", "UInt64Value", 1) + `,`,
+ `InodesUsed:` + strings.Replace(fmt.Sprintf("%v", this.InodesUsed), "UInt64Value", "UInt64Value", 1) + `,`,
+ `}`,
+ }, "")
+ return s
+}
+func (this *ImageFsInfoResponse) String() string {
+ if this == nil {
+ return "nil"
+ }
+ s := strings.Join([]string{`&ImageFsInfoResponse{`,
+ `ImageFilesystems:` + strings.Replace(fmt.Sprintf("%v", this.ImageFilesystems), "FilesystemUsage", "FilesystemUsage", 1) + `,`,
+ `}`,
+ }, "")
+ return s
+}
+func (this *ContainerStatsRequest) String() string {
+ if this == nil {
+ return "nil"
+ }
+ s := strings.Join([]string{`&ContainerStatsRequest{`,
+ `ContainerId:` + fmt.Sprintf("%v", this.ContainerId) + `,`,
+ `}`,
+ }, "")
+ return s
+}
+func (this *ContainerStatsResponse) String() string {
+ if this == nil {
+ return "nil"
+ }
+ s := strings.Join([]string{`&ContainerStatsResponse{`,
+ `Stats:` + strings.Replace(fmt.Sprintf("%v", this.Stats), "ContainerStats", "ContainerStats", 1) + `,`,
+ `}`,
+ }, "")
+ return s
+}
+func (this *ListContainerStatsRequest) String() string {
+ if this == nil {
+ return "nil"
+ }
+ s := strings.Join([]string{`&ListContainerStatsRequest{`,
+ `Filter:` + strings.Replace(fmt.Sprintf("%v", this.Filter), "ContainerStatsFilter", "ContainerStatsFilter", 1) + `,`,
+ `}`,
+ }, "")
+ return s
+}
+func (this *ContainerStatsFilter) String() string {
+ if this == nil {
+ return "nil"
+ }
+ keysForLabelSelector := make([]string, 0, len(this.LabelSelector))
+ for k := range this.LabelSelector {
+ keysForLabelSelector = append(keysForLabelSelector, k)
+ }
+ github_com_gogo_protobuf_sortkeys.Strings(keysForLabelSelector)
+ mapStringForLabelSelector := "map[string]string{"
+ for _, k := range keysForLabelSelector {
+ mapStringForLabelSelector += fmt.Sprintf("%v: %v,", k, this.LabelSelector[k])
+ }
+ mapStringForLabelSelector += "}"
+ s := strings.Join([]string{`&ContainerStatsFilter{`,
+ `Id:` + fmt.Sprintf("%v", this.Id) + `,`,
+ `PodSandboxId:` + fmt.Sprintf("%v", this.PodSandboxId) + `,`,
+ `LabelSelector:` + mapStringForLabelSelector + `,`,
+ `}`,
+ }, "")
+ return s
+}
+func (this *ListContainerStatsResponse) String() string {
+ if this == nil {
+ return "nil"
+ }
+ s := strings.Join([]string{`&ListContainerStatsResponse{`,
+ `Stats:` + strings.Replace(fmt.Sprintf("%v", this.Stats), "ContainerStats", "ContainerStats", 1) + `,`,
+ `}`,
+ }, "")
+ return s
+}
+func (this *ContainerAttributes) String() string {
+ if this == nil {
+ return "nil"
+ }
+ keysForLabels := make([]string, 0, len(this.Labels))
+ for k := range this.Labels {
+ keysForLabels = append(keysForLabels, k)
+ }
+ github_com_gogo_protobuf_sortkeys.Strings(keysForLabels)
+ mapStringForLabels := "map[string]string{"
+ for _, k := range keysForLabels {
+ mapStringForLabels += fmt.Sprintf("%v: %v,", k, this.Labels[k])
+ }
+ mapStringForLabels += "}"
+ keysForAnnotations := make([]string, 0, len(this.Annotations))
+ for k := range this.Annotations {
+ keysForAnnotations = append(keysForAnnotations, k)
+ }
+ github_com_gogo_protobuf_sortkeys.Strings(keysForAnnotations)
+ mapStringForAnnotations := "map[string]string{"
+ for _, k := range keysForAnnotations {
+ mapStringForAnnotations += fmt.Sprintf("%v: %v,", k, this.Annotations[k])
+ }
+ mapStringForAnnotations += "}"
+ s := strings.Join([]string{`&ContainerAttributes{`,
+ `Id:` + fmt.Sprintf("%v", this.Id) + `,`,
+ `Metadata:` + strings.Replace(fmt.Sprintf("%v", this.Metadata), "ContainerMetadata", "ContainerMetadata", 1) + `,`,
+ `Labels:` + mapStringForLabels + `,`,
+ `Annotations:` + mapStringForAnnotations + `,`,
+ `}`,
+ }, "")
+ return s
+}
+func (this *ContainerStats) String() string {
+ if this == nil {
+ return "nil"
+ }
+ s := strings.Join([]string{`&ContainerStats{`,
+ `Attributes:` + strings.Replace(fmt.Sprintf("%v", this.Attributes), "ContainerAttributes", "ContainerAttributes", 1) + `,`,
+ `Cpu:` + strings.Replace(fmt.Sprintf("%v", this.Cpu), "CpuUsage", "CpuUsage", 1) + `,`,
+ `Memory:` + strings.Replace(fmt.Sprintf("%v", this.Memory), "MemoryUsage", "MemoryUsage", 1) + `,`,
+ `WritableLayer:` + strings.Replace(fmt.Sprintf("%v", this.WritableLayer), "FilesystemUsage", "FilesystemUsage", 1) + `,`,
+ `}`,
+ }, "")
+ return s
+}
+func (this *CpuUsage) String() string {
+ if this == nil {
+ return "nil"
+ }
+ s := strings.Join([]string{`&CpuUsage{`,
+ `Timestamp:` + fmt.Sprintf("%v", this.Timestamp) + `,`,
+ `UsageCoreNanoSeconds:` + strings.Replace(fmt.Sprintf("%v", this.UsageCoreNanoSeconds), "UInt64Value", "UInt64Value", 1) + `,`,
+ `}`,
+ }, "")
+ return s
+}
+func (this *MemoryUsage) String() string {
+ if this == nil {
+ return "nil"
+ }
+ s := strings.Join([]string{`&MemoryUsage{`,
+ `Timestamp:` + fmt.Sprintf("%v", this.Timestamp) + `,`,
+ `WorkingSetBytes:` + strings.Replace(fmt.Sprintf("%v", this.WorkingSetBytes), "UInt64Value", "UInt64Value", 1) + `,`,
+ `}`,
+ }, "")
+ return s
+}
+func valueToStringApi(v interface{}) string {
+ rv := reflect.ValueOf(v)
+ if rv.IsNil() {
+ return "nil"
+ }
+ pv := reflect.Indirect(rv).Interface()
+ return fmt.Sprintf("*%v", pv)
+}
+func (m *VersionRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: VersionRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: VersionRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Version", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Version = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipApi(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthApi
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *VersionResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: VersionResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: VersionResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Version", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Version = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field RuntimeName", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.RuntimeName = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field RuntimeVersion", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.RuntimeVersion = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 4:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field RuntimeApiVersion", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.RuntimeApiVersion = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipApi(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthApi
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *DNSConfig) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: DNSConfig: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: DNSConfig: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Servers", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Servers = append(m.Servers, string(dAtA[iNdEx:postIndex]))
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Searches", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Searches = append(m.Searches, string(dAtA[iNdEx:postIndex]))
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Options", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Options = append(m.Options, string(dAtA[iNdEx:postIndex]))
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipApi(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthApi
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *PortMapping) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: PortMapping: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: PortMapping: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Protocol", wireType)
+ }
+ m.Protocol = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.Protocol |= (Protocol(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 2:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ContainerPort", wireType)
+ }
+ m.ContainerPort = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.ContainerPort |= (int32(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 3:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field HostPort", wireType)
+ }
+ m.HostPort = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.HostPort |= (int32(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 4:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field HostIp", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.HostIp = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipApi(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthApi
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *Mount) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: Mount: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: Mount: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ContainerPath", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.ContainerPath = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field HostPath", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.HostPath = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 3:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Readonly", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.Readonly = bool(v != 0)
+ case 4:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field SelinuxRelabel", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.SelinuxRelabel = bool(v != 0)
+ default:
+ iNdEx = preIndex
+ skippy, err := skipApi(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthApi
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *NamespaceOption) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: NamespaceOption: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: NamespaceOption: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field HostNetwork", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.HostNetwork = bool(v != 0)
+ case 2:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field HostPid", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.HostPid = bool(v != 0)
+ case 3:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field HostIpc", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.HostIpc = bool(v != 0)
+ default:
+ iNdEx = preIndex
+ skippy, err := skipApi(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthApi
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *Int64Value) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: Int64Value: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: Int64Value: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Value", wireType)
+ }
+ m.Value = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.Value |= (int64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ default:
+ iNdEx = preIndex
+ skippy, err := skipApi(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthApi
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *LinuxSandboxSecurityContext) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: LinuxSandboxSecurityContext: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: LinuxSandboxSecurityContext: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field NamespaceOptions", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.NamespaceOptions == nil {
+ m.NamespaceOptions = &NamespaceOption{}
+ }
+ if err := m.NamespaceOptions.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field SelinuxOptions", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.SelinuxOptions == nil {
+ m.SelinuxOptions = &SELinuxOption{}
+ }
+ if err := m.SelinuxOptions.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field RunAsUser", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.RunAsUser == nil {
+ m.RunAsUser = &Int64Value{}
+ }
+ if err := m.RunAsUser.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 4:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ReadonlyRootfs", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.ReadonlyRootfs = bool(v != 0)
+ case 5:
+ if wireType == 0 {
+ var v int64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= (int64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.SupplementalGroups = append(m.SupplementalGroups, v)
+ } else if wireType == 2 {
+ var packedLen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ packedLen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if packedLen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + packedLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ for iNdEx < postIndex {
+ var v int64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= (int64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.SupplementalGroups = append(m.SupplementalGroups, v)
+ }
+ } else {
+ return fmt.Errorf("proto: wrong wireType = %d for field SupplementalGroups", wireType)
+ }
+ case 6:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Privileged", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.Privileged = bool(v != 0)
+ default:
+ iNdEx = preIndex
+ skippy, err := skipApi(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthApi
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *LinuxPodSandboxConfig) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: LinuxPodSandboxConfig: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: LinuxPodSandboxConfig: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field CgroupParent", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.CgroupParent = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field SecurityContext", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.SecurityContext == nil {
+ m.SecurityContext = &LinuxSandboxSecurityContext{}
+ }
+ if err := m.SecurityContext.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Sysctls", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ var keykey uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ keykey |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ var stringLenmapkey uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLenmapkey |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLenmapkey := int(stringLenmapkey)
+ if intStringLenmapkey < 0 {
+ return ErrInvalidLengthApi
+ }
+ postStringIndexmapkey := iNdEx + intStringLenmapkey
+ if postStringIndexmapkey > l {
+ return io.ErrUnexpectedEOF
+ }
+ mapkey := string(dAtA[iNdEx:postStringIndexmapkey])
+ iNdEx = postStringIndexmapkey
+ if m.Sysctls == nil {
+ m.Sysctls = make(map[string]string)
+ }
+ if iNdEx < postIndex {
+ var valuekey uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ valuekey |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ var stringLenmapvalue uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLenmapvalue |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLenmapvalue := int(stringLenmapvalue)
+ if intStringLenmapvalue < 0 {
+ return ErrInvalidLengthApi
+ }
+ postStringIndexmapvalue := iNdEx + intStringLenmapvalue
+ if postStringIndexmapvalue > l {
+ return io.ErrUnexpectedEOF
+ }
+ mapvalue := string(dAtA[iNdEx:postStringIndexmapvalue])
+ iNdEx = postStringIndexmapvalue
+ m.Sysctls[mapkey] = mapvalue
+ } else {
+ var mapvalue string
+ m.Sysctls[mapkey] = mapvalue
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipApi(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthApi
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *PodSandboxMetadata) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: PodSandboxMetadata: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: PodSandboxMetadata: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Name = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Uid", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Uid = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Namespace", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Namespace = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 4:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Attempt", wireType)
+ }
+ m.Attempt = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.Attempt |= (uint32(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ default:
+ iNdEx = preIndex
+ skippy, err := skipApi(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthApi
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *PodSandboxConfig) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: PodSandboxConfig: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: PodSandboxConfig: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Metadata", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Metadata == nil {
+ m.Metadata = &PodSandboxMetadata{}
+ }
+ if err := m.Metadata.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Hostname", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Hostname = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field LogDirectory", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.LogDirectory = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 4:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field DnsConfig", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.DnsConfig == nil {
+ m.DnsConfig = &DNSConfig{}
+ }
+ if err := m.DnsConfig.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 5:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field PortMappings", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.PortMappings = append(m.PortMappings, &PortMapping{})
+ if err := m.PortMappings[len(m.PortMappings)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 6:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Labels", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ var keykey uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ keykey |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ var stringLenmapkey uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLenmapkey |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLenmapkey := int(stringLenmapkey)
+ if intStringLenmapkey < 0 {
+ return ErrInvalidLengthApi
+ }
+ postStringIndexmapkey := iNdEx + intStringLenmapkey
+ if postStringIndexmapkey > l {
+ return io.ErrUnexpectedEOF
+ }
+ mapkey := string(dAtA[iNdEx:postStringIndexmapkey])
+ iNdEx = postStringIndexmapkey
+ if m.Labels == nil {
+ m.Labels = make(map[string]string)
+ }
+ if iNdEx < postIndex {
+ var valuekey uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ valuekey |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ var stringLenmapvalue uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLenmapvalue |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLenmapvalue := int(stringLenmapvalue)
+ if intStringLenmapvalue < 0 {
+ return ErrInvalidLengthApi
+ }
+ postStringIndexmapvalue := iNdEx + intStringLenmapvalue
+ if postStringIndexmapvalue > l {
+ return io.ErrUnexpectedEOF
+ }
+ mapvalue := string(dAtA[iNdEx:postStringIndexmapvalue])
+ iNdEx = postStringIndexmapvalue
+ m.Labels[mapkey] = mapvalue
+ } else {
+ var mapvalue string
+ m.Labels[mapkey] = mapvalue
+ }
+ iNdEx = postIndex
+ case 7:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Annotations", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ var keykey uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ keykey |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ var stringLenmapkey uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLenmapkey |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLenmapkey := int(stringLenmapkey)
+ if intStringLenmapkey < 0 {
+ return ErrInvalidLengthApi
+ }
+ postStringIndexmapkey := iNdEx + intStringLenmapkey
+ if postStringIndexmapkey > l {
+ return io.ErrUnexpectedEOF
+ }
+ mapkey := string(dAtA[iNdEx:postStringIndexmapkey])
+ iNdEx = postStringIndexmapkey
+ if m.Annotations == nil {
+ m.Annotations = make(map[string]string)
+ }
+ if iNdEx < postIndex {
+ var valuekey uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ valuekey |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ var stringLenmapvalue uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLenmapvalue |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLenmapvalue := int(stringLenmapvalue)
+ if intStringLenmapvalue < 0 {
+ return ErrInvalidLengthApi
+ }
+ postStringIndexmapvalue := iNdEx + intStringLenmapvalue
+ if postStringIndexmapvalue > l {
+ return io.ErrUnexpectedEOF
+ }
+ mapvalue := string(dAtA[iNdEx:postStringIndexmapvalue])
+ iNdEx = postStringIndexmapvalue
+ m.Annotations[mapkey] = mapvalue
+ } else {
+ var mapvalue string
+ m.Annotations[mapkey] = mapvalue
+ }
+ iNdEx = postIndex
+ case 8:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Linux", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Linux == nil {
+ m.Linux = &LinuxPodSandboxConfig{}
+ }
+ if err := m.Linux.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipApi(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthApi
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *RunPodSandboxRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: RunPodSandboxRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: RunPodSandboxRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Config", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Config == nil {
+ m.Config = &PodSandboxConfig{}
+ }
+ if err := m.Config.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipApi(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthApi
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *RunPodSandboxResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: RunPodSandboxResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: RunPodSandboxResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field PodSandboxId", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.PodSandboxId = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipApi(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthApi
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *StopPodSandboxRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: StopPodSandboxRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: StopPodSandboxRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field PodSandboxId", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.PodSandboxId = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipApi(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthApi
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *StopPodSandboxResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: StopPodSandboxResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: StopPodSandboxResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ default:
+ iNdEx = preIndex
+ skippy, err := skipApi(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthApi
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *RemovePodSandboxRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: RemovePodSandboxRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: RemovePodSandboxRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field PodSandboxId", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.PodSandboxId = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipApi(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthApi
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *RemovePodSandboxResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: RemovePodSandboxResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: RemovePodSandboxResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ default:
+ iNdEx = preIndex
+ skippy, err := skipApi(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthApi
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *PodSandboxStatusRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: PodSandboxStatusRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: PodSandboxStatusRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field PodSandboxId", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.PodSandboxId = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipApi(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthApi
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *PodSandboxNetworkStatus) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: PodSandboxNetworkStatus: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: PodSandboxNetworkStatus: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Ip", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Ip = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipApi(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthApi
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *Namespace) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: Namespace: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: Namespace: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Options", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Options == nil {
+ m.Options = &NamespaceOption{}
+ }
+ if err := m.Options.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipApi(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthApi
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *LinuxPodSandboxStatus) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: LinuxPodSandboxStatus: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: LinuxPodSandboxStatus: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Namespaces", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Namespaces == nil {
+ m.Namespaces = &Namespace{}
+ }
+ if err := m.Namespaces.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipApi(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthApi
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *PodSandboxStatus) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: PodSandboxStatus: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: PodSandboxStatus: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Id = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Metadata", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Metadata == nil {
+ m.Metadata = &PodSandboxMetadata{}
+ }
+ if err := m.Metadata.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 3:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field State", wireType)
+ }
+ m.State = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.State |= (PodSandboxState(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 4:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field CreatedAt", wireType)
+ }
+ m.CreatedAt = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.CreatedAt |= (int64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 5:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Network", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Network == nil {
+ m.Network = &PodSandboxNetworkStatus{}
+ }
+ if err := m.Network.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 6:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Linux", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Linux == nil {
+ m.Linux = &LinuxPodSandboxStatus{}
+ }
+ if err := m.Linux.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 7:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Labels", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ var keykey uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ keykey |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ var stringLenmapkey uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLenmapkey |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLenmapkey := int(stringLenmapkey)
+ if intStringLenmapkey < 0 {
+ return ErrInvalidLengthApi
+ }
+ postStringIndexmapkey := iNdEx + intStringLenmapkey
+ if postStringIndexmapkey > l {
+ return io.ErrUnexpectedEOF
+ }
+ mapkey := string(dAtA[iNdEx:postStringIndexmapkey])
+ iNdEx = postStringIndexmapkey
+ if m.Labels == nil {
+ m.Labels = make(map[string]string)
+ }
+ if iNdEx < postIndex {
+ var valuekey uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ valuekey |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ var stringLenmapvalue uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLenmapvalue |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLenmapvalue := int(stringLenmapvalue)
+ if intStringLenmapvalue < 0 {
+ return ErrInvalidLengthApi
+ }
+ postStringIndexmapvalue := iNdEx + intStringLenmapvalue
+ if postStringIndexmapvalue > l {
+ return io.ErrUnexpectedEOF
+ }
+ mapvalue := string(dAtA[iNdEx:postStringIndexmapvalue])
+ iNdEx = postStringIndexmapvalue
+ m.Labels[mapkey] = mapvalue
+ } else {
+ var mapvalue string
+ m.Labels[mapkey] = mapvalue
+ }
+ iNdEx = postIndex
+ case 8:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Annotations", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ var keykey uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ keykey |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ var stringLenmapkey uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLenmapkey |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLenmapkey := int(stringLenmapkey)
+ if intStringLenmapkey < 0 {
+ return ErrInvalidLengthApi
+ }
+ postStringIndexmapkey := iNdEx + intStringLenmapkey
+ if postStringIndexmapkey > l {
+ return io.ErrUnexpectedEOF
+ }
+ mapkey := string(dAtA[iNdEx:postStringIndexmapkey])
+ iNdEx = postStringIndexmapkey
+ if m.Annotations == nil {
+ m.Annotations = make(map[string]string)
+ }
+ if iNdEx < postIndex {
+ var valuekey uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ valuekey |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ var stringLenmapvalue uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLenmapvalue |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLenmapvalue := int(stringLenmapvalue)
+ if intStringLenmapvalue < 0 {
+ return ErrInvalidLengthApi
+ }
+ postStringIndexmapvalue := iNdEx + intStringLenmapvalue
+ if postStringIndexmapvalue > l {
+ return io.ErrUnexpectedEOF
+ }
+ mapvalue := string(dAtA[iNdEx:postStringIndexmapvalue])
+ iNdEx = postStringIndexmapvalue
+ m.Annotations[mapkey] = mapvalue
+ } else {
+ var mapvalue string
+ m.Annotations[mapkey] = mapvalue
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipApi(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthApi
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *PodSandboxStatusResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: PodSandboxStatusResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: PodSandboxStatusResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Status == nil {
+ m.Status = &PodSandboxStatus{}
+ }
+ if err := m.Status.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipApi(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthApi
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *PodSandboxStateValue) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: PodSandboxStateValue: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: PodSandboxStateValue: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field State", wireType)
+ }
+ m.State = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.State |= (PodSandboxState(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ default:
+ iNdEx = preIndex
+ skippy, err := skipApi(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthApi
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *PodSandboxFilter) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: PodSandboxFilter: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: PodSandboxFilter: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Id = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field State", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.State == nil {
+ m.State = &PodSandboxStateValue{}
+ }
+ if err := m.State.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field LabelSelector", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ var keykey uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ keykey |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ var stringLenmapkey uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLenmapkey |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLenmapkey := int(stringLenmapkey)
+ if intStringLenmapkey < 0 {
+ return ErrInvalidLengthApi
+ }
+ postStringIndexmapkey := iNdEx + intStringLenmapkey
+ if postStringIndexmapkey > l {
+ return io.ErrUnexpectedEOF
+ }
+ mapkey := string(dAtA[iNdEx:postStringIndexmapkey])
+ iNdEx = postStringIndexmapkey
+ if m.LabelSelector == nil {
+ m.LabelSelector = make(map[string]string)
+ }
+ if iNdEx < postIndex {
+ var valuekey uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ valuekey |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ var stringLenmapvalue uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLenmapvalue |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLenmapvalue := int(stringLenmapvalue)
+ if intStringLenmapvalue < 0 {
+ return ErrInvalidLengthApi
+ }
+ postStringIndexmapvalue := iNdEx + intStringLenmapvalue
+ if postStringIndexmapvalue > l {
+ return io.ErrUnexpectedEOF
+ }
+ mapvalue := string(dAtA[iNdEx:postStringIndexmapvalue])
+ iNdEx = postStringIndexmapvalue
+ m.LabelSelector[mapkey] = mapvalue
+ } else {
+ var mapvalue string
+ m.LabelSelector[mapkey] = mapvalue
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipApi(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthApi
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ListPodSandboxRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ListPodSandboxRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ListPodSandboxRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Filter", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Filter == nil {
+ m.Filter = &PodSandboxFilter{}
+ }
+ if err := m.Filter.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipApi(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthApi
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *PodSandbox) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: PodSandbox: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: PodSandbox: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Id = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Metadata", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Metadata == nil {
+ m.Metadata = &PodSandboxMetadata{}
+ }
+ if err := m.Metadata.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 3:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field State", wireType)
+ }
+ m.State = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.State |= (PodSandboxState(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 4:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field CreatedAt", wireType)
+ }
+ m.CreatedAt = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.CreatedAt |= (int64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 5:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Labels", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ var keykey uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ keykey |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ var stringLenmapkey uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLenmapkey |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLenmapkey := int(stringLenmapkey)
+ if intStringLenmapkey < 0 {
+ return ErrInvalidLengthApi
+ }
+ postStringIndexmapkey := iNdEx + intStringLenmapkey
+ if postStringIndexmapkey > l {
+ return io.ErrUnexpectedEOF
+ }
+ mapkey := string(dAtA[iNdEx:postStringIndexmapkey])
+ iNdEx = postStringIndexmapkey
+ if m.Labels == nil {
+ m.Labels = make(map[string]string)
+ }
+ if iNdEx < postIndex {
+ var valuekey uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ valuekey |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ var stringLenmapvalue uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLenmapvalue |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLenmapvalue := int(stringLenmapvalue)
+ if intStringLenmapvalue < 0 {
+ return ErrInvalidLengthApi
+ }
+ postStringIndexmapvalue := iNdEx + intStringLenmapvalue
+ if postStringIndexmapvalue > l {
+ return io.ErrUnexpectedEOF
+ }
+ mapvalue := string(dAtA[iNdEx:postStringIndexmapvalue])
+ iNdEx = postStringIndexmapvalue
+ m.Labels[mapkey] = mapvalue
+ } else {
+ var mapvalue string
+ m.Labels[mapkey] = mapvalue
+ }
+ iNdEx = postIndex
+ case 6:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Annotations", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ var keykey uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ keykey |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ var stringLenmapkey uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLenmapkey |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLenmapkey := int(stringLenmapkey)
+ if intStringLenmapkey < 0 {
+ return ErrInvalidLengthApi
+ }
+ postStringIndexmapkey := iNdEx + intStringLenmapkey
+ if postStringIndexmapkey > l {
+ return io.ErrUnexpectedEOF
+ }
+ mapkey := string(dAtA[iNdEx:postStringIndexmapkey])
+ iNdEx = postStringIndexmapkey
+ if m.Annotations == nil {
+ m.Annotations = make(map[string]string)
+ }
+ if iNdEx < postIndex {
+ var valuekey uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ valuekey |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ var stringLenmapvalue uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLenmapvalue |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLenmapvalue := int(stringLenmapvalue)
+ if intStringLenmapvalue < 0 {
+ return ErrInvalidLengthApi
+ }
+ postStringIndexmapvalue := iNdEx + intStringLenmapvalue
+ if postStringIndexmapvalue > l {
+ return io.ErrUnexpectedEOF
+ }
+ mapvalue := string(dAtA[iNdEx:postStringIndexmapvalue])
+ iNdEx = postStringIndexmapvalue
+ m.Annotations[mapkey] = mapvalue
+ } else {
+ var mapvalue string
+ m.Annotations[mapkey] = mapvalue
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipApi(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthApi
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ListPodSandboxResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ListPodSandboxResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ListPodSandboxResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Items = append(m.Items, &PodSandbox{})
+ if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipApi(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthApi
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ImageSpec) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ImageSpec: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ImageSpec: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Image", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Image = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipApi(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthApi
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *KeyValue) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: KeyValue: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: KeyValue: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Key", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Key = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Value", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Value = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipApi(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthApi
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *LinuxContainerResources) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: LinuxContainerResources: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: LinuxContainerResources: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field CpuPeriod", wireType)
+ }
+ m.CpuPeriod = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.CpuPeriod |= (int64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 2:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field CpuQuota", wireType)
+ }
+ m.CpuQuota = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.CpuQuota |= (int64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 3:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field CpuShares", wireType)
+ }
+ m.CpuShares = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.CpuShares |= (int64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 4:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field MemoryLimitInBytes", wireType)
+ }
+ m.MemoryLimitInBytes = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.MemoryLimitInBytes |= (int64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 5:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field OomScoreAdj", wireType)
+ }
+ m.OomScoreAdj = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.OomScoreAdj |= (int64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ default:
+ iNdEx = preIndex
+ skippy, err := skipApi(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthApi
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *SELinuxOption) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: SELinuxOption: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: SELinuxOption: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field User", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.User = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Role", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Role = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Type = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 4:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Level", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Level = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipApi(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthApi
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *Capability) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: Capability: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: Capability: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field AddCapabilities", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.AddCapabilities = append(m.AddCapabilities, string(dAtA[iNdEx:postIndex]))
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field DropCapabilities", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.DropCapabilities = append(m.DropCapabilities, string(dAtA[iNdEx:postIndex]))
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipApi(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthApi
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *LinuxContainerSecurityContext) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: LinuxContainerSecurityContext: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: LinuxContainerSecurityContext: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Capabilities", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Capabilities == nil {
+ m.Capabilities = &Capability{}
+ }
+ if err := m.Capabilities.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Privileged", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.Privileged = bool(v != 0)
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field NamespaceOptions", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.NamespaceOptions == nil {
+ m.NamespaceOptions = &NamespaceOption{}
+ }
+ if err := m.NamespaceOptions.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 4:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field SelinuxOptions", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.SelinuxOptions == nil {
+ m.SelinuxOptions = &SELinuxOption{}
+ }
+ if err := m.SelinuxOptions.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 5:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field RunAsUser", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.RunAsUser == nil {
+ m.RunAsUser = &Int64Value{}
+ }
+ if err := m.RunAsUser.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 6:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field RunAsUsername", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.RunAsUsername = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 7:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ReadonlyRootfs", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.ReadonlyRootfs = bool(v != 0)
+ case 8:
+ if wireType == 0 {
+ var v int64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= (int64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.SupplementalGroups = append(m.SupplementalGroups, v)
+ } else if wireType == 2 {
+ var packedLen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ packedLen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if packedLen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + packedLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ for iNdEx < postIndex {
+ var v int64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= (int64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.SupplementalGroups = append(m.SupplementalGroups, v)
+ }
+ } else {
+ return fmt.Errorf("proto: wrong wireType = %d for field SupplementalGroups", wireType)
+ }
+ case 9:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ApparmorProfile", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.ApparmorProfile = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipApi(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthApi
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *LinuxContainerConfig) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: LinuxContainerConfig: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: LinuxContainerConfig: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Resources", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Resources == nil {
+ m.Resources = &LinuxContainerResources{}
+ }
+ if err := m.Resources.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field SecurityContext", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.SecurityContext == nil {
+ m.SecurityContext = &LinuxContainerSecurityContext{}
+ }
+ if err := m.SecurityContext.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipApi(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthApi
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ContainerMetadata) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ContainerMetadata: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ContainerMetadata: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Name = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Attempt", wireType)
+ }
+ m.Attempt = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.Attempt |= (uint32(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ default:
+ iNdEx = preIndex
+ skippy, err := skipApi(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthApi
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *Device) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: Device: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: Device: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ContainerPath", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.ContainerPath = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field HostPath", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.HostPath = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Permissions", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Permissions = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipApi(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthApi
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ContainerConfig) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ContainerConfig: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ContainerConfig: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Metadata", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Metadata == nil {
+ m.Metadata = &ContainerMetadata{}
+ }
+ if err := m.Metadata.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Image", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Image == nil {
+ m.Image = &ImageSpec{}
+ }
+ if err := m.Image.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Command", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Command = append(m.Command, string(dAtA[iNdEx:postIndex]))
+ iNdEx = postIndex
+ case 4:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Args", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Args = append(m.Args, string(dAtA[iNdEx:postIndex]))
+ iNdEx = postIndex
+ case 5:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field WorkingDir", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.WorkingDir = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 6:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Envs", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Envs = append(m.Envs, &KeyValue{})
+ if err := m.Envs[len(m.Envs)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 7:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Mounts", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Mounts = append(m.Mounts, &Mount{})
+ if err := m.Mounts[len(m.Mounts)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 8:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Devices", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Devices = append(m.Devices, &Device{})
+ if err := m.Devices[len(m.Devices)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 9:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Labels", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ var keykey uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ keykey |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ var stringLenmapkey uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLenmapkey |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLenmapkey := int(stringLenmapkey)
+ if intStringLenmapkey < 0 {
+ return ErrInvalidLengthApi
+ }
+ postStringIndexmapkey := iNdEx + intStringLenmapkey
+ if postStringIndexmapkey > l {
+ return io.ErrUnexpectedEOF
+ }
+ mapkey := string(dAtA[iNdEx:postStringIndexmapkey])
+ iNdEx = postStringIndexmapkey
+ if m.Labels == nil {
+ m.Labels = make(map[string]string)
+ }
+ if iNdEx < postIndex {
+ var valuekey uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ valuekey |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ var stringLenmapvalue uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLenmapvalue |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLenmapvalue := int(stringLenmapvalue)
+ if intStringLenmapvalue < 0 {
+ return ErrInvalidLengthApi
+ }
+ postStringIndexmapvalue := iNdEx + intStringLenmapvalue
+ if postStringIndexmapvalue > l {
+ return io.ErrUnexpectedEOF
+ }
+ mapvalue := string(dAtA[iNdEx:postStringIndexmapvalue])
+ iNdEx = postStringIndexmapvalue
+ m.Labels[mapkey] = mapvalue
+ } else {
+ var mapvalue string
+ m.Labels[mapkey] = mapvalue
+ }
+ iNdEx = postIndex
+ case 10:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Annotations", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ var keykey uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ keykey |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ var stringLenmapkey uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLenmapkey |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLenmapkey := int(stringLenmapkey)
+ if intStringLenmapkey < 0 {
+ return ErrInvalidLengthApi
+ }
+ postStringIndexmapkey := iNdEx + intStringLenmapkey
+ if postStringIndexmapkey > l {
+ return io.ErrUnexpectedEOF
+ }
+ mapkey := string(dAtA[iNdEx:postStringIndexmapkey])
+ iNdEx = postStringIndexmapkey
+ if m.Annotations == nil {
+ m.Annotations = make(map[string]string)
+ }
+ if iNdEx < postIndex {
+ var valuekey uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ valuekey |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ var stringLenmapvalue uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLenmapvalue |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLenmapvalue := int(stringLenmapvalue)
+ if intStringLenmapvalue < 0 {
+ return ErrInvalidLengthApi
+ }
+ postStringIndexmapvalue := iNdEx + intStringLenmapvalue
+ if postStringIndexmapvalue > l {
+ return io.ErrUnexpectedEOF
+ }
+ mapvalue := string(dAtA[iNdEx:postStringIndexmapvalue])
+ iNdEx = postStringIndexmapvalue
+ m.Annotations[mapkey] = mapvalue
+ } else {
+ var mapvalue string
+ m.Annotations[mapkey] = mapvalue
+ }
+ iNdEx = postIndex
+ case 11:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field LogPath", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.LogPath = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 12:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Stdin", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.Stdin = bool(v != 0)
+ case 13:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field StdinOnce", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.StdinOnce = bool(v != 0)
+ case 14:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Tty", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.Tty = bool(v != 0)
+ case 15:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Linux", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Linux == nil {
+ m.Linux = &LinuxContainerConfig{}
+ }
+ if err := m.Linux.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipApi(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthApi
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *CreateContainerRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: CreateContainerRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: CreateContainerRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field PodSandboxId", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.PodSandboxId = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Config", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Config == nil {
+ m.Config = &ContainerConfig{}
+ }
+ if err := m.Config.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field SandboxConfig", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.SandboxConfig == nil {
+ m.SandboxConfig = &PodSandboxConfig{}
+ }
+ if err := m.SandboxConfig.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipApi(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthApi
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *CreateContainerResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: CreateContainerResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: CreateContainerResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ContainerId", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.ContainerId = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipApi(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthApi
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *StartContainerRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: StartContainerRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: StartContainerRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ContainerId", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.ContainerId = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipApi(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthApi
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *StartContainerResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: StartContainerResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: StartContainerResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ default:
+ iNdEx = preIndex
+ skippy, err := skipApi(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthApi
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *StopContainerRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: StopContainerRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: StopContainerRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ContainerId", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.ContainerId = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Timeout", wireType)
+ }
+ m.Timeout = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.Timeout |= (int64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ default:
+ iNdEx = preIndex
+ skippy, err := skipApi(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthApi
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *StopContainerResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: StopContainerResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: StopContainerResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ default:
+ iNdEx = preIndex
+ skippy, err := skipApi(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthApi
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *RemoveContainerRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: RemoveContainerRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: RemoveContainerRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ContainerId", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.ContainerId = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipApi(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthApi
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *RemoveContainerResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: RemoveContainerResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: RemoveContainerResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ default:
+ iNdEx = preIndex
+ skippy, err := skipApi(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthApi
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ContainerStateValue) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ContainerStateValue: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ContainerStateValue: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field State", wireType)
+ }
+ m.State = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.State |= (ContainerState(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ default:
+ iNdEx = preIndex
+ skippy, err := skipApi(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthApi
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ContainerFilter) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ContainerFilter: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ContainerFilter: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Id = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field State", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.State == nil {
+ m.State = &ContainerStateValue{}
+ }
+ if err := m.State.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field PodSandboxId", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.PodSandboxId = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 4:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field LabelSelector", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ var keykey uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ keykey |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ var stringLenmapkey uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLenmapkey |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLenmapkey := int(stringLenmapkey)
+ if intStringLenmapkey < 0 {
+ return ErrInvalidLengthApi
+ }
+ postStringIndexmapkey := iNdEx + intStringLenmapkey
+ if postStringIndexmapkey > l {
+ return io.ErrUnexpectedEOF
+ }
+ mapkey := string(dAtA[iNdEx:postStringIndexmapkey])
+ iNdEx = postStringIndexmapkey
+ if m.LabelSelector == nil {
+ m.LabelSelector = make(map[string]string)
+ }
+ if iNdEx < postIndex {
+ var valuekey uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ valuekey |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ var stringLenmapvalue uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLenmapvalue |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLenmapvalue := int(stringLenmapvalue)
+ if intStringLenmapvalue < 0 {
+ return ErrInvalidLengthApi
+ }
+ postStringIndexmapvalue := iNdEx + intStringLenmapvalue
+ if postStringIndexmapvalue > l {
+ return io.ErrUnexpectedEOF
+ }
+ mapvalue := string(dAtA[iNdEx:postStringIndexmapvalue])
+ iNdEx = postStringIndexmapvalue
+ m.LabelSelector[mapkey] = mapvalue
+ } else {
+ var mapvalue string
+ m.LabelSelector[mapkey] = mapvalue
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipApi(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthApi
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ListContainersRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ListContainersRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ListContainersRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Filter", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Filter == nil {
+ m.Filter = &ContainerFilter{}
+ }
+ if err := m.Filter.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipApi(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthApi
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *Container) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: Container: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: Container: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Id = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field PodSandboxId", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.PodSandboxId = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Metadata", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Metadata == nil {
+ m.Metadata = &ContainerMetadata{}
+ }
+ if err := m.Metadata.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 4:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Image", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Image == nil {
+ m.Image = &ImageSpec{}
+ }
+ if err := m.Image.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 5:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ImageRef", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.ImageRef = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 6:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field State", wireType)
+ }
+ m.State = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.State |= (ContainerState(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 7:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field CreatedAt", wireType)
+ }
+ m.CreatedAt = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.CreatedAt |= (int64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 8:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Labels", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ var keykey uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ keykey |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ var stringLenmapkey uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLenmapkey |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLenmapkey := int(stringLenmapkey)
+ if intStringLenmapkey < 0 {
+ return ErrInvalidLengthApi
+ }
+ postStringIndexmapkey := iNdEx + intStringLenmapkey
+ if postStringIndexmapkey > l {
+ return io.ErrUnexpectedEOF
+ }
+ mapkey := string(dAtA[iNdEx:postStringIndexmapkey])
+ iNdEx = postStringIndexmapkey
+ if m.Labels == nil {
+ m.Labels = make(map[string]string)
+ }
+ if iNdEx < postIndex {
+ var valuekey uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ valuekey |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ var stringLenmapvalue uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLenmapvalue |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLenmapvalue := int(stringLenmapvalue)
+ if intStringLenmapvalue < 0 {
+ return ErrInvalidLengthApi
+ }
+ postStringIndexmapvalue := iNdEx + intStringLenmapvalue
+ if postStringIndexmapvalue > l {
+ return io.ErrUnexpectedEOF
+ }
+ mapvalue := string(dAtA[iNdEx:postStringIndexmapvalue])
+ iNdEx = postStringIndexmapvalue
+ m.Labels[mapkey] = mapvalue
+ } else {
+ var mapvalue string
+ m.Labels[mapkey] = mapvalue
+ }
+ iNdEx = postIndex
+ case 9:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Annotations", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ var keykey uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ keykey |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ var stringLenmapkey uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLenmapkey |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLenmapkey := int(stringLenmapkey)
+ if intStringLenmapkey < 0 {
+ return ErrInvalidLengthApi
+ }
+ postStringIndexmapkey := iNdEx + intStringLenmapkey
+ if postStringIndexmapkey > l {
+ return io.ErrUnexpectedEOF
+ }
+ mapkey := string(dAtA[iNdEx:postStringIndexmapkey])
+ iNdEx = postStringIndexmapkey
+ if m.Annotations == nil {
+ m.Annotations = make(map[string]string)
+ }
+ if iNdEx < postIndex {
+ var valuekey uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ valuekey |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ var stringLenmapvalue uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLenmapvalue |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLenmapvalue := int(stringLenmapvalue)
+ if intStringLenmapvalue < 0 {
+ return ErrInvalidLengthApi
+ }
+ postStringIndexmapvalue := iNdEx + intStringLenmapvalue
+ if postStringIndexmapvalue > l {
+ return io.ErrUnexpectedEOF
+ }
+ mapvalue := string(dAtA[iNdEx:postStringIndexmapvalue])
+ iNdEx = postStringIndexmapvalue
+ m.Annotations[mapkey] = mapvalue
+ } else {
+ var mapvalue string
+ m.Annotations[mapkey] = mapvalue
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipApi(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthApi
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ListContainersResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ListContainersResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ListContainersResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Containers", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Containers = append(m.Containers, &Container{})
+ if err := m.Containers[len(m.Containers)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipApi(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthApi
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ContainerStatusRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ContainerStatusRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ContainerStatusRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ContainerId", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.ContainerId = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipApi(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthApi
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ContainerStatus) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ContainerStatus: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ContainerStatus: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Id = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Metadata", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Metadata == nil {
+ m.Metadata = &ContainerMetadata{}
+ }
+ if err := m.Metadata.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 3:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field State", wireType)
+ }
+ m.State = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.State |= (ContainerState(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 4:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field CreatedAt", wireType)
+ }
+ m.CreatedAt = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.CreatedAt |= (int64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 5:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field StartedAt", wireType)
+ }
+ m.StartedAt = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.StartedAt |= (int64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 6:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field FinishedAt", wireType)
+ }
+ m.FinishedAt = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.FinishedAt |= (int64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 7:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ExitCode", wireType)
+ }
+ m.ExitCode = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.ExitCode |= (int32(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 8:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Image", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Image == nil {
+ m.Image = &ImageSpec{}
+ }
+ if err := m.Image.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 9:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ImageRef", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.ImageRef = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 10:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Reason", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Reason = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 11:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Message", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Message = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 12:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Labels", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ var keykey uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ keykey |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ var stringLenmapkey uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLenmapkey |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLenmapkey := int(stringLenmapkey)
+ if intStringLenmapkey < 0 {
+ return ErrInvalidLengthApi
+ }
+ postStringIndexmapkey := iNdEx + intStringLenmapkey
+ if postStringIndexmapkey > l {
+ return io.ErrUnexpectedEOF
+ }
+ mapkey := string(dAtA[iNdEx:postStringIndexmapkey])
+ iNdEx = postStringIndexmapkey
+ if m.Labels == nil {
+ m.Labels = make(map[string]string)
+ }
+ if iNdEx < postIndex {
+ var valuekey uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ valuekey |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ var stringLenmapvalue uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLenmapvalue |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLenmapvalue := int(stringLenmapvalue)
+ if intStringLenmapvalue < 0 {
+ return ErrInvalidLengthApi
+ }
+ postStringIndexmapvalue := iNdEx + intStringLenmapvalue
+ if postStringIndexmapvalue > l {
+ return io.ErrUnexpectedEOF
+ }
+ mapvalue := string(dAtA[iNdEx:postStringIndexmapvalue])
+ iNdEx = postStringIndexmapvalue
+ m.Labels[mapkey] = mapvalue
+ } else {
+ var mapvalue string
+ m.Labels[mapkey] = mapvalue
+ }
+ iNdEx = postIndex
+ case 13:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Annotations", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ var keykey uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ keykey |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ var stringLenmapkey uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLenmapkey |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLenmapkey := int(stringLenmapkey)
+ if intStringLenmapkey < 0 {
+ return ErrInvalidLengthApi
+ }
+ postStringIndexmapkey := iNdEx + intStringLenmapkey
+ if postStringIndexmapkey > l {
+ return io.ErrUnexpectedEOF
+ }
+ mapkey := string(dAtA[iNdEx:postStringIndexmapkey])
+ iNdEx = postStringIndexmapkey
+ if m.Annotations == nil {
+ m.Annotations = make(map[string]string)
+ }
+ if iNdEx < postIndex {
+ var valuekey uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ valuekey |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ var stringLenmapvalue uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLenmapvalue |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLenmapvalue := int(stringLenmapvalue)
+ if intStringLenmapvalue < 0 {
+ return ErrInvalidLengthApi
+ }
+ postStringIndexmapvalue := iNdEx + intStringLenmapvalue
+ if postStringIndexmapvalue > l {
+ return io.ErrUnexpectedEOF
+ }
+ mapvalue := string(dAtA[iNdEx:postStringIndexmapvalue])
+ iNdEx = postStringIndexmapvalue
+ m.Annotations[mapkey] = mapvalue
+ } else {
+ var mapvalue string
+ m.Annotations[mapkey] = mapvalue
+ }
+ iNdEx = postIndex
+ case 14:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Mounts", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Mounts = append(m.Mounts, &Mount{})
+ if err := m.Mounts[len(m.Mounts)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 15:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field LogPath", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.LogPath = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipApi(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthApi
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ContainerStatusResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ContainerStatusResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ContainerStatusResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Status == nil {
+ m.Status = &ContainerStatus{}
+ }
+ if err := m.Status.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipApi(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthApi
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ExecSyncRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ExecSyncRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ExecSyncRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ContainerId", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.ContainerId = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Cmd", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Cmd = append(m.Cmd, string(dAtA[iNdEx:postIndex]))
+ iNdEx = postIndex
+ case 3:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Timeout", wireType)
+ }
+ m.Timeout = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.Timeout |= (int64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ default:
+ iNdEx = preIndex
+ skippy, err := skipApi(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthApi
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ExecSyncResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ExecSyncResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ExecSyncResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Stdout", wireType)
+ }
+ var byteLen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ byteLen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if byteLen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + byteLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Stdout = append(m.Stdout[:0], dAtA[iNdEx:postIndex]...)
+ if m.Stdout == nil {
+ m.Stdout = []byte{}
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Stderr", wireType)
+ }
+ var byteLen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ byteLen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if byteLen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + byteLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Stderr = append(m.Stderr[:0], dAtA[iNdEx:postIndex]...)
+ if m.Stderr == nil {
+ m.Stderr = []byte{}
+ }
+ iNdEx = postIndex
+ case 3:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ExitCode", wireType)
+ }
+ m.ExitCode = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.ExitCode |= (int32(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ default:
+ iNdEx = preIndex
+ skippy, err := skipApi(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthApi
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ExecRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ExecRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ExecRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ContainerId", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.ContainerId = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Cmd", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Cmd = append(m.Cmd, string(dAtA[iNdEx:postIndex]))
+ iNdEx = postIndex
+ case 3:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Tty", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.Tty = bool(v != 0)
+ case 4:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Stdin", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.Stdin = bool(v != 0)
+ default:
+ iNdEx = preIndex
+ skippy, err := skipApi(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthApi
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ExecResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ExecResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ExecResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Url", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Url = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipApi(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthApi
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *AttachRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: AttachRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: AttachRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ContainerId", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.ContainerId = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Stdin", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.Stdin = bool(v != 0)
+ case 3:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Tty", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.Tty = bool(v != 0)
+ default:
+ iNdEx = preIndex
+ skippy, err := skipApi(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthApi
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *AttachResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: AttachResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: AttachResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Url", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Url = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipApi(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthApi
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *PortForwardRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: PortForwardRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: PortForwardRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field PodSandboxId", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.PodSandboxId = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType == 0 {
+ var v int32
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= (int32(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.Port = append(m.Port, v)
+ } else if wireType == 2 {
+ var packedLen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ packedLen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if packedLen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + packedLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ for iNdEx < postIndex {
+ var v int32
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= (int32(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.Port = append(m.Port, v)
+ }
+ } else {
+ return fmt.Errorf("proto: wrong wireType = %d for field Port", wireType)
+ }
+ default:
+ iNdEx = preIndex
+ skippy, err := skipApi(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthApi
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *PortForwardResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: PortForwardResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: PortForwardResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Url", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Url = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipApi(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthApi
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ImageFilter) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ImageFilter: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ImageFilter: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Image", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Image == nil {
+ m.Image = &ImageSpec{}
+ }
+ if err := m.Image.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipApi(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthApi
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ListImagesRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ListImagesRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ListImagesRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Filter", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Filter == nil {
+ m.Filter = &ImageFilter{}
+ }
+ if err := m.Filter.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipApi(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthApi
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *Image) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: Image: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: Image: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Id = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field RepoTags", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.RepoTags = append(m.RepoTags, string(dAtA[iNdEx:postIndex]))
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field RepoDigests", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.RepoDigests = append(m.RepoDigests, string(dAtA[iNdEx:postIndex]))
+ iNdEx = postIndex
+ case 4:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Size_", wireType)
+ }
+ m.Size_ = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.Size_ |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 5:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Uid", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Uid == nil {
+ m.Uid = &Int64Value{}
+ }
+ if err := m.Uid.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 6:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Username", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Username = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipApi(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthApi
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ListImagesResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ListImagesResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ListImagesResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Images", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Images = append(m.Images, &Image{})
+ if err := m.Images[len(m.Images)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipApi(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthApi
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ImageStatusRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ImageStatusRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ImageStatusRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Image", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Image == nil {
+ m.Image = &ImageSpec{}
+ }
+ if err := m.Image.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipApi(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthApi
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ImageStatusResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ImageStatusResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ImageStatusResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Image", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Image == nil {
+ m.Image = &Image{}
+ }
+ if err := m.Image.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipApi(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthApi
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *AuthConfig) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: AuthConfig: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: AuthConfig: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Username", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Username = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Password", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Password = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Auth", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Auth = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 4:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ServerAddress", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.ServerAddress = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 5:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field IdentityToken", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.IdentityToken = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 6:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field RegistryToken", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.RegistryToken = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipApi(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthApi
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *PullImageRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: PullImageRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: PullImageRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Image", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Image == nil {
+ m.Image = &ImageSpec{}
+ }
+ if err := m.Image.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Auth", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Auth == nil {
+ m.Auth = &AuthConfig{}
+ }
+ if err := m.Auth.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field SandboxConfig", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.SandboxConfig == nil {
+ m.SandboxConfig = &PodSandboxConfig{}
+ }
+ if err := m.SandboxConfig.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipApi(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthApi
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *PullImageResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: PullImageResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: PullImageResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ImageRef", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.ImageRef = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipApi(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthApi
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *RemoveImageRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: RemoveImageRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: RemoveImageRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Image", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Image == nil {
+ m.Image = &ImageSpec{}
+ }
+ if err := m.Image.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipApi(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthApi
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *RemoveImageResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: RemoveImageResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: RemoveImageResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ default:
+ iNdEx = preIndex
+ skippy, err := skipApi(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthApi
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *NetworkConfig) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: NetworkConfig: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: NetworkConfig: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field PodCidr", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.PodCidr = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipApi(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthApi
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *RuntimeConfig) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: RuntimeConfig: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: RuntimeConfig: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field NetworkConfig", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.NetworkConfig == nil {
+ m.NetworkConfig = &NetworkConfig{}
+ }
+ if err := m.NetworkConfig.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipApi(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthApi
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *UpdateRuntimeConfigRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: UpdateRuntimeConfigRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: UpdateRuntimeConfigRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field RuntimeConfig", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.RuntimeConfig == nil {
+ m.RuntimeConfig = &RuntimeConfig{}
+ }
+ if err := m.RuntimeConfig.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipApi(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthApi
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *UpdateRuntimeConfigResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: UpdateRuntimeConfigResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: UpdateRuntimeConfigResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ default:
+ iNdEx = preIndex
+ skippy, err := skipApi(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthApi
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *RuntimeCondition) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: RuntimeCondition: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: RuntimeCondition: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Type = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.Status = bool(v != 0)
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Reason", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Reason = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 4:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Message", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Message = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipApi(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthApi
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *RuntimeStatus) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: RuntimeStatus: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: RuntimeStatus: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Conditions", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Conditions = append(m.Conditions, &RuntimeCondition{})
+ if err := m.Conditions[len(m.Conditions)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipApi(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthApi
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *StatusRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: StatusRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: StatusRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ default:
+ iNdEx = preIndex
+ skippy, err := skipApi(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthApi
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *StatusResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: StatusResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: StatusResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Status == nil {
+ m.Status = &RuntimeStatus{}
+ }
+ if err := m.Status.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipApi(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthApi
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ImageFsInfoRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ImageFsInfoRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ImageFsInfoRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ default:
+ iNdEx = preIndex
+ skippy, err := skipApi(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthApi
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *UInt64Value) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: UInt64Value: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: UInt64Value: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Value", wireType)
+ }
+ m.Value = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.Value |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ default:
+ iNdEx = preIndex
+ skippy, err := skipApi(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthApi
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *StorageIdentifier) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: StorageIdentifier: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: StorageIdentifier: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Uuid", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Uuid = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipApi(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthApi
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *FilesystemUsage) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: FilesystemUsage: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: FilesystemUsage: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Timestamp", wireType)
+ }
+ m.Timestamp = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.Timestamp |= (int64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field StorageId", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.StorageId == nil {
+ m.StorageId = &StorageIdentifier{}
+ }
+ if err := m.StorageId.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field UsedBytes", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.UsedBytes == nil {
+ m.UsedBytes = &UInt64Value{}
+ }
+ if err := m.UsedBytes.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 4:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field InodesUsed", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.InodesUsed == nil {
+ m.InodesUsed = &UInt64Value{}
+ }
+ if err := m.InodesUsed.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipApi(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthApi
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ImageFsInfoResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ImageFsInfoResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ImageFsInfoResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ImageFilesystems", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.ImageFilesystems = append(m.ImageFilesystems, &FilesystemUsage{})
+ if err := m.ImageFilesystems[len(m.ImageFilesystems)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipApi(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthApi
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ContainerStatsRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ContainerStatsRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ContainerStatsRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ContainerId", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.ContainerId = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipApi(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthApi
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ContainerStatsResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ContainerStatsResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ContainerStatsResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Stats", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Stats == nil {
+ m.Stats = &ContainerStats{}
+ }
+ if err := m.Stats.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipApi(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthApi
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ListContainerStatsRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ListContainerStatsRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ListContainerStatsRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Filter", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Filter == nil {
+ m.Filter = &ContainerStatsFilter{}
+ }
+ if err := m.Filter.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipApi(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthApi
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ContainerStatsFilter) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ContainerStatsFilter: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ContainerStatsFilter: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Id = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field PodSandboxId", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.PodSandboxId = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field LabelSelector", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ var keykey uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ keykey |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ var stringLenmapkey uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLenmapkey |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLenmapkey := int(stringLenmapkey)
+ if intStringLenmapkey < 0 {
+ return ErrInvalidLengthApi
+ }
+ postStringIndexmapkey := iNdEx + intStringLenmapkey
+ if postStringIndexmapkey > l {
+ return io.ErrUnexpectedEOF
+ }
+ mapkey := string(dAtA[iNdEx:postStringIndexmapkey])
+ iNdEx = postStringIndexmapkey
+ if m.LabelSelector == nil {
+ m.LabelSelector = make(map[string]string)
+ }
+ if iNdEx < postIndex {
+ var valuekey uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ valuekey |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ var stringLenmapvalue uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLenmapvalue |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLenmapvalue := int(stringLenmapvalue)
+ if intStringLenmapvalue < 0 {
+ return ErrInvalidLengthApi
+ }
+ postStringIndexmapvalue := iNdEx + intStringLenmapvalue
+ if postStringIndexmapvalue > l {
+ return io.ErrUnexpectedEOF
+ }
+ mapvalue := string(dAtA[iNdEx:postStringIndexmapvalue])
+ iNdEx = postStringIndexmapvalue
+ m.LabelSelector[mapkey] = mapvalue
+ } else {
+ var mapvalue string
+ m.LabelSelector[mapkey] = mapvalue
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipApi(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthApi
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ListContainerStatsResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ListContainerStatsResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ListContainerStatsResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Stats", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Stats = append(m.Stats, &ContainerStats{})
+ if err := m.Stats[len(m.Stats)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipApi(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthApi
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ContainerAttributes) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ContainerAttributes: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ContainerAttributes: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Id = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Metadata", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Metadata == nil {
+ m.Metadata = &ContainerMetadata{}
+ }
+ if err := m.Metadata.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Labels", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ var keykey uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ keykey |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ var stringLenmapkey uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLenmapkey |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLenmapkey := int(stringLenmapkey)
+ if intStringLenmapkey < 0 {
+ return ErrInvalidLengthApi
+ }
+ postStringIndexmapkey := iNdEx + intStringLenmapkey
+ if postStringIndexmapkey > l {
+ return io.ErrUnexpectedEOF
+ }
+ mapkey := string(dAtA[iNdEx:postStringIndexmapkey])
+ iNdEx = postStringIndexmapkey
+ if m.Labels == nil {
+ m.Labels = make(map[string]string)
+ }
+ if iNdEx < postIndex {
+ var valuekey uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ valuekey |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ var stringLenmapvalue uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLenmapvalue |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLenmapvalue := int(stringLenmapvalue)
+ if intStringLenmapvalue < 0 {
+ return ErrInvalidLengthApi
+ }
+ postStringIndexmapvalue := iNdEx + intStringLenmapvalue
+ if postStringIndexmapvalue > l {
+ return io.ErrUnexpectedEOF
+ }
+ mapvalue := string(dAtA[iNdEx:postStringIndexmapvalue])
+ iNdEx = postStringIndexmapvalue
+ m.Labels[mapkey] = mapvalue
+ } else {
+ var mapvalue string
+ m.Labels[mapkey] = mapvalue
+ }
+ iNdEx = postIndex
+ case 4:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Annotations", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ var keykey uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ keykey |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ var stringLenmapkey uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLenmapkey |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLenmapkey := int(stringLenmapkey)
+ if intStringLenmapkey < 0 {
+ return ErrInvalidLengthApi
+ }
+ postStringIndexmapkey := iNdEx + intStringLenmapkey
+ if postStringIndexmapkey > l {
+ return io.ErrUnexpectedEOF
+ }
+ mapkey := string(dAtA[iNdEx:postStringIndexmapkey])
+ iNdEx = postStringIndexmapkey
+ if m.Annotations == nil {
+ m.Annotations = make(map[string]string)
+ }
+ if iNdEx < postIndex {
+ var valuekey uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ valuekey |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ var stringLenmapvalue uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLenmapvalue |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLenmapvalue := int(stringLenmapvalue)
+ if intStringLenmapvalue < 0 {
+ return ErrInvalidLengthApi
+ }
+ postStringIndexmapvalue := iNdEx + intStringLenmapvalue
+ if postStringIndexmapvalue > l {
+ return io.ErrUnexpectedEOF
+ }
+ mapvalue := string(dAtA[iNdEx:postStringIndexmapvalue])
+ iNdEx = postStringIndexmapvalue
+ m.Annotations[mapkey] = mapvalue
+ } else {
+ var mapvalue string
+ m.Annotations[mapkey] = mapvalue
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipApi(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthApi
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ContainerStats) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ContainerStats: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ContainerStats: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Attributes", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Attributes == nil {
+ m.Attributes = &ContainerAttributes{}
+ }
+ if err := m.Attributes.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Cpu", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Cpu == nil {
+ m.Cpu = &CpuUsage{}
+ }
+ if err := m.Cpu.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Memory", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Memory == nil {
+ m.Memory = &MemoryUsage{}
+ }
+ if err := m.Memory.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 4:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field WritableLayer", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.WritableLayer == nil {
+ m.WritableLayer = &FilesystemUsage{}
+ }
+ if err := m.WritableLayer.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipApi(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthApi
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *CpuUsage) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: CpuUsage: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: CpuUsage: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Timestamp", wireType)
+ }
+ m.Timestamp = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.Timestamp |= (int64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field UsageCoreNanoSeconds", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.UsageCoreNanoSeconds == nil {
+ m.UsageCoreNanoSeconds = &UInt64Value{}
+ }
+ if err := m.UsageCoreNanoSeconds.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipApi(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthApi
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *MemoryUsage) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: MemoryUsage: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: MemoryUsage: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Timestamp", wireType)
+ }
+ m.Timestamp = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.Timestamp |= (int64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field WorkingSetBytes", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthApi
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.WorkingSetBytes == nil {
+ m.WorkingSetBytes = &UInt64Value{}
+ }
+ if err := m.WorkingSetBytes.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipApi(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthApi
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func skipApi(dAtA []byte) (n int, err error) {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return 0, ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return 0, io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ wireType := int(wire & 0x7)
+ switch wireType {
+ case 0:
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return 0, ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return 0, io.ErrUnexpectedEOF
+ }
+ iNdEx++
+ if dAtA[iNdEx-1] < 0x80 {
+ break
+ }
+ }
+ return iNdEx, nil
+ case 1:
+ iNdEx += 8
+ return iNdEx, nil
+ case 2:
+ var length int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return 0, ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return 0, io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ length |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ iNdEx += length
+ if length < 0 {
+ return 0, ErrInvalidLengthApi
+ }
+ return iNdEx, nil
+ case 3:
+ for {
+ var innerWire uint64
+ var start int = iNdEx
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return 0, ErrIntOverflowApi
+ }
+ if iNdEx >= l {
+ return 0, io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ innerWire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ innerWireType := int(innerWire & 0x7)
+ if innerWireType == 4 {
+ break
+ }
+ next, err := skipApi(dAtA[start:])
+ if err != nil {
+ return 0, err
+ }
+ iNdEx = start + next
+ }
+ return iNdEx, nil
+ case 4:
+ return iNdEx, nil
+ case 5:
+ iNdEx += 4
+ return iNdEx, nil
+ default:
+ return 0, fmt.Errorf("proto: illegal wireType %d", wireType)
+ }
+ }
+ panic("unreachable")
+}
+
+var (
+ ErrInvalidLengthApi = fmt.Errorf("proto: negative length found during unmarshaling")
+ ErrIntOverflowApi = fmt.Errorf("proto: integer overflow")
+)
+
+func init() { proto.RegisterFile("api.proto", fileDescriptorApi) }
+
+var fileDescriptorApi = []byte{
+ // 4051 bytes of a gzipped FileDescriptorProto
+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x3b, 0x4d, 0x73, 0x1b, 0x47,
+ 0x76, 0x04, 0xc0, 0x0f, 0xe0, 0x81, 0x00, 0xc1, 0x16, 0x45, 0x42, 0x90, 0x44, 0xd3, 0x23, 0xcb,
+ 0x96, 0xb4, 0x2b, 0x59, 0xa6, 0xd7, 0x76, 0x2c, 0x7f, 0x09, 0x26, 0x29, 0x17, 0x2d, 0x89, 0xe4,
+ 0x0e, 0x44, 0xef, 0x6e, 0x36, 0x55, 0x93, 0x21, 0xa6, 0x09, 0x8e, 0x0d, 0x4c, 0xcf, 0xce, 0xf4,
+ 0xc8, 0x62, 0x4e, 0xc9, 0x2d, 0x47, 0xe7, 0x98, 0x5b, 0x0e, 0xa9, 0xda, 0xca, 0x25, 0x87, 0x9c,
+ 0xf2, 0x0b, 0x52, 0x5b, 0x95, 0x4a, 0x55, 0x0e, 0xa9, 0x54, 0x72, 0xdb, 0x55, 0x0e, 0x39, 0xa4,
+ 0x2a, 0xbf, 0x61, 0xab, 0xbf, 0x66, 0x7a, 0xbe, 0x20, 0x52, 0x76, 0xed, 0xea, 0x36, 0xfd, 0xfa,
+ 0xbd, 0xd7, 0xaf, 0xfb, 0xbd, 0x7e, 0xfd, 0xde, 0xeb, 0x1e, 0x68, 0xd8, 0xbe, 0x7b, 0xc7, 0x0f,
+ 0x08, 0x25, 0x68, 0x21, 0x88, 0x3c, 0xea, 0x4e, 0x70, 0xef, 0xf6, 0xc8, 0xa5, 0x27, 0xd1, 0xd1,
+ 0x9d, 0x21, 0x99, 0xbc, 0x3d, 0x22, 0x23, 0xf2, 0x36, 0xef, 0x3f, 0x8a, 0x8e, 0x79, 0x8b, 0x37,
+ 0xf8, 0x97, 0xa0, 0x33, 0x6e, 0x41, 0xfb, 0x2b, 0x1c, 0x84, 0x2e, 0xf1, 0x4c, 0xfc, 0xab, 0x08,
+ 0x87, 0x14, 0x75, 0x61, 0xe1, 0xa9, 0x80, 0x74, 0x2b, 0x1b, 0x95, 0x1b, 0x0d, 0x53, 0x35, 0x8d,
+ 0x5f, 0x57, 0x60, 0x29, 0x46, 0x0e, 0x7d, 0xe2, 0x85, 0xb8, 0x1c, 0x1b, 0xbd, 0x0e, 0x8b, 0x52,
+ 0x26, 0xcb, 0xb3, 0x27, 0xb8, 0x5b, 0xe5, 0xdd, 0x4d, 0x09, 0xdb, 0xb3, 0x27, 0x18, 0xbd, 0x05,
+ 0x4b, 0x0a, 0x45, 0x31, 0xa9, 0x71, 0xac, 0xb6, 0x04, 0xcb, 0xd1, 0xd0, 0x1d, 0xb8, 0xa0, 0x10,
+ 0x6d, 0xdf, 0x8d, 0x91, 0x67, 0x39, 0xf2, 0xb2, 0xec, 0xea, 0xfb, 0xae, 0xc4, 0x37, 0x7e, 0x09,
+ 0x8d, 0xed, 0xbd, 0xc1, 0x16, 0xf1, 0x8e, 0xdd, 0x11, 0x13, 0x31, 0xc4, 0x01, 0xa3, 0xe9, 0x56,
+ 0x36, 0x6a, 0x4c, 0x44, 0xd9, 0x44, 0x3d, 0xa8, 0x87, 0xd8, 0x0e, 0x86, 0x27, 0x38, 0xec, 0x56,
+ 0x79, 0x57, 0xdc, 0x66, 0x54, 0xc4, 0xa7, 0x2e, 0xf1, 0xc2, 0x6e, 0x4d, 0x50, 0xc9, 0xa6, 0xf1,
+ 0xb7, 0x15, 0x68, 0x1e, 0x90, 0x80, 0x3e, 0xb6, 0x7d, 0xdf, 0xf5, 0x46, 0xe8, 0x36, 0xd4, 0xf9,
+ 0x5a, 0x0e, 0xc9, 0x98, 0xaf, 0x41, 0x7b, 0x73, 0xf9, 0x8e, 0x14, 0xe9, 0xce, 0x81, 0xec, 0x30,
+ 0x63, 0x14, 0x74, 0x1d, 0xda, 0x43, 0xe2, 0x51, 0xdb, 0xf5, 0x70, 0x60, 0xf9, 0x24, 0xa0, 0x7c,
+ 0x65, 0xe6, 0xcc, 0x56, 0x0c, 0x65, 0xcc, 0xd1, 0x65, 0x68, 0x9c, 0x90, 0x90, 0x0a, 0x8c, 0x1a,
+ 0xc7, 0xa8, 0x33, 0x00, 0xef, 0x5c, 0x83, 0x05, 0xde, 0xe9, 0xfa, 0x72, 0x0d, 0xe6, 0x59, 0x73,
+ 0xd7, 0x37, 0xbe, 0xab, 0xc0, 0xdc, 0x63, 0x12, 0x79, 0x34, 0x33, 0x8c, 0x4d, 0x4f, 0xa4, 0x7e,
+ 0xb4, 0x61, 0x6c, 0x7a, 0x92, 0x0c, 0xc3, 0x30, 0x84, 0x8a, 0xc4, 0x30, 0xac, 0xb3, 0x07, 0xf5,
+ 0x00, 0xdb, 0x0e, 0xf1, 0xc6, 0xa7, 0x5c, 0x84, 0xba, 0x19, 0xb7, 0x99, 0xee, 0x42, 0x3c, 0x76,
+ 0xbd, 0xe8, 0x99, 0x15, 0xe0, 0xb1, 0x7d, 0x84, 0xc7, 0x5c, 0x94, 0xba, 0xd9, 0x96, 0x60, 0x53,
+ 0x40, 0x8d, 0xaf, 0x61, 0x89, 0x29, 0x3b, 0xf4, 0xed, 0x21, 0xde, 0xe7, 0x4b, 0xc8, 0x4c, 0x83,
+ 0x0f, 0xea, 0x61, 0xfa, 0x2d, 0x09, 0xbe, 0xe1, 0x92, 0xd5, 0xcd, 0x26, 0x83, 0xed, 0x09, 0x10,
+ 0xba, 0x04, 0x75, 0x21, 0x97, 0xeb, 0x70, 0xb1, 0xea, 0x26, 0x9f, 0xf1, 0x81, 0xeb, 0xc4, 0x5d,
+ 0xae, 0x3f, 0x94, 0x52, 0x2d, 0x88, 0xd9, 0x0f, 0x0d, 0x03, 0x60, 0xd7, 0xa3, 0xef, 0xff, 0xe4,
+ 0x2b, 0x7b, 0x1c, 0x61, 0xb4, 0x02, 0x73, 0x4f, 0xd9, 0x07, 0xe7, 0x5f, 0x33, 0x45, 0xc3, 0xf8,
+ 0x8f, 0x2a, 0x5c, 0x7e, 0xc4, 0x04, 0x1c, 0xd8, 0x9e, 0x73, 0x44, 0x9e, 0x0d, 0xf0, 0x30, 0x0a,
+ 0x5c, 0x7a, 0xba, 0x45, 0x3c, 0x8a, 0x9f, 0x51, 0xb4, 0x03, 0xcb, 0x9e, 0x92, 0xd7, 0x52, 0x26,
+ 0xc0, 0x38, 0x34, 0x37, 0xbb, 0xb1, 0x5e, 0x33, 0x33, 0x32, 0x3b, 0x5e, 0x1a, 0x10, 0xa2, 0xcf,
+ 0x92, 0xf5, 0x51, 0x4c, 0xaa, 0x9c, 0xc9, 0x6a, 0xcc, 0x64, 0xb0, 0xc3, 0xe5, 0x90, 0x2c, 0xd4,
+ 0xba, 0x29, 0x06, 0xef, 0x02, 0xdb, 0x2b, 0x96, 0x1d, 0x5a, 0x51, 0x88, 0x03, 0x3e, 0xd3, 0xe6,
+ 0xe6, 0x85, 0x98, 0x38, 0x99, 0xa7, 0xd9, 0x08, 0x22, 0xaf, 0x1f, 0x1e, 0x86, 0x38, 0xe0, 0x3b,
+ 0x4a, 0x6a, 0xc8, 0x0a, 0x08, 0xa1, 0xc7, 0xa1, 0xd2, 0x8a, 0x02, 0x9b, 0x1c, 0x8a, 0xde, 0x86,
+ 0x0b, 0x61, 0xe4, 0xfb, 0x63, 0x3c, 0xc1, 0x1e, 0xb5, 0xc7, 0xd6, 0x28, 0x20, 0x91, 0x1f, 0x76,
+ 0xe7, 0x36, 0x6a, 0x37, 0x6a, 0x26, 0xd2, 0xbb, 0xbe, 0xe0, 0x3d, 0x68, 0x1d, 0xc0, 0x0f, 0xdc,
+ 0xa7, 0xee, 0x18, 0x8f, 0xb0, 0xd3, 0x9d, 0xe7, 0x4c, 0x35, 0x88, 0xf1, 0x5d, 0x15, 0x2e, 0xf2,
+ 0xe9, 0x1c, 0x10, 0x47, 0xae, 0xac, 0xdc, 0x7f, 0xd7, 0xa0, 0x35, 0xe4, 0xec, 0x2d, 0xdf, 0x0e,
+ 0xb0, 0x47, 0xa5, 0x21, 0x2e, 0x0a, 0xe0, 0x01, 0x87, 0xa1, 0x7d, 0xe8, 0x84, 0x52, 0x11, 0xd6,
+ 0x50, 0x68, 0x42, 0xae, 0xd7, 0x1b, 0xf1, 0x94, 0xa7, 0x68, 0xcd, 0x5c, 0x0a, 0x73, 0x6a, 0x5c,
+ 0x08, 0x4f, 0xc3, 0x21, 0x1d, 0x8b, 0xfd, 0xdb, 0xdc, 0xfc, 0x51, 0x9a, 0x4f, 0x56, 0xcc, 0x3b,
+ 0x03, 0x81, 0xbd, 0xe3, 0xd1, 0xe0, 0xd4, 0x54, 0xb4, 0xbd, 0x7b, 0xb0, 0xa8, 0x77, 0xa0, 0x0e,
+ 0xd4, 0xbe, 0xc1, 0xa7, 0x72, 0x0a, 0xec, 0x33, 0xb1, 0x32, 0xb1, 0x7b, 0x44, 0xe3, 0x5e, 0xf5,
+ 0x4f, 0x2a, 0x46, 0x00, 0x28, 0x19, 0xe5, 0x31, 0xa6, 0xb6, 0x63, 0x53, 0x1b, 0x21, 0x98, 0xe5,
+ 0xfe, 0x50, 0xb0, 0xe0, 0xdf, 0x8c, 0x6b, 0x24, 0x0d, 0xbd, 0x61, 0xb2, 0x4f, 0x74, 0x05, 0x1a,
+ 0xb1, 0x49, 0x49, 0xa7, 0x98, 0x00, 0x98, 0x73, 0xb2, 0x29, 0xc5, 0x13, 0x9f, 0x72, 0xf5, 0xb6,
+ 0x4c, 0xd5, 0x34, 0xfe, 0x79, 0x16, 0x3a, 0x39, 0x0d, 0x7c, 0x00, 0xf5, 0x89, 0x1c, 0x5e, 0x5a,
+ 0xf2, 0xe5, 0xc4, 0x43, 0xe5, 0x24, 0x34, 0x63, 0x64, 0xe6, 0x00, 0xd8, 0xd6, 0xd2, 0xfc, 0x77,
+ 0xdc, 0x66, 0x6a, 0x1d, 0x93, 0x91, 0xe5, 0xb8, 0x01, 0x1e, 0x52, 0x12, 0x9c, 0x4a, 0x29, 0x17,
+ 0xc7, 0x64, 0xb4, 0xad, 0x60, 0xe8, 0x1d, 0x00, 0xc7, 0x0b, 0x99, 0x46, 0x8f, 0xdd, 0x11, 0x97,
+ 0xb5, 0xb9, 0x89, 0xe2, 0xb1, 0x63, 0x1f, 0x6d, 0x36, 0x1c, 0x2f, 0x94, 0xc2, 0x7e, 0x08, 0x2d,
+ 0xe6, 0xf3, 0xac, 0x89, 0x70, 0xaf, 0xc2, 0x26, 0x9b, 0x9b, 0x2b, 0x9a, 0xc4, 0xb1, 0xef, 0x35,
+ 0x17, 0xfd, 0xa4, 0x11, 0xa2, 0x4f, 0x60, 0x9e, 0xfb, 0x9c, 0xb0, 0x3b, 0xcf, 0x69, 0xae, 0x17,
+ 0xcc, 0x52, 0x6a, 0xfb, 0x11, 0xc7, 0x13, 0xca, 0x96, 0x44, 0xe8, 0x11, 0x34, 0x6d, 0xcf, 0x23,
+ 0xd4, 0x16, 0xdb, 0x75, 0x81, 0xf3, 0xb8, 0x55, 0xce, 0xa3, 0x9f, 0x20, 0x0b, 0x46, 0x3a, 0x39,
+ 0xfa, 0x09, 0xcc, 0xf1, 0xfd, 0xdc, 0xad, 0xf3, 0x59, 0xaf, 0x4f, 0x37, 0x3f, 0x53, 0x20, 0xf7,
+ 0x3e, 0x84, 0xa6, 0x26, 0xda, 0x79, 0xcc, 0xad, 0xf7, 0x29, 0x74, 0xb2, 0x12, 0x9d, 0xcb, 0x5c,
+ 0x77, 0x61, 0xc5, 0x8c, 0xbc, 0x44, 0x30, 0x15, 0x10, 0xbc, 0x03, 0xf3, 0x52, 0x7f, 0xc2, 0x76,
+ 0x2e, 0x95, 0xae, 0x88, 0x29, 0x11, 0x8d, 0x4f, 0xe0, 0x62, 0x86, 0x95, 0x0c, 0x17, 0xde, 0x80,
+ 0xb6, 0x4f, 0x1c, 0x2b, 0x14, 0x60, 0xcb, 0x75, 0x94, 0x33, 0xf0, 0x63, 0xdc, 0x5d, 0x87, 0x91,
+ 0x0f, 0x28, 0xf1, 0xf3, 0xa2, 0x9c, 0x8d, 0xbc, 0x0b, 0xab, 0x59, 0x72, 0x31, 0xbc, 0xf1, 0x19,
+ 0xac, 0x99, 0x78, 0x42, 0x9e, 0xe2, 0x97, 0x65, 0xdd, 0x83, 0x6e, 0x9e, 0x41, 0xc2, 0x3c, 0x81,
+ 0x0e, 0xa8, 0x4d, 0xa3, 0xf0, 0x7c, 0xcc, 0x6f, 0xea, 0x0c, 0xe4, 0x41, 0x28, 0xf8, 0xa0, 0x36,
+ 0x54, 0x5d, 0x5f, 0x12, 0x55, 0x5d, 0xdf, 0xf8, 0x0c, 0x1a, 0xf1, 0x11, 0x84, 0x36, 0x93, 0x50,
+ 0xa5, 0xfa, 0x82, 0x73, 0x2a, 0x0e, 0x62, 0x1e, 0xe6, 0xbc, 0xb5, 0x1c, 0x69, 0x13, 0x20, 0xf6,
+ 0x33, 0xea, 0xdc, 0x43, 0x79, 0x7e, 0xa6, 0x86, 0x65, 0xfc, 0x7d, 0xca, 0xe9, 0x68, 0x22, 0x3b,
+ 0xb1, 0xc8, 0x4e, 0xca, 0x09, 0x55, 0xcf, 0xe3, 0x84, 0xee, 0xc0, 0x5c, 0x48, 0x6d, 0x2a, 0xdc,
+ 0x60, 0x5b, 0x9b, 0x5c, 0x7a, 0x48, 0x6c, 0x0a, 0x34, 0x74, 0x15, 0x60, 0x18, 0x60, 0x9b, 0x62,
+ 0xc7, 0xb2, 0x85, 0x7f, 0xac, 0x99, 0x0d, 0x09, 0xe9, 0x53, 0x74, 0x0f, 0x16, 0x54, 0xdc, 0x31,
+ 0xc7, 0xc5, 0xd8, 0x28, 0x60, 0x98, 0x5a, 0x7d, 0x53, 0x11, 0x24, 0x7b, 0x7a, 0x7e, 0xfa, 0x9e,
+ 0x96, 0x74, 0x02, 0x59, 0x73, 0x4b, 0x0b, 0xa5, 0x6e, 0x49, 0x50, 0x9c, 0xc5, 0x2d, 0xd5, 0x4b,
+ 0xdd, 0x92, 0xe4, 0x31, 0xd5, 0x2d, 0xfd, 0x31, 0x1d, 0xcc, 0x63, 0xe8, 0xe6, 0x37, 0x88, 0x74,
+ 0x0c, 0xef, 0xc0, 0x7c, 0xc8, 0x21, 0x53, 0x9c, 0x8c, 0x24, 0x91, 0x88, 0xc6, 0x03, 0x58, 0xc9,
+ 0x58, 0x80, 0x08, 0xfb, 0x62, 0x7b, 0xa9, 0x9c, 0xc9, 0x5e, 0x8c, 0xff, 0xaf, 0xe8, 0xd6, 0xfb,
+ 0xc0, 0x1d, 0x53, 0x1c, 0xe4, 0xac, 0xf7, 0x5d, 0xc5, 0x54, 0x98, 0xee, 0xd5, 0x32, 0xa6, 0x22,
+ 0x22, 0x93, 0x96, 0x38, 0x80, 0x36, 0xd7, 0xa1, 0x15, 0xe2, 0x31, 0x3f, 0x10, 0x65, 0x28, 0xf2,
+ 0xe3, 0x02, 0x6a, 0x31, 0xae, 0x30, 0x80, 0x81, 0x44, 0x17, 0xea, 0x6b, 0x8d, 0x75, 0x58, 0xef,
+ 0x3e, 0xa0, 0x3c, 0xd2, 0xb9, 0xf4, 0xf0, 0x25, 0xdb, 0xfb, 0x2c, 0x93, 0x28, 0xf0, 0xf4, 0xc7,
+ 0x5c, 0x8c, 0x29, 0x4a, 0x10, 0x72, 0x9a, 0x12, 0xd1, 0xf8, 0xbb, 0x1a, 0x40, 0xd2, 0xf9, 0xca,
+ 0x6e, 0xfa, 0x0f, 0xe2, 0x2d, 0x28, 0xa2, 0x89, 0xd7, 0x0a, 0xf8, 0x15, 0x6e, 0xbe, 0x07, 0xe9,
+ 0xcd, 0x27, 0xe2, 0x8a, 0x37, 0x8a, 0xa8, 0x5f, 0xd9, 0x6d, 0xb7, 0x05, 0xab, 0x59, 0x75, 0xcb,
+ 0x4d, 0x77, 0x13, 0xe6, 0x5c, 0x8a, 0x27, 0x22, 0x2f, 0xd6, 0x93, 0x0b, 0x0d, 0x57, 0x60, 0x18,
+ 0xaf, 0x43, 0x63, 0x77, 0x62, 0x8f, 0xf0, 0xc0, 0xc7, 0x43, 0x36, 0x96, 0xcb, 0x1a, 0x72, 0x7c,
+ 0xd1, 0x30, 0x36, 0xa1, 0xfe, 0x10, 0x9f, 0x8a, 0x3d, 0x78, 0x46, 0xf9, 0x8c, 0x7f, 0xad, 0xc0,
+ 0x1a, 0xf7, 0x9d, 0x5b, 0x2a, 0x2b, 0x35, 0x71, 0x48, 0xa2, 0x60, 0x88, 0x43, 0xae, 0x52, 0x3f,
+ 0xb2, 0x7c, 0x1c, 0xb8, 0xc4, 0x91, 0x39, 0x5c, 0x63, 0xe8, 0x47, 0x07, 0x1c, 0xc0, 0x32, 0x57,
+ 0xd6, 0xfd, 0xab, 0x88, 0x48, 0xdb, 0xaa, 0x99, 0xf5, 0xa1, 0x1f, 0xfd, 0x94, 0xb5, 0x15, 0x6d,
+ 0x78, 0x62, 0x07, 0x38, 0xe4, 0x36, 0x24, 0x68, 0x07, 0x1c, 0x80, 0xde, 0x81, 0x8b, 0x13, 0x3c,
+ 0x21, 0xc1, 0xa9, 0x35, 0x76, 0x27, 0x2e, 0xb5, 0x5c, 0xcf, 0x3a, 0x3a, 0xa5, 0x38, 0x94, 0x86,
+ 0x83, 0x44, 0xe7, 0x23, 0xd6, 0xb7, 0xeb, 0x7d, 0xce, 0x7a, 0x90, 0x01, 0x2d, 0x42, 0x26, 0x56,
+ 0x38, 0x24, 0x01, 0xb6, 0x6c, 0xe7, 0x6b, 0x7e, 0x78, 0xd4, 0xcc, 0x26, 0x21, 0x93, 0x01, 0x83,
+ 0xf5, 0x9d, 0xaf, 0x0d, 0x1b, 0x5a, 0xa9, 0x9c, 0x8e, 0xc5, 0xfa, 0x3c, 0x79, 0x93, 0xb1, 0x3e,
+ 0xfb, 0x66, 0xb0, 0x80, 0x8c, 0xd5, 0x3a, 0xf0, 0x6f, 0x06, 0xa3, 0xa7, 0xbe, 0x0a, 0xf4, 0xf9,
+ 0x37, 0x5b, 0xb0, 0x31, 0x7e, 0x2a, 0xd3, 0xea, 0x86, 0x29, 0x1a, 0x86, 0x03, 0xb0, 0x65, 0xfb,
+ 0xf6, 0x91, 0x3b, 0x76, 0xe9, 0x29, 0xba, 0x09, 0x1d, 0xdb, 0x71, 0xac, 0xa1, 0x82, 0xb8, 0x58,
+ 0xd5, 0x38, 0x96, 0x6c, 0xc7, 0xd9, 0xd2, 0xc0, 0xe8, 0x47, 0xb0, 0xec, 0x04, 0xc4, 0x4f, 0xe3,
+ 0x8a, 0xa2, 0x47, 0x87, 0x75, 0xe8, 0xc8, 0xc6, 0xf3, 0x1a, 0x5c, 0x4d, 0xab, 0x25, 0x9b, 0x25,
+ 0x7f, 0x00, 0x8b, 0x99, 0x51, 0xd3, 0xe9, 0x69, 0x22, 0xa4, 0x99, 0x42, 0xcc, 0xe4, 0x91, 0xd5,
+ 0x6c, 0x1e, 0x59, 0x9c, 0x7e, 0xd7, 0x7e, 0x88, 0xf4, 0x7b, 0xf6, 0xfb, 0xa4, 0xdf, 0x73, 0x67,
+ 0x4a, 0xbf, 0xdf, 0xe4, 0x05, 0x2d, 0x45, 0xc4, 0xd3, 0xa6, 0x79, 0x51, 0x75, 0x89, 0x71, 0x3c,
+ 0x55, 0xf8, 0xca, 0xa4, 0xe9, 0x0b, 0xe7, 0x49, 0xd3, 0xeb, 0xa5, 0x69, 0x3a, 0xb3, 0x08, 0xdf,
+ 0xb7, 0x83, 0x09, 0x09, 0x2c, 0x3f, 0x20, 0xc7, 0xee, 0x18, 0x77, 0x1b, 0x5c, 0x84, 0x25, 0x05,
+ 0x3f, 0x10, 0x60, 0xe3, 0x1f, 0x2a, 0xb0, 0x92, 0x56, 0xb2, 0xcc, 0xc0, 0x3e, 0x85, 0x46, 0xa0,
+ 0x76, 0xa1, 0x54, 0xec, 0x46, 0x3a, 0xd2, 0xc9, 0xef, 0x56, 0x33, 0x21, 0x41, 0x3f, 0x2d, 0xcd,
+ 0xe5, 0xdf, 0x2c, 0x61, 0xf3, 0xa2, 0x6c, 0xde, 0xe8, 0xc3, 0x72, 0x8c, 0x3c, 0x35, 0x93, 0xd6,
+ 0x32, 0xe3, 0x6a, 0x3a, 0x33, 0xf6, 0x60, 0x7e, 0x1b, 0x3f, 0x75, 0x87, 0xf8, 0x07, 0x29, 0x8d,
+ 0x6d, 0x40, 0xd3, 0xc7, 0xc1, 0xc4, 0x0d, 0xc3, 0xd8, 0x40, 0x1b, 0xa6, 0x0e, 0x32, 0xfe, 0x7b,
+ 0x0e, 0x96, 0xb2, 0x2b, 0xfb, 0x7e, 0x2e, 0x11, 0xef, 0x25, 0x3b, 0x26, 0x3b, 0x3f, 0xed, 0x34,
+ 0xbc, 0xa1, 0x1c, 0x6e, 0x35, 0x13, 0x8f, 0xc7, 0x3e, 0x59, 0x3a, 0x61, 0x36, 0xff, 0x21, 0x99,
+ 0x4c, 0x6c, 0xcf, 0x51, 0x65, 0x4b, 0xd9, 0x64, 0xab, 0x65, 0x07, 0x23, 0xb6, 0x0d, 0x18, 0x98,
+ 0x7f, 0xa3, 0xd7, 0xa0, 0xc9, 0xe2, 0x5a, 0xd7, 0xe3, 0x79, 0x3c, 0x37, 0xf2, 0x86, 0x09, 0x12,
+ 0xb4, 0xed, 0x06, 0xe8, 0x3a, 0xcc, 0x62, 0xef, 0xa9, 0x3a, 0xf7, 0x92, 0xba, 0xa6, 0x72, 0xf4,
+ 0x26, 0xef, 0x46, 0x6f, 0xc2, 0xfc, 0x84, 0x44, 0x1e, 0x55, 0x11, 0x6e, 0x3b, 0x46, 0xe4, 0xc5,
+ 0x48, 0x53, 0xf6, 0xa2, 0x9b, 0xb0, 0xe0, 0x70, 0x1d, 0xa8, 0x30, 0x76, 0x29, 0xa9, 0x05, 0x70,
+ 0xb8, 0xa9, 0xfa, 0xd1, 0xc7, 0xf1, 0x89, 0xdd, 0xc8, 0x9c, 0xb9, 0x99, 0x45, 0x2d, 0x3c, 0xb6,
+ 0x1f, 0xa6, 0x8f, 0x6d, 0xe0, 0x2c, 0x6e, 0x96, 0xb2, 0x98, 0x9e, 0xc9, 0x5f, 0x82, 0xfa, 0x98,
+ 0x8c, 0x84, 0x1d, 0x34, 0x45, 0x91, 0x7b, 0x4c, 0x46, 0xdc, 0x0c, 0x56, 0x58, 0x98, 0xe2, 0xb8,
+ 0x5e, 0x77, 0x91, 0x6f, 0x5f, 0xd1, 0x60, 0xa7, 0x0f, 0xff, 0xb0, 0x88, 0x37, 0xc4, 0xdd, 0x16,
+ 0xef, 0x6a, 0x70, 0xc8, 0xbe, 0x37, 0xe4, 0x87, 0x23, 0xa5, 0xa7, 0xdd, 0x36, 0x87, 0xb3, 0x4f,
+ 0x16, 0x5d, 0x8a, 0xbc, 0x62, 0x29, 0x13, 0x5d, 0x16, 0xed, 0xcf, 0x57, 0xa0, 0x54, 0xf0, 0x4f,
+ 0x15, 0x58, 0xdd, 0xe2, 0xc1, 0x95, 0xe6, 0x09, 0xce, 0x91, 0xea, 0xa2, 0xbb, 0x71, 0x4d, 0x21,
+ 0x9b, 0xb1, 0x66, 0x27, 0x2b, 0xf1, 0xd0, 0x7d, 0x68, 0x2b, 0x9e, 0x92, 0xb2, 0xf6, 0xa2, 0x6a,
+ 0x44, 0x2b, 0xd4, 0x9b, 0xc6, 0xc7, 0xb0, 0x96, 0x93, 0x59, 0x06, 0x42, 0xaf, 0xc3, 0x62, 0xe2,
+ 0x11, 0x62, 0x91, 0x9b, 0x31, 0x6c, 0xd7, 0x31, 0xee, 0xc1, 0xc5, 0x01, 0xb5, 0x03, 0x9a, 0x9b,
+ 0xf0, 0x19, 0x68, 0x79, 0x41, 0x22, 0x4d, 0x2b, 0x6b, 0x06, 0x03, 0x58, 0x19, 0x50, 0xe2, 0xbf,
+ 0x04, 0x53, 0xb6, 0xd3, 0xd9, 0xb4, 0x49, 0x44, 0x65, 0xf4, 0xa3, 0x9a, 0xc6, 0x9a, 0x28, 0x9f,
+ 0xe4, 0x47, 0xfb, 0x08, 0x56, 0x45, 0xf5, 0xe2, 0x65, 0x26, 0x71, 0x49, 0xd5, 0x4e, 0xf2, 0x7c,
+ 0xb7, 0xe1, 0x42, 0xe2, 0xca, 0x93, 0x44, 0xec, 0x76, 0x3a, 0x11, 0x5b, 0xcb, 0xeb, 0x38, 0x95,
+ 0x87, 0xfd, 0x4d, 0x55, 0x73, 0x98, 0x25, 0x69, 0xd8, 0x66, 0x3a, 0x0d, 0xbb, 0x52, 0xc2, 0x32,
+ 0x95, 0x85, 0xe5, 0x2d, 0xb2, 0x56, 0x60, 0x91, 0x66, 0x2e, 0x57, 0x9b, 0xcd, 0x94, 0x8d, 0x33,
+ 0xb2, 0xfd, 0x41, 0x52, 0xb5, 0x5d, 0x91, 0xaa, 0xc5, 0x43, 0xc7, 0x15, 0xa5, 0xbb, 0x99, 0x54,
+ 0xad, 0x5b, 0x26, 0x66, 0x9c, 0xa9, 0xfd, 0xf5, 0x2c, 0x34, 0xe2, 0xbe, 0xdc, 0xc2, 0xe6, 0x17,
+ 0xa9, 0x5a, 0xb0, 0x48, 0xfa, 0xf9, 0x55, 0x7b, 0x99, 0xf3, 0x6b, 0xf6, 0x45, 0xe7, 0xd7, 0x65,
+ 0x68, 0xf0, 0x0f, 0x2b, 0xc0, 0xc7, 0xf2, 0x3c, 0xaa, 0x73, 0x80, 0x89, 0x8f, 0x13, 0x83, 0x9a,
+ 0x3f, 0x8b, 0x41, 0x65, 0x72, 0xc2, 0x85, 0x6c, 0x4e, 0xf8, 0x7e, 0x7c, 0xc2, 0x88, 0xb3, 0x68,
+ 0x3d, 0xcf, 0xae, 0xf0, 0x6c, 0xd9, 0x49, 0x9f, 0x2d, 0xe2, 0x78, 0xba, 0x56, 0x40, 0xfc, 0xca,
+ 0x66, 0x84, 0x8f, 0x44, 0x46, 0xa8, 0x5b, 0x95, 0x74, 0x84, 0x9b, 0x00, 0xf1, 0x9e, 0x57, 0x69,
+ 0x21, 0xca, 0x4f, 0xcd, 0xd4, 0xb0, 0x98, 0x57, 0x49, 0xad, 0x7f, 0x52, 0xf6, 0x3c, 0x83, 0x57,
+ 0xf9, 0x17, 0x3d, 0x4a, 0x2a, 0xa9, 0x1c, 0xbe, 0x9f, 0x2b, 0x22, 0x9c, 0xcd, 0xea, 0x6e, 0xa7,
+ 0x6b, 0x08, 0xe7, 0x33, 0x97, 0x5c, 0x09, 0x81, 0x1f, 0xea, 0x76, 0x20, 0xbb, 0x45, 0xf6, 0xd7,
+ 0x90, 0x90, 0x3e, 0x65, 0xa1, 0xd4, 0xb1, 0xeb, 0xb9, 0xe1, 0x89, 0xe8, 0x9f, 0xe7, 0xfd, 0xa0,
+ 0x40, 0x7d, 0x7e, 0xa1, 0x8b, 0x9f, 0xb9, 0xd4, 0x1a, 0x12, 0x07, 0x73, 0x63, 0x9c, 0x33, 0xeb,
+ 0x0c, 0xb0, 0x45, 0x1c, 0x9c, 0x6c, 0x90, 0xfa, 0xb9, 0x36, 0x48, 0x23, 0xb3, 0x41, 0x56, 0x61,
+ 0x3e, 0xc0, 0x76, 0x48, 0xbc, 0x2e, 0x88, 0x6b, 0x61, 0xd1, 0x62, 0x67, 0xc5, 0x04, 0x87, 0x21,
+ 0x1b, 0x40, 0x06, 0x30, 0xb2, 0xa9, 0x85, 0x59, 0x8b, 0x65, 0x61, 0xd6, 0x94, 0xd2, 0x64, 0x26,
+ 0xcc, 0x6a, 0x95, 0x85, 0x59, 0x67, 0xa9, 0x4c, 0x6a, 0x41, 0x64, 0x7b, 0x6a, 0x10, 0xa9, 0x87,
+ 0x63, 0x4b, 0xa9, 0x70, 0xec, 0x8f, 0xb9, 0xa7, 0x1e, 0xc2, 0x5a, 0x6e, 0x17, 0xc8, 0x4d, 0x75,
+ 0x37, 0x53, 0xdb, 0xec, 0x96, 0x2d, 0x50, 0x5c, 0xda, 0xfc, 0x73, 0x58, 0xda, 0x79, 0x86, 0x87,
+ 0x83, 0x53, 0x6f, 0x78, 0x8e, 0x88, 0xa0, 0x03, 0xb5, 0xe1, 0xc4, 0x91, 0x49, 0x3d, 0xfb, 0xd4,
+ 0x63, 0x84, 0x5a, 0x3a, 0x46, 0xb0, 0xa0, 0x93, 0x8c, 0x20, 0xe5, 0x5c, 0x65, 0x72, 0x3a, 0x0c,
+ 0x99, 0x31, 0x5f, 0x34, 0x65, 0x4b, 0xc2, 0x71, 0x10, 0xf0, 0x59, 0x0b, 0x38, 0x0e, 0x82, 0xb4,
+ 0x45, 0xd7, 0xd2, 0x16, 0x6d, 0x7c, 0x0d, 0x4d, 0x36, 0xc0, 0xf7, 0x12, 0x5f, 0x06, 0xca, 0xb5,
+ 0x24, 0x50, 0x8e, 0xe3, 0xed, 0x59, 0x2d, 0xde, 0x36, 0x36, 0x60, 0x51, 0x8c, 0x25, 0x27, 0xd2,
+ 0x81, 0x5a, 0x14, 0x8c, 0x95, 0xde, 0xa2, 0x60, 0x6c, 0xfc, 0x29, 0xb4, 0xfa, 0x94, 0xda, 0xc3,
+ 0x93, 0x73, 0xc8, 0x13, 0x8f, 0x55, 0xd5, 0x63, 0xfb, 0x9c, 0x4c, 0x86, 0x01, 0x6d, 0xc5, 0xbb,
+ 0x74, 0xfc, 0x3d, 0x40, 0x07, 0x24, 0xa0, 0x0f, 0x48, 0xf0, 0xad, 0x1d, 0x38, 0xe7, 0x8b, 0x95,
+ 0x11, 0xcc, 0xca, 0x67, 0x22, 0xb5, 0x1b, 0x73, 0x26, 0xff, 0x36, 0xde, 0x82, 0x0b, 0x29, 0x7e,
+ 0xa5, 0x03, 0x7f, 0x00, 0x4d, 0xee, 0x42, 0x64, 0x3c, 0x75, 0x43, 0xaf, 0xdc, 0x4d, 0xf3, 0x33,
+ 0x2c, 0xe3, 0x66, 0x67, 0x04, 0x87, 0xc7, 0x0e, 0xfd, 0xc7, 0x99, 0xa8, 0x63, 0x25, 0x4d, 0x9f,
+ 0x89, 0x38, 0xfe, 0xb1, 0x02, 0x73, 0x1c, 0x9e, 0xf3, 0xe8, 0x97, 0xa1, 0x11, 0x60, 0x9f, 0x58,
+ 0xd4, 0x1e, 0xc5, 0x2f, 0x6f, 0x18, 0xe0, 0x89, 0x3d, 0x0a, 0xf9, 0xc3, 0x21, 0xd6, 0xe9, 0xb8,
+ 0x23, 0x1c, 0x52, 0xf5, 0xfc, 0xa6, 0xc9, 0x60, 0xdb, 0x02, 0xc4, 0x96, 0x24, 0x74, 0xff, 0x42,
+ 0x84, 0x13, 0xb3, 0x26, 0xff, 0x46, 0xd7, 0xc5, 0x1d, 0xfa, 0x94, 0x42, 0x0d, 0xbf, 0x58, 0xef,
+ 0x41, 0x3d, 0x53, 0x9b, 0x89, 0xdb, 0xc6, 0xc7, 0x80, 0xf4, 0x39, 0xcb, 0x45, 0x7d, 0x13, 0xe6,
+ 0xf9, 0x92, 0xa8, 0xf3, 0xb0, 0x9d, 0x9e, 0xb4, 0x29, 0x7b, 0x8d, 0x4f, 0x01, 0x89, 0x55, 0x4c,
+ 0x9d, 0x81, 0x67, 0x5f, 0xf1, 0x8f, 0xe0, 0x42, 0x8a, 0x3e, 0xbe, 0x32, 0x4d, 0x31, 0xc8, 0x8e,
+ 0x2e, 0x89, 0xff, 0xad, 0x02, 0xd0, 0x8f, 0xe8, 0x89, 0x2c, 0x34, 0xe8, 0xb3, 0xac, 0xa4, 0x67,
+ 0xc9, 0xfa, 0x7c, 0x3b, 0x0c, 0xbf, 0x25, 0x81, 0x0a, 0xf2, 0xe2, 0x36, 0x2f, 0x12, 0x44, 0xf4,
+ 0x44, 0x15, 0x22, 0xd9, 0x37, 0xba, 0x0e, 0x6d, 0xf1, 0x60, 0xca, 0xb2, 0x1d, 0x27, 0xc0, 0x61,
+ 0x28, 0x2b, 0x92, 0x2d, 0x01, 0xed, 0x0b, 0x20, 0x43, 0x73, 0x1d, 0xec, 0x51, 0x97, 0x9e, 0x5a,
+ 0x94, 0x7c, 0x83, 0x3d, 0x19, 0xbe, 0xb5, 0x14, 0xf4, 0x09, 0x03, 0x32, 0xb4, 0x00, 0x8f, 0xdc,
+ 0x90, 0x06, 0x0a, 0x4d, 0x55, 0xc8, 0x24, 0x94, 0xa3, 0x19, 0xbf, 0xae, 0x40, 0xe7, 0x20, 0x1a,
+ 0x8f, 0xc5, 0x24, 0xcf, 0xbb, 0x96, 0xe8, 0x2d, 0x39, 0x8f, 0x6a, 0xc6, 0x1a, 0x92, 0x25, 0x92,
+ 0x93, 0xfb, 0xfe, 0x69, 0xe5, 0x5d, 0x58, 0xd6, 0x04, 0x95, 0x4a, 0x4b, 0x9d, 0xd2, 0x95, 0xf4,
+ 0x29, 0xcd, 0x0c, 0x45, 0x64, 0x52, 0x2f, 0x37, 0x39, 0xe3, 0x22, 0x5c, 0x48, 0xd1, 0xcb, 0x2c,
+ 0xec, 0x16, 0xb4, 0xe4, 0xb5, 0xa5, 0x34, 0x82, 0x4b, 0x50, 0x67, 0xee, 0x65, 0xe8, 0x3a, 0xaa,
+ 0x02, 0xbd, 0xe0, 0x13, 0x67, 0xcb, 0x75, 0x02, 0x63, 0x0f, 0x5a, 0xa6, 0x60, 0x2f, 0x71, 0x3f,
+ 0x81, 0xb6, 0xbc, 0xe4, 0xb4, 0x52, 0x97, 0xfd, 0x49, 0xb9, 0x34, 0xc5, 0xdb, 0x6c, 0x79, 0x7a,
+ 0xd3, 0xf8, 0x25, 0xf4, 0x0e, 0x7d, 0x87, 0x05, 0x53, 0x3a, 0x57, 0x35, 0xb5, 0x4f, 0x40, 0x3d,
+ 0xe8, 0x2b, 0x63, 0x9e, 0x26, 0x6b, 0x05, 0x7a, 0xd3, 0xb8, 0x0a, 0x97, 0x0b, 0x99, 0xcb, 0x79,
+ 0xfb, 0xd0, 0x49, 0x3a, 0x1c, 0x57, 0x15, 0xde, 0x79, 0x41, 0xbd, 0xa2, 0x15, 0xd4, 0x57, 0xe3,
+ 0x63, 0x58, 0x38, 0x74, 0xd9, 0xd2, 0x82, 0xa6, 0x5a, 0x59, 0xd0, 0x34, 0x9b, 0x0a, 0x9a, 0x8c,
+ 0x2f, 0xe3, 0xd5, 0x93, 0x11, 0xeb, 0x87, 0x3c, 0x6c, 0x16, 0x63, 0x2b, 0x37, 0x71, 0xa9, 0x60,
+ 0x72, 0x02, 0xc3, 0xd4, 0x90, 0x8d, 0x25, 0x68, 0xa5, 0x1c, 0x86, 0x71, 0x1f, 0xda, 0x19, 0x0f,
+ 0x70, 0x27, 0x13, 0x3f, 0xe4, 0x96, 0x2d, 0x13, 0x3d, 0xac, 0x48, 0x47, 0xf4, 0x20, 0xdc, 0xf5,
+ 0x8e, 0x89, 0xe2, 0x7b, 0x0d, 0x9a, 0x87, 0x65, 0x8f, 0xe3, 0x66, 0xd5, 0x7d, 0xcc, 0x5b, 0xb0,
+ 0x3c, 0xa0, 0x24, 0xb0, 0x47, 0x78, 0x97, 0xef, 0xda, 0x63, 0x57, 0xdc, 0x58, 0x44, 0x51, 0xec,
+ 0xbf, 0xf9, 0xb7, 0xf1, 0x9f, 0x15, 0x58, 0x7a, 0xe0, 0x8e, 0x71, 0x78, 0x1a, 0x52, 0x3c, 0x39,
+ 0xe4, 0xb1, 0xe4, 0x15, 0x68, 0x30, 0x69, 0x42, 0x6a, 0x4f, 0x7c, 0x75, 0x5f, 0x13, 0x03, 0xd8,
+ 0x1a, 0x85, 0x82, 0xb5, 0xca, 0x2e, 0xf5, 0x38, 0x3e, 0x37, 0x2a, 0x8b, 0xad, 0x25, 0x08, 0xbd,
+ 0x0b, 0x10, 0x85, 0xd8, 0x91, 0x77, 0x34, 0xb5, 0xcc, 0xd1, 0x73, 0xa8, 0xd7, 0xe2, 0x19, 0x9e,
+ 0xb8, 0xb0, 0x79, 0x0f, 0x9a, 0xae, 0x47, 0x1c, 0xcc, 0x6b, 0xf1, 0x8e, 0xcc, 0x3c, 0x8b, 0xa9,
+ 0x40, 0x20, 0x1e, 0x86, 0xd8, 0x31, 0xfe, 0x4c, 0x7a, 0x61, 0xb5, 0x78, 0x52, 0x07, 0x3b, 0xb0,
+ 0x2c, 0x36, 0xf4, 0x71, 0x3c, 0x69, 0xa5, 0xe8, 0x24, 0x9c, 0xcb, 0x2c, 0x88, 0xd9, 0x71, 0xe5,
+ 0xa9, 0xa8, 0x28, 0x8c, 0x7b, 0x70, 0x31, 0x15, 0xf3, 0x9d, 0x27, 0x55, 0xfa, 0x22, 0x93, 0x67,
+ 0x25, 0x06, 0x22, 0x13, 0x1d, 0x65, 0x1f, 0x25, 0x89, 0x4e, 0x28, 0x12, 0x9d, 0xd0, 0x30, 0xe1,
+ 0x52, 0x2a, 0xfd, 0x4b, 0x09, 0xf2, 0x5e, 0xe6, 0x88, 0xbf, 0x5a, 0xc2, 0x2c, 0x73, 0xd6, 0xff,
+ 0x6f, 0x05, 0x56, 0x8a, 0x10, 0x5e, 0xb2, 0xd0, 0xf0, 0xb3, 0x92, 0x9b, 0xf3, 0xbb, 0x53, 0xa5,
+ 0xf9, 0x83, 0x94, 0x64, 0x1e, 0x42, 0xaf, 0x68, 0xf5, 0xf2, 0xaa, 0xa8, 0x9d, 0x41, 0x15, 0xff,
+ 0x57, 0xd5, 0x4a, 0x67, 0x7d, 0x4a, 0x03, 0xf7, 0x28, 0x62, 0xc6, 0xfb, 0x43, 0xa5, 0xc0, 0xf7,
+ 0xe3, 0xf4, 0x4e, 0xac, 0xdf, 0x8d, 0x3c, 0x55, 0x32, 0x6a, 0x61, 0x8a, 0xb7, 0x9f, 0x4e, 0xf1,
+ 0x44, 0x51, 0xec, 0xf6, 0x54, 0x36, 0xaf, 0x6c, 0xdd, 0xe3, 0x79, 0x05, 0xda, 0x69, 0x3d, 0xa0,
+ 0x8f, 0x01, 0xec, 0x58, 0x72, 0x69, 0xf2, 0x57, 0xa6, 0xcd, 0xce, 0xd4, 0xf0, 0xd1, 0x35, 0xa8,
+ 0x0d, 0xfd, 0x48, 0x6a, 0x24, 0xb9, 0x1d, 0xd9, 0xf2, 0x23, 0xe1, 0x00, 0x58, 0x2f, 0x0b, 0x9a,
+ 0xc5, 0x7d, 0x72, 0xce, 0x73, 0x3d, 0xe6, 0x60, 0x81, 0x2a, 0x71, 0xd0, 0x67, 0xd0, 0xfe, 0x36,
+ 0x70, 0xa9, 0x7d, 0x34, 0xc6, 0xd6, 0xd8, 0x3e, 0xc5, 0x81, 0xf4, 0x5c, 0xe5, 0x5e, 0xa6, 0xa5,
+ 0xf0, 0x1f, 0x31, 0x74, 0x23, 0x82, 0xba, 0x1a, 0xff, 0x05, 0x1e, 0xf9, 0x21, 0xac, 0x45, 0x0c,
+ 0xcd, 0xe2, 0x77, 0xda, 0x9e, 0xed, 0x11, 0x2b, 0xc4, 0xec, 0x68, 0x52, 0xef, 0xc8, 0x8a, 0xbd,
+ 0xe5, 0x0a, 0x27, 0xda, 0x22, 0x01, 0xde, 0xb3, 0x3d, 0x32, 0x10, 0x14, 0xc6, 0x04, 0x9a, 0xda,
+ 0x74, 0x5e, 0x30, 0xf2, 0x7d, 0x58, 0x56, 0xf7, 0x4e, 0x21, 0xa6, 0xd2, 0xaf, 0x4f, 0x1b, 0x73,
+ 0x49, 0xa2, 0x0f, 0x30, 0xe5, 0xde, 0xfd, 0xd6, 0x15, 0xa8, 0xab, 0xb7, 0xf5, 0x68, 0x01, 0x6a,
+ 0x4f, 0xb6, 0x0e, 0x3a, 0x33, 0xec, 0xe3, 0x70, 0xfb, 0xa0, 0x53, 0xb9, 0x75, 0x0f, 0x96, 0x32,
+ 0xef, 0x44, 0xd0, 0x32, 0xb4, 0x06, 0xfd, 0xbd, 0xed, 0xcf, 0xf7, 0x7f, 0x6e, 0x99, 0x3b, 0xfd,
+ 0xed, 0x5f, 0x74, 0x66, 0xd0, 0x0a, 0x74, 0x14, 0x68, 0x6f, 0xff, 0x89, 0x80, 0x56, 0x6e, 0x7d,
+ 0x93, 0xb1, 0x11, 0x8c, 0x2e, 0xc2, 0xf2, 0xd6, 0xfe, 0xde, 0x93, 0xfe, 0xee, 0xde, 0x8e, 0x69,
+ 0x6d, 0x99, 0x3b, 0xfd, 0x27, 0x3b, 0xdb, 0x9d, 0x99, 0x34, 0xd8, 0x3c, 0xdc, 0xdb, 0xdb, 0xdd,
+ 0xfb, 0xa2, 0x53, 0x61, 0x5c, 0x13, 0xf0, 0xce, 0xcf, 0x77, 0x19, 0x72, 0x35, 0x8d, 0x7c, 0xb8,
+ 0xf7, 0x70, 0x6f, 0xff, 0x67, 0x7b, 0x9d, 0xda, 0xe6, 0x6f, 0x17, 0xa1, 0xad, 0x0e, 0x71, 0x1c,
+ 0xf0, 0xdb, 0xc9, 0x4f, 0x61, 0x41, 0xfd, 0xf6, 0x90, 0x78, 0x8f, 0xf4, 0x3f, 0x1a, 0xbd, 0x6e,
+ 0xbe, 0x43, 0x06, 0x43, 0x33, 0xe8, 0x80, 0x07, 0x27, 0xda, 0x9b, 0x9c, 0xab, 0x7a, 0xb8, 0x90,
+ 0x7b, 0xf4, 0xd3, 0x5b, 0x2f, 0xeb, 0x8e, 0x39, 0x0e, 0x58, 0x44, 0xa2, 0xbf, 0xa7, 0x44, 0xeb,
+ 0xfa, 0xb9, 0x9d, 0x7f, 0xa7, 0xd9, 0x7b, 0xad, 0xb4, 0x3f, 0x66, 0xfa, 0x0b, 0xe8, 0x64, 0x5f,
+ 0x52, 0xa2, 0xe4, 0x96, 0xb9, 0xe4, 0x95, 0x66, 0xef, 0xf5, 0x29, 0x18, 0x3a, 0xeb, 0xdc, 0x6b,
+ 0xc4, 0x8d, 0xf2, 0xf7, 0x64, 0x39, 0xd6, 0x65, 0x8f, 0xd4, 0xc4, 0x52, 0xa4, 0xdf, 0xd2, 0x20,
+ 0xfd, 0x0d, 0x60, 0xc1, 0x9b, 0x2a, 0x6d, 0x29, 0x8a, 0x1f, 0xe1, 0x18, 0x33, 0xe8, 0x2b, 0x58,
+ 0xca, 0x5c, 0x4c, 0xa1, 0x84, 0xaa, 0xf8, 0x9a, 0xad, 0xb7, 0x51, 0x8e, 0x90, 0xd6, 0x9b, 0x7e,
+ 0xed, 0x94, 0xd2, 0x5b, 0xc1, 0x5d, 0x56, 0x4a, 0x6f, 0x85, 0xf7, 0x55, 0xdc, 0xbc, 0x52, 0x97,
+ 0x4b, 0x9a, 0x79, 0x15, 0xdd, 0x64, 0xf5, 0xd6, 0xcb, 0xba, 0xf5, 0xe9, 0x67, 0x2e, 0x96, 0xb4,
+ 0xe9, 0x17, 0xdf, 0x57, 0xf5, 0x36, 0xca, 0x11, 0xb2, 0xba, 0x4a, 0xaa, 0xdc, 0x19, 0x5d, 0xe5,
+ 0x2e, 0x55, 0x32, 0xba, 0xca, 0x97, 0xc7, 0xa5, 0xae, 0x32, 0xe5, 0xea, 0xd7, 0x4a, 0xcb, 0x79,
+ 0x79, 0x5d, 0x15, 0x57, 0x08, 0x8d, 0x19, 0xd4, 0x87, 0xba, 0xaa, 0xc7, 0xa1, 0x64, 0x77, 0x67,
+ 0x8a, 0x80, 0xbd, 0x4b, 0x05, 0x3d, 0x31, 0x8b, 0xf7, 0x60, 0x96, 0x41, 0xd1, 0x4a, 0x0a, 0x49,
+ 0x91, 0x5e, 0xcc, 0x40, 0x63, 0xb2, 0x8f, 0x60, 0x5e, 0x94, 0xaf, 0x50, 0x92, 0x57, 0xa4, 0x6a,
+ 0x65, 0xbd, 0xb5, 0x1c, 0x3c, 0x26, 0xfe, 0x52, 0xfc, 0x0a, 0x25, 0xeb, 0x50, 0xe8, 0x72, 0xea,
+ 0x91, 0x7e, 0xba, 0xda, 0xd5, 0xbb, 0x52, 0xdc, 0xa9, 0xeb, 0x2b, 0x73, 0x38, 0xaf, 0x97, 0x45,
+ 0x4f, 0x39, 0x7d, 0x15, 0x47, 0x63, 0xc6, 0x0c, 0xb2, 0x44, 0x49, 0x27, 0xc3, 0xd8, 0x28, 0x56,
+ 0x74, 0x8a, 0xf9, 0xb5, 0xa9, 0x38, 0xf1, 0x00, 0x47, 0x70, 0xa1, 0x20, 0x39, 0x45, 0x09, 0x75,
+ 0x79, 0x5e, 0xdc, 0x7b, 0x63, 0x3a, 0x92, 0xae, 0x22, 0x69, 0x6b, 0xab, 0xfa, 0x06, 0xd5, 0x4c,
+ 0x6c, 0x2d, 0x07, 0x57, 0xc4, 0x9b, 0x7f, 0x55, 0x83, 0x45, 0x51, 0x42, 0x90, 0x07, 0xcc, 0x17,
+ 0x00, 0x49, 0x95, 0x0b, 0xf5, 0x52, 0xd3, 0x4c, 0x95, 0xfb, 0x7a, 0x97, 0x0b, 0xfb, 0x74, 0xe5,
+ 0x6b, 0x05, 0x2b, 0x4d, 0xf9, 0xf9, 0x32, 0x98, 0xa6, 0xfc, 0x82, 0x1a, 0x97, 0x31, 0x83, 0xb6,
+ 0xa1, 0x11, 0x57, 0x51, 0x90, 0x56, 0x7c, 0xc9, 0x94, 0x80, 0x7a, 0xbd, 0xa2, 0x2e, 0x5d, 0x22,
+ 0xad, 0x32, 0xa2, 0x49, 0x94, 0xaf, 0xb7, 0x68, 0x12, 0x15, 0x15, 0x53, 0x92, 0xd9, 0x89, 0x44,
+ 0x30, 0x3b, 0xbb, 0x54, 0x6e, 0x9d, 0x9d, 0x5d, 0x3a, 0x77, 0x34, 0x66, 0x3e, 0xbf, 0xf2, 0x9b,
+ 0xdf, 0xad, 0x57, 0xfe, 0xeb, 0x77, 0xeb, 0x33, 0x7f, 0xf9, 0x7c, 0xbd, 0xf2, 0x9b, 0xe7, 0xeb,
+ 0x95, 0x7f, 0x7f, 0xbe, 0x5e, 0xf9, 0xed, 0xf3, 0xf5, 0xca, 0x77, 0xff, 0xb3, 0x3e, 0x73, 0x34,
+ 0xcf, 0xff, 0x0d, 0x7c, 0xf7, 0xf7, 0x01, 0x00, 0x00, 0xff, 0xff, 0xf8, 0xdd, 0x86, 0xaa, 0xcf,
+ 0x39, 0x00, 0x00,
+}
diff --git a/vendor/k8s.io/kubernetes/pkg/kubelet/apis/cri/v1alpha1/runtime/api.proto b/vendor/k8s.io/kubernetes/pkg/kubelet/apis/cri/v1alpha1/runtime/api.proto
new file mode 100644
index 000000000..b34451e2e
--- /dev/null
+++ b/vendor/k8s.io/kubernetes/pkg/kubelet/apis/cri/v1alpha1/runtime/api.proto
@@ -0,0 +1,1081 @@
+// To regenerate api.pb.go run hack/update-generated-runtime.sh
+syntax = 'proto3';
+
+package runtime;
+
+import "github.com/gogo/protobuf/gogoproto/gogo.proto";
+
+option (gogoproto.goproto_stringer_all) = false;
+option (gogoproto.stringer_all) = true;
+option (gogoproto.goproto_getters_all) = true;
+option (gogoproto.marshaler_all) = true;
+option (gogoproto.sizer_all) = true;
+option (gogoproto.unmarshaler_all) = true;
+option (gogoproto.goproto_unrecognized_all) = false;
+
+// Runtime service defines the public APIs for remote container runtimes
+service RuntimeService {
+ // Version returns the runtime name, runtime version, and runtime API version.
+ rpc Version(VersionRequest) returns (VersionResponse) {}
+
+ // RunPodSandbox creates and starts a pod-level sandbox. Runtimes must ensure
+ // the sandbox is in the ready state on success.
+ rpc RunPodSandbox(RunPodSandboxRequest) returns (RunPodSandboxResponse) {}
+ // StopPodSandbox stops any running process that is part of the sandbox and
+ // reclaims network resources (e.g., IP addresses) allocated to the sandbox.
+ // If there are any running containers in the sandbox, they must be forcibly
+ // terminated.
+ // This call is idempotent, and must not return an error if all relevant
+ // resources have already been reclaimed. kubelet will call StopPodSandbox
+ // at least once before calling RemovePodSandbox. It will also attempt to
+ // reclaim resources eagerly, as soon as a sandbox is not needed. Hence,
+ // multiple StopPodSandbox calls are expected.
+ rpc StopPodSandbox(StopPodSandboxRequest) returns (StopPodSandboxResponse) {}
+ // RemovePodSandbox removes the sandbox. If there are any running containers
+ // in the sandbox, they must be forcibly terminated and removed.
+ // This call is idempotent, and must not return an error if the sandbox has
+ // already been removed.
+ rpc RemovePodSandbox(RemovePodSandboxRequest) returns (RemovePodSandboxResponse) {}
+ // PodSandboxStatus returns the status of the PodSandbox. If the PodSandbox is not
+ // present, returns an error.
+ rpc PodSandboxStatus(PodSandboxStatusRequest) returns (PodSandboxStatusResponse) {}
+ // ListPodSandbox returns a list of PodSandboxes.
+ rpc ListPodSandbox(ListPodSandboxRequest) returns (ListPodSandboxResponse) {}
+
+ // CreateContainer creates a new container in specified PodSandbox
+ rpc CreateContainer(CreateContainerRequest) returns (CreateContainerResponse) {}
+ // StartContainer starts the container.
+ rpc StartContainer(StartContainerRequest) returns (StartContainerResponse) {}
+ // StopContainer stops a running container with a grace period (i.e., timeout).
+ // This call is idempotent, and must not return an error if the container has
+ // already been stopped.
+ // TODO: what must the runtime do after the grace period is reached?
+ rpc StopContainer(StopContainerRequest) returns (StopContainerResponse) {}
+ // RemoveContainer removes the container. If the container is running, the
+ // container must be forcibly removed.
+ // This call is idempotent, and must not return an error if the container has
+ // already been removed.
+ rpc RemoveContainer(RemoveContainerRequest) returns (RemoveContainerResponse) {}
+ // ListContainers lists all containers by filters.
+ rpc ListContainers(ListContainersRequest) returns (ListContainersResponse) {}
+ // ContainerStatus returns status of the container. If the container is not
+ // present, returns an error.
+ rpc ContainerStatus(ContainerStatusRequest) returns (ContainerStatusResponse) {}
+
+ // ExecSync runs a command in a container synchronously.
+ rpc ExecSync(ExecSyncRequest) returns (ExecSyncResponse) {}
+ // Exec prepares a streaming endpoint to execute a command in the container.
+ rpc Exec(ExecRequest) returns (ExecResponse) {}
+ // Attach prepares a streaming endpoint to attach to a running container.
+ rpc Attach(AttachRequest) returns (AttachResponse) {}
+ // PortForward prepares a streaming endpoint to forward ports from a PodSandbox.
+ rpc PortForward(PortForwardRequest) returns (PortForwardResponse) {}
+
+ // ContainerStats returns stats of the container. If the container does not
+ // exist, the call returns an error.
+ rpc ContainerStats(ContainerStatsRequest) returns (ContainerStatsResponse) {}
+ // ListContainerStats returns stats of all running containers.
+ rpc ListContainerStats(ListContainerStatsRequest) returns (ListContainerStatsResponse) {}
+
+ // UpdateRuntimeConfig updates the runtime configuration based on the given request.
+ rpc UpdateRuntimeConfig(UpdateRuntimeConfigRequest) returns (UpdateRuntimeConfigResponse) {}
+
+ // Status returns the status of the runtime.
+ rpc Status(StatusRequest) returns (StatusResponse) {}
+}
+
+// ImageService defines the public APIs for managing images.
+service ImageService {
+ // ListImages lists existing images.
+ rpc ListImages(ListImagesRequest) returns (ListImagesResponse) {}
+ // ImageStatus returns the status of the image. If the image is not
+ // present, returns a response with ImageStatusResponse.Image set to
+ // nil.
+ rpc ImageStatus(ImageStatusRequest) returns (ImageStatusResponse) {}
+ // PullImage pulls an image with authentication config.
+ rpc PullImage(PullImageRequest) returns (PullImageResponse) {}
+ // RemoveImage removes the image.
+ // This call is idempotent, and must not return an error if the image has
+ // already been removed.
+ rpc RemoveImage(RemoveImageRequest) returns (RemoveImageResponse) {}
+ // ImageFSInfo returns information of the filesystem that is used to store images.
+ rpc ImageFsInfo(ImageFsInfoRequest) returns (ImageFsInfoResponse) {}
+}
+
+message VersionRequest {
+ // Version of the kubelet runtime API.
+ string version = 1;
+}
+
+message VersionResponse {
+ // Version of the kubelet runtime API.
+ string version = 1;
+ // Name of the container runtime.
+ string runtime_name = 2;
+ // Version of the container runtime. The string must be
+ // semver-compatible.
+ string runtime_version = 3;
+ // API version of the container runtime. The string must be
+ // semver-compatible.
+ string runtime_api_version = 4;
+}
+
+// DNSConfig specifies the DNS servers and search domains of a sandbox.
+message DNSConfig {
+ // List of DNS servers of the cluster.
+ repeated string servers = 1;
+ // List of DNS search domains of the cluster.
+ repeated string searches = 2;
+ // List of DNS options. See https://linux.die.net/man/5/resolv.conf
+ // for all available options.
+ repeated string options = 3;
+}
+
+enum Protocol {
+ TCP = 0;
+ UDP = 1;
+}
+
+// PortMapping specifies the port mapping configurations of a sandbox.
+message PortMapping {
+ // Protocol of the port mapping.
+ Protocol protocol = 1;
+ // Port number within the container. Default: 0 (not specified).
+ int32 container_port = 2;
+ // Port number on the host. Default: 0 (not specified).
+ int32 host_port = 3;
+ // Host IP.
+ string host_ip = 4;
+}
+
+// Mount specifies a host volume to mount into a container.
+message Mount {
+ // Path of the mount within the container.
+ string container_path = 1;
+ // Path of the mount on the host.
+ string host_path = 2;
+ // If set, the mount is read-only.
+ bool readonly = 3;
+ // If set, the mount needs SELinux relabeling.
+ bool selinux_relabel = 4;
+}
+
+// NamespaceOption provides options for Linux namespaces.
+message NamespaceOption {
+ // If set, use the host's network namespace.
+ bool host_network = 1;
+ // If set, use the host's PID namespace.
+ bool host_pid = 2;
+ // If set, use the host's IPC namespace.
+ bool host_ipc = 3;
+}
+
+// Int64Value is the wrapper of int64.
+message Int64Value {
+ // The value.
+ int64 value = 1;
+}
+
+// LinuxSandboxSecurityContext holds linux security configuration that will be
+// applied to a sandbox. Note that:
+// 1) It does not apply to containers in the pods.
+// 2) It may not be applicable to a PodSandbox which does not contain any running
+// process.
+message LinuxSandboxSecurityContext {
+ // Configurations for the sandbox's namespaces.
+ // This will be used only if the PodSandbox uses namespace for isolation.
+ NamespaceOption namespace_options = 1;
+ // Optional SELinux context to be applied.
+ SELinuxOption selinux_options = 2;
+ // UID to run sandbox processes as, when applicable.
+ Int64Value run_as_user = 3;
+ // If set, the root filesystem of the sandbox is read-only.
+ bool readonly_rootfs = 4;
+ // List of groups applied to the first process run in the sandbox, in
+ // addition to the sandbox's primary GID.
+ repeated int64 supplemental_groups = 5;
+ // Indicates whether the sandbox will be asked to run a privileged
+ // container. If a privileged container is to be executed within it, this
+ // MUST be true.
+ // This allows a sandbox to take additional security precautions if no
+ // privileged containers are expected to be run.
+ bool privileged = 6;
+}
+
+// LinuxPodSandboxConfig holds platform-specific configurations for Linux
+// host platforms and Linux-based containers.
+message LinuxPodSandboxConfig {
+ // Parent cgroup of the PodSandbox.
+ // The cgroupfs style syntax will be used, but the container runtime can
+ // convert it to systemd semantics if needed.
+ string cgroup_parent = 1;
+ // LinuxSandboxSecurityContext holds sandbox security attributes.
+ LinuxSandboxSecurityContext security_context = 2;
+ // Sysctls holds linux sysctls config for the sandbox.
+ map<string, string> sysctls = 3;
+}
+
+// PodSandboxMetadata holds all necessary information for building the sandbox name.
+// The container runtime is encouraged to expose the metadata associated with the
+// PodSandbox in its user interface for better user experience. For example,
+// the runtime can construct a unique PodSandboxName based on the metadata.
+message PodSandboxMetadata {
+ // Pod name of the sandbox. Same as the pod name in the PodSpec.
+ string name = 1;
+ // Pod UID of the sandbox. Same as the pod UID in the PodSpec.
+ string uid = 2;
+ // Pod namespace of the sandbox. Same as the pod namespace in the PodSpec.
+ string namespace = 3;
+ // Attempt number of creating the sandbox. Default: 0.
+ uint32 attempt = 4;
+}
+
+// PodSandboxConfig holds all the required and optional fields for creating a
+// sandbox.
+message PodSandboxConfig {
+ // Metadata of the sandbox. This information will uniquely identify the
+ // sandbox, and the runtime should leverage this to ensure correct
+ // operation. The runtime may also use this information to improve UX, such
+ // as by constructing a readable name.
+ PodSandboxMetadata metadata = 1;
+ // Hostname of the sandbox.
+ string hostname = 2;
+ // Path to the directory on the host in which container log files are
+ // stored.
+ // By default the log of a container going into the LogDirectory will be
+ // hooked up to STDOUT and STDERR. However, the LogDirectory may contain
+ // binary log files with structured logging data from the individual
+ // containers. For example, the files might be newline separated JSON
+ // structured logs, systemd-journald journal files, gRPC trace files, etc.
+ // E.g.,
+ // PodSandboxConfig.LogDirectory = `/var/log/pods/<podUID>/`
+ // ContainerConfig.LogPath = `containerName_Instance#.log`
+ //
+ // WARNING: Log management and how kubelet should interface with the
+ // container logs are under active discussion in
+ // https://issues.k8s.io/24677. There *may* be future change of direction
+ // for logging as the discussion carries on.
+ string log_directory = 3;
+ // DNS config for the sandbox.
+ DNSConfig dns_config = 4;
+ // Port mappings for the sandbox.
+ repeated PortMapping port_mappings = 5;
+ // Key-value pairs that may be used to scope and select individual resources.
+ map<string, string> labels = 6;
+ // Unstructured key-value map that may be set by the kubelet to store and
+ // retrieve arbitrary metadata. This will include any annotations set on a
+ // pod through the Kubernetes API.
+ //
+ // Annotations MUST NOT be altered by the runtime; the annotations stored
+ // here MUST be returned in the PodSandboxStatus associated with the pod
+ // this PodSandboxConfig creates.
+ //
+ // In general, in order to preserve a well-defined interface between the
+ // kubelet and the container runtime, annotations SHOULD NOT influence
+ // runtime behaviour. For legacy reasons, there are some annotations which
+ // currently explicitly break this rule, listed below; in future versions
+ // of the interface these will be promoted to typed features.
+ //
+ // Annotations can also be useful for runtime authors to experiment with
+ // new features that are opaque to the Kubernetes APIs (both user-facing
+ // and the CRI). Whenever possible, however, runtime authors SHOULD
+ // consider proposing new typed fields for any new features instead.
+ //
+ // 1. Seccomp
+ //
+ // key: security.alpha.kubernetes.io/seccomp/pod
+ // description: the seccomp profile for the containers of an entire pod.
+ // value: see below.
+ //
+ // key: security.alpha.kubernetes.io/seccomp/container/<container name>
+ // description: the seccomp profile for the container (overrides pod).
+ // value: see below
+ //
+ // The value of seccomp is runtime agnostic:
+ // * runtime/default: the default profile for the container runtime
+ // * unconfined: unconfined profile, ie, no seccomp sandboxing
+ // * localhost/<profile-name>: the profile installed to the node's
+ // local seccomp profile root. Note that profile root is set in
+ // kubelet, and it is not passed in CRI yet, see https://issues.k8s.io/36997.
+ //
+ map<string, string> annotations = 7;
+ // Optional configurations specific to Linux hosts.
+ LinuxPodSandboxConfig linux = 8;
+}
+
+message RunPodSandboxRequest {
+ // Configuration for creating a PodSandbox.
+ PodSandboxConfig config = 1;
+}
+
+message RunPodSandboxResponse {
+ // ID of the PodSandbox to run.
+ string pod_sandbox_id = 1;
+}
+
+message StopPodSandboxRequest {
+ // ID of the PodSandbox to stop.
+ string pod_sandbox_id = 1;
+}
+
+message StopPodSandboxResponse {}
+
+message RemovePodSandboxRequest {
+ // ID of the PodSandbox to remove.
+ string pod_sandbox_id = 1;
+}
+
+message RemovePodSandboxResponse {}
+
+message PodSandboxStatusRequest {
+ // ID of the PodSandbox for which to retrieve status.
+ string pod_sandbox_id = 1;
+}
+
+// PodSandboxNetworkStatus is the status of the network for a PodSandbox.
+message PodSandboxNetworkStatus {
+ // IP address of the PodSandbox.
+ string ip = 1;
+}
+
+// Namespace contains paths to the namespaces.
+message Namespace {
+ // Namespace options for Linux namespaces.
+ NamespaceOption options = 2;
+}
+
+// LinuxSandboxStatus contains status specific to Linux sandboxes.
+message LinuxPodSandboxStatus {
+ // Paths to the sandbox's namespaces.
+ Namespace namespaces = 1;
+}
+
+enum PodSandboxState {
+ SANDBOX_READY = 0;
+ SANDBOX_NOTREADY = 1;
+}
+
+// PodSandboxStatus contains the status of the PodSandbox.
+message PodSandboxStatus {
+ // ID of the sandbox.
+ string id = 1;
+ // Metadata of the sandbox.
+ PodSandboxMetadata metadata = 2;
+ // State of the sandbox.
+ PodSandboxState state = 3;
+ // Creation timestamp of the sandbox in nanoseconds. Must be > 0.
+ int64 created_at = 4;
+ // Network contains network status if network is handled by the runtime.
+ PodSandboxNetworkStatus network = 5;
+ // Linux-specific status to a pod sandbox.
+ LinuxPodSandboxStatus linux = 6;
+ // Labels are key-value pairs that may be used to scope and select individual resources.
+ map<string, string> labels = 7;
+ // Unstructured key-value map holding arbitrary metadata.
+ // Annotations MUST NOT be altered by the runtime; the value of this field
+ // MUST be identical to that of the corresponding PodSandboxConfig used to
+ // instantiate the pod sandbox this status represents.
+ map<string, string> annotations = 8;
+}
+
+message PodSandboxStatusResponse {
+ // Status of the PodSandbox.
+ PodSandboxStatus status = 1;
+}
+
+// PodSandboxStateValue is the wrapper of PodSandboxState.
+message PodSandboxStateValue {
+ // State of the sandbox.
+ PodSandboxState state = 1;
+}
+
+// PodSandboxFilter is used to filter a list of PodSandboxes.
+// All those fields are combined with 'AND'
+message PodSandboxFilter {
+ // ID of the sandbox.
+ string id = 1;
+ // State of the sandbox.
+ PodSandboxStateValue state = 2;
+ // LabelSelector to select matches.
+ // Only api.MatchLabels is supported for now and the requirements
+ // are ANDed. MatchExpressions is not supported yet.
+ map<string, string> label_selector = 3;
+}
+
+message ListPodSandboxRequest {
+ // PodSandboxFilter to filter a list of PodSandboxes.
+ PodSandboxFilter filter = 1;
+}
+
+
+// PodSandbox contains minimal information about a sandbox.
+message PodSandbox {
+ // ID of the PodSandbox.
+ string id = 1;
+ // Metadata of the PodSandbox.
+ PodSandboxMetadata metadata = 2;
+ // State of the PodSandbox.
+ PodSandboxState state = 3;
+ // Creation timestamps of the PodSandbox in nanoseconds. Must be > 0.
+ int64 created_at = 4;
+ // Labels of the PodSandbox.
+ map<string, string> labels = 5;
+ // Unstructured key-value map holding arbitrary metadata.
+ // Annotations MUST NOT be altered by the runtime; the value of this field
+ // MUST be identical to that of the corresponding PodSandboxConfig used to
+ // instantiate this PodSandbox.
+ map<string, string> annotations = 6;
+}
+
+message ListPodSandboxResponse {
+ // List of PodSandboxes.
+ repeated PodSandbox items = 1;
+}
+
+// ImageSpec is an internal representation of an image. Currently, it wraps the
+// value of a Container's Image field (e.g. imageID or imageDigest), but in the
+// future it will include more detailed information about the different image types.
+message ImageSpec {
+ string image = 1;
+}
+
+message KeyValue {
+ string key = 1;
+ string value = 2;
+}
+
+// LinuxContainerResources specifies Linux specific configuration for
+// resources.
+// TODO: Consider using Resources from opencontainers/runtime-spec/specs-go
+// directly.
+message LinuxContainerResources {
+ // CPU CFS (Completely Fair Scheduler) period. Default: 0 (not specified).
+ int64 cpu_period = 1;
+ // CPU CFS (Completely Fair Scheduler) quota. Default: 0 (not specified).
+ int64 cpu_quota = 2;
+ // CPU shares (relative weight vs. other containers). Default: 0 (not specified).
+ int64 cpu_shares = 3;
+ // Memory limit in bytes. Default: 0 (not specified).
+ int64 memory_limit_in_bytes = 4;
+ // OOMScoreAdj adjusts the oom-killer score. Default: 0 (not specified).
+ int64 oom_score_adj = 5;
+}
+
+// SELinuxOption are the labels to be applied to the container.
+message SELinuxOption {
+ string user = 1;
+ string role = 2;
+ string type = 3;
+ string level = 4;
+}
+
+// Capability contains the container capabilities to add or drop
+message Capability {
+ // List of capabilities to add.
+ repeated string add_capabilities = 1;
+ // List of capabilities to drop.
+ repeated string drop_capabilities = 2;
+}
+
+// LinuxContainerSecurityContext holds linux security configuration that will be applied to a container.
+message LinuxContainerSecurityContext {
+ // Capabilities to add or drop.
+ Capability capabilities = 1;
+ // If set, run container in privileged mode.
+ // Privileged mode is incompatible with the following options. If
+ // privileged is set, the following features MAY have no effect:
+ // 1. capabilities
+ // 2. selinux_options
+ // 4. seccomp
+ // 5. apparmor
+ //
+ // Privileged mode implies the following specific options are applied:
+ // 1. All capabilities are added.
+ // 2. Sensitive paths, such as kernel module paths within sysfs, are not masked.
+ // 3. Any sysfs and procfs mounts are mounted RW.
+ // 4. Apparmor confinement is not applied.
+ // 5. Seccomp restrictions are not applied.
+ // 6. The device cgroup does not restrict access to any devices.
+ // 7. All devices from the host's /dev are available within the container.
+ // 8. SELinux restrictions are not applied (e.g. label=disabled).
+ bool privileged = 2;
+ // Configurations for the container's namespaces.
+ // Only used if the container uses namespace for isolation.
+ NamespaceOption namespace_options = 3;
+ // SELinux context to be optionally applied.
+ SELinuxOption selinux_options = 4;
+ // UID to run the container process as. Only one of run_as_user and
+ // run_as_username can be specified at a time.
+ Int64Value run_as_user = 5;
+ // User name to run the container process as. If specified, the user MUST
+ // exist in the container image (i.e. in the /etc/passwd inside the image),
+ // and be resolved there by the runtime; otherwise, the runtime MUST error.
+ string run_as_username = 6;
+ // If set, the root filesystem of the container is read-only.
+ bool readonly_rootfs = 7;
+ // List of groups applied to the first process run in the container, in
+ // addition to the container's primary GID.
+ repeated int64 supplemental_groups = 8;
+ // AppArmor profile for the container, candidate values are:
+ // * runtime/default: equivalent to not specifying a profile.
+ // * localhost/<profile_name>: profile loaded on the node
+ // (localhost) by name. The possible profile names are detailed at
+ // http://wiki.apparmor.net/index.php/AppArmor_Core_Policy_Reference
+ string apparmor_profile = 9;
+}
+
+// LinuxContainerConfig contains platform-specific configuration for
+// Linux-based containers.
+message LinuxContainerConfig {
+ // Resources specification for the container.
+ LinuxContainerResources resources = 1;
+ // LinuxContainerSecurityContext configuration for the container.
+ LinuxContainerSecurityContext security_context = 2;
+}
+
+// ContainerMetadata holds all necessary information for building the container
+// name. The container runtime is encouraged to expose the metadata in its user
+// interface for better user experience. E.g., runtime can construct a unique
+// container name based on the metadata. Note that (name, attempt) is unique
+// within a sandbox for the entire lifetime of the sandbox.
+message ContainerMetadata {
+ // Name of the container. Same as the container name in the PodSpec.
+ string name = 1;
+ // Attempt number of creating the container. Default: 0.
+ uint32 attempt = 2;
+}
+
+// Device specifies a host device to mount into a container.
+message Device {
+ // Path of the device within the container.
+ string container_path = 1;
+ // Path of the device on the host.
+ string host_path = 2;
+ // Cgroups permissions of the device, candidates are one or more of
+ // * r - allows container to read from the specified device.
+ // * w - allows container to write to the specified device.
+ // * m - allows container to create device files that do not yet exist.
+ string permissions = 3;
+}
+
+// ContainerConfig holds all the required and optional fields for creating a
+// container.
+message ContainerConfig {
+ // Metadata of the container. This information will uniquely identify the
+ // container, and the runtime should leverage this to ensure correct
+ // operation. The runtime may also use this information to improve UX, such
+ // as by constructing a readable name.
+ ContainerMetadata metadata = 1 ;
+ // Image to use.
+ ImageSpec image = 2;
+ // Command to execute (i.e., entrypoint for docker)
+ repeated string command = 3;
+ // Args for the Command (i.e., command for docker)
+ repeated string args = 4;
+ // Current working directory of the command.
+ string working_dir = 5;
+ // List of environment variable to set in the container.
+ repeated KeyValue envs = 6;
+ // Mounts for the container.
+ repeated Mount mounts = 7;
+ // Devices for the container.
+ repeated Device devices = 8;
+ // Key-value pairs that may be used to scope and select individual resources.
+ // Label keys are of the form:
+ // label-key ::= prefixed-name | name
+ // prefixed-name ::= prefix '/' name
+ // prefix ::= DNS_SUBDOMAIN
+ // name ::= DNS_LABEL
+ map<string, string> labels = 9;
+ // Unstructured key-value map that may be used by the kubelet to store and
+ // retrieve arbitrary metadata.
+ //
+ // Annotations MUST NOT be altered by the runtime; the annotations stored
+ // here MUST be returned in the ContainerStatus associated with the container
+ // this ContainerConfig creates.
+ //
+ // In general, in order to preserve a well-defined interface between the
+ // kubelet and the container runtime, annotations SHOULD NOT influence
+ // runtime behaviour.
+ map<string, string> annotations = 10;
+ // Path relative to PodSandboxConfig.LogDirectory for container to store
+ // the log (STDOUT and STDERR) on the host.
+ // E.g.,
+ // PodSandboxConfig.LogDirectory = `/var/log/pods/<podUID>/`
+ // ContainerConfig.LogPath = `containerName_Instance#.log`
+ //
+ // WARNING: Log management and how kubelet should interface with the
+ // container logs are under active discussion in
+ // https://issues.k8s.io/24677. There *may* be future change of direction
+ // for logging as the discussion carries on.
+ string log_path = 11;
+
+ // Variables for interactive containers, these have very specialized
+ // use-cases (e.g. debugging).
+ // TODO: Determine if we need to continue supporting these fields that are
+ // part of Kubernetes's Container Spec.
+ bool stdin = 12;
+ bool stdin_once = 13;
+ bool tty = 14;
+
+ // Configuration specific to Linux containers.
+ LinuxContainerConfig linux = 15;
+}
+
+message CreateContainerRequest {
+ // ID of the PodSandbox in which the container should be created.
+ string pod_sandbox_id = 1;
+ // Config of the container.
+ ContainerConfig config = 2;
+ // Config of the PodSandbox. This is the same config that was passed
+ // to RunPodSandboxRequest to create the PodSandbox. It is passed again
+ // here just for easy reference. The PodSandboxConfig is immutable and
+ // remains the same throughout the lifetime of the pod.
+ PodSandboxConfig sandbox_config = 3;
+}
+
+message CreateContainerResponse {
+ // ID of the created container.
+ string container_id = 1;
+}
+
+message StartContainerRequest {
+ // ID of the container to start.
+ string container_id = 1;
+}
+
+message StartContainerResponse {}
+
+message StopContainerRequest {
+ // ID of the container to stop.
+ string container_id = 1;
+ // Timeout in seconds to wait for the container to stop before forcibly
+ // terminating it. Default: 0 (forcibly terminate the container immediately)
+ int64 timeout = 2;
+}
+
+message StopContainerResponse {}
+
+message RemoveContainerRequest {
+ // ID of the container to remove.
+ string container_id = 1;
+}
+
+message RemoveContainerResponse {}
+
+enum ContainerState {
+ CONTAINER_CREATED = 0;
+ CONTAINER_RUNNING = 1;
+ CONTAINER_EXITED = 2;
+ CONTAINER_UNKNOWN = 3;
+}
+
+// ContainerStateValue is the wrapper of ContainerState.
+message ContainerStateValue {
+ // State of the container.
+ ContainerState state = 1;
+}
+
+// ContainerFilter is used to filter containers.
+// All those fields are combined with 'AND'
+message ContainerFilter {
+ // ID of the container.
+ string id = 1;
+ // State of the container.
+ ContainerStateValue state = 2;
+ // ID of the PodSandbox.
+ string pod_sandbox_id = 3;
+ // LabelSelector to select matches.
+ // Only api.MatchLabels is supported for now and the requirements
+ // are ANDed. MatchExpressions is not supported yet.
+ map<string, string> label_selector = 4;
+}
+
+message ListContainersRequest {
+ ContainerFilter filter = 1;
+}
+
+// Container provides the runtime information for a container, such as ID, hash,
+// state of the container.
+message Container {
+ // ID of the container, used by the container runtime to identify
+ // a container.
+ string id = 1;
+ // ID of the sandbox to which this container belongs.
+ string pod_sandbox_id = 2;
+ // Metadata of the container.
+ ContainerMetadata metadata = 3;
+ // Spec of the image.
+ ImageSpec image = 4;
+ // Reference to the image in use. For most runtimes, this should be an
+ // image ID.
+ string image_ref = 5;
+ // State of the container.
+ ContainerState state = 6;
+ // Creation time of the container in nanoseconds.
+ int64 created_at = 7;
+ // Key-value pairs that may be used to scope and select individual resources.
+ map<string, string> labels = 8;
+ // Unstructured key-value map holding arbitrary metadata.
+ // Annotations MUST NOT be altered by the runtime; the value of this field
+ // MUST be identical to that of the corresponding ContainerConfig used to
+ // instantiate this Container.
+ map<string, string> annotations = 9;
+}
+
+message ListContainersResponse {
+ // List of containers.
+ repeated Container containers = 1;
+}
+
+message ContainerStatusRequest {
+ // ID of the container for which to retrieve status.
+ string container_id = 1;
+}
+
+// ContainerStatus represents the status of a container.
+message ContainerStatus {
+ // ID of the container.
+ string id = 1;
+ // Metadata of the container.
+ ContainerMetadata metadata = 2;
+ // Status of the container.
+ ContainerState state = 3;
+ // Creation time of the container in nanoseconds.
+ int64 created_at = 4;
+ // Start time of the container in nanoseconds. Default: 0 (not specified).
+ int64 started_at = 5;
+ // Finish time of the container in nanoseconds. Default: 0 (not specified).
+ int64 finished_at = 6;
+ // Exit code of the container. Only required when finished_at != 0. Default: 0.
+ int32 exit_code = 7;
+ // Spec of the image.
+ ImageSpec image = 8;
+ // Reference to the image in use. For most runtimes, this should be an
+ // image ID
+ string image_ref = 9;
+ // Brief CamelCase string explaining why container is in its current state.
+ string reason = 10;
+ // Human-readable message indicating details about why container is in its
+ // current state.
+ string message = 11;
+ // Key-value pairs that may be used to scope and select individual resources.
+ map<string,string> labels = 12;
+ // Unstructured key-value map holding arbitrary metadata.
+ // Annotations MUST NOT be altered by the runtime; the value of this field
+ // MUST be identical to that of the corresponding ContainerConfig used to
+ // instantiate the Container this status represents.
+ map<string,string> annotations = 13;
+ // Mounts for the container.
+ repeated Mount mounts = 14;
+ // Log path of container.
+ string log_path = 15;
+}
+
+message ContainerStatusResponse {
+ // Status of the container.
+ ContainerStatus status = 1;
+}
+
+message ExecSyncRequest {
+ // ID of the container.
+ string container_id = 1;
+ // Command to execute.
+ repeated string cmd = 2;
+ // Timeout in seconds to stop the command. Default: 0 (run forever).
+ int64 timeout = 3;
+}
+
+message ExecSyncResponse {
+ // Captured command stdout output.
+ bytes stdout = 1;
+ // Captured command stderr output.
+ bytes stderr = 2;
+ // Exit code the command finished with. Default: 0 (success).
+ int32 exit_code = 3;
+}
+
+message ExecRequest {
+ // ID of the container in which to execute the command.
+ string container_id = 1;
+ // Command to execute.
+ repeated string cmd = 2;
+ // Whether to exec the command in a TTY.
+ bool tty = 3;
+ // Whether to stream stdin.
+ bool stdin = 4;
+}
+
+message ExecResponse {
+ // Fully qualified URL of the exec streaming server.
+ string url = 1;
+}
+
+message AttachRequest {
+ // ID of the container to which to attach.
+ string container_id = 1;
+ // Whether to stream stdin.
+ bool stdin = 2;
+ // Whether the process being attached is running in a TTY.
+ // This must match the TTY setting in the ContainerConfig.
+ bool tty = 3;
+}
+
+message AttachResponse {
+ // Fully qualified URL of the attach streaming server.
+ string url = 1;
+}
+
+message PortForwardRequest {
+ // ID of the container to which to forward the port.
+ string pod_sandbox_id = 1;
+ // Port to forward.
+ repeated int32 port = 2;
+}
+
+message PortForwardResponse {
+ // Fully qualified URL of the port-forward streaming server.
+ string url = 1;
+}
+
+message ImageFilter {
+ // Spec of the image.
+ ImageSpec image = 1;
+}
+
+message ListImagesRequest {
+ // Filter to list images.
+ ImageFilter filter = 1;
+}
+
+// Basic information about a container image.
+message Image {
+ // ID of the image.
+ string id = 1;
+ // Other names by which this image is known.
+ repeated string repo_tags = 2;
+ // Digests by which this image is known.
+ repeated string repo_digests = 3;
+ // Size of the image in bytes. Must be > 0.
+ uint64 size = 4;
+ // UID that will run the command(s). This is used as a default if no user is
+ // specified when creating the container. UID and the following user name
+ // are mutually exclusive.
+ Int64Value uid = 5;
+ // User name that will run the command(s). This is used if UID is not set
+ // and no user is specified when creating container.
+ string username = 6;
+}
+
+message ListImagesResponse {
+ // List of images.
+ repeated Image images = 1;
+}
+
+message ImageStatusRequest {
+ // Spec of the image.
+ ImageSpec image = 1;
+}
+
+message ImageStatusResponse {
+ // Status of the image.
+ Image image = 1;
+}
+
+// AuthConfig contains authorization information for connecting to a registry.
+message AuthConfig {
+ string username = 1;
+ string password = 2;
+ string auth = 3;
+ string server_address = 4;
+ // IdentityToken is used to authenticate the user and get
+ // an access token for the registry.
+ string identity_token = 5;
+ // RegistryToken is a bearer token to be sent to a registry
+ string registry_token = 6;
+}
+
+message PullImageRequest {
+ // Spec of the image.
+ ImageSpec image = 1;
+ // Authentication configuration for pulling the image.
+ AuthConfig auth = 2;
+ // Config of the PodSandbox, which is used to pull image in PodSandbox context.
+ PodSandboxConfig sandbox_config = 3;
+}
+
+message PullImageResponse {
+ // Reference to the image in use. For most runtimes, this should be an
+ // image ID or digest.
+ string image_ref = 1;
+}
+
+message RemoveImageRequest {
+ // Spec of the image to remove.
+ ImageSpec image = 1;
+}
+
+message RemoveImageResponse {}
+
+message NetworkConfig {
+ // CIDR to use for pod IP addresses.
+ string pod_cidr = 1;
+}
+
+message RuntimeConfig {
+ NetworkConfig network_config = 1;
+}
+
+message UpdateRuntimeConfigRequest {
+ RuntimeConfig runtime_config = 1;
+}
+
+message UpdateRuntimeConfigResponse {}
+
+// RuntimeCondition contains condition information for the runtime.
+// There are 2 kinds of runtime conditions:
+// 1. Required conditions: Conditions are required for kubelet to work
+// properly. If any required condition is unmet, the node will be not ready.
+// The required conditions include:
+// * RuntimeReady: RuntimeReady means the runtime is up and ready to accept
+// basic containers e.g. container only needs host network.
+// * NetworkReady: NetworkReady means the runtime network is up and ready to
+// accept containers which require container network.
+// 2. Optional conditions: Conditions are informative to the user, but kubelet
+// will not rely on. Since condition type is an arbitrary string, all conditions
+// not required are optional. These conditions will be exposed to users to help
+// them understand the status of the system.
+message RuntimeCondition {
+ // Type of runtime condition.
+ string type = 1;
+ // Status of the condition, one of true/false. Default: false.
+ bool status = 2;
+ // Brief CamelCase string containing reason for the condition's last transition.
+ string reason = 3;
+ // Human-readable message indicating details about last transition.
+ string message = 4;
+}
+
+// RuntimeStatus is information about the current status of the runtime.
+message RuntimeStatus {
+ // List of current observed runtime conditions.
+ repeated RuntimeCondition conditions = 1;
+}
+
+message StatusRequest {}
+
+message StatusResponse {
+ // Status of the Runtime.
+ RuntimeStatus status = 1;
+}
+
+message ImageFsInfoRequest {}
+
+// UInt64Value is the wrapper of uint64.
+message UInt64Value {
+ // The value.
+ uint64 value = 1;
+}
+
+// StorageIdentifier uniquely identify the storage..
+message StorageIdentifier{
+ // UUID of the device.
+ string uuid = 1;
+}
+
+// FilesystemUsage provides the filesystem usage information.
+message FilesystemUsage {
+ // Timestamp in nanoseconds at which the information were collected. Must be > 0.
+ int64 timestamp = 1;
+ // The underlying storage of the filesystem.
+ StorageIdentifier storage_id = 2;
+ // UsedBytes represents the bytes used for images on the filesystem.
+ // This may differ from the total bytes used on the filesystem and may not
+ // equal CapacityBytes - AvailableBytes.
+ UInt64Value used_bytes = 3;
+ // InodesUsed represents the inodes used by the images.
+ // This may not equal InodesCapacity - InodesAvailable because the underlying
+ // filesystem may also be used for purposes other than storing images.
+ UInt64Value inodes_used = 4;
+}
+
+message ImageFsInfoResponse {
+ // Information of image filesystem(s).
+ repeated FilesystemUsage image_filesystems = 1;
+}
+
+message ContainerStatsRequest{
+ // ID of the container for which to retrieve stats.
+ string container_id = 1;
+}
+
+message ContainerStatsResponse {
+ // Stats of the container.
+ ContainerStats stats = 1;
+}
+
+message ListContainerStatsRequest{
+ // Filter for the list request.
+ ContainerStatsFilter filter = 1;
+}
+
+// ContainerStatsFilter is used to filter containers.
+// All those fields are combined with 'AND'
+message ContainerStatsFilter {
+ // ID of the container.
+ string id = 1;
+ // ID of the PodSandbox.
+ string pod_sandbox_id = 2;
+ // LabelSelector to select matches.
+ // Only api.MatchLabels is supported for now and the requirements
+ // are ANDed. MatchExpressions is not supported yet.
+ map<string, string> label_selector = 3;
+}
+
+message ListContainerStatsResponse {
+ // Stats of the container.
+ repeated ContainerStats stats = 1;
+}
+
+// ContainerAttributes provides basic information of the container.
+message ContainerAttributes {
+ // ID of the container.
+ string id = 1;
+ // Metadata of the container.
+ ContainerMetadata metadata = 2;
+ // Key-value pairs that may be used to scope and select individual resources.
+ map<string,string> labels = 3;
+ // Unstructured key-value map holding arbitrary metadata.
+ // Annotations MUST NOT be altered by the runtime; the value of this field
+ // MUST be identical to that of the corresponding ContainerConfig used to
+ // instantiate the Container this status represents.
+ map<string,string> annotations = 4;
+}
+
+// ContainerStats provides the resource usage statistics for a container.
+message ContainerStats {
+ // Information of the container.
+ ContainerAttributes attributes = 1;
+ // CPU usage gathered from the container.
+ CpuUsage cpu = 2;
+ // Memory usage gathered from the container.
+ MemoryUsage memory = 3;
+ // Usage of the writeable layer.
+ FilesystemUsage writable_layer = 4;
+}
+
+// CpuUsage provides the CPU usage information.
+message CpuUsage {
+ // Timestamp in nanoseconds at which the information were collected. Must be > 0.
+ int64 timestamp = 1;
+ // Cumulative CPU usage (sum across all cores) since object creation.
+ UInt64Value usage_core_nano_seconds = 2;
+}
+
+// MemoryUsage provides the memory usage information.
+message MemoryUsage {
+ // Timestamp in nanoseconds at which the information were collected. Must be > 0.
+ int64 timestamp = 1;
+ // The amount of working set memory in bytes.
+ UInt64Value working_set_bytes = 2;
+}
diff --git a/vendor/k8s.io/kubernetes/pkg/kubelet/apis/cri/v1alpha1/runtime/constants.go b/vendor/k8s.io/kubernetes/pkg/kubelet/apis/cri/v1alpha1/runtime/constants.go
new file mode 100644
index 000000000..27c42c5c5
--- /dev/null
+++ b/vendor/k8s.io/kubernetes/pkg/kubelet/apis/cri/v1alpha1/runtime/constants.go
@@ -0,0 +1,27 @@
+/*
+Copyright 2016 The Kubernetes Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package runtime
+
+// This file contains all constants defined in CRI.
+
+// Required runtime condition type.
+const (
+ // RuntimeReady means the runtime is up and ready to accept basic containers.
+ RuntimeReady = "RuntimeReady"
+ // NetworkReady means the runtime network is up and ready to accept containers which require network.
+ NetworkReady = "NetworkReady"
+)
diff --git a/vendor/k8s.io/kubernetes/pkg/kubelet/container/cache.go b/vendor/k8s.io/kubernetes/pkg/kubelet/container/cache.go
new file mode 100644
index 000000000..82852a9d9
--- /dev/null
+++ b/vendor/k8s.io/kubernetes/pkg/kubelet/container/cache.go
@@ -0,0 +1,199 @@
+/*
+Copyright 2015 The Kubernetes Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package container
+
+import (
+ "sync"
+ "time"
+
+ "k8s.io/apimachinery/pkg/types"
+)
+
+// Cache stores the PodStatus for the pods. It represents *all* the visible
+// pods/containers in the container runtime. All cache entries are at least as
+// new or newer than the global timestamp (set by UpdateTime()), while
+// individual entries may be slightly newer than the global timestamp. If a pod
+// has no states known by the runtime, Cache returns an empty PodStatus object
+// with ID populated.
+//
+// Cache provides two methods to retrive the PodStatus: the non-blocking Get()
+// and the blocking GetNewerThan() method. The component responsible for
+// populating the cache is expected to call Delete() to explicitly free the
+// cache entries.
+type Cache interface {
+ Get(types.UID) (*PodStatus, error)
+ Set(types.UID, *PodStatus, error, time.Time)
+ // GetNewerThan is a blocking call that only returns the status
+ // when it is newer than the given time.
+ GetNewerThan(types.UID, time.Time) (*PodStatus, error)
+ Delete(types.UID)
+ UpdateTime(time.Time)
+}
+
+type data struct {
+ // Status of the pod.
+ status *PodStatus
+ // Error got when trying to inspect the pod.
+ err error
+ // Time when the data was last modified.
+ modified time.Time
+}
+
+type subRecord struct {
+ time time.Time
+ ch chan *data
+}
+
+// cache implements Cache.
+type cache struct {
+ // Lock which guards all internal data structures.
+ lock sync.RWMutex
+ // Map that stores the pod statuses.
+ pods map[types.UID]*data
+ // A global timestamp represents how fresh the cached data is. All
+ // cache content is at the least newer than this timestamp. Note that the
+ // timestamp is nil after initialization, and will only become non-nil when
+ // it is ready to serve the cached statuses.
+ timestamp *time.Time
+ // Map that stores the subscriber records.
+ subscribers map[types.UID][]*subRecord
+}
+
+// NewCache creates a pod cache.
+func NewCache() Cache {
+ return &cache{pods: map[types.UID]*data{}, subscribers: map[types.UID][]*subRecord{}}
+}
+
+// Get returns the PodStatus for the pod; callers are expected not to
+// modify the objects returned.
+func (c *cache) Get(id types.UID) (*PodStatus, error) {
+ c.lock.RLock()
+ defer c.lock.RUnlock()
+ d := c.get(id)
+ return d.status, d.err
+}
+
+func (c *cache) GetNewerThan(id types.UID, minTime time.Time) (*PodStatus, error) {
+ ch := c.subscribe(id, minTime)
+ d := <-ch
+ return d.status, d.err
+}
+
+// Set sets the PodStatus for the pod.
+func (c *cache) Set(id types.UID, status *PodStatus, err error, timestamp time.Time) {
+ c.lock.Lock()
+ defer c.lock.Unlock()
+ defer c.notify(id, timestamp)
+ c.pods[id] = &data{status: status, err: err, modified: timestamp}
+}
+
+// Delete removes the entry of the pod.
+func (c *cache) Delete(id types.UID) {
+ c.lock.Lock()
+ defer c.lock.Unlock()
+ delete(c.pods, id)
+}
+
+// UpdateTime modifies the global timestamp of the cache and notify
+// subscribers if needed.
+func (c *cache) UpdateTime(timestamp time.Time) {
+ c.lock.Lock()
+ defer c.lock.Unlock()
+ c.timestamp = &timestamp
+ // Notify all the subscribers if the condition is met.
+ for id := range c.subscribers {
+ c.notify(id, *c.timestamp)
+ }
+}
+
+func makeDefaultData(id types.UID) *data {
+ return &data{status: &PodStatus{ID: id}, err: nil}
+}
+
+func (c *cache) get(id types.UID) *data {
+ d, ok := c.pods[id]
+ if !ok {
+ // Cache should store *all* pod/container information known by the
+ // container runtime. A cache miss indicates that there are no states
+ // regarding the pod last time we queried the container runtime.
+ // What this *really* means is that there are no visible pod/containers
+ // associated with this pod. Simply return an default (mostly empty)
+ // PodStatus to reflect this.
+ return makeDefaultData(id)
+ }
+ return d
+}
+
+// getIfNewerThan returns the data it is newer than the given time.
+// Otherwise, it returns nil. The caller should acquire the lock.
+func (c *cache) getIfNewerThan(id types.UID, minTime time.Time) *data {
+ d, ok := c.pods[id]
+ globalTimestampIsNewer := (c.timestamp != nil && c.timestamp.After(minTime))
+ if !ok && globalTimestampIsNewer {
+ // Status is not cached, but the global timestamp is newer than
+ // minTime, return the default status.
+ return makeDefaultData(id)
+ }
+ if ok && (d.modified.After(minTime) || globalTimestampIsNewer) {
+ // Status is cached, return status if either of the following is true.
+ // * status was modified after minTime
+ // * the global timestamp of the cache is newer than minTime.
+ return d
+ }
+ // The pod status is not ready.
+ return nil
+}
+
+// notify sends notifications for pod with the given id, if the requirements
+// are met. Note that the caller should acquire the lock.
+func (c *cache) notify(id types.UID, timestamp time.Time) {
+ list, ok := c.subscribers[id]
+ if !ok {
+ // No one to notify.
+ return
+ }
+ newList := []*subRecord{}
+ for i, r := range list {
+ if timestamp.Before(r.time) {
+ // Doesn't meet the time requirement; keep the record.
+ newList = append(newList, list[i])
+ continue
+ }
+ r.ch <- c.get(id)
+ close(r.ch)
+ }
+ if len(newList) == 0 {
+ delete(c.subscribers, id)
+ } else {
+ c.subscribers[id] = newList
+ }
+}
+
+func (c *cache) subscribe(id types.UID, timestamp time.Time) chan *data {
+ ch := make(chan *data, 1)
+ c.lock.Lock()
+ defer c.lock.Unlock()
+ d := c.getIfNewerThan(id, timestamp)
+ if d != nil {
+ // If the cache entry is ready, send the data and return immediately.
+ ch <- d
+ return ch
+ }
+ // Add the subscription record.
+ c.subscribers[id] = append(c.subscribers[id], &subRecord{time: timestamp, ch: ch})
+ return ch
+}
diff --git a/vendor/k8s.io/kubernetes/pkg/kubelet/container/container_gc.go b/vendor/k8s.io/kubernetes/pkg/kubelet/container/container_gc.go
new file mode 100644
index 000000000..be2fac4b9
--- /dev/null
+++ b/vendor/k8s.io/kubernetes/pkg/kubelet/container/container_gc.go
@@ -0,0 +1,84 @@
+/*
+Copyright 2014 The Kubernetes Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package container
+
+import (
+ "fmt"
+ "time"
+)
+
+// Specified a policy for garbage collecting containers.
+type ContainerGCPolicy struct {
+ // Minimum age at which a container can be garbage collected, zero for no limit.
+ MinAge time.Duration
+
+ // Max number of dead containers any single pod (UID, container name) pair is
+ // allowed to have, less than zero for no limit.
+ MaxPerPodContainer int
+
+ // Max number of total dead containers, less than zero for no limit.
+ MaxContainers int
+}
+
+// Manages garbage collection of dead containers.
+//
+// Implementation is thread-compatible.
+type ContainerGC interface {
+ // Garbage collect containers.
+ GarbageCollect() error
+ // Deletes all unused containers, including containers belonging to pods that are terminated but not deleted
+ DeleteAllUnusedContainers() error
+}
+
+// SourcesReadyProvider knows how to determine if configuration sources are ready
+type SourcesReadyProvider interface {
+ // AllReady returns true if the currently configured sources have all been seen.
+ AllReady() bool
+}
+
+// TODO(vmarmol): Preferentially remove pod infra containers.
+type realContainerGC struct {
+ // Container runtime
+ runtime Runtime
+
+ // Policy for garbage collection.
+ policy ContainerGCPolicy
+
+ // sourcesReadyProvider provides the readyness of kubelet configuration sources.
+ sourcesReadyProvider SourcesReadyProvider
+}
+
+// New ContainerGC instance with the specified policy.
+func NewContainerGC(runtime Runtime, policy ContainerGCPolicy, sourcesReadyProvider SourcesReadyProvider) (ContainerGC, error) {
+ if policy.MinAge < 0 {
+ return nil, fmt.Errorf("invalid minimum garbage collection age: %v", policy.MinAge)
+ }
+
+ return &realContainerGC{
+ runtime: runtime,
+ policy: policy,
+ sourcesReadyProvider: sourcesReadyProvider,
+ }, nil
+}
+
+func (cgc *realContainerGC) GarbageCollect() error {
+ return cgc.runtime.GarbageCollect(cgc.policy, cgc.sourcesReadyProvider.AllReady(), false)
+}
+
+func (cgc *realContainerGC) DeleteAllUnusedContainers() error {
+ return cgc.runtime.GarbageCollect(cgc.policy, cgc.sourcesReadyProvider.AllReady(), true)
+}
diff --git a/vendor/k8s.io/kubernetes/pkg/kubelet/container/container_reference_manager.go b/vendor/k8s.io/kubernetes/pkg/kubelet/container/container_reference_manager.go
new file mode 100644
index 000000000..8383e77d9
--- /dev/null
+++ b/vendor/k8s.io/kubernetes/pkg/kubelet/container/container_reference_manager.go
@@ -0,0 +1,62 @@
+/*
+Copyright 2015 The Kubernetes Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package container
+
+import (
+ "sync"
+
+ "k8s.io/kubernetes/pkg/api/v1"
+)
+
+// RefManager manages the references for the containers.
+// The references are used for reporting events such as creation,
+// failure, etc. This manager is thread-safe, no locks are necessary
+// for the caller.
+type RefManager struct {
+ sync.RWMutex
+ containerIDToRef map[ContainerID]*v1.ObjectReference
+}
+
+// NewRefManager creates and returns a container reference manager
+// with empty contents.
+func NewRefManager() *RefManager {
+ return &RefManager{containerIDToRef: make(map[ContainerID]*v1.ObjectReference)}
+}
+
+// SetRef stores a reference to a pod's container, associating it with the given container ID.
+// TODO: move this to client-go v1.ObjectReference
+func (c *RefManager) SetRef(id ContainerID, ref *v1.ObjectReference) {
+ c.Lock()
+ defer c.Unlock()
+ c.containerIDToRef[id] = ref
+}
+
+// ClearRef forgets the given container id and its associated container reference.
+func (c *RefManager) ClearRef(id ContainerID) {
+ c.Lock()
+ defer c.Unlock()
+ delete(c.containerIDToRef, id)
+}
+
+// GetRef returns the container reference of the given ID, or (nil, false) if none is stored.
+// TODO: move this to client-go v1.ObjectReference
+func (c *RefManager) GetRef(id ContainerID) (ref *v1.ObjectReference, ok bool) {
+ c.RLock()
+ defer c.RUnlock()
+ ref, ok = c.containerIDToRef[id]
+ return ref, ok
+}
diff --git a/vendor/k8s.io/kubernetes/pkg/kubelet/container/helpers.go b/vendor/k8s.io/kubernetes/pkg/kubelet/container/helpers.go
new file mode 100644
index 000000000..7930fed55
--- /dev/null
+++ b/vendor/k8s.io/kubernetes/pkg/kubelet/container/helpers.go
@@ -0,0 +1,367 @@
+/*
+Copyright 2015 The Kubernetes Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package container
+
+import (
+ "bytes"
+ "fmt"
+ "hash/adler32"
+ "hash/fnv"
+ "strings"
+ "time"
+
+ "github.com/golang/glog"
+
+ metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+ "k8s.io/apimachinery/pkg/runtime"
+ "k8s.io/apimachinery/pkg/types"
+ clientv1 "k8s.io/client-go/pkg/api/v1"
+ "k8s.io/client-go/tools/record"
+ "k8s.io/kubernetes/pkg/api/v1"
+ runtimeapi "k8s.io/kubernetes/pkg/kubelet/apis/cri/v1alpha1/runtime"
+ "k8s.io/kubernetes/pkg/kubelet/events"
+ "k8s.io/kubernetes/pkg/kubelet/util/format"
+ "k8s.io/kubernetes/pkg/kubelet/util/ioutils"
+ hashutil "k8s.io/kubernetes/pkg/util/hash"
+ "k8s.io/kubernetes/third_party/forked/golang/expansion"
+)
+
+// HandlerRunner runs a lifecycle handler for a container.
+type HandlerRunner interface {
+ Run(containerID ContainerID, pod *v1.Pod, container *v1.Container, handler *v1.Handler) (string, error)
+}
+
+// RuntimeHelper wraps kubelet to make container runtime
+// able to get necessary informations like the RunContainerOptions, DNS settings, Host IP.
+type RuntimeHelper interface {
+ GenerateRunContainerOptions(pod *v1.Pod, container *v1.Container, podIP string) (contOpts *RunContainerOptions, useClusterFirstPolicy bool, err error)
+ GetClusterDNS(pod *v1.Pod) (dnsServers []string, dnsSearches []string, useClusterFirstPolicy bool, err error)
+ // GetPodCgroupParent returns the the CgroupName identifer, and its literal cgroupfs form on the host
+ // of a pod.
+ GetPodCgroupParent(pod *v1.Pod) string
+ GetPodDir(podUID types.UID) string
+ GeneratePodHostNameAndDomain(pod *v1.Pod) (hostname string, hostDomain string, err error)
+ // GetExtraSupplementalGroupsForPod returns a list of the extra
+ // supplemental groups for the Pod. These extra supplemental groups come
+ // from annotations on persistent volumes that the pod depends on.
+ GetExtraSupplementalGroupsForPod(pod *v1.Pod) []int64
+}
+
+// ShouldContainerBeRestarted checks whether a container needs to be restarted.
+// TODO(yifan): Think about how to refactor this.
+func ShouldContainerBeRestarted(container *v1.Container, pod *v1.Pod, podStatus *PodStatus) bool {
+ // Get latest container status.
+ status := podStatus.FindContainerStatusByName(container.Name)
+ // If the container was never started before, we should start it.
+ // NOTE(random-liu): If all historical containers were GC'd, we'll also return true here.
+ if status == nil {
+ return true
+ }
+ // Check whether container is running
+ if status.State == ContainerStateRunning {
+ return false
+ }
+ // Always restart container in the unknown, or in the created state.
+ if status.State == ContainerStateUnknown || status.State == ContainerStateCreated {
+ return true
+ }
+ // Check RestartPolicy for dead container
+ if pod.Spec.RestartPolicy == v1.RestartPolicyNever {
+ glog.V(4).Infof("Already ran container %q of pod %q, do nothing", container.Name, format.Pod(pod))
+ return false
+ }
+ if pod.Spec.RestartPolicy == v1.RestartPolicyOnFailure {
+ // Check the exit code.
+ if status.ExitCode == 0 {
+ glog.V(4).Infof("Already successfully ran container %q of pod %q, do nothing", container.Name, format.Pod(pod))
+ return false
+ }
+ }
+ return true
+}
+
+// HashContainer returns the hash of the container. It is used to compare
+// the running container with its desired spec.
+func HashContainer(container *v1.Container) uint64 {
+ hash := fnv.New32a()
+ hashutil.DeepHashObject(hash, *container)
+ return uint64(hash.Sum32())
+}
+
+// HashContainerLegacy returns the hash of the container. It is used to compare
+// the running container with its desired spec.
+// This is used by rktnetes and dockershim (for handling <=1.5 containers).
+// TODO: Remove this function when kubernetes version is >=1.8 AND rktnetes
+// update its hash function.
+func HashContainerLegacy(container *v1.Container) uint64 {
+ hash := adler32.New()
+ hashutil.DeepHashObject(hash, *container)
+ return uint64(hash.Sum32())
+}
+
+// EnvVarsToMap constructs a map of environment name to value from a slice
+// of env vars.
+func EnvVarsToMap(envs []EnvVar) map[string]string {
+ result := map[string]string{}
+ for _, env := range envs {
+ result[env.Name] = env.Value
+ }
+ return result
+}
+
+// V1EnvVarsToMap constructs a map of environment name to value from a slice
+// of env vars.
+func V1EnvVarsToMap(envs []v1.EnvVar) map[string]string {
+ result := map[string]string{}
+ for _, env := range envs {
+ result[env.Name] = env.Value
+ }
+
+ return result
+}
+
+// ExpandContainerCommandOnlyStatic substitutes only static environment variable values from the
+// container environment definitions. This does *not* include valueFrom substitutions.
+// TODO: callers should use ExpandContainerCommandAndArgs with a fully resolved list of environment.
+func ExpandContainerCommandOnlyStatic(containerCommand []string, envs []v1.EnvVar) (command []string) {
+ mapping := expansion.MappingFuncFor(V1EnvVarsToMap(envs))
+ if len(containerCommand) != 0 {
+ for _, cmd := range containerCommand {
+ command = append(command, expansion.Expand(cmd, mapping))
+ }
+ }
+ return command
+}
+
+func ExpandContainerCommandAndArgs(container *v1.Container, envs []EnvVar) (command []string, args []string) {
+ mapping := expansion.MappingFuncFor(EnvVarsToMap(envs))
+
+ if len(container.Command) != 0 {
+ for _, cmd := range container.Command {
+ command = append(command, expansion.Expand(cmd, mapping))
+ }
+ }
+
+ if len(container.Args) != 0 {
+ for _, arg := range container.Args {
+ args = append(args, expansion.Expand(arg, mapping))
+ }
+ }
+
+ return command, args
+}
+
+// Create an event recorder to record object's event except implicitly required container's, like infra container.
+func FilterEventRecorder(recorder record.EventRecorder) record.EventRecorder {
+ return &innerEventRecorder{
+ recorder: recorder,
+ }
+}
+
+type innerEventRecorder struct {
+ recorder record.EventRecorder
+}
+
+func (irecorder *innerEventRecorder) shouldRecordEvent(object runtime.Object) (*clientv1.ObjectReference, bool) {
+ if object == nil {
+ return nil, false
+ }
+ if ref, ok := object.(*clientv1.ObjectReference); ok {
+ if !strings.HasPrefix(ref.FieldPath, ImplicitContainerPrefix) {
+ return ref, true
+ }
+ }
+ // just in case we miss a spot, be sure that we still log something
+ if ref, ok := object.(*v1.ObjectReference); ok {
+ if !strings.HasPrefix(ref.FieldPath, ImplicitContainerPrefix) {
+ return events.ToObjectReference(ref), true
+ }
+ }
+ return nil, false
+}
+
+func (irecorder *innerEventRecorder) Event(object runtime.Object, eventtype, reason, message string) {
+ if ref, ok := irecorder.shouldRecordEvent(object); ok {
+ irecorder.recorder.Event(ref, eventtype, reason, message)
+ }
+}
+
+func (irecorder *innerEventRecorder) Eventf(object runtime.Object, eventtype, reason, messageFmt string, args ...interface{}) {
+ if ref, ok := irecorder.shouldRecordEvent(object); ok {
+ irecorder.recorder.Eventf(ref, eventtype, reason, messageFmt, args...)
+ }
+
+}
+
+func (irecorder *innerEventRecorder) PastEventf(object runtime.Object, timestamp metav1.Time, eventtype, reason, messageFmt string, args ...interface{}) {
+ if ref, ok := irecorder.shouldRecordEvent(object); ok {
+ irecorder.recorder.PastEventf(ref, timestamp, eventtype, reason, messageFmt, args...)
+ }
+}
+
+// Pod must not be nil.
+func IsHostNetworkPod(pod *v1.Pod) bool {
+ return pod.Spec.HostNetwork
+}
+
+// TODO(random-liu): Convert PodStatus to running Pod, should be deprecated soon
+func ConvertPodStatusToRunningPod(runtimeName string, podStatus *PodStatus) Pod {
+ runningPod := Pod{
+ ID: podStatus.ID,
+ Name: podStatus.Name,
+ Namespace: podStatus.Namespace,
+ }
+ for _, containerStatus := range podStatus.ContainerStatuses {
+ if containerStatus.State != ContainerStateRunning {
+ continue
+ }
+ container := &Container{
+ ID: containerStatus.ID,
+ Name: containerStatus.Name,
+ Image: containerStatus.Image,
+ ImageID: containerStatus.ImageID,
+ Hash: containerStatus.Hash,
+ State: containerStatus.State,
+ }
+ runningPod.Containers = append(runningPod.Containers, container)
+ }
+
+ // Populate sandboxes in kubecontainer.Pod
+ for _, sandbox := range podStatus.SandboxStatuses {
+ runningPod.Sandboxes = append(runningPod.Sandboxes, &Container{
+ ID: ContainerID{Type: runtimeName, ID: sandbox.Id},
+ State: SandboxToContainerState(sandbox.State),
+ })
+ }
+ return runningPod
+}
+
+// SandboxToContainerState converts runtimeapi.PodSandboxState to
+// kubecontainer.ContainerState.
+// This is only needed because we need to return sandboxes as if they were
+// kubecontainer.Containers to avoid substantial changes to PLEG.
+// TODO: Remove this once it becomes obsolete.
+func SandboxToContainerState(state runtimeapi.PodSandboxState) ContainerState {
+ switch state {
+ case runtimeapi.PodSandboxState_SANDBOX_READY:
+ return ContainerStateRunning
+ case runtimeapi.PodSandboxState_SANDBOX_NOTREADY:
+ return ContainerStateExited
+ }
+ return ContainerStateUnknown
+}
+
+// FormatPod returns a string representing a pod in a human readable format,
+// with pod UID as part of the string.
+func FormatPod(pod *Pod) string {
+ // Use underscore as the delimiter because it is not allowed in pod name
+ // (DNS subdomain format), while allowed in the container name format.
+ return fmt.Sprintf("%s_%s(%s)", pod.Name, pod.Namespace, pod.ID)
+}
+
+type containerCommandRunnerWrapper struct {
+ DirectStreamingRuntime
+}
+
+var _ ContainerCommandRunner = &containerCommandRunnerWrapper{}
+
+func DirectStreamingRunner(runtime DirectStreamingRuntime) ContainerCommandRunner {
+ return &containerCommandRunnerWrapper{runtime}
+}
+
+func (r *containerCommandRunnerWrapper) RunInContainer(id ContainerID, cmd []string, timeout time.Duration) ([]byte, error) {
+ var buffer bytes.Buffer
+ output := ioutils.WriteCloserWrapper(&buffer)
+ err := r.ExecInContainer(id, cmd, nil, output, output, false, nil, timeout)
+ // Even if err is non-nil, there still may be output (e.g. the exec wrote to stdout or stderr but
+ // the command returned a nonzero exit code). Therefore, always return the output along with the
+ // error.
+ return buffer.Bytes(), err
+}
+
+// GetContainerSpec gets the container spec by containerName.
+func GetContainerSpec(pod *v1.Pod, containerName string) *v1.Container {
+ for i, c := range pod.Spec.Containers {
+ if containerName == c.Name {
+ return &pod.Spec.Containers[i]
+ }
+ }
+ for i, c := range pod.Spec.InitContainers {
+ if containerName == c.Name {
+ return &pod.Spec.InitContainers[i]
+ }
+ }
+ return nil
+}
+
+// HasPrivilegedContainer returns true if any of the containers in the pod are privileged.
+func HasPrivilegedContainer(pod *v1.Pod) bool {
+ for _, c := range pod.Spec.Containers {
+ if c.SecurityContext != nil &&
+ c.SecurityContext.Privileged != nil &&
+ *c.SecurityContext.Privileged {
+ return true
+ }
+ }
+ return false
+}
+
+// MakeCapabilities creates string slices from Capability slices
+func MakeCapabilities(capAdd []v1.Capability, capDrop []v1.Capability) ([]string, []string) {
+ var (
+ addCaps []string
+ dropCaps []string
+ )
+ for _, cap := range capAdd {
+ addCaps = append(addCaps, string(cap))
+ }
+ for _, cap := range capDrop {
+ dropCaps = append(dropCaps, string(cap))
+ }
+ return addCaps, dropCaps
+}
+
+// MakePortMappings creates internal port mapping from api port mapping.
+func MakePortMappings(container *v1.Container) (ports []PortMapping) {
+ names := make(map[string]struct{})
+ for _, p := range container.Ports {
+ pm := PortMapping{
+ HostPort: int(p.HostPort),
+ ContainerPort: int(p.ContainerPort),
+ Protocol: p.Protocol,
+ HostIP: p.HostIP,
+ }
+
+ // We need to create some default port name if it's not specified, since
+ // this is necessary for rkt.
+ // http://issue.k8s.io/7710
+ if p.Name == "" {
+ pm.Name = fmt.Sprintf("%s-%s:%d", container.Name, p.Protocol, p.ContainerPort)
+ } else {
+ pm.Name = fmt.Sprintf("%s-%s", container.Name, p.Name)
+ }
+
+ // Protect against exposing the same protocol-port more than once in a container.
+ if _, ok := names[pm.Name]; ok {
+ glog.Warningf("Port name conflicted, %q is defined more than once", pm.Name)
+ continue
+ }
+ ports = append(ports, pm)
+ names[pm.Name] = struct{}{}
+ }
+ return
+}
diff --git a/vendor/k8s.io/kubernetes/pkg/kubelet/container/os.go b/vendor/k8s.io/kubernetes/pkg/kubelet/container/os.go
new file mode 100644
index 000000000..6126063b3
--- /dev/null
+++ b/vendor/k8s.io/kubernetes/pkg/kubelet/container/os.go
@@ -0,0 +1,107 @@
+/*
+Copyright 2015 The Kubernetes Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package container
+
+import (
+ "io/ioutil"
+ "os"
+ "path/filepath"
+ "time"
+)
+
+// OSInterface collects system level operations that need to be mocked out
+// during tests.
+type OSInterface interface {
+ MkdirAll(path string, perm os.FileMode) error
+ Symlink(oldname string, newname string) error
+ Stat(path string) (os.FileInfo, error)
+ Remove(path string) error
+ RemoveAll(path string) error
+ Create(path string) (*os.File, error)
+ Chmod(path string, perm os.FileMode) error
+ Hostname() (name string, err error)
+ Chtimes(path string, atime time.Time, mtime time.Time) error
+ Pipe() (r *os.File, w *os.File, err error)
+ ReadDir(dirname string) ([]os.FileInfo, error)
+ Glob(pattern string) ([]string, error)
+}
+
+// RealOS is used to dispatch the real system level operations.
+type RealOS struct{}
+
+// MkDir will will call os.Mkdir to create a directory.
+func (RealOS) MkdirAll(path string, perm os.FileMode) error {
+ return os.MkdirAll(path, perm)
+}
+
+// Symlink will call os.Symlink to create a symbolic link.
+func (RealOS) Symlink(oldname string, newname string) error {
+ return os.Symlink(oldname, newname)
+}
+
+// Stat will call os.Stat to get the FileInfo for a given path
+func (RealOS) Stat(path string) (os.FileInfo, error) {
+ return os.Stat(path)
+}
+
+// Remove will call os.Remove to remove the path.
+func (RealOS) Remove(path string) error {
+ return os.Remove(path)
+}
+
+// RemoveAll will call os.RemoveAll to remove the path and its children.
+func (RealOS) RemoveAll(path string) error {
+ return os.RemoveAll(path)
+}
+
+// Create will call os.Create to create and return a file
+// at path.
+func (RealOS) Create(path string) (*os.File, error) {
+ return os.Create(path)
+}
+
+// Chmod will change the permissions on the specified path or return
+// an error.
+func (RealOS) Chmod(path string, perm os.FileMode) error {
+ return os.Chmod(path, perm)
+}
+
+// Hostname will call os.Hostname to return the hostname.
+func (RealOS) Hostname() (name string, err error) {
+ return os.Hostname()
+}
+
+// Chtimes will call os.Chtimes to change the atime and mtime of the path
+func (RealOS) Chtimes(path string, atime time.Time, mtime time.Time) error {
+ return os.Chtimes(path, atime, mtime)
+}
+
+// Pipe will call os.Pipe to return a connected pair of pipe.
+func (RealOS) Pipe() (r *os.File, w *os.File, err error) {
+ return os.Pipe()
+}
+
+// ReadDir will call ioutil.ReadDir to return the files under the directory.
+func (RealOS) ReadDir(dirname string) ([]os.FileInfo, error) {
+ return ioutil.ReadDir(dirname)
+}
+
+// Glob will call filepath.Glob to return the names of all files matching
+// pattern.
+func (RealOS) Glob(pattern string) ([]string, error) {
+ return filepath.Glob(pattern)
+}
diff --git a/vendor/k8s.io/kubernetes/pkg/kubelet/container/pty_linux.go b/vendor/k8s.io/kubernetes/pkg/kubelet/container/pty_linux.go
new file mode 100644
index 000000000..40906ce99
--- /dev/null
+++ b/vendor/k8s.io/kubernetes/pkg/kubelet/container/pty_linux.go
@@ -0,0 +1,30 @@
+// +build linux
+
+/*
+Copyright 2015 The Kubernetes Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package container
+
+import (
+ "os"
+ "os/exec"
+
+ "github.com/kr/pty"
+)
+
+func StartPty(c *exec.Cmd) (*os.File, error) {
+ return pty.Start(c)
+}
diff --git a/vendor/k8s.io/kubernetes/pkg/kubelet/container/pty_unsupported.go b/vendor/k8s.io/kubernetes/pkg/kubelet/container/pty_unsupported.go
new file mode 100644
index 000000000..24ea2f787
--- /dev/null
+++ b/vendor/k8s.io/kubernetes/pkg/kubelet/container/pty_unsupported.go
@@ -0,0 +1,28 @@
+// +build !linux
+
+/*
+Copyright 2015 The Kubernetes Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package container
+
+import (
+ "os"
+ "os/exec"
+)
+
+func StartPty(c *exec.Cmd) (pty *os.File, err error) {
+ return nil, nil
+}
diff --git a/vendor/k8s.io/kubernetes/pkg/kubelet/container/ref.go b/vendor/k8s.io/kubernetes/pkg/kubelet/container/ref.go
new file mode 100644
index 000000000..0251b8134
--- /dev/null
+++ b/vendor/k8s.io/kubernetes/pkg/kubelet/container/ref.go
@@ -0,0 +1,73 @@
+/*
+Copyright 2015 The Kubernetes Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package container
+
+import (
+ "fmt"
+
+ "k8s.io/kubernetes/pkg/api"
+ "k8s.io/kubernetes/pkg/api/v1"
+ "k8s.io/kubernetes/pkg/api/v1/ref"
+)
+
+var ImplicitContainerPrefix string = "implicitly required container "
+
+// GenerateContainerRef returns an *v1.ObjectReference which references the given container
+// within the given pod. Returns an error if the reference can't be constructed or the
+// container doesn't actually belong to the pod.
+//
+// This function will return an error if the provided Pod does not have a selfLink,
+// but we expect selfLink to be populated at all call sites for the function.
+func GenerateContainerRef(pod *v1.Pod, container *v1.Container) (*v1.ObjectReference, error) {
+ fieldPath, err := fieldPath(pod, container)
+ if err != nil {
+ // TODO: figure out intelligent way to refer to containers that we implicitly
+ // start (like the pod infra container). This is not a good way, ugh.
+ fieldPath = ImplicitContainerPrefix + container.Name
+ }
+ ref, err := ref.GetPartialReference(api.Scheme, pod, fieldPath)
+ if err != nil {
+ return nil, err
+ }
+ return ref, nil
+}
+
+// fieldPath returns a fieldPath locating container within pod.
+// Returns an error if the container isn't part of the pod.
+func fieldPath(pod *v1.Pod, container *v1.Container) (string, error) {
+ for i := range pod.Spec.Containers {
+ here := &pod.Spec.Containers[i]
+ if here.Name == container.Name {
+ if here.Name == "" {
+ return fmt.Sprintf("spec.containers[%d]", i), nil
+ } else {
+ return fmt.Sprintf("spec.containers{%s}", here.Name), nil
+ }
+ }
+ }
+ for i := range pod.Spec.InitContainers {
+ here := &pod.Spec.InitContainers[i]
+ if here.Name == container.Name {
+ if here.Name == "" {
+ return fmt.Sprintf("spec.initContainers[%d]", i), nil
+ } else {
+ return fmt.Sprintf("spec.initContainers{%s}", here.Name), nil
+ }
+ }
+ }
+ return "", fmt.Errorf("container %#v not found in pod %#v", container, pod)
+}
diff --git a/vendor/k8s.io/kubernetes/pkg/kubelet/container/resize.go b/vendor/k8s.io/kubernetes/pkg/kubelet/container/resize.go
new file mode 100644
index 000000000..d7b75eede
--- /dev/null
+++ b/vendor/k8s.io/kubernetes/pkg/kubelet/container/resize.go
@@ -0,0 +1,46 @@
+/*
+Copyright 2015 The Kubernetes Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package container
+
+import (
+ "k8s.io/apimachinery/pkg/util/runtime"
+ "k8s.io/client-go/tools/remotecommand"
+)
+
+// handleResizing spawns a goroutine that processes the resize channel, calling resizeFunc for each
+// remotecommand.TerminalSize received from the channel. The resize channel must be closed elsewhere to stop the
+// goroutine.
+func HandleResizing(resize <-chan remotecommand.TerminalSize, resizeFunc func(size remotecommand.TerminalSize)) {
+ if resize == nil {
+ return
+ }
+
+ go func() {
+ defer runtime.HandleCrash()
+
+ for {
+ size, ok := <-resize
+ if !ok {
+ return
+ }
+ if size.Height < 1 || size.Width < 1 {
+ continue
+ }
+ resizeFunc(size)
+ }
+ }()
+}
diff --git a/vendor/k8s.io/kubernetes/pkg/kubelet/container/runtime.go b/vendor/k8s.io/kubernetes/pkg/kubelet/container/runtime.go
new file mode 100644
index 000000000..c3403ad57
--- /dev/null
+++ b/vendor/k8s.io/kubernetes/pkg/kubelet/container/runtime.go
@@ -0,0 +1,646 @@
+/*
+Copyright 2015 The Kubernetes Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package container
+
+import (
+ "fmt"
+ "io"
+ "net/url"
+ "reflect"
+ "strings"
+ "time"
+
+ "github.com/golang/glog"
+ "k8s.io/apimachinery/pkg/types"
+ "k8s.io/client-go/tools/remotecommand"
+ "k8s.io/client-go/util/flowcontrol"
+ "k8s.io/kubernetes/pkg/api/v1"
+ runtimeapi "k8s.io/kubernetes/pkg/kubelet/apis/cri/v1alpha1/runtime"
+ "k8s.io/kubernetes/pkg/volume"
+)
+
+type Version interface {
+ // Compare compares two versions of the runtime. On success it returns -1
+ // if the version is less than the other, 1 if it is greater than the other,
+ // or 0 if they are equal.
+ Compare(other string) (int, error)
+ // String returns a string that represents the version.
+ String() string
+}
+
+// ImageSpec is an internal representation of an image. Currently, it wraps the
+// value of a Container's Image field, but in the future it will include more detailed
+// information about the different image types.
+type ImageSpec struct {
+ Image string
+}
+
+// ImageStats contains statistics about all the images currently available.
+type ImageStats struct {
+ // Total amount of storage consumed by existing images.
+ TotalStorageBytes uint64
+}
+
+// Runtime interface defines the interfaces that should be implemented
+// by a container runtime.
+// Thread safety is required from implementations of this interface.
+type Runtime interface {
+ // Type returns the type of the container runtime.
+ Type() string
+
+ // Version returns the version information of the container runtime.
+ Version() (Version, error)
+
+ // APIVersion returns the cached API version information of the container
+ // runtime. Implementation is expected to update this cache periodically.
+ // This may be different from the runtime engine's version.
+ // TODO(random-liu): We should fold this into Version()
+ APIVersion() (Version, error)
+ // Status returns the status of the runtime. An error is returned if the Status
+ // function itself fails, nil otherwise.
+ Status() (*RuntimeStatus, error)
+ // GetPods returns a list of containers grouped by pods. The boolean parameter
+ // specifies whether the runtime returns all containers including those already
+ // exited and dead containers (used for garbage collection).
+ GetPods(all bool) ([]*Pod, error)
+ // GarbageCollect removes dead containers using the specified container gc policy
+ // If allSourcesReady is not true, it means that kubelet doesn't have the
+ // complete list of pods from all avialble sources (e.g., apiserver, http,
+ // file). In this case, garbage collector should refrain itself from aggressive
+ // behavior such as removing all containers of unrecognized pods (yet).
+ // If evictNonDeletedPods is set to true, containers and sandboxes belonging to pods
+ // that are terminated, but not deleted will be evicted. Otherwise, only deleted pods will be GC'd.
+ // TODO: Revisit this method and make it cleaner.
+ GarbageCollect(gcPolicy ContainerGCPolicy, allSourcesReady bool, evictNonDeletedPods bool) error
+ // Syncs the running pod into the desired pod.
+ SyncPod(pod *v1.Pod, apiPodStatus v1.PodStatus, podStatus *PodStatus, pullSecrets []v1.Secret, backOff *flowcontrol.Backoff) PodSyncResult
+ // KillPod kills all the containers of a pod. Pod may be nil, running pod must not be.
+ // TODO(random-liu): Return PodSyncResult in KillPod.
+ // gracePeriodOverride if specified allows the caller to override the pod default grace period.
+ // only hard kill paths are allowed to specify a gracePeriodOverride in the kubelet in order to not corrupt user data.
+ // it is useful when doing SIGKILL for hard eviction scenarios, or max grace period during soft eviction scenarios.
+ KillPod(pod *v1.Pod, runningPod Pod, gracePeriodOverride *int64) error
+ // GetPodStatus retrieves the status of the pod, including the
+ // information of all containers in the pod that are visble in Runtime.
+ GetPodStatus(uid types.UID, name, namespace string) (*PodStatus, error)
+ // Returns the filesystem path of the pod's network namespace; if the
+ // runtime does not handle namespace creation itself, or cannot return
+ // the network namespace path, it should return an error.
+ // TODO: Change ContainerID to a Pod ID since the namespace is shared
+ // by all containers in the pod.
+ GetNetNS(containerID ContainerID) (string, error)
+ // Returns the container ID that represents the Pod, as passed to network
+ // plugins. For example, if the runtime uses an infra container, returns
+ // the infra container's ContainerID.
+ // TODO: Change ContainerID to a Pod ID, see GetNetNS()
+ GetPodContainerID(*Pod) (ContainerID, error)
+ // TODO(vmarmol): Unify pod and containerID args.
+ // GetContainerLogs returns logs of a specific container. By
+ // default, it returns a snapshot of the container log. Set 'follow' to true to
+ // stream the log. Set 'follow' to false and specify the number of lines (e.g.
+ // "100" or "all") to tail the log.
+ GetContainerLogs(pod *v1.Pod, containerID ContainerID, logOptions *v1.PodLogOptions, stdout, stderr io.Writer) (err error)
+ // Delete a container. If the container is still running, an error is returned.
+ DeleteContainer(containerID ContainerID) error
+ // ImageService provides methods to image-related methods.
+ ImageService
+ // UpdatePodCIDR sends a new podCIDR to the runtime.
+ // This method just proxies a new runtimeConfig with the updated
+ // CIDR value down to the runtime shim.
+ UpdatePodCIDR(podCIDR string) error
+}
+
+// DirectStreamingRuntime is the interface implemented by runtimes for which the streaming calls
+// (exec/attach/port-forward) should be served directly by the Kubelet.
+type DirectStreamingRuntime interface {
+ // Runs the command in the container of the specified pod using nsenter.
+ // Attaches the processes stdin, stdout, and stderr. Optionally uses a
+ // tty.
+ ExecInContainer(containerID ContainerID, cmd []string, stdin io.Reader, stdout, stderr io.WriteCloser, tty bool, resize <-chan remotecommand.TerminalSize, timeout time.Duration) error
+ // Forward the specified port from the specified pod to the stream.
+ PortForward(pod *Pod, port int32, stream io.ReadWriteCloser) error
+ // ContainerAttach encapsulates the attaching to containers for testability
+ ContainerAttacher
+}
+
+// IndirectStreamingRuntime is the interface implemented by runtimes that handle the serving of the
+// streaming calls (exec/attach/port-forward) themselves. In this case, Kubelet should redirect to
+// the runtime server.
+type IndirectStreamingRuntime interface {
+ GetExec(id ContainerID, cmd []string, stdin, stdout, stderr, tty bool) (*url.URL, error)
+ GetAttach(id ContainerID, stdin, stdout, stderr, tty bool) (*url.URL, error)
+ GetPortForward(podName, podNamespace string, podUID types.UID, ports []int32) (*url.URL, error)
+}
+
+type ImageService interface {
+ // PullImage pulls an image from the network to local storage using the supplied
+ // secrets if necessary. It returns a reference (digest or ID) to the pulled image.
+ PullImage(image ImageSpec, pullSecrets []v1.Secret) (string, error)
+ // GetImageRef gets the reference (digest or ID) of the image which has already been in
+ // the local storage. It returns ("", nil) if the image isn't in the local storage.
+ GetImageRef(image ImageSpec) (string, error)
+ // Gets all images currently on the machine.
+ ListImages() ([]Image, error)
+ // Removes the specified image.
+ RemoveImage(image ImageSpec) error
+ // Returns Image statistics.
+ ImageStats() (*ImageStats, error)
+}
+
+type ContainerAttacher interface {
+ AttachContainer(id ContainerID, stdin io.Reader, stdout, stderr io.WriteCloser, tty bool, resize <-chan remotecommand.TerminalSize) (err error)
+}
+
+type ContainerCommandRunner interface {
+ // RunInContainer synchronously executes the command in the container, and returns the output.
+ // If the command completes with a non-0 exit code, a pkg/util/exec.ExitError will be returned.
+ RunInContainer(id ContainerID, cmd []string, timeout time.Duration) ([]byte, error)
+}
+
+// Pod is a group of containers.
+type Pod struct {
+ // The ID of the pod, which can be used to retrieve a particular pod
+ // from the pod list returned by GetPods().
+ ID types.UID
+ // The name and namespace of the pod, which is readable by human.
+ Name string
+ Namespace string
+ // List of containers that belongs to this pod. It may contain only
+ // running containers, or mixed with dead ones (when GetPods(true)).
+ Containers []*Container
+ // List of sandboxes associated with this pod. The sandboxes are converted
+ // to Container temporariliy to avoid substantial changes to other
+ // components. This is only populated by kuberuntime.
+ // TODO: use the runtimeApi.PodSandbox type directly.
+ Sandboxes []*Container
+}
+
+// PodPair contains both runtime#Pod and api#Pod
+type PodPair struct {
+ // APIPod is the v1.Pod
+ APIPod *v1.Pod
+ // RunningPod is the pod defined in pkg/kubelet/container/runtime#Pod
+ RunningPod *Pod
+}
+
+// ContainerID is a type that identifies a container.
+type ContainerID struct {
+ // The type of the container runtime. e.g. 'docker', 'rkt'.
+ Type string
+ // The identification of the container, this is comsumable by
+ // the underlying container runtime. (Note that the container
+ // runtime interface still takes the whole struct as input).
+ ID string
+}
+
+func BuildContainerID(typ, ID string) ContainerID {
+ return ContainerID{Type: typ, ID: ID}
+}
+
+// Convenience method for creating a ContainerID from an ID string.
+func ParseContainerID(containerID string) ContainerID {
+ var id ContainerID
+ if err := id.ParseString(containerID); err != nil {
+ glog.Error(err)
+ }
+ return id
+}
+
+func (c *ContainerID) ParseString(data string) error {
+ // Trim the quotes and split the type and ID.
+ parts := strings.Split(strings.Trim(data, "\""), "://")
+ if len(parts) != 2 {
+ return fmt.Errorf("invalid container ID: %q", data)
+ }
+ c.Type, c.ID = parts[0], parts[1]
+ return nil
+}
+
+func (c *ContainerID) String() string {
+ return fmt.Sprintf("%s://%s", c.Type, c.ID)
+}
+
+func (c *ContainerID) IsEmpty() bool {
+ return *c == ContainerID{}
+}
+
+func (c *ContainerID) MarshalJSON() ([]byte, error) {
+ return []byte(fmt.Sprintf("%q", c.String())), nil
+}
+
+func (c *ContainerID) UnmarshalJSON(data []byte) error {
+ return c.ParseString(string(data))
+}
+
+// DockerID is an ID of docker container. It is a type to make it clear when we're working with docker container Ids
+type DockerID string
+
+func (id DockerID) ContainerID() ContainerID {
+ return ContainerID{
+ Type: "docker",
+ ID: string(id),
+ }
+}
+
+type ContainerState string
+
+const (
+ ContainerStateCreated ContainerState = "created"
+ ContainerStateRunning ContainerState = "running"
+ ContainerStateExited ContainerState = "exited"
+ // This unknown encompasses all the states that we currently don't care.
+ ContainerStateUnknown ContainerState = "unknown"
+)
+
+// Container provides the runtime information for a container, such as ID, hash,
+// state of the container.
+type Container struct {
+ // The ID of the container, used by the container runtime to identify
+ // a container.
+ ID ContainerID
+ // The name of the container, which should be the same as specified by
+ // v1.Container.
+ Name string
+ // The image name of the container, this also includes the tag of the image,
+ // the expected form is "NAME:TAG".
+ Image string
+ // The id of the image used by the container.
+ ImageID string
+ // Hash of the container, used for comparison. Optional for containers
+ // not managed by kubelet.
+ Hash uint64
+ // State is the state of the container.
+ State ContainerState
+}
+
+// PodStatus represents the status of the pod and its containers.
+// v1.PodStatus can be derived from examining PodStatus and v1.Pod.
+type PodStatus struct {
+ // ID of the pod.
+ ID types.UID
+ // Name of the pod.
+ Name string
+ // Namspace of the pod.
+ Namespace string
+ // IP of the pod.
+ IP string
+ // Status of containers in the pod.
+ ContainerStatuses []*ContainerStatus
+ // Status of the pod sandbox.
+ // Only for kuberuntime now, other runtime may keep it nil.
+ SandboxStatuses []*runtimeapi.PodSandboxStatus
+}
+
+// ContainerStatus represents the status of a container.
+type ContainerStatus struct {
+ // ID of the container.
+ ID ContainerID
+ // Name of the container.
+ Name string
+ // Status of the container.
+ State ContainerState
+ // Creation time of the container.
+ CreatedAt time.Time
+ // Start time of the container.
+ StartedAt time.Time
+ // Finish time of the container.
+ FinishedAt time.Time
+ // Exit code of the container.
+ ExitCode int
+ // Name of the image, this also includes the tag of the image,
+ // the expected form is "NAME:TAG".
+ Image string
+ // ID of the image.
+ ImageID string
+ // Hash of the container, used for comparison.
+ Hash uint64
+ // Number of times that the container has been restarted.
+ RestartCount int
+ // A string explains why container is in such a status.
+ Reason string
+ // Message written by the container before exiting (stored in
+ // TerminationMessagePath).
+ Message string
+}
+
+// FindContainerStatusByName returns container status in the pod status with the given name.
+// When there are multiple containers' statuses with the same name, the first match will be returned.
+func (podStatus *PodStatus) FindContainerStatusByName(containerName string) *ContainerStatus {
+ for _, containerStatus := range podStatus.ContainerStatuses {
+ if containerStatus.Name == containerName {
+ return containerStatus
+ }
+ }
+ return nil
+}
+
+// Get container status of all the running containers in a pod
+func (podStatus *PodStatus) GetRunningContainerStatuses() []*ContainerStatus {
+ runningContainerStatuses := []*ContainerStatus{}
+ for _, containerStatus := range podStatus.ContainerStatuses {
+ if containerStatus.State == ContainerStateRunning {
+ runningContainerStatuses = append(runningContainerStatuses, containerStatus)
+ }
+ }
+ return runningContainerStatuses
+}
+
+// Basic information about a container image.
+type Image struct {
+ // ID of the image.
+ ID string
+ // Other names by which this image is known.
+ RepoTags []string
+ // Digests by which this image is known.
+ RepoDigests []string
+ // The size of the image in bytes.
+ Size int64
+}
+
+type EnvVar struct {
+ Name string
+ Value string
+}
+
+type Mount struct {
+ // Name of the volume mount.
+ // TODO(yifan): Remove this field, as this is not representing the unique name of the mount,
+ // but the volume name only.
+ Name string
+ // Path of the mount within the container.
+ ContainerPath string
+ // Path of the mount on the host.
+ HostPath string
+ // Whether the mount is read-only.
+ ReadOnly bool
+ // Whether the mount needs SELinux relabeling
+ SELinuxRelabel bool
+}
+
+type PortMapping struct {
+ // Name of the port mapping
+ Name string
+ // Protocol of the port mapping.
+ Protocol v1.Protocol
+ // The port number within the container.
+ ContainerPort int
+ // The port number on the host.
+ HostPort int
+ // The host IP.
+ HostIP string
+}
+
+type DeviceInfo struct {
+ // Path on host for mapping
+ PathOnHost string
+ // Path in Container to map
+ PathInContainer string
+ // Cgroup permissions
+ Permissions string
+}
+
+// RunContainerOptions specify the options which are necessary for running containers
+type RunContainerOptions struct {
+ // The environment variables list.
+ Envs []EnvVar
+ // The mounts for the containers.
+ Mounts []Mount
+ // The host devices mapped into the containers.
+ Devices []DeviceInfo
+ // The port mappings for the containers.
+ PortMappings []PortMapping
+ // If the container has specified the TerminationMessagePath, then
+ // this directory will be used to create and mount the log file to
+ // container.TerminationMessagePath
+ PodContainerDir string
+ // The list of DNS servers for the container to use.
+ DNS []string
+ // The list of DNS search domains.
+ DNSSearch []string
+ // The parent cgroup to pass to Docker
+ CgroupParent string
+ // The type of container rootfs
+ ReadOnly bool
+ // hostname for pod containers
+ Hostname string
+ // EnableHostUserNamespace sets userns=host when users request host namespaces (pid, ipc, net),
+ // are using non-namespaced capabilities (mknod, sys_time, sys_module), the pod contains a privileged container,
+ // or using host path volumes.
+ // This should only be enabled when the container runtime is performing user remapping AND if the
+ // experimental behavior is desired.
+ EnableHostUserNamespace bool
+}
+
+// VolumeInfo contains information about the volume.
+type VolumeInfo struct {
+ // Mounter is the volume's mounter
+ Mounter volume.Mounter
+ // SELinuxLabeled indicates whether this volume has had the
+ // pod's SELinux label applied to it or not
+ SELinuxLabeled bool
+}
+
+type VolumeMap map[string]VolumeInfo
+
+// RuntimeConditionType is the types of required runtime conditions.
+type RuntimeConditionType string
+
+const (
+ // RuntimeReady means the runtime is up and ready to accept basic containers.
+ RuntimeReady RuntimeConditionType = "RuntimeReady"
+ // NetworkReady means the runtime network is up and ready to accept containers which require network.
+ NetworkReady RuntimeConditionType = "NetworkReady"
+)
+
+// RuntimeStatus contains the status of the runtime.
+type RuntimeStatus struct {
+ // Conditions is an array of current observed runtime conditions.
+ Conditions []RuntimeCondition
+}
+
+// GetRuntimeCondition gets a specified runtime condition from the runtime status.
+func (r *RuntimeStatus) GetRuntimeCondition(t RuntimeConditionType) *RuntimeCondition {
+ for i := range r.Conditions {
+ c := &r.Conditions[i]
+ if c.Type == t {
+ return c
+ }
+ }
+ return nil
+}
+
+// String formats the runtime status into human readable string.
+func (s *RuntimeStatus) String() string {
+ var ss []string
+ for _, c := range s.Conditions {
+ ss = append(ss, c.String())
+ }
+ return fmt.Sprintf("Runtime Conditions: %s", strings.Join(ss, ", "))
+}
+
+// RuntimeCondition contains condition information for the runtime.
+type RuntimeCondition struct {
+ // Type of runtime condition.
+ Type RuntimeConditionType
+ // Status of the condition, one of true/false.
+ Status bool
+ // Reason is brief reason for the condition's last transition.
+ Reason string
+ // Message is human readable message indicating details about last transition.
+ Message string
+}
+
+// String formats the runtime condition into human readable string.
+func (c *RuntimeCondition) String() string {
+ return fmt.Sprintf("%s=%t reason:%s message:%s", c.Type, c.Status, c.Reason, c.Message)
+}
+
+type Pods []*Pod
+
+// FindPodByID finds and returns a pod in the pod list by UID. It will return an empty pod
+// if not found.
+func (p Pods) FindPodByID(podUID types.UID) Pod {
+ for i := range p {
+ if p[i].ID == podUID {
+ return *p[i]
+ }
+ }
+ return Pod{}
+}
+
+// FindPodByFullName finds and returns a pod in the pod list by the full name.
+// It will return an empty pod if not found.
+func (p Pods) FindPodByFullName(podFullName string) Pod {
+ for i := range p {
+ if BuildPodFullName(p[i].Name, p[i].Namespace) == podFullName {
+ return *p[i]
+ }
+ }
+ return Pod{}
+}
+
+// FindPod combines FindPodByID and FindPodByFullName, it finds and returns a pod in the
+// pod list either by the full name or the pod ID. It will return an empty pod
+// if not found.
+func (p Pods) FindPod(podFullName string, podUID types.UID) Pod {
+ if len(podFullName) > 0 {
+ return p.FindPodByFullName(podFullName)
+ }
+ return p.FindPodByID(podUID)
+}
+
+// FindContainerByName returns a container in the pod with the given name.
+// When there are multiple containers with the same name, the first match will
+// be returned.
+func (p *Pod) FindContainerByName(containerName string) *Container {
+ for _, c := range p.Containers {
+ if c.Name == containerName {
+ return c
+ }
+ }
+ return nil
+}
+
+func (p *Pod) FindContainerByID(id ContainerID) *Container {
+ for _, c := range p.Containers {
+ if c.ID == id {
+ return c
+ }
+ }
+ return nil
+}
+
+func (p *Pod) FindSandboxByID(id ContainerID) *Container {
+ for _, c := range p.Sandboxes {
+ if c.ID == id {
+ return c
+ }
+ }
+ return nil
+}
+
+// ToAPIPod converts Pod to v1.Pod. Note that if a field in v1.Pod has no
+// corresponding field in Pod, the field would not be populated.
+func (p *Pod) ToAPIPod() *v1.Pod {
+ var pod v1.Pod
+ pod.UID = p.ID
+ pod.Name = p.Name
+ pod.Namespace = p.Namespace
+
+ for _, c := range p.Containers {
+ var container v1.Container
+ container.Name = c.Name
+ container.Image = c.Image
+ pod.Spec.Containers = append(pod.Spec.Containers, container)
+ }
+ return &pod
+}
+
+// IsEmpty returns true if the pod is empty.
+func (p *Pod) IsEmpty() bool {
+ return reflect.DeepEqual(p, &Pod{})
+}
+
+// GetPodFullName returns a name that uniquely identifies a pod.
+func GetPodFullName(pod *v1.Pod) string {
+ // Use underscore as the delimiter because it is not allowed in pod name
+ // (DNS subdomain format), while allowed in the container name format.
+ return pod.Name + "_" + pod.Namespace
+}
+
+// Build the pod full name from pod name and namespace.
+func BuildPodFullName(name, namespace string) string {
+ return name + "_" + namespace
+}
+
+// Parse the pod full name.
+func ParsePodFullName(podFullName string) (string, string, error) {
+ parts := strings.Split(podFullName, "_")
+ if len(parts) != 2 || parts[0] == "" || parts[1] == "" {
+ return "", "", fmt.Errorf("failed to parse the pod full name %q", podFullName)
+ }
+ return parts[0], parts[1], nil
+}
+
+// Option is a functional option type for Runtime, useful for
+// completely optional settings.
+type Option func(Runtime)
+
+// Sort the container statuses by creation time.
+type SortContainerStatusesByCreationTime []*ContainerStatus
+
+func (s SortContainerStatusesByCreationTime) Len() int { return len(s) }
+func (s SortContainerStatusesByCreationTime) Swap(i, j int) { s[i], s[j] = s[j], s[i] }
+func (s SortContainerStatusesByCreationTime) Less(i, j int) bool {
+ return s[i].CreatedAt.Before(s[j].CreatedAt)
+}
+
+const (
+ // MaxPodTerminationMessageLogLength is the maximum bytes any one pod may have written
+ // as termination message output across all containers. Containers will be evenly truncated
+ // until output is below this limit.
+ MaxPodTerminationMessageLogLength = 1024 * 12
+ // MaxContainerTerminationMessageLength is the upper bound any one container may write to
+ // its termination message path. Contents above this length will be truncated.
+ MaxContainerTerminationMessageLength = 1024 * 4
+ // MaxContainerTerminationMessageLogLength is the maximum bytes any one container will
+ // have written to its termination message when the message is read from the logs.
+ MaxContainerTerminationMessageLogLength = 1024 * 2
+ // MaxContainerTerminationMessageLogLines is the maximum number of previous lines of
+ // log output that the termination message can contain.
+ MaxContainerTerminationMessageLogLines = 80
+)
diff --git a/vendor/k8s.io/kubernetes/pkg/kubelet/container/runtime_cache.go b/vendor/k8s.io/kubernetes/pkg/kubelet/container/runtime_cache.go
new file mode 100644
index 000000000..d15852f88
--- /dev/null
+++ b/vendor/k8s.io/kubernetes/pkg/kubelet/container/runtime_cache.go
@@ -0,0 +1,96 @@
+/*
+Copyright 2015 The Kubernetes Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package container
+
+import (
+ "sync"
+ "time"
+)
+
+var (
+ // TODO(yifan): Maybe set the them as parameters for NewCache().
+ defaultCachePeriod = time.Second * 2
+)
+
+type RuntimeCache interface {
+ GetPods() ([]*Pod, error)
+ ForceUpdateIfOlder(time.Time) error
+}
+
+type podsGetter interface {
+ GetPods(bool) ([]*Pod, error)
+}
+
+// NewRuntimeCache creates a container runtime cache.
+func NewRuntimeCache(getter podsGetter) (RuntimeCache, error) {
+ return &runtimeCache{
+ getter: getter,
+ }, nil
+}
+
+// runtimeCache caches a list of pods. It records a timestamp (cacheTime) right
+// before updating the pods, so the timestamp is at most as new as the pods
+// (and can be slightly older). The timestamp always moves forward. Callers are
+// expected not to modify the pods returned from GetPods.
+type runtimeCache struct {
+ sync.Mutex
+ // The underlying container runtime used to update the cache.
+ getter podsGetter
+ // Last time when cache was updated.
+ cacheTime time.Time
+ // The content of the cache.
+ pods []*Pod
+}
+
+// GetPods returns the cached pods if they are not outdated; otherwise, it
+// retrieves the latest pods and return them.
+func (r *runtimeCache) GetPods() ([]*Pod, error) {
+ r.Lock()
+ defer r.Unlock()
+ if time.Since(r.cacheTime) > defaultCachePeriod {
+ if err := r.updateCache(); err != nil {
+ return nil, err
+ }
+ }
+ return r.pods, nil
+}
+
+func (r *runtimeCache) ForceUpdateIfOlder(minExpectedCacheTime time.Time) error {
+ r.Lock()
+ defer r.Unlock()
+ if r.cacheTime.Before(minExpectedCacheTime) {
+ return r.updateCache()
+ }
+ return nil
+}
+
+func (r *runtimeCache) updateCache() error {
+ pods, timestamp, err := r.getPodsWithTimestamp()
+ if err != nil {
+ return err
+ }
+ r.pods, r.cacheTime = pods, timestamp
+ return nil
+}
+
+// getPodsWithTimestamp records a timestamp and retrieves pods from the getter.
+func (r *runtimeCache) getPodsWithTimestamp() ([]*Pod, time.Time, error) {
+ // Always record the timestamp before getting the pods to avoid stale pods.
+ timestamp := time.Now()
+ pods, err := r.getter.GetPods(false)
+ return pods, timestamp, err
+}
diff --git a/vendor/k8s.io/kubernetes/pkg/kubelet/container/runtime_cache_fake.go b/vendor/k8s.io/kubernetes/pkg/kubelet/container/runtime_cache_fake.go
new file mode 100644
index 000000000..59a6288d5
--- /dev/null
+++ b/vendor/k8s.io/kubernetes/pkg/kubelet/container/runtime_cache_fake.go
@@ -0,0 +1,45 @@
+/*
+Copyright 2015 The Kubernetes Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package container
+
+// TestRunTimeCache embeds runtimeCache with some additional methods for testing.
+// It must be declared in the container package to have visibility to runtimeCache.
+// It cannot be in a "..._test.go" file in order for runtime_cache_test.go to have cross-package visibility to it.
+// (cross-package declarations in test files cannot be used from dot imports if this package is vendored)
+type TestRuntimeCache struct {
+ runtimeCache
+}
+
+func (r *TestRuntimeCache) UpdateCacheWithLock() error {
+ r.Lock()
+ defer r.Unlock()
+ return r.updateCache()
+}
+
+func (r *TestRuntimeCache) GetCachedPods() []*Pod {
+ r.Lock()
+ defer r.Unlock()
+ return r.pods
+}
+
+func NewTestRuntimeCache(getter podsGetter) *TestRuntimeCache {
+ return &TestRuntimeCache{
+ runtimeCache: runtimeCache{
+ getter: getter,
+ },
+ }
+}
diff --git a/vendor/k8s.io/kubernetes/pkg/kubelet/container/sync_result.go b/vendor/k8s.io/kubernetes/pkg/kubelet/container/sync_result.go
new file mode 100644
index 000000000..0d4563303
--- /dev/null
+++ b/vendor/k8s.io/kubernetes/pkg/kubelet/container/sync_result.go
@@ -0,0 +1,128 @@
+/*
+Copyright 2015 The Kubernetes Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package container
+
+import (
+ "errors"
+ "fmt"
+
+ utilerrors "k8s.io/apimachinery/pkg/util/errors"
+)
+
+// TODO(random-liu): We need to better organize runtime errors for introspection.
+
+// Container Terminated and Kubelet is backing off the restart
+var ErrCrashLoopBackOff = errors.New("CrashLoopBackOff")
+
+var (
+ // ErrContainerNotFound returned when a container in the given pod with the
+ // given container name was not found, amongst those managed by the kubelet.
+ ErrContainerNotFound = errors.New("no matching container")
+)
+
+var (
+ ErrRunContainer = errors.New("RunContainerError")
+ ErrKillContainer = errors.New("KillContainerError")
+ ErrVerifyNonRoot = errors.New("VerifyNonRootError")
+ ErrRunInitContainer = errors.New("RunInitContainerError")
+ ErrCreatePodSandbox = errors.New("CreatePodSandboxError")
+ ErrConfigPodSandbox = errors.New("ConfigPodSandboxError")
+ ErrKillPodSandbox = errors.New("KillPodSandboxError")
+)
+
+var (
+ ErrSetupNetwork = errors.New("SetupNetworkError")
+ ErrTeardownNetwork = errors.New("TeardownNetworkError")
+)
+
+// SyncAction indicates different kind of actions in SyncPod() and KillPod(). Now there are only actions
+// about start/kill container and setup/teardown network.
+type SyncAction string
+
+const (
+ StartContainer SyncAction = "StartContainer"
+ KillContainer SyncAction = "KillContainer"
+ SetupNetwork SyncAction = "SetupNetwork"
+ TeardownNetwork SyncAction = "TeardownNetwork"
+ InitContainer SyncAction = "InitContainer"
+ CreatePodSandbox SyncAction = "CreatePodSandbox"
+ ConfigPodSandbox SyncAction = "ConfigPodSandbox"
+ KillPodSandbox SyncAction = "KillPodSandbox"
+)
+
+// SyncResult is the result of sync action.
+type SyncResult struct {
+ // The associated action of the result
+ Action SyncAction
+ // The target of the action, now the target can only be:
+ // * Container: Target should be container name
+ // * Network: Target is useless now, we just set it as pod full name now
+ Target interface{}
+ // Brief error reason
+ Error error
+ // Human readable error reason
+ Message string
+}
+
+// NewSyncResult generates new SyncResult with specific Action and Target
+func NewSyncResult(action SyncAction, target interface{}) *SyncResult {
+ return &SyncResult{Action: action, Target: target}
+}
+
+// Fail fails the SyncResult with specific error and message
+func (r *SyncResult) Fail(err error, msg string) {
+ r.Error, r.Message = err, msg
+}
+
+// PodSyncResult is the summary result of SyncPod() and KillPod()
+type PodSyncResult struct {
+ // Result of different sync actions
+ SyncResults []*SyncResult
+ // Error encountered in SyncPod() and KillPod() that is not already included in SyncResults
+ SyncError error
+}
+
+// AddSyncResult adds multiple SyncResult to current PodSyncResult
+func (p *PodSyncResult) AddSyncResult(result ...*SyncResult) {
+ p.SyncResults = append(p.SyncResults, result...)
+}
+
+// AddPodSyncResult merges a PodSyncResult to current one
+func (p *PodSyncResult) AddPodSyncResult(result PodSyncResult) {
+ p.AddSyncResult(result.SyncResults...)
+ p.SyncError = result.SyncError
+}
+
+// Fail fails the PodSyncResult with an error occurred in SyncPod() and KillPod() itself
+func (p *PodSyncResult) Fail(err error) {
+ p.SyncError = err
+}
+
+// Error returns an error summarizing all the errors in PodSyncResult
+func (p *PodSyncResult) Error() error {
+ errlist := []error{}
+ if p.SyncError != nil {
+ errlist = append(errlist, fmt.Errorf("failed to SyncPod: %v\n", p.SyncError))
+ }
+ for _, result := range p.SyncResults {
+ if result.Error != nil {
+ errlist = append(errlist, fmt.Errorf("failed to %q for %q with %v: %q\n", result.Action, result.Target,
+ result.Error, result.Message))
+ }
+ }
+ return utilerrors.NewAggregate(errlist)
+}
diff --git a/vendor/k8s.io/kubernetes/pkg/kubelet/events/event.go b/vendor/k8s.io/kubernetes/pkg/kubelet/events/event.go
new file mode 100644
index 000000000..0a0efc20c
--- /dev/null
+++ b/vendor/k8s.io/kubernetes/pkg/kubelet/events/event.go
@@ -0,0 +1,104 @@
+/*
+Copyright 2014 The Kubernetes Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package events
+
+import (
+ clientv1 "k8s.io/client-go/pkg/api/v1"
+ "k8s.io/kubernetes/pkg/api/v1"
+)
+
+const (
+ // Container event reason list
+ CreatedContainer = "Created"
+ StartedContainer = "Started"
+ FailedToCreateContainer = "Failed"
+ FailedToStartContainer = "Failed"
+ KillingContainer = "Killing"
+ PreemptContainer = "Preempting"
+ BackOffStartContainer = "BackOff"
+ ExceededGracePeriod = "ExceededGracePeriod"
+
+ // Image event reason list
+ PullingImage = "Pulling"
+ PulledImage = "Pulled"
+ FailedToPullImage = "Failed"
+ FailedToInspectImage = "InspectFailed"
+ ErrImageNeverPullPolicy = "ErrImageNeverPull"
+ BackOffPullImage = "BackOff"
+
+ // kubelet event reason list
+ NodeReady = "NodeReady"
+ NodeNotReady = "NodeNotReady"
+ NodeSchedulable = "NodeSchedulable"
+ NodeNotSchedulable = "NodeNotSchedulable"
+ StartingKubelet = "Starting"
+ KubeletSetupFailed = "KubeletSetupFailed"
+ FailedAttachVolume = "FailedAttachVolume"
+ FailedDetachVolume = "FailedDetachVolume"
+ FailedMountVolume = "FailedMount"
+ FailedUnMountVolume = "FailedUnMount"
+ SuccessfulDetachVolume = "SuccessfulDetachVolume"
+ SuccessfulMountVolume = "SuccessfulMountVolume"
+ SuccessfulUnMountVolume = "SuccessfulUnMountVolume"
+ HostPortConflict = "HostPortConflict"
+ NodeSelectorMismatching = "NodeSelectorMismatching"
+ InsufficientFreeCPU = "InsufficientFreeCPU"
+ InsufficientFreeMemory = "InsufficientFreeMemory"
+ OutOfDisk = "OutOfDisk"
+ HostNetworkNotSupported = "HostNetworkNotSupported"
+ UndefinedShaper = "NilShaper"
+ NodeRebooted = "Rebooted"
+ ContainerGCFailed = "ContainerGCFailed"
+ ImageGCFailed = "ImageGCFailed"
+ FailedNodeAllocatableEnforcement = "FailedNodeAllocatableEnforcement"
+ SuccessfulNodeAllocatableEnforcement = "NodeAllocatableEnforced"
+ UnsupportedMountOption = "UnsupportedMountOption"
+
+ // Image manager event reason list
+ InvalidDiskCapacity = "InvalidDiskCapacity"
+ FreeDiskSpaceFailed = "FreeDiskSpaceFailed"
+
+ // Probe event reason list
+ ContainerUnhealthy = "Unhealthy"
+
+ // Pod worker event reason list
+ FailedSync = "FailedSync"
+
+ // Config event reason list
+ FailedValidation = "FailedValidation"
+
+ // Lifecycle hooks
+ FailedPostStartHook = "FailedPostStartHook"
+ FailedPreStopHook = "FailedPreStopHook"
+ UnfinishedPreStopHook = "UnfinishedPreStopHook"
+)
+
+// ToObjectReference takes an old style object reference and converts it to a client-go one
+func ToObjectReference(ref *v1.ObjectReference) *clientv1.ObjectReference {
+ if ref == nil {
+ return nil
+ }
+ return &clientv1.ObjectReference{
+ Kind: ref.Kind,
+ Namespace: ref.Namespace,
+ Name: ref.Name,
+ UID: ref.UID,
+ APIVersion: ref.APIVersion,
+ ResourceVersion: ref.ResourceVersion,
+ FieldPath: ref.FieldPath,
+ }
+}
diff --git a/vendor/k8s.io/kubernetes/pkg/kubelet/leaky/leaky.go b/vendor/k8s.io/kubernetes/pkg/kubelet/leaky/leaky.go
new file mode 100644
index 000000000..4e3e1e1f2
--- /dev/null
+++ b/vendor/k8s.io/kubernetes/pkg/kubelet/leaky/leaky.go
@@ -0,0 +1,25 @@
+/*
+Copyright 2015 The Kubernetes Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+// Package leaky holds bits of kubelet that should be internal but have leaked
+// out through bad abstractions. TODO: delete all of this.
+package leaky
+
+const (
+ // This is used in a few places outside of Kubelet, such as indexing
+ // into the container info.
+ PodInfraContainerName = "POD"
+)
diff --git a/vendor/k8s.io/kubernetes/pkg/kubelet/network/hostport/fake_iptables.go b/vendor/k8s.io/kubernetes/pkg/kubelet/network/hostport/fake_iptables.go
new file mode 100644
index 000000000..42f7c6811
--- /dev/null
+++ b/vendor/k8s.io/kubernetes/pkg/kubelet/network/hostport/fake_iptables.go
@@ -0,0 +1,331 @@
+/*
+Copyright 2016 The Kubernetes Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package hostport
+
+import (
+ "bytes"
+ "fmt"
+ "net"
+ "strings"
+
+ utiliptables "k8s.io/kubernetes/pkg/util/iptables"
+)
+
+type fakeChain struct {
+ name utiliptables.Chain
+ rules []string
+}
+
+type fakeTable struct {
+ name utiliptables.Table
+ chains map[string]*fakeChain
+}
+
+type fakeIPTables struct {
+ tables map[string]*fakeTable
+}
+
+func NewFakeIPTables() *fakeIPTables {
+ return &fakeIPTables{
+ tables: make(map[string]*fakeTable, 0),
+ }
+}
+
+func (f *fakeIPTables) GetVersion() (string, error) {
+ return "1.4.21", nil
+}
+
+func (f *fakeIPTables) getTable(tableName utiliptables.Table) (*fakeTable, error) {
+ table, ok := f.tables[string(tableName)]
+ if !ok {
+ return nil, fmt.Errorf("Table %s does not exist", tableName)
+ }
+ return table, nil
+}
+
+func (f *fakeIPTables) getChain(tableName utiliptables.Table, chainName utiliptables.Chain) (*fakeTable, *fakeChain, error) {
+ table, err := f.getTable(tableName)
+ if err != nil {
+ return nil, nil, err
+ }
+
+ chain, ok := table.chains[string(chainName)]
+ if !ok {
+ return table, nil, fmt.Errorf("Chain %s/%s does not exist", tableName, chainName)
+ }
+
+ return table, chain, nil
+}
+
+func (f *fakeIPTables) ensureChain(tableName utiliptables.Table, chainName utiliptables.Chain) (bool, *fakeChain) {
+ table, chain, err := f.getChain(tableName, chainName)
+ if err != nil {
+ // either table or table+chain don't exist yet
+ if table == nil {
+ table = &fakeTable{
+ name: tableName,
+ chains: make(map[string]*fakeChain),
+ }
+ f.tables[string(tableName)] = table
+ }
+ chain := &fakeChain{
+ name: chainName,
+ rules: make([]string, 0),
+ }
+ table.chains[string(chainName)] = chain
+ return false, chain
+ }
+ return true, chain
+}
+
+func (f *fakeIPTables) EnsureChain(tableName utiliptables.Table, chainName utiliptables.Chain) (bool, error) {
+ existed, _ := f.ensureChain(tableName, chainName)
+ return existed, nil
+}
+
+func (f *fakeIPTables) FlushChain(tableName utiliptables.Table, chainName utiliptables.Chain) error {
+ _, chain, err := f.getChain(tableName, chainName)
+ if err != nil {
+ return err
+ }
+ chain.rules = make([]string, 0)
+ return nil
+}
+
+func (f *fakeIPTables) DeleteChain(tableName utiliptables.Table, chainName utiliptables.Chain) error {
+ table, _, err := f.getChain(tableName, chainName)
+ if err != nil {
+ return err
+ }
+ delete(table.chains, string(chainName))
+ return nil
+}
+
+// Returns index of rule in array; < 0 if rule is not found
+func findRule(chain *fakeChain, rule string) int {
+ for i, candidate := range chain.rules {
+ if rule == candidate {
+ return i
+ }
+ }
+ return -1
+}
+
+func (f *fakeIPTables) ensureRule(position utiliptables.RulePosition, tableName utiliptables.Table, chainName utiliptables.Chain, rule string) (bool, error) {
+ _, chain, err := f.getChain(tableName, chainName)
+ if err != nil {
+ _, chain = f.ensureChain(tableName, chainName)
+ }
+
+ rule, err = normalizeRule(rule)
+ if err != nil {
+ return false, err
+ }
+ ruleIdx := findRule(chain, rule)
+ if ruleIdx >= 0 {
+ return true, nil
+ }
+
+ if position == utiliptables.Prepend {
+ chain.rules = append([]string{rule}, chain.rules...)
+ } else if position == utiliptables.Append {
+ chain.rules = append(chain.rules, rule)
+ } else {
+ return false, fmt.Errorf("Unknown position argument %q", position)
+ }
+
+ return false, nil
+}
+
+func normalizeRule(rule string) (string, error) {
+ normalized := ""
+ remaining := strings.TrimSpace(rule)
+ for {
+ var end int
+
+ if strings.HasPrefix(remaining, "--to-destination=") {
+ remaining = strings.Replace(remaining, "=", " ", 1)
+ }
+
+ if remaining[0] == '"' {
+ end = strings.Index(remaining[1:], "\"")
+ if end < 0 {
+ return "", fmt.Errorf("Invalid rule syntax: mismatched quotes")
+ }
+ end += 2
+ } else {
+ end = strings.Index(remaining, " ")
+ if end < 0 {
+ end = len(remaining)
+ }
+ }
+ arg := remaining[:end]
+
+ // Normalize un-prefixed IP addresses like iptables does
+ if net.ParseIP(arg) != nil {
+ arg = arg + "/32"
+ }
+
+ if len(normalized) > 0 {
+ normalized += " "
+ }
+ normalized += strings.TrimSpace(arg)
+ if len(remaining) == end {
+ break
+ }
+ remaining = remaining[end+1:]
+ }
+ return normalized, nil
+}
+
+func (f *fakeIPTables) EnsureRule(position utiliptables.RulePosition, tableName utiliptables.Table, chainName utiliptables.Chain, args ...string) (bool, error) {
+ ruleArgs := make([]string, 0)
+ for _, arg := range args {
+ // quote args with internal spaces (like comments)
+ if strings.Index(arg, " ") >= 0 {
+ arg = fmt.Sprintf("\"%s\"", arg)
+ }
+ ruleArgs = append(ruleArgs, arg)
+ }
+ return f.ensureRule(position, tableName, chainName, strings.Join(ruleArgs, " "))
+}
+
+func (f *fakeIPTables) DeleteRule(tableName utiliptables.Table, chainName utiliptables.Chain, args ...string) error {
+ _, chain, err := f.getChain(tableName, chainName)
+ if err == nil {
+ rule := strings.Join(args, " ")
+ ruleIdx := findRule(chain, rule)
+ if ruleIdx < 0 {
+ return nil
+ }
+ chain.rules = append(chain.rules[:ruleIdx], chain.rules[ruleIdx+1:]...)
+ }
+ return nil
+}
+
+func (f *fakeIPTables) IsIpv6() bool {
+ return false
+}
+
+func saveChain(chain *fakeChain, data *bytes.Buffer) {
+ for _, rule := range chain.rules {
+ data.WriteString(fmt.Sprintf("-A %s %s\n", chain.name, rule))
+ }
+}
+
+func (f *fakeIPTables) SaveInto(tableName utiliptables.Table, buffer *bytes.Buffer) error {
+ table, err := f.getTable(tableName)
+ if err != nil {
+ return err
+ }
+
+ buffer.WriteString(fmt.Sprintf("*%s\n", table.name))
+
+ rules := bytes.NewBuffer(nil)
+ for _, chain := range table.chains {
+ buffer.WriteString(fmt.Sprintf(":%s - [0:0]\n", string(chain.name)))
+ saveChain(chain, rules)
+ }
+ buffer.Write(rules.Bytes())
+ buffer.WriteString("COMMIT\n")
+ return nil
+}
+
+func (f *fakeIPTables) restore(restoreTableName utiliptables.Table, data []byte, flush utiliptables.FlushFlag) error {
+ buf := bytes.NewBuffer(data)
+ var tableName utiliptables.Table
+ for {
+ line, err := buf.ReadString('\n')
+ if err != nil {
+ break
+ }
+ if line[0] == '#' {
+ continue
+ }
+
+ line = strings.TrimSuffix(line, "\n")
+ if strings.HasPrefix(line, "*") {
+ tableName = utiliptables.Table(line[1:])
+ }
+ if tableName != "" {
+ if restoreTableName != "" && restoreTableName != tableName {
+ continue
+ }
+ if strings.HasPrefix(line, ":") {
+ chainName := utiliptables.Chain(strings.Split(line[1:], " ")[0])
+ if flush == utiliptables.FlushTables {
+ table, chain, _ := f.getChain(tableName, chainName)
+ if chain != nil {
+ delete(table.chains, string(chainName))
+ }
+ }
+ _, _ = f.ensureChain(tableName, chainName)
+ } else if strings.HasPrefix(line, "-A") {
+ parts := strings.Split(line, " ")
+ if len(parts) < 3 {
+ return fmt.Errorf("Invalid iptables rule '%s'", line)
+ }
+ chainName := utiliptables.Chain(parts[1])
+ rule := strings.TrimPrefix(line, fmt.Sprintf("-A %s ", chainName))
+ _, err := f.ensureRule(utiliptables.Append, tableName, chainName, rule)
+ if err != nil {
+ return err
+ }
+ } else if strings.HasPrefix(line, "-I") {
+ parts := strings.Split(line, " ")
+ if len(parts) < 3 {
+ return fmt.Errorf("Invalid iptables rule '%s'", line)
+ }
+ chainName := utiliptables.Chain(parts[1])
+ rule := strings.TrimPrefix(line, fmt.Sprintf("-I %s ", chainName))
+ _, err := f.ensureRule(utiliptables.Prepend, tableName, chainName, rule)
+ if err != nil {
+ return err
+ }
+ } else if strings.HasPrefix(line, "-X") {
+ parts := strings.Split(line, " ")
+ if len(parts) < 2 {
+ return fmt.Errorf("Invalid iptables rule '%s'", line)
+ }
+ if err := f.DeleteChain(tableName, utiliptables.Chain(parts[1])); err != nil {
+ return err
+ }
+ } else if line == "COMMIT" {
+ if restoreTableName == tableName {
+ return nil
+ }
+ tableName = ""
+ }
+ }
+ }
+
+ return nil
+}
+
+func (f *fakeIPTables) Restore(tableName utiliptables.Table, data []byte, flush utiliptables.FlushFlag, counters utiliptables.RestoreCountersFlag) error {
+ return f.restore(tableName, data, flush)
+}
+
+func (f *fakeIPTables) RestoreAll(data []byte, flush utiliptables.FlushFlag, counters utiliptables.RestoreCountersFlag) error {
+ return f.restore("", data, flush)
+}
+
+func (f *fakeIPTables) AddReloadFunc(reloadFunc func()) {
+}
+
+func (f *fakeIPTables) Destroy() {
+}
diff --git a/vendor/k8s.io/kubernetes/pkg/kubelet/network/hostport/hostport.go b/vendor/k8s.io/kubernetes/pkg/kubelet/network/hostport/hostport.go
new file mode 100644
index 000000000..c14c750ba
--- /dev/null
+++ b/vendor/k8s.io/kubernetes/pkg/kubelet/network/hostport/hostport.go
@@ -0,0 +1,200 @@
+/*
+Copyright 2017 The Kubernetes Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package hostport
+
+import (
+ "fmt"
+ "net"
+ "strings"
+
+ "github.com/golang/glog"
+
+ "k8s.io/kubernetes/pkg/api/v1"
+ utiliptables "k8s.io/kubernetes/pkg/util/iptables"
+)
+
+const (
+ // the hostport chain
+ kubeHostportsChain utiliptables.Chain = "KUBE-HOSTPORTS"
+ // prefix for hostport chains
+ kubeHostportChainPrefix string = "KUBE-HP-"
+)
+
+// PortMapping represents a network port in a container
+type PortMapping struct {
+ Name string
+ HostPort int32
+ ContainerPort int32
+ Protocol v1.Protocol
+ HostIP string
+}
+
+// PodPortMapping represents a pod's network state and associated container port mappings
+type PodPortMapping struct {
+ Namespace string
+ Name string
+ PortMappings []*PortMapping
+ HostNetwork bool
+ IP net.IP
+}
+
+// ConstructPodPortMapping creates a PodPortMapping from the ports specified in the pod's
+// containers.
+func ConstructPodPortMapping(pod *v1.Pod, podIP net.IP) *PodPortMapping {
+ portMappings := make([]*PortMapping, 0)
+ for _, c := range pod.Spec.Containers {
+ for _, port := range c.Ports {
+ portMappings = append(portMappings, &PortMapping{
+ Name: port.Name,
+ HostPort: port.HostPort,
+ ContainerPort: port.ContainerPort,
+ Protocol: port.Protocol,
+ HostIP: port.HostIP,
+ })
+ }
+ }
+
+ return &PodPortMapping{
+ Namespace: pod.Namespace,
+ Name: pod.Name,
+ PortMappings: portMappings,
+ HostNetwork: pod.Spec.HostNetwork,
+ IP: podIP,
+ }
+}
+
+type hostport struct {
+ port int32
+ protocol string
+}
+
+type hostportOpener func(*hostport) (closeable, error)
+
+type closeable interface {
+ Close() error
+}
+
+func openLocalPort(hp *hostport) (closeable, error) {
+ // For ports on node IPs, open the actual port and hold it, even though we
+ // use iptables to redirect traffic.
+ // This ensures a) that it's safe to use that port and b) that (a) stays
+ // true. The risk is that some process on the node (e.g. sshd or kubelet)
+ // is using a port and we give that same port out to a Service. That would
+ // be bad because iptables would silently claim the traffic but the process
+ // would never know.
+ // NOTE: We should not need to have a real listen()ing socket - bind()
+ // should be enough, but I can't figure out a way to e2e test without
+ // it. Tools like 'ss' and 'netstat' do not show sockets that are
+ // bind()ed but not listen()ed, and at least the default debian netcat
+ // has no way to avoid about 10 seconds of retries.
+ var socket closeable
+ switch hp.protocol {
+ case "tcp":
+ listener, err := net.Listen("tcp", fmt.Sprintf(":%d", hp.port))
+ if err != nil {
+ return nil, err
+ }
+ socket = listener
+ case "udp":
+ addr, err := net.ResolveUDPAddr("udp", fmt.Sprintf(":%d", hp.port))
+ if err != nil {
+ return nil, err
+ }
+ conn, err := net.ListenUDP("udp", addr)
+ if err != nil {
+ return nil, err
+ }
+ socket = conn
+ default:
+ return nil, fmt.Errorf("unknown protocol %q", hp.protocol)
+ }
+ glog.V(3).Infof("Opened local port %s", hp.String())
+ return socket, nil
+}
+
+// openHostports opens all given hostports using the given hostportOpener
+// If encounter any error, clean up and return the error
+// If all ports are opened successfully, return the hostport and socket mapping
+// TODO: move openHostports and closeHostports into a common struct
+func openHostports(portOpener hostportOpener, podPortMapping *PodPortMapping) (map[hostport]closeable, error) {
+ var retErr error
+ ports := make(map[hostport]closeable)
+ for _, pm := range podPortMapping.PortMappings {
+ if pm.HostPort <= 0 {
+ continue
+ }
+ hp := portMappingToHostport(pm)
+ socket, err := portOpener(&hp)
+ if err != nil {
+ retErr = fmt.Errorf("cannot open hostport %d for pod %s: %v", pm.HostPort, getPodFullName(podPortMapping), err)
+ break
+ }
+ ports[hp] = socket
+ }
+
+ // If encounter any error, close all hostports that just got opened.
+ if retErr != nil {
+ for hp, socket := range ports {
+ if err := socket.Close(); err != nil {
+ glog.Errorf("Cannot clean up hostport %d for pod %s: %v", hp.port, getPodFullName(podPortMapping), err)
+ }
+ }
+ return nil, retErr
+ }
+ return ports, nil
+}
+
+// portMappingToHostport creates hostport structure based on input portmapping
+func portMappingToHostport(portMapping *PortMapping) hostport {
+ return hostport{
+ port: portMapping.HostPort,
+ protocol: strings.ToLower(string(portMapping.Protocol)),
+ }
+}
+
+// ensureKubeHostportChains ensures the KUBE-HOSTPORTS chain is setup correctly
+func ensureKubeHostportChains(iptables utiliptables.Interface, natInterfaceName string) error {
+ glog.V(4).Info("Ensuring kubelet hostport chains")
+ // Ensure kubeHostportChain
+ if _, err := iptables.EnsureChain(utiliptables.TableNAT, kubeHostportsChain); err != nil {
+ return fmt.Errorf("Failed to ensure that %s chain %s exists: %v", utiliptables.TableNAT, kubeHostportsChain, err)
+ }
+ tableChainsNeedJumpServices := []struct {
+ table utiliptables.Table
+ chain utiliptables.Chain
+ }{
+ {utiliptables.TableNAT, utiliptables.ChainOutput},
+ {utiliptables.TableNAT, utiliptables.ChainPrerouting},
+ }
+ args := []string{"-m", "comment", "--comment", "kube hostport portals",
+ "-m", "addrtype", "--dst-type", "LOCAL",
+ "-j", string(kubeHostportsChain)}
+ for _, tc := range tableChainsNeedJumpServices {
+ // KUBE-HOSTPORTS chain needs to be appended to the system chains.
+ // This ensures KUBE-SERVICES chain gets processed first.
+ // Since rules in KUBE-HOSTPORTS chain matches broader cases, allow the more specific rules to be processed first.
+ if _, err := iptables.EnsureRule(utiliptables.Append, tc.table, tc.chain, args...); err != nil {
+ return fmt.Errorf("Failed to ensure that %s chain %s jumps to %s: %v", tc.table, tc.chain, kubeHostportsChain, err)
+ }
+ }
+ // Need to SNAT traffic from localhost
+ args = []string{"-m", "comment", "--comment", "SNAT for localhost access to hostports", "-o", natInterfaceName, "-s", "127.0.0.0/8", "-j", "MASQUERADE"}
+ if _, err := iptables.EnsureRule(utiliptables.Append, utiliptables.TableNAT, utiliptables.ChainPostrouting, args...); err != nil {
+ return fmt.Errorf("Failed to ensure that %s chain %s jumps to MASQUERADE: %v", utiliptables.TableNAT, utiliptables.ChainPostrouting, err)
+ }
+ return nil
+}
diff --git a/vendor/k8s.io/kubernetes/pkg/kubelet/network/hostport/hostport_manager.go b/vendor/k8s.io/kubernetes/pkg/kubelet/network/hostport/hostport_manager.go
new file mode 100644
index 000000000..1499ff9c6
--- /dev/null
+++ b/vendor/k8s.io/kubernetes/pkg/kubelet/network/hostport/hostport_manager.go
@@ -0,0 +1,329 @@
+/*
+Copyright 2017 The Kubernetes Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package hostport
+
+import (
+ "bytes"
+ "crypto/sha256"
+ "encoding/base32"
+ "fmt"
+ "strings"
+ "sync"
+
+ "github.com/golang/glog"
+ utilerrors "k8s.io/apimachinery/pkg/util/errors"
+ iptablesproxy "k8s.io/kubernetes/pkg/proxy/iptables"
+ utildbus "k8s.io/kubernetes/pkg/util/dbus"
+ utilexec "k8s.io/kubernetes/pkg/util/exec"
+ utiliptables "k8s.io/kubernetes/pkg/util/iptables"
+)
+
+// HostPortManager is an interface for adding and removing hostport for a given pod sandbox.
+type HostPortManager interface {
+ // Add implements port mappings.
+ // id should be a unique identifier for a pod, e.g. podSandboxID.
+ // podPortMapping is the associated port mapping information for the pod.
+ // natInterfaceName is the interface that localhost used to talk to the given pod.
+ Add(id string, podPortMapping *PodPortMapping, natInterfaceName string) error
+ // Remove cleans up matching port mappings
+ // Remove must be able to clean up port mappings without pod IP
+ Remove(id string, podPortMapping *PodPortMapping) error
+}
+
+type hostportManager struct {
+ hostPortMap map[hostport]closeable
+ iptables utiliptables.Interface
+ portOpener hostportOpener
+ mu sync.Mutex
+}
+
+func NewHostportManager() HostPortManager {
+ iptInterface := utiliptables.New(utilexec.New(), utildbus.New(), utiliptables.ProtocolIpv4)
+ return &hostportManager{
+ hostPortMap: make(map[hostport]closeable),
+ iptables: iptInterface,
+ portOpener: openLocalPort,
+ }
+}
+
+func (hm *hostportManager) Add(id string, podPortMapping *PodPortMapping, natInterfaceName string) (err error) {
+ if podPortMapping == nil || podPortMapping.HostNetwork {
+ return nil
+ }
+ podFullName := getPodFullName(podPortMapping)
+
+ // skip if there is no hostport needed
+ hostportMappings := gatherHostportMappings(podPortMapping)
+ if len(hostportMappings) == 0 {
+ return nil
+ }
+
+ if podPortMapping.IP.To4() == nil {
+ return fmt.Errorf("invalid or missing IP of pod %s", podFullName)
+ }
+ podIP := podPortMapping.IP.String()
+
+ if err = ensureKubeHostportChains(hm.iptables, natInterfaceName); err != nil {
+ return err
+ }
+
+ // Ensure atomicity for port opening and iptables operations
+ hm.mu.Lock()
+ defer hm.mu.Unlock()
+
+ // try to open hostports
+ ports, err := openHostports(hm.portOpener, podPortMapping)
+ if err != nil {
+ return err
+ }
+ for hostport, socket := range ports {
+ hm.hostPortMap[hostport] = socket
+ }
+
+ natChains := bytes.NewBuffer(nil)
+ natRules := bytes.NewBuffer(nil)
+ writeLine(natChains, "*nat")
+
+ existingChains, existingRules, err := getExistingHostportIPTablesRules(hm.iptables)
+ if err != nil {
+ // clean up opened host port if encounter any error
+ return utilerrors.NewAggregate([]error{err, hm.closeHostports(hostportMappings)})
+ }
+
+ newChains := []utiliptables.Chain{}
+ for _, pm := range hostportMappings {
+ protocol := strings.ToLower(string(pm.Protocol))
+ chain := getHostportChain(id, pm)
+ newChains = append(newChains, chain)
+
+ // Add new hostport chain
+ writeLine(natChains, utiliptables.MakeChainLine(chain))
+
+ // Prepend the new chain to KUBE-HOSTPORTS
+ // This avoids any leaking iptables rule that takes up the same port
+ writeLine(natRules, "-I", string(kubeHostportsChain),
+ "-m", "comment", "--comment", fmt.Sprintf(`"%s hostport %d"`, podFullName, pm.HostPort),
+ "-m", protocol, "-p", protocol, "--dport", fmt.Sprintf("%d", pm.HostPort),
+ "-j", string(chain),
+ )
+
+ // SNAT if the traffic comes from the pod itself
+ writeLine(natRules, "-A", string(chain),
+ "-m", "comment", "--comment", fmt.Sprintf(`"%s hostport %d"`, podFullName, pm.HostPort),
+ "-s", podIP,
+ "-j", string(iptablesproxy.KubeMarkMasqChain))
+
+ // DNAT to the podIP:containerPort
+ writeLine(natRules, "-A", string(chain),
+ "-m", "comment", "--comment", fmt.Sprintf(`"%s hostport %d"`, podFullName, pm.HostPort),
+ "-m", protocol, "-p", protocol,
+ "-j", "DNAT", fmt.Sprintf("--to-destination=%s:%d", podIP, pm.ContainerPort))
+ }
+
+ // getHostportChain should be able to provide unique hostport chain name using hash
+ // if there is a chain conflict or multiple Adds have been triggered for a single pod,
+ // filtering should be able to avoid further problem
+ filterChains(existingChains, newChains)
+ existingRules = filterRules(existingRules, newChains)
+
+ for _, chain := range existingChains {
+ writeLine(natChains, chain)
+ }
+ for _, rule := range existingRules {
+ writeLine(natRules, rule)
+ }
+ writeLine(natRules, "COMMIT")
+
+ if err = hm.syncIPTables(append(natChains.Bytes(), natRules.Bytes()...)); err != nil {
+ // clean up opened host port if encounter any error
+ return utilerrors.NewAggregate([]error{err, hm.closeHostports(hostportMappings)})
+ }
+ return nil
+}
+
+func (hm *hostportManager) Remove(id string, podPortMapping *PodPortMapping) (err error) {
+ if podPortMapping == nil || podPortMapping.HostNetwork {
+ return nil
+ }
+
+ hostportMappings := gatherHostportMappings(podPortMapping)
+ if len(hostportMappings) <= 0 {
+ return nil
+ }
+
+ // Ensure atomicity for port closing and iptables operations
+ hm.mu.Lock()
+ defer hm.mu.Unlock()
+
+ var existingChains map[utiliptables.Chain]string
+ var existingRules []string
+ existingChains, existingRules, err = getExistingHostportIPTablesRules(hm.iptables)
+ if err != nil {
+ return err
+ }
+
+ // Gather target hostport chains for removal
+ chainsToRemove := []utiliptables.Chain{}
+ for _, pm := range hostportMappings {
+ chainsToRemove = append(chainsToRemove, getHostportChain(id, pm))
+
+ // To preserve backward compatibility for k8s 1.5 or earlier.
+ // Need to remove hostport chains added by hostportSyncer if there is any
+ // TODO: remove this in 1.7
+ chainsToRemove = append(chainsToRemove, hostportChainName(pm, getPodFullName(podPortMapping)))
+ }
+
+ // remove rules that consists of target chains
+ remainingRules := filterRules(existingRules, chainsToRemove)
+
+ // gather target hostport chains that exists in iptables-save result
+ existingChainsToRemove := []utiliptables.Chain{}
+ for _, chain := range chainsToRemove {
+ if _, ok := existingChains[chain]; ok {
+ existingChainsToRemove = append(existingChainsToRemove, chain)
+ }
+ }
+
+ natChains := bytes.NewBuffer(nil)
+ natRules := bytes.NewBuffer(nil)
+ writeLine(natChains, "*nat")
+ for _, chain := range existingChains {
+ writeLine(natChains, chain)
+ }
+ for _, rule := range remainingRules {
+ writeLine(natRules, rule)
+ }
+ for _, chain := range existingChainsToRemove {
+ writeLine(natRules, "-X", string(chain))
+ }
+ writeLine(natRules, "COMMIT")
+
+ if err = hm.syncIPTables(append(natChains.Bytes(), natRules.Bytes()...)); err != nil {
+ return err
+ }
+
+ // clean up opened pod host ports
+ return hm.closeHostports(hostportMappings)
+}
+
+// syncIPTables executes iptables-restore with given lines
+func (hm *hostportManager) syncIPTables(lines []byte) error {
+ glog.V(3).Infof("Restoring iptables rules: %s", lines)
+ err := hm.iptables.RestoreAll(lines, utiliptables.NoFlushTables, utiliptables.RestoreCounters)
+ if err != nil {
+ return fmt.Errorf("Failed to execute iptables-restore: %v", err)
+ }
+ return nil
+}
+
+// closeHostports tries to close all the listed host ports
+// TODO: move closeHostports and openHostports into a common struct
+func (hm *hostportManager) closeHostports(hostportMappings []*PortMapping) error {
+ errList := []error{}
+ for _, pm := range hostportMappings {
+ hp := portMappingToHostport(pm)
+ if socket, ok := hm.hostPortMap[hp]; ok {
+ glog.V(2).Infof("Closing host port %s", hp.String())
+ if err := socket.Close(); err != nil {
+ errList = append(errList, fmt.Errorf("failed to close host port %s: %v", hp.String(), err))
+ continue
+ }
+ delete(hm.hostPortMap, hp)
+ }
+ }
+ return utilerrors.NewAggregate(errList)
+}
+
+// getHostportChain takes id, hostport and protocol for a pod and returns associated iptables chain.
+// This is computed by hashing (sha256) then encoding to base32 and truncating with the prefix
+// "KUBE-HP-". We do this because IPTables Chain Names must be <= 28 chars long, and the longer
+// they are the harder they are to read.
+// WARNING: Please do not change this function. Otherwise, HostportManager may not be able to
+// identify existing iptables chains.
+func getHostportChain(id string, pm *PortMapping) utiliptables.Chain {
+ hash := sha256.Sum256([]byte(id + string(pm.HostPort) + string(pm.Protocol)))
+ encoded := base32.StdEncoding.EncodeToString(hash[:])
+ return utiliptables.Chain(kubeHostportChainPrefix + encoded[:16])
+}
+
+// gatherHostportMappings returns all the PortMappings which has hostport for a pod
+func gatherHostportMappings(podPortMapping *PodPortMapping) []*PortMapping {
+ mappings := []*PortMapping{}
+ for _, pm := range podPortMapping.PortMappings {
+ if pm.HostPort <= 0 {
+ continue
+ }
+ mappings = append(mappings, pm)
+ }
+ return mappings
+}
+
+// getExistingHostportIPTablesRules retrieves raw data from iptables-save, parse it,
+// return all the hostport related chains and rules
+func getExistingHostportIPTablesRules(iptables utiliptables.Interface) (map[utiliptables.Chain]string, []string, error) {
+ iptablesData := bytes.NewBuffer(nil)
+ err := iptables.SaveInto(utiliptables.TableNAT, iptablesData)
+ if err != nil { // if we failed to get any rules
+ return nil, nil, fmt.Errorf("failed to execute iptables-save: %v", err)
+ }
+ existingNATChains := utiliptables.GetChainLines(utiliptables.TableNAT, iptablesData.Bytes())
+
+ existingHostportChains := make(map[utiliptables.Chain]string)
+ existingHostportRules := []string{}
+
+ for chain := range existingNATChains {
+ if strings.HasPrefix(string(chain), string(kubeHostportsChain)) || strings.HasPrefix(string(chain), kubeHostportChainPrefix) {
+ existingHostportChains[chain] = existingNATChains[chain]
+ }
+ }
+
+ for _, line := range strings.Split(string(iptablesData.Bytes()), "\n") {
+ if strings.HasPrefix(line, fmt.Sprintf("-A %s", kubeHostportChainPrefix)) ||
+ strings.HasPrefix(line, fmt.Sprintf("-A %s", string(kubeHostportsChain))) {
+ existingHostportRules = append(existingHostportRules, line)
+ }
+ }
+ return existingHostportChains, existingHostportRules, nil
+}
+
+// filterRules filters input rules with input chains. Rules that did not involve any filter chain will be returned.
+// The order of the input rules is important and is preserved.
+func filterRules(rules []string, filters []utiliptables.Chain) []string {
+ filtered := []string{}
+ for _, rule := range rules {
+ skip := false
+ for _, filter := range filters {
+ if strings.Contains(rule, string(filter)) {
+ skip = true
+ break
+ }
+ }
+ if !skip {
+ filtered = append(filtered, rule)
+ }
+ }
+ return filtered
+}
+
+// filterChains deletes all entries of filter chains from chain map
+func filterChains(chains map[utiliptables.Chain]string, filterChains []utiliptables.Chain) {
+ for _, chain := range filterChains {
+ if _, ok := chains[chain]; ok {
+ delete(chains, chain)
+ }
+ }
+}
diff --git a/vendor/k8s.io/kubernetes/pkg/kubelet/network/hostport/hostport_syncer.go b/vendor/k8s.io/kubernetes/pkg/kubelet/network/hostport/hostport_syncer.go
new file mode 100644
index 000000000..d1c577dbd
--- /dev/null
+++ b/vendor/k8s.io/kubernetes/pkg/kubelet/network/hostport/hostport_syncer.go
@@ -0,0 +1,306 @@
+/*
+Copyright 2014 The Kubernetes Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package hostport
+
+import (
+ "bytes"
+ "crypto/sha256"
+ "encoding/base32"
+ "fmt"
+ "strings"
+ "time"
+
+ "github.com/golang/glog"
+
+ iptablesproxy "k8s.io/kubernetes/pkg/proxy/iptables"
+ utildbus "k8s.io/kubernetes/pkg/util/dbus"
+ utilexec "k8s.io/kubernetes/pkg/util/exec"
+ utiliptables "k8s.io/kubernetes/pkg/util/iptables"
+)
+
+// HostportSyncer takes a list of PodPortMappings and implements hostport all at once
+type HostportSyncer interface {
+ // SyncHostports gathers all hostports on node and setup iptables rules to enable them.
+ // On each invocation existing ports are synced and stale rules are deleted.
+ SyncHostports(natInterfaceName string, activePodPortMappings []*PodPortMapping) error
+ // OpenPodHostportsAndSync opens hostports for a new PodPortMapping, gathers all hostports on
+ // node, sets up iptables rules enable them. On each invocation existing ports are synced and stale rules are deleted.
+ // 'newPortMapping' must also be present in 'activePodPortMappings'.
+ OpenPodHostportsAndSync(newPortMapping *PodPortMapping, natInterfaceName string, activePodPortMappings []*PodPortMapping) error
+}
+
+type hostportSyncer struct {
+ hostPortMap map[hostport]closeable
+ iptables utiliptables.Interface
+ portOpener hostportOpener
+}
+
+func NewHostportSyncer() HostportSyncer {
+ iptInterface := utiliptables.New(utilexec.New(), utildbus.New(), utiliptables.ProtocolIpv4)
+ return &hostportSyncer{
+ hostPortMap: make(map[hostport]closeable),
+ iptables: iptInterface,
+ portOpener: openLocalPort,
+ }
+}
+
+type targetPod struct {
+ podFullName string
+ podIP string
+}
+
+func (hp *hostport) String() string {
+ return fmt.Sprintf("%s:%d", hp.protocol, hp.port)
+}
+
+//openPodHostports opens all hostport for pod and returns the map of hostport and socket
+func (h *hostportSyncer) openHostports(podHostportMapping *PodPortMapping) error {
+ var retErr error
+ ports := make(map[hostport]closeable)
+ for _, port := range podHostportMapping.PortMappings {
+ if port.HostPort <= 0 {
+ // Assume hostport is not specified in this portmapping. So skip
+ continue
+ }
+ hp := hostport{
+ port: port.HostPort,
+ protocol: strings.ToLower(string(port.Protocol)),
+ }
+ socket, err := h.portOpener(&hp)
+ if err != nil {
+ retErr = fmt.Errorf("cannot open hostport %d for pod %s: %v", port.HostPort, getPodFullName(podHostportMapping), err)
+ break
+ }
+ ports[hp] = socket
+ }
+
+ // If encounter any error, close all hostports that just got opened.
+ if retErr != nil {
+ for hp, socket := range ports {
+ if err := socket.Close(); err != nil {
+ glog.Errorf("Cannot clean up hostport %d for pod %s: %v", hp.port, getPodFullName(podHostportMapping), err)
+ }
+ }
+ return retErr
+ }
+
+ for hostPort, socket := range ports {
+ h.hostPortMap[hostPort] = socket
+ }
+
+ return nil
+}
+
+func getPodFullName(pod *PodPortMapping) string {
+ // Use underscore as the delimiter because it is not allowed in pod name
+ // (DNS subdomain format), while allowed in the container name format.
+ return pod.Name + "_" + pod.Namespace
+}
+
+// gatherAllHostports returns all hostports that should be presented on node,
+// given the list of pods running on that node and ignoring host network
+// pods (which don't need hostport <-> container port mapping).
+func gatherAllHostports(activePodPortMappings []*PodPortMapping) (map[*PortMapping]targetPod, error) {
+ podHostportMap := make(map[*PortMapping]targetPod)
+ for _, pm := range activePodPortMappings {
+ if pm.IP.To4() == nil {
+ return nil, fmt.Errorf("Invalid or missing pod %s IP", getPodFullName(pm))
+ }
+ // should not handle hostports for hostnetwork pods
+ if pm.HostNetwork {
+ continue
+ }
+
+ for _, port := range pm.PortMappings {
+ if port.HostPort != 0 {
+ podHostportMap[port] = targetPod{podFullName: getPodFullName(pm), podIP: pm.IP.String()}
+ }
+ }
+ }
+ return podHostportMap, nil
+}
+
+// Join all words with spaces, terminate with newline and write to buf.
+func writeLine(buf *bytes.Buffer, words ...string) {
+ buf.WriteString(strings.Join(words, " ") + "\n")
+}
+
+//hostportChainName takes containerPort for a pod and returns associated iptables chain.
+// This is computed by hashing (sha256)
+// then encoding to base32 and truncating with the prefix "KUBE-SVC-". We do
+// this because IPTables Chain Names must be <= 28 chars long, and the longer
+// they are the harder they are to read.
+func hostportChainName(pm *PortMapping, podFullName string) utiliptables.Chain {
+ hash := sha256.Sum256([]byte(string(pm.HostPort) + string(pm.Protocol) + podFullName))
+ encoded := base32.StdEncoding.EncodeToString(hash[:])
+ return utiliptables.Chain(kubeHostportChainPrefix + encoded[:16])
+}
+
+// OpenPodHostportsAndSync opens hostports for a new PodPortMapping, gathers all hostports on
+// node, sets up iptables rules enable them. And finally clean up stale hostports.
+// 'newPortMapping' must also be present in 'activePodPortMappings'.
+func (h *hostportSyncer) OpenPodHostportsAndSync(newPortMapping *PodPortMapping, natInterfaceName string, activePodPortMappings []*PodPortMapping) error {
+ // try to open pod host port if specified
+ if err := h.openHostports(newPortMapping); err != nil {
+ return err
+ }
+
+ // Add the new pod to active pods if it's not present.
+ var found bool
+ for _, pm := range activePodPortMappings {
+ if pm.Namespace == newPortMapping.Namespace && pm.Name == newPortMapping.Name {
+ found = true
+ break
+ }
+ }
+ if !found {
+ activePodPortMappings = append(activePodPortMappings, newPortMapping)
+ }
+
+ return h.SyncHostports(natInterfaceName, activePodPortMappings)
+}
+
+// SyncHostports gathers all hostports on node and setup iptables rules enable them. And finally clean up stale hostports
+func (h *hostportSyncer) SyncHostports(natInterfaceName string, activePodPortMappings []*PodPortMapping) error {
+ start := time.Now()
+ defer func() {
+ glog.V(4).Infof("syncHostportsRules took %v", time.Since(start))
+ }()
+
+ hostportPodMap, err := gatherAllHostports(activePodPortMappings)
+ if err != nil {
+ return err
+ }
+
+ // Ensure KUBE-HOSTPORTS chains
+ ensureKubeHostportChains(h.iptables, natInterfaceName)
+
+ // Get iptables-save output so we can check for existing chains and rules.
+ // This will be a map of chain name to chain with rules as stored in iptables-save/iptables-restore
+ existingNATChains := make(map[utiliptables.Chain]string)
+ iptablesData := bytes.NewBuffer(nil)
+ err = h.iptables.SaveInto(utiliptables.TableNAT, iptablesData)
+ if err != nil { // if we failed to get any rules
+ glog.Errorf("Failed to execute iptables-save, syncing all rules: %v", err)
+ } else { // otherwise parse the output
+ existingNATChains = utiliptables.GetChainLines(utiliptables.TableNAT, iptablesData.Bytes())
+ }
+
+ natChains := bytes.NewBuffer(nil)
+ natRules := bytes.NewBuffer(nil)
+ writeLine(natChains, "*nat")
+ // Make sure we keep stats for the top-level chains, if they existed
+ // (which most should have because we created them above).
+ if chain, ok := existingNATChains[kubeHostportsChain]; ok {
+ writeLine(natChains, chain)
+ } else {
+ writeLine(natChains, utiliptables.MakeChainLine(kubeHostportsChain))
+ }
+
+ // Accumulate NAT chains to keep.
+ activeNATChains := map[utiliptables.Chain]bool{} // use a map as a set
+
+ for port, target := range hostportPodMap {
+ protocol := strings.ToLower(string(port.Protocol))
+ hostportChain := hostportChainName(port, target.podFullName)
+ if chain, ok := existingNATChains[hostportChain]; ok {
+ writeLine(natChains, chain)
+ } else {
+ writeLine(natChains, utiliptables.MakeChainLine(hostportChain))
+ }
+
+ activeNATChains[hostportChain] = true
+
+ // Redirect to hostport chain
+ args := []string{
+ "-A", string(kubeHostportsChain),
+ "-m", "comment", "--comment", fmt.Sprintf(`"%s hostport %d"`, target.podFullName, port.HostPort),
+ "-m", protocol, "-p", protocol,
+ "--dport", fmt.Sprintf("%d", port.HostPort),
+ "-j", string(hostportChain),
+ }
+ writeLine(natRules, args...)
+
+ // Assuming kubelet is syncing iptables KUBE-MARK-MASQ chain
+ // If the request comes from the pod that is serving the hostport, then SNAT
+ args = []string{
+ "-A", string(hostportChain),
+ "-m", "comment", "--comment", fmt.Sprintf(`"%s hostport %d"`, target.podFullName, port.HostPort),
+ "-s", target.podIP, "-j", string(iptablesproxy.KubeMarkMasqChain),
+ }
+ writeLine(natRules, args...)
+
+ // Create hostport chain to DNAT traffic to final destination
+ // IPTables will maintained the stats for this chain
+ args = []string{
+ "-A", string(hostportChain),
+ "-m", "comment", "--comment", fmt.Sprintf(`"%s hostport %d"`, target.podFullName, port.HostPort),
+ "-m", protocol, "-p", protocol,
+ "-j", "DNAT", fmt.Sprintf("--to-destination=%s:%d", target.podIP, port.ContainerPort),
+ }
+ writeLine(natRules, args...)
+ }
+
+ // Delete chains no longer in use.
+ for chain := range existingNATChains {
+ if !activeNATChains[chain] {
+ chainString := string(chain)
+ if !strings.HasPrefix(chainString, kubeHostportChainPrefix) {
+ // Ignore chains that aren't ours.
+ continue
+ }
+ // We must (as per iptables) write a chain-line for it, which has
+ // the nice effect of flushing the chain. Then we can remove the
+ // chain.
+ writeLine(natChains, existingNATChains[chain])
+ writeLine(natRules, "-X", chainString)
+ }
+ }
+ writeLine(natRules, "COMMIT")
+
+ natLines := append(natChains.Bytes(), natRules.Bytes()...)
+ glog.V(3).Infof("Restoring iptables rules: %s", natLines)
+ err = h.iptables.RestoreAll(natLines, utiliptables.NoFlushTables, utiliptables.RestoreCounters)
+ if err != nil {
+ return fmt.Errorf("Failed to execute iptables-restore: %v", err)
+ }
+
+ h.cleanupHostportMap(hostportPodMap)
+ return nil
+}
+
+// cleanupHostportMap closes obsolete hostports
+func (h *hostportSyncer) cleanupHostportMap(containerPortMap map[*PortMapping]targetPod) {
+ // compute hostports that are supposed to be open
+ currentHostports := make(map[hostport]bool)
+ for containerPort := range containerPortMap {
+ hp := hostport{
+ port: containerPort.HostPort,
+ protocol: strings.ToLower(string(containerPort.Protocol)),
+ }
+ currentHostports[hp] = true
+ }
+
+ // close and delete obsolete hostports
+ for hp, socket := range h.hostPortMap {
+ if _, ok := currentHostports[hp]; !ok {
+ socket.Close()
+ glog.V(3).Infof("Closed local port %s", hp.String())
+ delete(h.hostPortMap, hp)
+ }
+ }
+}
diff --git a/vendor/k8s.io/kubernetes/pkg/kubelet/server/portforward/constants.go b/vendor/k8s.io/kubernetes/pkg/kubelet/server/portforward/constants.go
new file mode 100644
index 000000000..e7ccd58ae
--- /dev/null
+++ b/vendor/k8s.io/kubernetes/pkg/kubelet/server/portforward/constants.go
@@ -0,0 +1,23 @@
+/*
+Copyright 2015 The Kubernetes Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+// package portforward contains server-side logic for handling port forwarding requests.
+package portforward
+
+// The subprotocol "portforward.k8s.io" is used for port forwarding.
+const ProtocolV1Name = "portforward.k8s.io"
+
+var SupportedProtocols = []string{ProtocolV1Name}
diff --git a/vendor/k8s.io/kubernetes/pkg/kubelet/server/portforward/httpstream.go b/vendor/k8s.io/kubernetes/pkg/kubelet/server/portforward/httpstream.go
new file mode 100644
index 000000000..5f872c820
--- /dev/null
+++ b/vendor/k8s.io/kubernetes/pkg/kubelet/server/portforward/httpstream.go
@@ -0,0 +1,309 @@
+/*
+Copyright 2016 The Kubernetes Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package portforward
+
+import (
+ "errors"
+ "fmt"
+ "net/http"
+ "strconv"
+ "sync"
+ "time"
+
+ "k8s.io/apimachinery/pkg/types"
+ "k8s.io/apimachinery/pkg/util/httpstream"
+ "k8s.io/apimachinery/pkg/util/httpstream/spdy"
+ utilruntime "k8s.io/apimachinery/pkg/util/runtime"
+ "k8s.io/kubernetes/pkg/api"
+
+ "github.com/golang/glog"
+)
+
+func handleHttpStreams(req *http.Request, w http.ResponseWriter, portForwarder PortForwarder, podName string, uid types.UID, supportedPortForwardProtocols []string, idleTimeout, streamCreationTimeout time.Duration) error {
+ _, err := httpstream.Handshake(req, w, supportedPortForwardProtocols)
+ // negotiated protocol isn't currently used server side, but could be in the future
+ if err != nil {
+ // Handshake writes the error to the client
+ return err
+ }
+ streamChan := make(chan httpstream.Stream, 1)
+
+ glog.V(5).Infof("Upgrading port forward response")
+ upgrader := spdy.NewResponseUpgrader()
+ conn := upgrader.UpgradeResponse(w, req, httpStreamReceived(streamChan))
+ if conn == nil {
+ return errors.New("Unable to upgrade websocket connection")
+ }
+ defer conn.Close()
+
+ glog.V(5).Infof("(conn=%p) setting port forwarding streaming connection idle timeout to %v", conn, idleTimeout)
+ conn.SetIdleTimeout(idleTimeout)
+
+ h := &httpStreamHandler{
+ conn: conn,
+ streamChan: streamChan,
+ streamPairs: make(map[string]*httpStreamPair),
+ streamCreationTimeout: streamCreationTimeout,
+ pod: podName,
+ uid: uid,
+ forwarder: portForwarder,
+ }
+ h.run()
+
+ return nil
+}
+
+// httpStreamReceived is the httpstream.NewStreamHandler for port
+// forward streams. It checks each stream's port and stream type headers,
+// rejecting any streams that with missing or invalid values. Each valid
+// stream is sent to the streams channel.
+func httpStreamReceived(streams chan httpstream.Stream) func(httpstream.Stream, <-chan struct{}) error {
+ return func(stream httpstream.Stream, replySent <-chan struct{}) error {
+ // make sure it has a valid port header
+ portString := stream.Headers().Get(api.PortHeader)
+ if len(portString) == 0 {
+ return fmt.Errorf("%q header is required", api.PortHeader)
+ }
+ port, err := strconv.ParseUint(portString, 10, 16)
+ if err != nil {
+ return fmt.Errorf("unable to parse %q as a port: %v", portString, err)
+ }
+ if port < 1 {
+ return fmt.Errorf("port %q must be > 0", portString)
+ }
+
+ // make sure it has a valid stream type header
+ streamType := stream.Headers().Get(api.StreamType)
+ if len(streamType) == 0 {
+ return fmt.Errorf("%q header is required", api.StreamType)
+ }
+ if streamType != api.StreamTypeError && streamType != api.StreamTypeData {
+ return fmt.Errorf("invalid stream type %q", streamType)
+ }
+
+ streams <- stream
+ return nil
+ }
+}
+
+// httpStreamHandler is capable of processing multiple port forward
+// requests over a single httpstream.Connection.
+type httpStreamHandler struct {
+ conn httpstream.Connection
+ streamChan chan httpstream.Stream
+ streamPairsLock sync.RWMutex
+ streamPairs map[string]*httpStreamPair
+ streamCreationTimeout time.Duration
+ pod string
+ uid types.UID
+ forwarder PortForwarder
+}
+
+// getStreamPair returns a httpStreamPair for requestID. This creates a
+// new pair if one does not yet exist for the requestID. The returned bool is
+// true if the pair was created.
+func (h *httpStreamHandler) getStreamPair(requestID string) (*httpStreamPair, bool) {
+ h.streamPairsLock.Lock()
+ defer h.streamPairsLock.Unlock()
+
+ if p, ok := h.streamPairs[requestID]; ok {
+ glog.V(5).Infof("(conn=%p, request=%s) found existing stream pair", h.conn, requestID)
+ return p, false
+ }
+
+ glog.V(5).Infof("(conn=%p, request=%s) creating new stream pair", h.conn, requestID)
+
+ p := newPortForwardPair(requestID)
+ h.streamPairs[requestID] = p
+
+ return p, true
+}
+
+// monitorStreamPair waits for the pair to receive both its error and data
+// streams, or for the timeout to expire (whichever happens first), and then
+// removes the pair.
+func (h *httpStreamHandler) monitorStreamPair(p *httpStreamPair, timeout <-chan time.Time) {
+ select {
+ case <-timeout:
+ err := fmt.Errorf("(conn=%v, request=%s) timed out waiting for streams", h.conn, p.requestID)
+ utilruntime.HandleError(err)
+ p.printError(err.Error())
+ case <-p.complete:
+ glog.V(5).Infof("(conn=%v, request=%s) successfully received error and data streams", h.conn, p.requestID)
+ }
+ h.removeStreamPair(p.requestID)
+}
+
+// hasStreamPair returns a bool indicating if a stream pair for requestID
+// exists.
+func (h *httpStreamHandler) hasStreamPair(requestID string) bool {
+ h.streamPairsLock.RLock()
+ defer h.streamPairsLock.RUnlock()
+
+ _, ok := h.streamPairs[requestID]
+ return ok
+}
+
+// removeStreamPair removes the stream pair identified by requestID from streamPairs.
+func (h *httpStreamHandler) removeStreamPair(requestID string) {
+ h.streamPairsLock.Lock()
+ defer h.streamPairsLock.Unlock()
+
+ delete(h.streamPairs, requestID)
+}
+
+// requestID returns the request id for stream.
+func (h *httpStreamHandler) requestID(stream httpstream.Stream) string {
+ requestID := stream.Headers().Get(api.PortForwardRequestIDHeader)
+ if len(requestID) == 0 {
+ glog.V(5).Infof("(conn=%p) stream received without %s header", h.conn, api.PortForwardRequestIDHeader)
+ // If we get here, it's because the connection came from an older client
+ // that isn't generating the request id header
+ // (https://github.com/kubernetes/kubernetes/blob/843134885e7e0b360eb5441e85b1410a8b1a7a0c/pkg/client/unversioned/portforward/portforward.go#L258-L287)
+ //
+ // This is a best-effort attempt at supporting older clients.
+ //
+ // When there aren't concurrent new forwarded connections, each connection
+ // will have a pair of streams (data, error), and the stream IDs will be
+ // consecutive odd numbers, e.g. 1 and 3 for the first connection. Convert
+ // the stream ID into a pseudo-request id by taking the stream type and
+ // using id = stream.Identifier() when the stream type is error,
+ // and id = stream.Identifier() - 2 when it's data.
+ //
+ // NOTE: this only works when there are not concurrent new streams from
+ // multiple forwarded connections; it's a best-effort attempt at supporting
+ // old clients that don't generate request ids. If there are concurrent
+ // new connections, it's possible that 1 connection gets streams whose IDs
+ // are not consecutive (e.g. 5 and 9 instead of 5 and 7).
+ streamType := stream.Headers().Get(api.StreamType)
+ switch streamType {
+ case api.StreamTypeError:
+ requestID = strconv.Itoa(int(stream.Identifier()))
+ case api.StreamTypeData:
+ requestID = strconv.Itoa(int(stream.Identifier()) - 2)
+ }
+
+ glog.V(5).Infof("(conn=%p) automatically assigning request ID=%q from stream type=%s, stream ID=%d", h.conn, requestID, streamType, stream.Identifier())
+ }
+ return requestID
+}
+
+// run is the main loop for the httpStreamHandler. It processes new
+// streams, invoking portForward for each complete stream pair. The loop exits
+// when the httpstream.Connection is closed.
+func (h *httpStreamHandler) run() {
+ glog.V(5).Infof("(conn=%p) waiting for port forward streams", h.conn)
+Loop:
+ for {
+ select {
+ case <-h.conn.CloseChan():
+ glog.V(5).Infof("(conn=%p) upgraded connection closed", h.conn)
+ break Loop
+ case stream := <-h.streamChan:
+ requestID := h.requestID(stream)
+ streamType := stream.Headers().Get(api.StreamType)
+ glog.V(5).Infof("(conn=%p, request=%s) received new stream of type %s", h.conn, requestID, streamType)
+
+ p, created := h.getStreamPair(requestID)
+ if created {
+ go h.monitorStreamPair(p, time.After(h.streamCreationTimeout))
+ }
+ if complete, err := p.add(stream); err != nil {
+ msg := fmt.Sprintf("error processing stream for request %s: %v", requestID, err)
+ utilruntime.HandleError(errors.New(msg))
+ p.printError(msg)
+ } else if complete {
+ go h.portForward(p)
+ }
+ }
+ }
+}
+
+// portForward invokes the httpStreamHandler's forwarder.PortForward
+// function for the given stream pair.
+func (h *httpStreamHandler) portForward(p *httpStreamPair) {
+ defer p.dataStream.Close()
+ defer p.errorStream.Close()
+
+ portString := p.dataStream.Headers().Get(api.PortHeader)
+ port, _ := strconv.ParseInt(portString, 10, 32)
+
+ glog.V(5).Infof("(conn=%p, request=%s) invoking forwarder.PortForward for port %s", h.conn, p.requestID, portString)
+ err := h.forwarder.PortForward(h.pod, h.uid, int32(port), p.dataStream)
+ glog.V(5).Infof("(conn=%p, request=%s) done invoking forwarder.PortForward for port %s", h.conn, p.requestID, portString)
+
+ if err != nil {
+ msg := fmt.Errorf("error forwarding port %d to pod %s, uid %v: %v", port, h.pod, h.uid, err)
+ utilruntime.HandleError(msg)
+ fmt.Fprint(p.errorStream, msg.Error())
+ }
+}
+
+// httpStreamPair represents the error and data streams for a port
+// forwarding request.
+type httpStreamPair struct {
+ lock sync.RWMutex
+ requestID string
+ dataStream httpstream.Stream
+ errorStream httpstream.Stream
+ complete chan struct{}
+}
+
+// newPortForwardPair creates a new httpStreamPair.
+func newPortForwardPair(requestID string) *httpStreamPair {
+ return &httpStreamPair{
+ requestID: requestID,
+ complete: make(chan struct{}),
+ }
+}
+
+// add adds the stream to the httpStreamPair. If the pair already
+// contains a stream for the new stream's type, an error is returned. add
+// returns true if both the data and error streams for this pair have been
+// received.
+func (p *httpStreamPair) add(stream httpstream.Stream) (bool, error) {
+ p.lock.Lock()
+ defer p.lock.Unlock()
+
+ switch stream.Headers().Get(api.StreamType) {
+ case api.StreamTypeError:
+ if p.errorStream != nil {
+ return false, errors.New("error stream already assigned")
+ }
+ p.errorStream = stream
+ case api.StreamTypeData:
+ if p.dataStream != nil {
+ return false, errors.New("data stream already assigned")
+ }
+ p.dataStream = stream
+ }
+
+ complete := p.errorStream != nil && p.dataStream != nil
+ if complete {
+ close(p.complete)
+ }
+ return complete, nil
+}
+
+// printError writes s to p.errorStream if p.errorStream has been set.
+func (p *httpStreamPair) printError(s string) {
+ p.lock.RLock()
+ defer p.lock.RUnlock()
+ if p.errorStream != nil {
+ fmt.Fprint(p.errorStream, s)
+ }
+}
diff --git a/vendor/k8s.io/kubernetes/pkg/kubelet/server/portforward/portforward.go b/vendor/k8s.io/kubernetes/pkg/kubelet/server/portforward/portforward.go
new file mode 100644
index 000000000..60a96e51a
--- /dev/null
+++ b/vendor/k8s.io/kubernetes/pkg/kubelet/server/portforward/portforward.go
@@ -0,0 +1,53 @@
+/*
+Copyright 2016 The Kubernetes Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package portforward
+
+import (
+ "io"
+ "net/http"
+ "time"
+
+ "k8s.io/apimachinery/pkg/types"
+ "k8s.io/apimachinery/pkg/util/runtime"
+ "k8s.io/apiserver/pkg/util/wsstream"
+)
+
+// PortForwarder knows how to forward content from a data stream to/from a port
+// in a pod.
+type PortForwarder interface {
+ // PortForwarder copies data between a data stream and a port in a pod.
+ PortForward(name string, uid types.UID, port int32, stream io.ReadWriteCloser) error
+}
+
+// ServePortForward handles a port forwarding request. A single request is
+// kept alive as long as the client is still alive and the connection has not
+// been timed out due to idleness. This function handles multiple forwarded
+// connections; i.e., multiple `curl http://localhost:8888/` requests will be
+// handled by a single invocation of ServePortForward.
+func ServePortForward(w http.ResponseWriter, req *http.Request, portForwarder PortForwarder, podName string, uid types.UID, portForwardOptions *V4Options, idleTimeout time.Duration, streamCreationTimeout time.Duration, supportedProtocols []string) {
+ var err error
+ if wsstream.IsWebSocketRequest(req) {
+ err = handleWebSocketStreams(req, w, portForwarder, podName, uid, portForwardOptions, supportedProtocols, idleTimeout, streamCreationTimeout)
+ } else {
+ err = handleHttpStreams(req, w, portForwarder, podName, uid, supportedProtocols, idleTimeout, streamCreationTimeout)
+ }
+
+ if err != nil {
+ runtime.HandleError(err)
+ return
+ }
+}
diff --git a/vendor/k8s.io/kubernetes/pkg/kubelet/server/portforward/websocket.go b/vendor/k8s.io/kubernetes/pkg/kubelet/server/portforward/websocket.go
new file mode 100644
index 000000000..22d5add06
--- /dev/null
+++ b/vendor/k8s.io/kubernetes/pkg/kubelet/server/portforward/websocket.go
@@ -0,0 +1,198 @@
+/*
+Copyright 2016 The Kubernetes Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package portforward
+
+import (
+ "encoding/binary"
+ "fmt"
+ "io"
+ "net/http"
+ "strconv"
+ "strings"
+ "sync"
+ "time"
+
+ "github.com/golang/glog"
+
+ "k8s.io/apimachinery/pkg/types"
+ "k8s.io/apimachinery/pkg/util/runtime"
+ "k8s.io/apiserver/pkg/server/httplog"
+ "k8s.io/apiserver/pkg/util/wsstream"
+ "k8s.io/kubernetes/pkg/api"
+)
+
+const (
+ dataChannel = iota
+ errorChannel
+
+ v4BinaryWebsocketProtocol = "v4." + wsstream.ChannelWebSocketProtocol
+ v4Base64WebsocketProtocol = "v4." + wsstream.Base64ChannelWebSocketProtocol
+)
+
+// options contains details about which streams are required for
+// port forwarding.
+// All fields incldued in V4Options need to be expressed explicilty in the
+// CRI (pkg/kubelet/apis/cri/{version}/api.proto) PortForwardRequest.
+type V4Options struct {
+ Ports []int32
+}
+
+// newOptions creates a new options from the Request.
+func NewV4Options(req *http.Request) (*V4Options, error) {
+ if !wsstream.IsWebSocketRequest(req) {
+ return &V4Options{}, nil
+ }
+
+ portStrings := req.URL.Query()[api.PortHeader]
+ if len(portStrings) == 0 {
+ return nil, fmt.Errorf("query parameter %q is required", api.PortHeader)
+ }
+
+ ports := make([]int32, 0, len(portStrings))
+ for _, portString := range portStrings {
+ if len(portString) == 0 {
+ return nil, fmt.Errorf("query parameter %q cannot be empty", api.PortHeader)
+ }
+ for _, p := range strings.Split(portString, ",") {
+ port, err := strconv.ParseUint(p, 10, 16)
+ if err != nil {
+ return nil, fmt.Errorf("unable to parse %q as a port: %v", portString, err)
+ }
+ if port < 1 {
+ return nil, fmt.Errorf("port %q must be > 0", portString)
+ }
+ ports = append(ports, int32(port))
+ }
+ }
+
+ return &V4Options{
+ Ports: ports,
+ }, nil
+}
+
+// BuildV4Options returns a V4Options based on the given information.
+func BuildV4Options(ports []int32) (*V4Options, error) {
+ return &V4Options{Ports: ports}, nil
+}
+
+// handleWebSocketStreams handles requests to forward ports to a pod via
+// a PortForwarder. A pair of streams are created per port (DATA n,
+// ERROR n+1). The associated port is written to each stream as a unsigned 16
+// bit integer in little endian format.
+func handleWebSocketStreams(req *http.Request, w http.ResponseWriter, portForwarder PortForwarder, podName string, uid types.UID, opts *V4Options, supportedPortForwardProtocols []string, idleTimeout, streamCreationTimeout time.Duration) error {
+ channels := make([]wsstream.ChannelType, 0, len(opts.Ports)*2)
+ for i := 0; i < len(opts.Ports); i++ {
+ channels = append(channels, wsstream.ReadWriteChannel, wsstream.WriteChannel)
+ }
+ conn := wsstream.NewConn(map[string]wsstream.ChannelProtocolConfig{
+ "": {
+ Binary: true,
+ Channels: channels,
+ },
+ v4BinaryWebsocketProtocol: {
+ Binary: true,
+ Channels: channels,
+ },
+ v4Base64WebsocketProtocol: {
+ Binary: false,
+ Channels: channels,
+ },
+ })
+ conn.SetIdleTimeout(idleTimeout)
+ _, streams, err := conn.Open(httplog.Unlogged(w), req)
+ if err != nil {
+ err = fmt.Errorf("Unable to upgrade websocket connection: %v", err)
+ return err
+ }
+ defer conn.Close()
+ streamPairs := make([]*websocketStreamPair, len(opts.Ports))
+ for i := range streamPairs {
+ streamPair := websocketStreamPair{
+ port: opts.Ports[i],
+ dataStream: streams[i*2+dataChannel],
+ errorStream: streams[i*2+errorChannel],
+ }
+ streamPairs[i] = &streamPair
+
+ portBytes := make([]byte, 2)
+ // port is always positive so conversion is allowable
+ binary.LittleEndian.PutUint16(portBytes, uint16(streamPair.port))
+ streamPair.dataStream.Write(portBytes)
+ streamPair.errorStream.Write(portBytes)
+ }
+ h := &websocketStreamHandler{
+ conn: conn,
+ streamPairs: streamPairs,
+ pod: podName,
+ uid: uid,
+ forwarder: portForwarder,
+ }
+ h.run()
+
+ return nil
+}
+
+// websocketStreamPair represents the error and data streams for a port
+// forwarding request.
+type websocketStreamPair struct {
+ port int32
+ dataStream io.ReadWriteCloser
+ errorStream io.WriteCloser
+}
+
+// websocketStreamHandler is capable of processing a single port forward
+// request over a websocket connection
+type websocketStreamHandler struct {
+ conn *wsstream.Conn
+ ports []int32
+ streamPairs []*websocketStreamPair
+ pod string
+ uid types.UID
+ forwarder PortForwarder
+}
+
+// run invokes the websocketStreamHandler's forwarder.PortForward
+// function for the given stream pair.
+func (h *websocketStreamHandler) run() {
+ wg := sync.WaitGroup{}
+ wg.Add(len(h.streamPairs))
+
+ for _, pair := range h.streamPairs {
+ p := pair
+ go func() {
+ defer wg.Done()
+ h.portForward(p)
+ }()
+ }
+
+ wg.Wait()
+}
+
+func (h *websocketStreamHandler) portForward(p *websocketStreamPair) {
+ defer p.dataStream.Close()
+ defer p.errorStream.Close()
+
+ glog.V(5).Infof("(conn=%p) invoking forwarder.PortForward for port %d", h.conn, p.port)
+ err := h.forwarder.PortForward(h.pod, h.uid, p.port, p.dataStream)
+ glog.V(5).Infof("(conn=%p) done invoking forwarder.PortForward for port %d", h.conn, p.port)
+
+ if err != nil {
+ msg := fmt.Errorf("error forwarding port %d to pod %s, uid %v: %v", p.port, h.pod, h.uid, err)
+ runtime.HandleError(msg)
+ fmt.Fprint(p.errorStream, msg.Error())
+ }
+}
diff --git a/vendor/k8s.io/kubernetes/pkg/kubelet/server/remotecommand/attach.go b/vendor/k8s.io/kubernetes/pkg/kubelet/server/remotecommand/attach.go
new file mode 100644
index 000000000..e266f34fe
--- /dev/null
+++ b/vendor/k8s.io/kubernetes/pkg/kubelet/server/remotecommand/attach.go
@@ -0,0 +1,59 @@
+/*
+Copyright 2016 The Kubernetes Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package remotecommand
+
+import (
+ "fmt"
+ "io"
+ "net/http"
+ "time"
+
+ apierrors "k8s.io/apimachinery/pkg/api/errors"
+ metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+ "k8s.io/apimachinery/pkg/types"
+ "k8s.io/apimachinery/pkg/util/runtime"
+ "k8s.io/client-go/tools/remotecommand"
+)
+
+// Attacher knows how to attach to a running container in a pod.
+type Attacher interface {
+ // AttachContainer attaches to the running container in the pod, copying data between in/out/err
+ // and the container's stdin/stdout/stderr.
+ AttachContainer(name string, uid types.UID, container string, in io.Reader, out, err io.WriteCloser, tty bool, resize <-chan remotecommand.TerminalSize) error
+}
+
+// ServeAttach handles requests to attach to a container. After creating/receiving the required
+// streams, it delegates the actual attaching to attacher.
+func ServeAttach(w http.ResponseWriter, req *http.Request, attacher Attacher, podName string, uid types.UID, container string, streamOpts *Options, idleTimeout, streamCreationTimeout time.Duration, supportedProtocols []string) {
+ ctx, ok := createStreams(req, w, streamOpts, supportedProtocols, idleTimeout, streamCreationTimeout)
+ if !ok {
+ // error is handled by createStreams
+ return
+ }
+ defer ctx.conn.Close()
+
+ err := attacher.AttachContainer(podName, uid, container, ctx.stdinStream, ctx.stdoutStream, ctx.stderrStream, ctx.tty, ctx.resizeChan)
+ if err != nil {
+ err = fmt.Errorf("error attaching to container: %v", err)
+ runtime.HandleError(err)
+ ctx.writeStatus(apierrors.NewInternalError(err))
+ } else {
+ ctx.writeStatus(&apierrors.StatusError{ErrStatus: metav1.Status{
+ Status: metav1.StatusSuccess,
+ }})
+ }
+}
diff --git a/vendor/k8s.io/kubernetes/pkg/kubelet/server/remotecommand/doc.go b/vendor/k8s.io/kubernetes/pkg/kubelet/server/remotecommand/doc.go
new file mode 100644
index 000000000..24f9393ab
--- /dev/null
+++ b/vendor/k8s.io/kubernetes/pkg/kubelet/server/remotecommand/doc.go
@@ -0,0 +1,18 @@
+/*
+Copyright 2016 The Kubernetes Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+// package remotecommand contains functions related to executing commands in and attaching to pods.
+package remotecommand // import "k8s.io/kubernetes/pkg/kubelet/server/remotecommand"
diff --git a/vendor/k8s.io/kubernetes/pkg/kubelet/server/remotecommand/exec.go b/vendor/k8s.io/kubernetes/pkg/kubelet/server/remotecommand/exec.go
new file mode 100644
index 000000000..8d14a937a
--- /dev/null
+++ b/vendor/k8s.io/kubernetes/pkg/kubelet/server/remotecommand/exec.go
@@ -0,0 +1,79 @@
+/*
+Copyright 2016 The Kubernetes Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package remotecommand
+
+import (
+ "fmt"
+ "io"
+ "net/http"
+ "time"
+
+ apierrors "k8s.io/apimachinery/pkg/api/errors"
+ metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+ "k8s.io/apimachinery/pkg/types"
+ remotecommandconsts "k8s.io/apimachinery/pkg/util/remotecommand"
+ "k8s.io/apimachinery/pkg/util/runtime"
+ "k8s.io/client-go/tools/remotecommand"
+ utilexec "k8s.io/kubernetes/pkg/util/exec"
+)
+
+// Executor knows how to execute a command in a container in a pod.
+type Executor interface {
+ // ExecInContainer executes a command in a container in the pod, copying data
+ // between in/out/err and the container's stdin/stdout/stderr.
+ ExecInContainer(name string, uid types.UID, container string, cmd []string, in io.Reader, out, err io.WriteCloser, tty bool, resize <-chan remotecommand.TerminalSize, timeout time.Duration) error
+}
+
+// ServeExec handles requests to execute a command in a container. After
+// creating/receiving the required streams, it delegates the actual execution
+// to the executor.
+func ServeExec(w http.ResponseWriter, req *http.Request, executor Executor, podName string, uid types.UID, container string, cmd []string, streamOpts *Options, idleTimeout, streamCreationTimeout time.Duration, supportedProtocols []string) {
+ ctx, ok := createStreams(req, w, streamOpts, supportedProtocols, idleTimeout, streamCreationTimeout)
+ if !ok {
+ // error is handled by createStreams
+ return
+ }
+ defer ctx.conn.Close()
+
+ err := executor.ExecInContainer(podName, uid, container, cmd, ctx.stdinStream, ctx.stdoutStream, ctx.stderrStream, ctx.tty, ctx.resizeChan, 0)
+ if err != nil {
+ if exitErr, ok := err.(utilexec.ExitError); ok && exitErr.Exited() {
+ rc := exitErr.ExitStatus()
+ ctx.writeStatus(&apierrors.StatusError{ErrStatus: metav1.Status{
+ Status: metav1.StatusFailure,
+ Reason: remotecommandconsts.NonZeroExitCodeReason,
+ Details: &metav1.StatusDetails{
+ Causes: []metav1.StatusCause{
+ {
+ Type: remotecommandconsts.ExitCodeCauseType,
+ Message: fmt.Sprintf("%d", rc),
+ },
+ },
+ },
+ Message: fmt.Sprintf("command terminated with non-zero exit code: %v", exitErr),
+ }})
+ } else {
+ err = fmt.Errorf("error executing command in container: %v", err)
+ runtime.HandleError(err)
+ ctx.writeStatus(apierrors.NewInternalError(err))
+ }
+ } else {
+ ctx.writeStatus(&apierrors.StatusError{ErrStatus: metav1.Status{
+ Status: metav1.StatusSuccess,
+ }})
+ }
+}
diff --git a/vendor/k8s.io/kubernetes/pkg/kubelet/server/remotecommand/httpstream.go b/vendor/k8s.io/kubernetes/pkg/kubelet/server/remotecommand/httpstream.go
new file mode 100644
index 000000000..f09b5e400
--- /dev/null
+++ b/vendor/k8s.io/kubernetes/pkg/kubelet/server/remotecommand/httpstream.go
@@ -0,0 +1,447 @@
+/*
+Copyright 2016 The Kubernetes Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package remotecommand
+
+import (
+ "encoding/json"
+ "errors"
+ "fmt"
+ "io"
+ "net/http"
+ "time"
+
+ apierrors "k8s.io/apimachinery/pkg/api/errors"
+ metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+ "k8s.io/apimachinery/pkg/util/httpstream"
+ "k8s.io/apimachinery/pkg/util/httpstream/spdy"
+ remotecommandconsts "k8s.io/apimachinery/pkg/util/remotecommand"
+ "k8s.io/apimachinery/pkg/util/runtime"
+ "k8s.io/apiserver/pkg/util/wsstream"
+ "k8s.io/client-go/tools/remotecommand"
+ "k8s.io/kubernetes/pkg/api"
+
+ "github.com/golang/glog"
+)
+
+// Options contains details about which streams are required for
+// remote command execution.
+type Options struct {
+ Stdin bool
+ Stdout bool
+ Stderr bool
+ TTY bool
+}
+
+// NewOptions creates a new Options from the Request.
+func NewOptions(req *http.Request) (*Options, error) {
+ tty := req.FormValue(api.ExecTTYParam) == "1"
+ stdin := req.FormValue(api.ExecStdinParam) == "1"
+ stdout := req.FormValue(api.ExecStdoutParam) == "1"
+ stderr := req.FormValue(api.ExecStderrParam) == "1"
+ if tty && stderr {
+ // TODO: make this an error before we reach this method
+ glog.V(4).Infof("Access to exec with tty and stderr is not supported, bypassing stderr")
+ stderr = false
+ }
+
+ if !stdin && !stdout && !stderr {
+ return nil, fmt.Errorf("you must specify at least 1 of stdin, stdout, stderr")
+ }
+
+ return &Options{
+ Stdin: stdin,
+ Stdout: stdout,
+ Stderr: stderr,
+ TTY: tty,
+ }, nil
+}
+
+// context contains the connection and streams used when
+// forwarding an attach or execute session into a container.
+type context struct {
+ conn io.Closer
+ stdinStream io.ReadCloser
+ stdoutStream io.WriteCloser
+ stderrStream io.WriteCloser
+ writeStatus func(status *apierrors.StatusError) error
+ resizeStream io.ReadCloser
+ resizeChan chan remotecommand.TerminalSize
+ tty bool
+}
+
+// streamAndReply holds both a Stream and a channel that is closed when the stream's reply frame is
+// enqueued. Consumers can wait for replySent to be closed prior to proceeding, to ensure that the
+// replyFrame is enqueued before the connection's goaway frame is sent (e.g. if a stream was
+// received and right after, the connection gets closed).
+type streamAndReply struct {
+ httpstream.Stream
+ replySent <-chan struct{}
+}
+
+// waitStreamReply waits until either replySent or stop is closed. If replySent is closed, it sends
+// an empty struct to the notify channel.
+func waitStreamReply(replySent <-chan struct{}, notify chan<- struct{}, stop <-chan struct{}) {
+ select {
+ case <-replySent:
+ notify <- struct{}{}
+ case <-stop:
+ }
+}
+
+func createStreams(req *http.Request, w http.ResponseWriter, opts *Options, supportedStreamProtocols []string, idleTimeout, streamCreationTimeout time.Duration) (*context, bool) {
+ var ctx *context
+ var ok bool
+ if wsstream.IsWebSocketRequest(req) {
+ ctx, ok = createWebSocketStreams(req, w, opts, idleTimeout)
+ } else {
+ ctx, ok = createHttpStreamStreams(req, w, opts, supportedStreamProtocols, idleTimeout, streamCreationTimeout)
+ }
+ if !ok {
+ return nil, false
+ }
+
+ if ctx.resizeStream != nil {
+ ctx.resizeChan = make(chan remotecommand.TerminalSize)
+ go handleResizeEvents(ctx.resizeStream, ctx.resizeChan)
+ }
+
+ return ctx, true
+}
+
+func createHttpStreamStreams(req *http.Request, w http.ResponseWriter, opts *Options, supportedStreamProtocols []string, idleTimeout, streamCreationTimeout time.Duration) (*context, bool) {
+ protocol, err := httpstream.Handshake(req, w, supportedStreamProtocols)
+ if err != nil {
+ w.WriteHeader(http.StatusBadRequest)
+ fmt.Fprint(w, err.Error())
+ return nil, false
+ }
+
+ streamCh := make(chan streamAndReply)
+
+ upgrader := spdy.NewResponseUpgrader()
+ conn := upgrader.UpgradeResponse(w, req, func(stream httpstream.Stream, replySent <-chan struct{}) error {
+ streamCh <- streamAndReply{Stream: stream, replySent: replySent}
+ return nil
+ })
+ // from this point on, we can no longer call methods on response
+ if conn == nil {
+ // The upgrader is responsible for notifying the client of any errors that
+ // occurred during upgrading. All we can do is return here at this point
+ // if we weren't successful in upgrading.
+ return nil, false
+ }
+
+ conn.SetIdleTimeout(idleTimeout)
+
+ var handler protocolHandler
+ switch protocol {
+ case remotecommandconsts.StreamProtocolV4Name:
+ handler = &v4ProtocolHandler{}
+ case remotecommandconsts.StreamProtocolV3Name:
+ handler = &v3ProtocolHandler{}
+ case remotecommandconsts.StreamProtocolV2Name:
+ handler = &v2ProtocolHandler{}
+ case "":
+ glog.V(4).Infof("Client did not request protocol negotiaion. Falling back to %q", remotecommandconsts.StreamProtocolV1Name)
+ fallthrough
+ case remotecommandconsts.StreamProtocolV1Name:
+ handler = &v1ProtocolHandler{}
+ }
+
+ // count the streams client asked for, starting with 1
+ expectedStreams := 1
+ if opts.Stdin {
+ expectedStreams++
+ }
+ if opts.Stdout {
+ expectedStreams++
+ }
+ if opts.Stderr {
+ expectedStreams++
+ }
+ if opts.TTY && handler.supportsTerminalResizing() {
+ expectedStreams++
+ }
+
+ expired := time.NewTimer(streamCreationTimeout)
+ defer expired.Stop()
+
+ ctx, err := handler.waitForStreams(streamCh, expectedStreams, expired.C)
+ if err != nil {
+ runtime.HandleError(err)
+ return nil, false
+ }
+
+ ctx.conn = conn
+ ctx.tty = opts.TTY
+
+ return ctx, true
+}
+
+type protocolHandler interface {
+ // waitForStreams waits for the expected streams or a timeout, returning a
+ // remoteCommandContext if all the streams were received, or an error if not.
+ waitForStreams(streams <-chan streamAndReply, expectedStreams int, expired <-chan time.Time) (*context, error)
+ // supportsTerminalResizing returns true if the protocol handler supports terminal resizing
+ supportsTerminalResizing() bool
+}
+
+// v4ProtocolHandler implements the V4 protocol version for streaming command execution. It only differs
+// in from v3 in the error stream format using an json-marshaled metav1.Status which carries
+// the process' exit code.
+type v4ProtocolHandler struct{}
+
+func (*v4ProtocolHandler) waitForStreams(streams <-chan streamAndReply, expectedStreams int, expired <-chan time.Time) (*context, error) {
+ ctx := &context{}
+ receivedStreams := 0
+ replyChan := make(chan struct{})
+ stop := make(chan struct{})
+ defer close(stop)
+WaitForStreams:
+ for {
+ select {
+ case stream := <-streams:
+ streamType := stream.Headers().Get(api.StreamType)
+ switch streamType {
+ case api.StreamTypeError:
+ ctx.writeStatus = v4WriteStatusFunc(stream) // write json errors
+ go waitStreamReply(stream.replySent, replyChan, stop)
+ case api.StreamTypeStdin:
+ ctx.stdinStream = stream
+ go waitStreamReply(stream.replySent, replyChan, stop)
+ case api.StreamTypeStdout:
+ ctx.stdoutStream = stream
+ go waitStreamReply(stream.replySent, replyChan, stop)
+ case api.StreamTypeStderr:
+ ctx.stderrStream = stream
+ go waitStreamReply(stream.replySent, replyChan, stop)
+ case api.StreamTypeResize:
+ ctx.resizeStream = stream
+ go waitStreamReply(stream.replySent, replyChan, stop)
+ default:
+ runtime.HandleError(fmt.Errorf("Unexpected stream type: %q", streamType))
+ }
+ case <-replyChan:
+ receivedStreams++
+ if receivedStreams == expectedStreams {
+ break WaitForStreams
+ }
+ case <-expired:
+ // TODO find a way to return the error to the user. Maybe use a separate
+ // stream to report errors?
+ return nil, errors.New("timed out waiting for client to create streams")
+ }
+ }
+
+ return ctx, nil
+}
+
+// supportsTerminalResizing returns true because v4ProtocolHandler supports it
+func (*v4ProtocolHandler) supportsTerminalResizing() bool { return true }
+
+// v3ProtocolHandler implements the V3 protocol version for streaming command execution.
+type v3ProtocolHandler struct{}
+
+func (*v3ProtocolHandler) waitForStreams(streams <-chan streamAndReply, expectedStreams int, expired <-chan time.Time) (*context, error) {
+ ctx := &context{}
+ receivedStreams := 0
+ replyChan := make(chan struct{})
+ stop := make(chan struct{})
+ defer close(stop)
+WaitForStreams:
+ for {
+ select {
+ case stream := <-streams:
+ streamType := stream.Headers().Get(api.StreamType)
+ switch streamType {
+ case api.StreamTypeError:
+ ctx.writeStatus = v1WriteStatusFunc(stream)
+ go waitStreamReply(stream.replySent, replyChan, stop)
+ case api.StreamTypeStdin:
+ ctx.stdinStream = stream
+ go waitStreamReply(stream.replySent, replyChan, stop)
+ case api.StreamTypeStdout:
+ ctx.stdoutStream = stream
+ go waitStreamReply(stream.replySent, replyChan, stop)
+ case api.StreamTypeStderr:
+ ctx.stderrStream = stream
+ go waitStreamReply(stream.replySent, replyChan, stop)
+ case api.StreamTypeResize:
+ ctx.resizeStream = stream
+ go waitStreamReply(stream.replySent, replyChan, stop)
+ default:
+ runtime.HandleError(fmt.Errorf("Unexpected stream type: %q", streamType))
+ }
+ case <-replyChan:
+ receivedStreams++
+ if receivedStreams == expectedStreams {
+ break WaitForStreams
+ }
+ case <-expired:
+ // TODO find a way to return the error to the user. Maybe use a separate
+ // stream to report errors?
+ return nil, errors.New("timed out waiting for client to create streams")
+ }
+ }
+
+ return ctx, nil
+}
+
+// supportsTerminalResizing returns true because v3ProtocolHandler supports it
+func (*v3ProtocolHandler) supportsTerminalResizing() bool { return true }
+
+// v2ProtocolHandler implements the V2 protocol version for streaming command execution.
+type v2ProtocolHandler struct{}
+
+func (*v2ProtocolHandler) waitForStreams(streams <-chan streamAndReply, expectedStreams int, expired <-chan time.Time) (*context, error) {
+ ctx := &context{}
+ receivedStreams := 0
+ replyChan := make(chan struct{})
+ stop := make(chan struct{})
+ defer close(stop)
+WaitForStreams:
+ for {
+ select {
+ case stream := <-streams:
+ streamType := stream.Headers().Get(api.StreamType)
+ switch streamType {
+ case api.StreamTypeError:
+ ctx.writeStatus = v1WriteStatusFunc(stream)
+ go waitStreamReply(stream.replySent, replyChan, stop)
+ case api.StreamTypeStdin:
+ ctx.stdinStream = stream
+ go waitStreamReply(stream.replySent, replyChan, stop)
+ case api.StreamTypeStdout:
+ ctx.stdoutStream = stream
+ go waitStreamReply(stream.replySent, replyChan, stop)
+ case api.StreamTypeStderr:
+ ctx.stderrStream = stream
+ go waitStreamReply(stream.replySent, replyChan, stop)
+ default:
+ runtime.HandleError(fmt.Errorf("Unexpected stream type: %q", streamType))
+ }
+ case <-replyChan:
+ receivedStreams++
+ if receivedStreams == expectedStreams {
+ break WaitForStreams
+ }
+ case <-expired:
+ // TODO find a way to return the error to the user. Maybe use a separate
+ // stream to report errors?
+ return nil, errors.New("timed out waiting for client to create streams")
+ }
+ }
+
+ return ctx, nil
+}
+
+// supportsTerminalResizing returns false because v2ProtocolHandler doesn't support it.
+func (*v2ProtocolHandler) supportsTerminalResizing() bool { return false }
+
+// v1ProtocolHandler implements the V1 protocol version for streaming command execution.
+type v1ProtocolHandler struct{}
+
+func (*v1ProtocolHandler) waitForStreams(streams <-chan streamAndReply, expectedStreams int, expired <-chan time.Time) (*context, error) {
+ ctx := &context{}
+ receivedStreams := 0
+ replyChan := make(chan struct{})
+ stop := make(chan struct{})
+ defer close(stop)
+WaitForStreams:
+ for {
+ select {
+ case stream := <-streams:
+ streamType := stream.Headers().Get(api.StreamType)
+ switch streamType {
+ case api.StreamTypeError:
+ ctx.writeStatus = v1WriteStatusFunc(stream)
+
+ // This defer statement shouldn't be here, but due to previous refactoring, it ended up in
+ // here. This is what 1.0.x kubelets do, so we're retaining that behavior. This is fixed in
+ // the v2ProtocolHandler.
+ defer stream.Reset()
+
+ go waitStreamReply(stream.replySent, replyChan, stop)
+ case api.StreamTypeStdin:
+ ctx.stdinStream = stream
+ go waitStreamReply(stream.replySent, replyChan, stop)
+ case api.StreamTypeStdout:
+ ctx.stdoutStream = stream
+ go waitStreamReply(stream.replySent, replyChan, stop)
+ case api.StreamTypeStderr:
+ ctx.stderrStream = stream
+ go waitStreamReply(stream.replySent, replyChan, stop)
+ default:
+ runtime.HandleError(fmt.Errorf("Unexpected stream type: %q", streamType))
+ }
+ case <-replyChan:
+ receivedStreams++
+ if receivedStreams == expectedStreams {
+ break WaitForStreams
+ }
+ case <-expired:
+ // TODO find a way to return the error to the user. Maybe use a separate
+ // stream to report errors?
+ return nil, errors.New("timed out waiting for client to create streams")
+ }
+ }
+
+ if ctx.stdinStream != nil {
+ ctx.stdinStream.Close()
+ }
+
+ return ctx, nil
+}
+
+// supportsTerminalResizing returns false because v1ProtocolHandler doesn't support it.
+func (*v1ProtocolHandler) supportsTerminalResizing() bool { return false }
+
+func handleResizeEvents(stream io.Reader, channel chan<- remotecommand.TerminalSize) {
+ defer runtime.HandleCrash()
+
+ decoder := json.NewDecoder(stream)
+ for {
+ size := remotecommand.TerminalSize{}
+ if err := decoder.Decode(&size); err != nil {
+ break
+ }
+ channel <- size
+ }
+}
+
+func v1WriteStatusFunc(stream io.WriteCloser) func(status *apierrors.StatusError) error {
+ return func(status *apierrors.StatusError) error {
+ if status.Status().Status == metav1.StatusSuccess {
+ return nil // send error messages
+ }
+ _, err := stream.Write([]byte(status.Error()))
+ return err
+ }
+}
+
+// v4WriteStatusFunc returns a WriteStatusFunc that marshals a given api Status
+// as json in the error channel.
+func v4WriteStatusFunc(stream io.WriteCloser) func(status *apierrors.StatusError) error {
+ return func(status *apierrors.StatusError) error {
+ bs, err := json.Marshal(status.Status())
+ if err != nil {
+ return err
+ }
+ _, err = stream.Write(bs)
+ return err
+ }
+}
diff --git a/vendor/k8s.io/kubernetes/pkg/kubelet/server/remotecommand/websocket.go b/vendor/k8s.io/kubernetes/pkg/kubelet/server/remotecommand/websocket.go
new file mode 100644
index 000000000..c60012b21
--- /dev/null
+++ b/vendor/k8s.io/kubernetes/pkg/kubelet/server/remotecommand/websocket.go
@@ -0,0 +1,132 @@
+/*
+Copyright 2016 The Kubernetes Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package remotecommand
+
+import (
+ "fmt"
+ "net/http"
+ "time"
+
+ "k8s.io/apimachinery/pkg/util/runtime"
+ "k8s.io/apiserver/pkg/server/httplog"
+ "k8s.io/apiserver/pkg/util/wsstream"
+)
+
+const (
+ stdinChannel = iota
+ stdoutChannel
+ stderrChannel
+ errorChannel
+ resizeChannel
+
+ preV4BinaryWebsocketProtocol = wsstream.ChannelWebSocketProtocol
+ preV4Base64WebsocketProtocol = wsstream.Base64ChannelWebSocketProtocol
+ v4BinaryWebsocketProtocol = "v4." + wsstream.ChannelWebSocketProtocol
+ v4Base64WebsocketProtocol = "v4." + wsstream.Base64ChannelWebSocketProtocol
+)
+
+// createChannels returns the standard channel types for a shell connection (STDIN 0, STDOUT 1, STDERR 2)
+// along with the approximate duplex value. It also creates the error (3) and resize (4) channels.
+func createChannels(opts *Options) []wsstream.ChannelType {
+ // open the requested channels, and always open the error channel
+ channels := make([]wsstream.ChannelType, 5)
+ channels[stdinChannel] = readChannel(opts.Stdin)
+ channels[stdoutChannel] = writeChannel(opts.Stdout)
+ channels[stderrChannel] = writeChannel(opts.Stderr)
+ channels[errorChannel] = wsstream.WriteChannel
+ channels[resizeChannel] = wsstream.ReadChannel
+ return channels
+}
+
+// readChannel returns wsstream.ReadChannel if real is true, or wsstream.IgnoreChannel.
+func readChannel(real bool) wsstream.ChannelType {
+ if real {
+ return wsstream.ReadChannel
+ }
+ return wsstream.IgnoreChannel
+}
+
+// writeChannel returns wsstream.WriteChannel if real is true, or wsstream.IgnoreChannel.
+func writeChannel(real bool) wsstream.ChannelType {
+ if real {
+ return wsstream.WriteChannel
+ }
+ return wsstream.IgnoreChannel
+}
+
+// createWebSocketStreams returns a context containing the websocket connection and
+// streams needed to perform an exec or an attach.
+func createWebSocketStreams(req *http.Request, w http.ResponseWriter, opts *Options, idleTimeout time.Duration) (*context, bool) {
+ channels := createChannels(opts)
+ conn := wsstream.NewConn(map[string]wsstream.ChannelProtocolConfig{
+ "": {
+ Binary: true,
+ Channels: channels,
+ },
+ preV4BinaryWebsocketProtocol: {
+ Binary: true,
+ Channels: channels,
+ },
+ preV4Base64WebsocketProtocol: {
+ Binary: false,
+ Channels: channels,
+ },
+ v4BinaryWebsocketProtocol: {
+ Binary: true,
+ Channels: channels,
+ },
+ v4Base64WebsocketProtocol: {
+ Binary: false,
+ Channels: channels,
+ },
+ })
+ conn.SetIdleTimeout(idleTimeout)
+ negotiatedProtocol, streams, err := conn.Open(httplog.Unlogged(w), req)
+ if err != nil {
+ runtime.HandleError(fmt.Errorf("Unable to upgrade websocket connection: %v", err))
+ return nil, false
+ }
+
+ // Send an empty message to the lowest writable channel to notify the client the connection is established
+ // TODO: make generic to SPDY and WebSockets and do it outside of this method?
+ switch {
+ case opts.Stdout:
+ streams[stdoutChannel].Write([]byte{})
+ case opts.Stderr:
+ streams[stderrChannel].Write([]byte{})
+ default:
+ streams[errorChannel].Write([]byte{})
+ }
+
+ ctx := &context{
+ conn: conn,
+ stdinStream: streams[stdinChannel],
+ stdoutStream: streams[stdoutChannel],
+ stderrStream: streams[stderrChannel],
+ tty: opts.TTY,
+ resizeStream: streams[resizeChannel],
+ }
+
+ switch negotiatedProtocol {
+ case v4BinaryWebsocketProtocol, v4Base64WebsocketProtocol:
+ ctx.writeStatus = v4WriteStatusFunc(streams[errorChannel])
+ default:
+ ctx.writeStatus = v1WriteStatusFunc(streams[errorChannel])
+ }
+
+ return ctx, true
+}
diff --git a/vendor/k8s.io/kubernetes/pkg/kubelet/server/streaming/errors.go b/vendor/k8s.io/kubernetes/pkg/kubelet/server/streaming/errors.go
new file mode 100644
index 000000000..9f16b4eb2
--- /dev/null
+++ b/vendor/k8s.io/kubernetes/pkg/kubelet/server/streaming/errors.go
@@ -0,0 +1,55 @@
+/*
+Copyright 2016 The Kubernetes Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package streaming
+
+import (
+ "fmt"
+ "net/http"
+ "strconv"
+
+ "google.golang.org/grpc"
+ "google.golang.org/grpc/codes"
+)
+
+func ErrorStreamingDisabled(method string) error {
+ return grpc.Errorf(codes.NotFound, fmt.Sprintf("streaming method %s disabled", method))
+}
+
+// The error returned when the maximum number of in-flight requests is exceeded.
+func ErrorTooManyInFlight() error {
+ return grpc.Errorf(codes.ResourceExhausted, "maximum number of in-flight requests exceeded")
+}
+
+// Translates a CRI streaming error into an appropriate HTTP response.
+func WriteError(err error, w http.ResponseWriter) error {
+ var status int
+ switch grpc.Code(err) {
+ case codes.NotFound:
+ status = http.StatusNotFound
+ case codes.ResourceExhausted:
+ // We only expect to hit this if there is a DoS, so we just wait the full TTL.
+ // If this is ever hit in steady-state operations, consider increasing the MaxInFlight requests,
+ // or plumbing through the time to next expiration.
+ w.Header().Set("Retry-After", strconv.Itoa(int(CacheTTL.Seconds())))
+ status = http.StatusTooManyRequests
+ default:
+ status = http.StatusInternalServerError
+ }
+ w.WriteHeader(status)
+ _, writeErr := w.Write([]byte(err.Error()))
+ return writeErr
+}
diff --git a/vendor/k8s.io/kubernetes/pkg/kubelet/server/streaming/request_cache.go b/vendor/k8s.io/kubernetes/pkg/kubelet/server/streaming/request_cache.go
new file mode 100644
index 000000000..f68f640be
--- /dev/null
+++ b/vendor/k8s.io/kubernetes/pkg/kubelet/server/streaming/request_cache.go
@@ -0,0 +1,146 @@
+/*
+Copyright 2016 The Kubernetes Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package streaming
+
+import (
+ "container/list"
+ "crypto/rand"
+ "encoding/base64"
+ "fmt"
+ "math"
+ "sync"
+ "time"
+
+ "k8s.io/apimachinery/pkg/util/clock"
+)
+
+var (
+ // Timeout after which tokens become invalid.
+ CacheTTL = 1 * time.Minute
+ // The maximum number of in-flight requests to allow.
+ MaxInFlight = 1000
+ // Length of the random base64 encoded token identifying the request.
+ TokenLen = 8
+)
+
+// requestCache caches streaming (exec/attach/port-forward) requests and generates a single-use
+// random token for their retrieval. The requestCache is used for building streaming URLs without
+// the need to encode every request parameter in the URL.
+type requestCache struct {
+ // clock is used to obtain the current time
+ clock clock.Clock
+
+ // tokens maps the generate token to the request for fast retrieval.
+ tokens map[string]*list.Element
+ // ll maintains an age-ordered request list for faster garbage collection of expired requests.
+ ll *list.List
+
+ lock sync.Mutex
+}
+
+// Type representing an *ExecRequest, *AttachRequest, or *PortForwardRequest.
+type request interface{}
+
+type cacheEntry struct {
+ token string
+ req request
+ expireTime time.Time
+}
+
+func newRequestCache() *requestCache {
+ return &requestCache{
+ clock: clock.RealClock{},
+ ll: list.New(),
+ tokens: make(map[string]*list.Element),
+ }
+}
+
+// Insert the given request into the cache and returns the token used for fetching it out.
+func (c *requestCache) Insert(req request) (token string, err error) {
+ c.lock.Lock()
+ defer c.lock.Unlock()
+
+ // Remove expired entries.
+ c.gc()
+ // If the cache is full, reject the request.
+ if c.ll.Len() == MaxInFlight {
+ return "", ErrorTooManyInFlight()
+ }
+ token, err = c.uniqueToken()
+ if err != nil {
+ return "", err
+ }
+ ele := c.ll.PushFront(&cacheEntry{token, req, c.clock.Now().Add(CacheTTL)})
+
+ c.tokens[token] = ele
+ return token, nil
+}
+
+// Consume the token (remove it from the cache) and return the cached request, if found.
+func (c *requestCache) Consume(token string) (req request, found bool) {
+ c.lock.Lock()
+ defer c.lock.Unlock()
+ ele, ok := c.tokens[token]
+ if !ok {
+ return nil, false
+ }
+ c.ll.Remove(ele)
+ delete(c.tokens, token)
+
+ entry := ele.Value.(*cacheEntry)
+ if c.clock.Now().After(entry.expireTime) {
+ // Entry already expired.
+ return nil, false
+ }
+ return entry.req, true
+}
+
+// uniqueToken generates a random URL-safe token and ensures uniqueness.
+func (c *requestCache) uniqueToken() (string, error) {
+ const maxTries = 10
+ // Number of bytes to be TokenLen when base64 encoded.
+ tokenSize := math.Ceil(float64(TokenLen) * 6 / 8)
+ rawToken := make([]byte, int(tokenSize))
+ for i := 0; i < maxTries; i++ {
+ if _, err := rand.Read(rawToken); err != nil {
+ return "", err
+ }
+ encoded := base64.RawURLEncoding.EncodeToString(rawToken)
+ token := encoded[:TokenLen]
+ // If it's unique, return it. Otherwise retry.
+ if _, exists := c.tokens[encoded]; !exists {
+ return token, nil
+ }
+ }
+ return "", fmt.Errorf("failed to generate unique token")
+}
+
+// Must be write-locked prior to calling.
+func (c *requestCache) gc() {
+ now := c.clock.Now()
+ for c.ll.Len() > 0 {
+ oldest := c.ll.Back()
+ entry := oldest.Value.(*cacheEntry)
+ if !now.After(entry.expireTime) {
+ return
+ }
+
+ // Oldest value is expired; remove it.
+ c.ll.Remove(oldest)
+ delete(c.tokens, entry.token)
+ }
+}
diff --git a/vendor/k8s.io/kubernetes/pkg/kubelet/server/streaming/server.go b/vendor/k8s.io/kubernetes/pkg/kubelet/server/streaming/server.go
new file mode 100644
index 000000000..875e44462
--- /dev/null
+++ b/vendor/k8s.io/kubernetes/pkg/kubelet/server/streaming/server.go
@@ -0,0 +1,344 @@
+/*
+Copyright 2016 The Kubernetes Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package streaming
+
+import (
+ "crypto/tls"
+ "errors"
+ "io"
+ "net/http"
+ "net/url"
+ "path"
+ "time"
+
+ "google.golang.org/grpc"
+ "google.golang.org/grpc/codes"
+
+ restful "github.com/emicklei/go-restful"
+
+ "k8s.io/apimachinery/pkg/types"
+ remotecommandconsts "k8s.io/apimachinery/pkg/util/remotecommand"
+ "k8s.io/client-go/tools/remotecommand"
+ runtimeapi "k8s.io/kubernetes/pkg/kubelet/apis/cri/v1alpha1/runtime"
+ "k8s.io/kubernetes/pkg/kubelet/server/portforward"
+ remotecommandserver "k8s.io/kubernetes/pkg/kubelet/server/remotecommand"
+)
+
+// The library interface to serve the stream requests.
+type Server interface {
+ http.Handler
+
+ // Get the serving URL for the requests.
+ // Requests must not be nil. Responses may be nil iff an error is returned.
+ GetExec(*runtimeapi.ExecRequest) (*runtimeapi.ExecResponse, error)
+ GetAttach(req *runtimeapi.AttachRequest) (*runtimeapi.AttachResponse, error)
+ GetPortForward(*runtimeapi.PortForwardRequest) (*runtimeapi.PortForwardResponse, error)
+
+ // Start the server.
+ // addr is the address to serve on (address:port) stayUp indicates whether the server should
+ // listen until Stop() is called, or automatically stop after all expected connections are
+ // closed. Calling Get{Exec,Attach,PortForward} increments the expected connection count.
+ // Function does not return until the server is stopped.
+ Start(stayUp bool) error
+ // Stop the server, and terminate any open connections.
+ Stop() error
+}
+
+// The interface to execute the commands and provide the streams.
+type Runtime interface {
+ Exec(containerID string, cmd []string, in io.Reader, out, err io.WriteCloser, tty bool, resize <-chan remotecommand.TerminalSize) error
+ Attach(containerID string, in io.Reader, out, err io.WriteCloser, tty bool, resize <-chan remotecommand.TerminalSize) error
+ PortForward(podSandboxID string, port int32, stream io.ReadWriteCloser) error
+}
+
+// Config defines the options used for running the stream server.
+type Config struct {
+ // The host:port address the server will listen on.
+ Addr string
+ // The optional base URL for constructing streaming URLs. If empty, the baseURL will be
+ // constructed from the serve address.
+ BaseURL *url.URL
+
+ // How long to leave idle connections open for.
+ StreamIdleTimeout time.Duration
+ // How long to wait for clients to create streams. Only used for SPDY streaming.
+ StreamCreationTimeout time.Duration
+
+ // The streaming protocols the server supports (understands and permits). See
+ // k8s.io/kubernetes/pkg/kubelet/server/remotecommand/constants.go for available protocols.
+ // Only used for SPDY streaming.
+ SupportedRemoteCommandProtocols []string
+
+ // The streaming protocols the server supports (understands and permits). See
+ // k8s.io/kubernetes/pkg/kubelet/server/portforward/constants.go for available protocols.
+ // Only used for SPDY streaming.
+ SupportedPortForwardProtocols []string
+
+ // The config for serving over TLS. If nil, TLS will not be used.
+ TLSConfig *tls.Config
+}
+
+// DefaultConfig provides default values for server Config. The DefaultConfig is partial, so
+// some fields like Addr must still be provided.
+var DefaultConfig = Config{
+ StreamIdleTimeout: 4 * time.Hour,
+ StreamCreationTimeout: remotecommandconsts.DefaultStreamCreationTimeout,
+ SupportedRemoteCommandProtocols: remotecommandconsts.SupportedStreamingProtocols,
+ SupportedPortForwardProtocols: portforward.SupportedProtocols,
+}
+
+// TODO(timstclair): Add auth(n/z) interface & handling.
+func NewServer(config Config, runtime Runtime) (Server, error) {
+ s := &server{
+ config: config,
+ runtime: &criAdapter{runtime},
+ cache: newRequestCache(),
+ }
+
+ if s.config.BaseURL == nil {
+ s.config.BaseURL = &url.URL{
+ Scheme: "http",
+ Host: s.config.Addr,
+ }
+ if s.config.TLSConfig != nil {
+ s.config.BaseURL.Scheme = "https"
+ }
+ }
+
+ ws := &restful.WebService{}
+ endpoints := []struct {
+ path string
+ handler restful.RouteFunction
+ }{
+ {"/exec/{token}", s.serveExec},
+ {"/attach/{token}", s.serveAttach},
+ {"/portforward/{token}", s.servePortForward},
+ }
+ // If serving relative to a base path, set that here.
+ pathPrefix := path.Dir(s.config.BaseURL.Path)
+ for _, e := range endpoints {
+ for _, method := range []string{"GET", "POST"} {
+ ws.Route(ws.
+ Method(method).
+ Path(path.Join(pathPrefix, e.path)).
+ To(e.handler))
+ }
+ }
+ handler := restful.NewContainer()
+ handler.Add(ws)
+ s.handler = handler
+
+ return s, nil
+}
+
+type server struct {
+ config Config
+ runtime *criAdapter
+ handler http.Handler
+ cache *requestCache
+}
+
+func (s *server) GetExec(req *runtimeapi.ExecRequest) (*runtimeapi.ExecResponse, error) {
+ if req.ContainerId == "" {
+ return nil, grpc.Errorf(codes.InvalidArgument, "missing required container_id")
+ }
+ token, err := s.cache.Insert(req)
+ if err != nil {
+ return nil, err
+ }
+ return &runtimeapi.ExecResponse{
+ Url: s.buildURL("exec", token),
+ }, nil
+}
+
+func (s *server) GetAttach(req *runtimeapi.AttachRequest) (*runtimeapi.AttachResponse, error) {
+ if req.ContainerId == "" {
+ return nil, grpc.Errorf(codes.InvalidArgument, "missing required container_id")
+ }
+ token, err := s.cache.Insert(req)
+ if err != nil {
+ return nil, err
+ }
+ return &runtimeapi.AttachResponse{
+ Url: s.buildURL("attach", token),
+ }, nil
+}
+
+func (s *server) GetPortForward(req *runtimeapi.PortForwardRequest) (*runtimeapi.PortForwardResponse, error) {
+ if req.PodSandboxId == "" {
+ return nil, grpc.Errorf(codes.InvalidArgument, "missing required pod_sandbox_id")
+ }
+ token, err := s.cache.Insert(req)
+ if err != nil {
+ return nil, err
+ }
+ return &runtimeapi.PortForwardResponse{
+ Url: s.buildURL("portforward", token),
+ }, nil
+}
+
+func (s *server) Start(stayUp bool) error {
+ if !stayUp {
+ // TODO(timstclair): Implement this.
+ return errors.New("stayUp=false is not yet implemented")
+ }
+
+ server := &http.Server{
+ Addr: s.config.Addr,
+ Handler: s.handler,
+ TLSConfig: s.config.TLSConfig,
+ }
+ if s.config.TLSConfig != nil {
+ return server.ListenAndServeTLS("", "") // Use certs from TLSConfig.
+ } else {
+ return server.ListenAndServe()
+ }
+}
+
+func (s *server) Stop() error {
+ // TODO(timstclair): Implement this.
+ return errors.New("not yet implemented")
+}
+
+func (s *server) ServeHTTP(w http.ResponseWriter, r *http.Request) {
+ s.handler.ServeHTTP(w, r)
+}
+
+func (s *server) buildURL(method, token string) string {
+ return s.config.BaseURL.ResolveReference(&url.URL{
+ Path: path.Join(method, token),
+ }).String()
+}
+
+func (s *server) serveExec(req *restful.Request, resp *restful.Response) {
+ token := req.PathParameter("token")
+ cachedRequest, ok := s.cache.Consume(token)
+ if !ok {
+ http.NotFound(resp.ResponseWriter, req.Request)
+ return
+ }
+ exec, ok := cachedRequest.(*runtimeapi.ExecRequest)
+ if !ok {
+ http.NotFound(resp.ResponseWriter, req.Request)
+ return
+ }
+
+ streamOpts := &remotecommandserver.Options{
+ Stdin: exec.Stdin,
+ Stdout: true,
+ Stderr: !exec.Tty,
+ TTY: exec.Tty,
+ }
+
+ remotecommandserver.ServeExec(
+ resp.ResponseWriter,
+ req.Request,
+ s.runtime,
+ "", // unused: podName
+ "", // unusued: podUID
+ exec.ContainerId,
+ exec.Cmd,
+ streamOpts,
+ s.config.StreamIdleTimeout,
+ s.config.StreamCreationTimeout,
+ s.config.SupportedRemoteCommandProtocols)
+}
+
+func (s *server) serveAttach(req *restful.Request, resp *restful.Response) {
+ token := req.PathParameter("token")
+ cachedRequest, ok := s.cache.Consume(token)
+ if !ok {
+ http.NotFound(resp.ResponseWriter, req.Request)
+ return
+ }
+ attach, ok := cachedRequest.(*runtimeapi.AttachRequest)
+ if !ok {
+ http.NotFound(resp.ResponseWriter, req.Request)
+ return
+ }
+
+ streamOpts := &remotecommandserver.Options{
+ Stdin: attach.Stdin,
+ Stdout: true,
+ Stderr: !attach.Tty,
+ TTY: attach.Tty,
+ }
+ remotecommandserver.ServeAttach(
+ resp.ResponseWriter,
+ req.Request,
+ s.runtime,
+ "", // unused: podName
+ "", // unusued: podUID
+ attach.ContainerId,
+ streamOpts,
+ s.config.StreamIdleTimeout,
+ s.config.StreamCreationTimeout,
+ s.config.SupportedRemoteCommandProtocols)
+}
+
+func (s *server) servePortForward(req *restful.Request, resp *restful.Response) {
+ token := req.PathParameter("token")
+ cachedRequest, ok := s.cache.Consume(token)
+ if !ok {
+ http.NotFound(resp.ResponseWriter, req.Request)
+ return
+ }
+ pf, ok := cachedRequest.(*runtimeapi.PortForwardRequest)
+ if !ok {
+ http.NotFound(resp.ResponseWriter, req.Request)
+ return
+ }
+
+ portForwardOptions, err := portforward.BuildV4Options(pf.Port)
+ if err != nil {
+ resp.WriteError(http.StatusBadRequest, err)
+ return
+ }
+
+ portforward.ServePortForward(
+ resp.ResponseWriter,
+ req.Request,
+ s.runtime,
+ pf.PodSandboxId,
+ "", // unused: podUID
+ portForwardOptions,
+ s.config.StreamIdleTimeout,
+ s.config.StreamCreationTimeout,
+ s.config.SupportedPortForwardProtocols)
+}
+
+// criAdapter wraps the Runtime functions to conform to the remotecommand interfaces.
+// The adapter binds the container ID to the container name argument, and the pod sandbox ID to the pod name.
+type criAdapter struct {
+ Runtime
+}
+
+var _ remotecommandserver.Executor = &criAdapter{}
+var _ remotecommandserver.Attacher = &criAdapter{}
+var _ portforward.PortForwarder = &criAdapter{}
+
+func (a *criAdapter) ExecInContainer(podName string, podUID types.UID, container string, cmd []string, in io.Reader, out, err io.WriteCloser, tty bool, resize <-chan remotecommand.TerminalSize, timeout time.Duration) error {
+ return a.Exec(container, cmd, in, out, err, tty, resize)
+}
+
+func (a *criAdapter) AttachContainer(podName string, podUID types.UID, container string, in io.Reader, out, err io.WriteCloser, tty bool, resize <-chan remotecommand.TerminalSize) error {
+ return a.Attach(container, in, out, err, tty, resize)
+}
+
+func (a *criAdapter) PortForward(podName string, podUID types.UID, port int32, stream io.ReadWriteCloser) error {
+ return a.Runtime.PortForward(podName, port, stream)
+}
diff --git a/vendor/k8s.io/kubernetes/pkg/kubelet/types/constants.go b/vendor/k8s.io/kubernetes/pkg/kubelet/types/constants.go
new file mode 100644
index 000000000..eeabba017
--- /dev/null
+++ b/vendor/k8s.io/kubernetes/pkg/kubelet/types/constants.go
@@ -0,0 +1,22 @@
+/*
+Copyright 2015 The Kubernetes Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package types
+
+const (
+ // system default DNS resolver configuration
+ ResolvConfDefault = "/etc/resolv.conf"
+)
diff --git a/vendor/k8s.io/kubernetes/pkg/kubelet/types/doc.go b/vendor/k8s.io/kubernetes/pkg/kubelet/types/doc.go
new file mode 100644
index 000000000..88e345636
--- /dev/null
+++ b/vendor/k8s.io/kubernetes/pkg/kubelet/types/doc.go
@@ -0,0 +1,18 @@
+/*
+Copyright 2015 The Kubernetes Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+// Common types in the Kubelet.
+package types // import "k8s.io/kubernetes/pkg/kubelet/types"
diff --git a/vendor/k8s.io/kubernetes/pkg/kubelet/types/labels.go b/vendor/k8s.io/kubernetes/pkg/kubelet/types/labels.go
new file mode 100644
index 000000000..c4dad6302
--- /dev/null
+++ b/vendor/k8s.io/kubernetes/pkg/kubelet/types/labels.go
@@ -0,0 +1,40 @@
+/*
+Copyright 2016 The Kubernetes Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package types
+
+const (
+ KubernetesPodNameLabel = "io.kubernetes.pod.name"
+ KubernetesPodNamespaceLabel = "io.kubernetes.pod.namespace"
+ KubernetesPodUIDLabel = "io.kubernetes.pod.uid"
+ KubernetesContainerNameLabel = "io.kubernetes.container.name"
+)
+
+func GetContainerName(labels map[string]string) string {
+ return labels[KubernetesContainerNameLabel]
+}
+
+func GetPodName(labels map[string]string) string {
+ return labels[KubernetesPodNameLabel]
+}
+
+func GetPodUID(labels map[string]string) string {
+ return labels[KubernetesPodUIDLabel]
+}
+
+func GetPodNamespace(labels map[string]string) string {
+ return labels[KubernetesPodNamespaceLabel]
+}
diff --git a/vendor/k8s.io/kubernetes/pkg/kubelet/types/pod_update.go b/vendor/k8s.io/kubernetes/pkg/kubelet/types/pod_update.go
new file mode 100644
index 000000000..2c2dbb8a0
--- /dev/null
+++ b/vendor/k8s.io/kubernetes/pkg/kubelet/types/pod_update.go
@@ -0,0 +1,153 @@
+/*
+Copyright 2014 The Kubernetes Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package types
+
+import (
+ "fmt"
+
+ metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+ kubeapi "k8s.io/kubernetes/pkg/api"
+ "k8s.io/kubernetes/pkg/api/v1"
+)
+
+const (
+ ConfigSourceAnnotationKey = "kubernetes.io/config.source"
+ ConfigMirrorAnnotationKey = v1.MirrorPodAnnotationKey
+ ConfigFirstSeenAnnotationKey = "kubernetes.io/config.seen"
+ ConfigHashAnnotationKey = "kubernetes.io/config.hash"
+ CriticalPodAnnotationKey = "scheduler.alpha.kubernetes.io/critical-pod"
+)
+
+// PodOperation defines what changes will be made on a pod configuration.
+type PodOperation int
+
+const (
+ // This is the current pod configuration
+ SET PodOperation = iota
+ // Pods with the given ids are new to this source
+ ADD
+ // Pods with the given ids are gracefully deleted from this source
+ DELETE
+ // Pods with the given ids have been removed from this source
+ REMOVE
+ // Pods with the given ids have been updated in this source
+ UPDATE
+ // Pods with the given ids have unexpected status in this source,
+ // kubelet should reconcile status with this source
+ RECONCILE
+
+ // These constants identify the sources of pods
+ // Updates from a file
+ FileSource = "file"
+ // Updates from querying a web page
+ HTTPSource = "http"
+ // Updates from Kubernetes API Server
+ ApiserverSource = "api"
+ // Updates from all sources
+ AllSource = "*"
+
+ NamespaceDefault = metav1.NamespaceDefault
+)
+
+// PodUpdate defines an operation sent on the channel. You can add or remove single services by
+// sending an array of size one and Op == ADD|REMOVE (with REMOVE, only the ID is required).
+// For setting the state of the system to a given state for this source configuration, set
+// Pods as desired and Op to SET, which will reset the system state to that specified in this
+// operation for this source channel. To remove all pods, set Pods to empty object and Op to SET.
+//
+// Additionally, Pods should never be nil - it should always point to an empty slice. While
+// functionally similar, this helps our unit tests properly check that the correct PodUpdates
+// are generated.
+type PodUpdate struct {
+ Pods []*v1.Pod
+ Op PodOperation
+ Source string
+}
+
+// Gets all validated sources from the specified sources.
+func GetValidatedSources(sources []string) ([]string, error) {
+ validated := make([]string, 0, len(sources))
+ for _, source := range sources {
+ switch source {
+ case AllSource:
+ return []string{FileSource, HTTPSource, ApiserverSource}, nil
+ case FileSource, HTTPSource, ApiserverSource:
+ validated = append(validated, source)
+ break
+ case "":
+ break
+ default:
+ return []string{}, fmt.Errorf("unknown pod source %q", source)
+ }
+ }
+ return validated, nil
+}
+
+// GetPodSource returns the source of the pod based on the annotation.
+func GetPodSource(pod *v1.Pod) (string, error) {
+ if pod.Annotations != nil {
+ if source, ok := pod.Annotations[ConfigSourceAnnotationKey]; ok {
+ return source, nil
+ }
+ }
+ return "", fmt.Errorf("cannot get source of pod %q", pod.UID)
+}
+
+// SyncPodType classifies pod updates, eg: create, update.
+type SyncPodType int
+
+const (
+ // SyncPodSync is when the pod is synced to ensure desired state
+ SyncPodSync SyncPodType = iota
+ // SyncPodUpdate is when the pod is updated from source
+ SyncPodUpdate
+ // SyncPodCreate is when the pod is created from source
+ SyncPodCreate
+ // SyncPodKill is when the pod is killed based on a trigger internal to the kubelet for eviction.
+ // If a SyncPodKill request is made to pod workers, the request is never dropped, and will always be processed.
+ SyncPodKill
+)
+
+func (sp SyncPodType) String() string {
+ switch sp {
+ case SyncPodCreate:
+ return "create"
+ case SyncPodUpdate:
+ return "update"
+ case SyncPodSync:
+ return "sync"
+ case SyncPodKill:
+ return "kill"
+ default:
+ return "unknown"
+ }
+}
+
+// IsCriticalPod returns true if the pod bears the critical pod annotation
+// key. Both the rescheduler and the kubelet use this key to make admission
+// and scheduling decisions.
+func IsCriticalPod(pod *v1.Pod) bool {
+ // Critical pods are restricted to "kube-system" namespace as of now.
+ if pod.Namespace != kubeapi.NamespaceSystem {
+ return false
+ }
+ val, ok := pod.Annotations[CriticalPodAnnotationKey]
+ if ok && val == "" {
+ return true
+ }
+ return false
+}
diff --git a/vendor/k8s.io/kubernetes/pkg/kubelet/types/types.go b/vendor/k8s.io/kubernetes/pkg/kubelet/types/types.go
new file mode 100644
index 000000000..35359c7aa
--- /dev/null
+++ b/vendor/k8s.io/kubernetes/pkg/kubelet/types/types.go
@@ -0,0 +1,93 @@
+/*
+Copyright 2015 The Kubernetes Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package types
+
+import (
+ "net/http"
+ "time"
+
+ "k8s.io/kubernetes/pkg/api/v1"
+)
+
+// TODO: Reconcile custom types in kubelet/types and this subpackage
+
+type HttpGetter interface {
+ Get(url string) (*http.Response, error)
+}
+
+// Timestamp wraps around time.Time and offers utilities to format and parse
+// the time using RFC3339Nano
+type Timestamp struct {
+ time time.Time
+}
+
+// NewTimestamp returns a Timestamp object using the current time.
+func NewTimestamp() *Timestamp {
+ return &Timestamp{time.Now()}
+}
+
+// ConvertToTimestamp takes a string, parses it using the RFC3339Nano layout,
+// and converts it to a Timestamp object.
+func ConvertToTimestamp(timeString string) *Timestamp {
+ parsed, _ := time.Parse(time.RFC3339Nano, timeString)
+ return &Timestamp{parsed}
+}
+
+// Get returns the time as time.Time.
+func (t *Timestamp) Get() time.Time {
+ return t.time
+}
+
+// GetString returns the time in the string format using the RFC3339Nano
+// layout.
+func (t *Timestamp) GetString() string {
+ return t.time.Format(time.RFC3339Nano)
+}
+
+// A type to help sort container statuses based on container names.
+type SortedContainerStatuses []v1.ContainerStatus
+
+func (s SortedContainerStatuses) Len() int { return len(s) }
+func (s SortedContainerStatuses) Swap(i, j int) { s[i], s[j] = s[j], s[i] }
+
+func (s SortedContainerStatuses) Less(i, j int) bool {
+ return s[i].Name < s[j].Name
+}
+
+// SortInitContainerStatuses ensures that statuses are in the order that their
+// init container appears in the pod spec
+func SortInitContainerStatuses(p *v1.Pod, statuses []v1.ContainerStatus) {
+ containers := p.Spec.InitContainers
+ current := 0
+ for _, container := range containers {
+ for j := current; j < len(statuses); j++ {
+ if container.Name == statuses[j].Name {
+ statuses[current], statuses[j] = statuses[j], statuses[current]
+ current++
+ break
+ }
+ }
+ }
+}
+
+// Reservation represents reserved resources for non-pod components.
+type Reservation struct {
+ // System represents resources reserved for non-kubernetes components.
+ System v1.ResourceList
+ // Kubernetes represents resources reserved for kubernetes system components.
+ Kubernetes v1.ResourceList
+}
diff --git a/vendor/k8s.io/kubernetes/pkg/kubelet/util/format/pod.go b/vendor/k8s.io/kubernetes/pkg/kubelet/util/format/pod.go
new file mode 100644
index 000000000..da20d42e8
--- /dev/null
+++ b/vendor/k8s.io/kubernetes/pkg/kubelet/util/format/pod.go
@@ -0,0 +1,72 @@
+/*
+Copyright 2015 The Kubernetes Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package format
+
+import (
+ "fmt"
+ "strings"
+ "time"
+
+ "k8s.io/apimachinery/pkg/types"
+ "k8s.io/kubernetes/pkg/api/v1"
+)
+
+type podHandler func(*v1.Pod) string
+
+// Pod returns a string representing a pod in a consistent human readable format,
+// with pod UID as part of the string.
+func Pod(pod *v1.Pod) string {
+ return PodDesc(pod.Name, pod.Namespace, pod.UID)
+}
+
+// PodDesc returns a string representing a pod in a consistent human readable format,
+// with pod UID as part of the string.
+func PodDesc(podName, podNamespace string, podUID types.UID) string {
+ // Use underscore as the delimiter because it is not allowed in pod name
+ // (DNS subdomain format), while allowed in the container name format.
+ return fmt.Sprintf("%s_%s(%s)", podName, podNamespace, podUID)
+}
+
+// PodWithDeletionTimestamp is the same as Pod. In addition, it prints the
+// deletion timestamp of the pod if it's not nil.
+func PodWithDeletionTimestamp(pod *v1.Pod) string {
+ var deletionTimestamp string
+ if pod.DeletionTimestamp != nil {
+ deletionTimestamp = ":DeletionTimestamp=" + pod.DeletionTimestamp.UTC().Format(time.RFC3339)
+ }
+ return Pod(pod) + deletionTimestamp
+}
+
+// Pods returns a string representating a list of pods in a human
+// readable format.
+func Pods(pods []*v1.Pod) string {
+ return aggregatePods(pods, Pod)
+}
+
+// PodsWithDeletiontimestamps is the same as Pods. In addition, it prints the
+// deletion timestamps of the pods if they are not nil.
+func PodsWithDeletiontimestamps(pods []*v1.Pod) string {
+ return aggregatePods(pods, PodWithDeletionTimestamp)
+}
+
+func aggregatePods(pods []*v1.Pod, handler podHandler) string {
+ podStrings := make([]string, 0, len(pods))
+ for _, pod := range pods {
+ podStrings = append(podStrings, handler(pod))
+ }
+ return fmt.Sprintf(strings.Join(podStrings, ", "))
+}
diff --git a/vendor/k8s.io/kubernetes/pkg/kubelet/util/format/resources.go b/vendor/k8s.io/kubernetes/pkg/kubelet/util/format/resources.go
new file mode 100644
index 000000000..bc50bc9c6
--- /dev/null
+++ b/vendor/k8s.io/kubernetes/pkg/kubelet/util/format/resources.go
@@ -0,0 +1,36 @@
+/*
+Copyright 2016 The Kubernetes Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package format
+
+import (
+ "fmt"
+ "sort"
+ "strings"
+
+ "k8s.io/kubernetes/pkg/api/v1"
+)
+
+// ResourceList returns a string representation of a resource list in a human readable format.
+func ResourceList(resources v1.ResourceList) string {
+ resourceStrings := make([]string, 0, len(resources))
+ for key, value := range resources {
+ resourceStrings = append(resourceStrings, fmt.Sprintf("%v=%v", key, value.String()))
+ }
+ // sort the results for consistent log output
+ sort.Strings(resourceStrings)
+ return strings.Join(resourceStrings, ",")
+}
diff --git a/vendor/k8s.io/kubernetes/pkg/kubelet/util/ioutils/ioutils.go b/vendor/k8s.io/kubernetes/pkg/kubelet/util/ioutils/ioutils.go
new file mode 100644
index 000000000..42f1998c7
--- /dev/null
+++ b/vendor/k8s.io/kubernetes/pkg/kubelet/util/ioutils/ioutils.go
@@ -0,0 +1,37 @@
+/*
+Copyright 2016 The Kubernetes Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package ioutils
+
+import "io"
+
+// writeCloserWrapper represents a WriteCloser whose closer operation is noop.
+type writeCloserWrapper struct {
+ Writer io.Writer
+}
+
+func (w *writeCloserWrapper) Write(buf []byte) (int, error) {
+ return w.Writer.Write(buf)
+}
+
+func (w *writeCloserWrapper) Close() error {
+ return nil
+}
+
+// WriteCloserWrapper returns a writeCloserWrapper.
+func WriteCloserWrapper(w io.Writer) io.WriteCloser {
+ return &writeCloserWrapper{w}
+}