Update kubernetes to v1.15.0-alpha.0
Signed-off-by: Haiyan Meng <haiyanmeng@google.com>
This commit is contained in:
parent
fbce57903c
commit
fd44b9a5d0
14
vendor.conf
14
vendor.conf
@ -68,11 +68,11 @@ google.golang.org/genproto d80a6e20e776b0b17a324d0ba1ab50a39c8e8944
|
|||||||
google.golang.org/grpc v1.12.0
|
google.golang.org/grpc v1.12.0
|
||||||
gopkg.in/inf.v0 3887ee99ecf07df5b447e9b00d9c0b2adaa9f3e4
|
gopkg.in/inf.v0 3887ee99ecf07df5b447e9b00d9c0b2adaa9f3e4
|
||||||
gopkg.in/yaml.v2 v2.2.1
|
gopkg.in/yaml.v2 v2.2.1
|
||||||
k8s.io/api kubernetes-1.13.0
|
k8s.io/api kubernetes-1.15.0-alpha.0
|
||||||
k8s.io/apimachinery kubernetes-1.13.0
|
k8s.io/apimachinery kubernetes-1.15.0-alpha.0
|
||||||
k8s.io/apiserver kubernetes-1.13.0
|
k8s.io/apiserver kubernetes-1.15.0-alpha.0
|
||||||
k8s.io/client-go kubernetes-1.13.0
|
k8s.io/client-go kubernetes-1.15.0-alpha.0
|
||||||
k8s.io/klog 8139d8cb77af419532b33dfa7dd09fbc5f1d344f
|
k8s.io/klog 8145543d67ada0bd556af97faeeb8a65a2651c98
|
||||||
k8s.io/kubernetes v1.13.0
|
k8s.io/kubernetes v1.15.0-alpha.0
|
||||||
k8s.io/utils 0d26856f57b32ec3398579285e5c8a2bfe8c5243
|
k8s.io/utils c2654d5206da6b7b6ace12841e8f359bb89b443c
|
||||||
sigs.k8s.io/yaml v1.1.0
|
sigs.k8s.io/yaml v1.1.0
|
||||||
|
20
vendor/k8s.io/api/README.md
generated
vendored
20
vendor/k8s.io/api/README.md
generated
vendored
@ -1 +1,19 @@
|
|||||||
This repo is still in the experimental stage. Shortly it will contain the schema of the API that are served by the Kubernetes apiserver.
|
# api
|
||||||
|
|
||||||
|
Schema of the external API types that are served by the Kubernetes API server.
|
||||||
|
|
||||||
|
## Purpose
|
||||||
|
|
||||||
|
This library is the canonical location of the Kubernetes API definition. Most likely interaction with this repository is as a dependency of client-go.
|
||||||
|
|
||||||
|
## Compatibility
|
||||||
|
|
||||||
|
Branches track Kubernetes branches and are compatible with that repo.
|
||||||
|
|
||||||
|
## Where does it come from?
|
||||||
|
|
||||||
|
`api` is synced from https://github.com/kubernetes/kubernetes/blob/master/staging/src/k8s.io/api. Code changes are made in that location, merged into `k8s.io/kubernetes` and later synced here.
|
||||||
|
|
||||||
|
## Things you should *NOT* do
|
||||||
|
|
||||||
|
1. https://github.com/kubernetes/kubernetes/blob/master/staging/src/k8s.io/api is synced to k8s.io/api. All changes must be made in the former. The latter is read-only.
|
||||||
|
1645
vendor/k8s.io/api/core/v1/generated.pb.go
generated
vendored
1645
vendor/k8s.io/api/core/v1/generated.pb.go
generated
vendored
File diff suppressed because it is too large
Load Diff
15
vendor/k8s.io/api/core/v1/generated.proto
generated
vendored
15
vendor/k8s.io/api/core/v1/generated.proto
generated
vendored
@ -3141,7 +3141,7 @@ message PodSpec {
|
|||||||
// If specified, all readiness gates will be evaluated for pod readiness.
|
// If specified, all readiness gates will be evaluated for pod readiness.
|
||||||
// A pod is ready when all its containers are ready AND
|
// A pod is ready when all its containers are ready AND
|
||||||
// all conditions specified in the readiness gates have status equal to "True"
|
// all conditions specified in the readiness gates have status equal to "True"
|
||||||
// More info: https://github.com/kubernetes/community/blob/master/keps/sig-network/0007-pod-ready%2B%2B.md
|
// More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md
|
||||||
// +optional
|
// +optional
|
||||||
repeated PodReadinessGate readinessGates = 28;
|
repeated PodReadinessGate readinessGates = 28;
|
||||||
|
|
||||||
@ -3149,13 +3149,14 @@ message PodSpec {
|
|||||||
// to run this pod. If no RuntimeClass resource matches the named class, the pod will not be run.
|
// to run this pod. If no RuntimeClass resource matches the named class, the pod will not be run.
|
||||||
// If unset or empty, the "legacy" RuntimeClass will be used, which is an implicit class with an
|
// If unset or empty, the "legacy" RuntimeClass will be used, which is an implicit class with an
|
||||||
// empty definition that uses the default runtime handler.
|
// empty definition that uses the default runtime handler.
|
||||||
// More info: https://github.com/kubernetes/community/blob/master/keps/sig-node/0014-runtime-class.md
|
// More info: https://git.k8s.io/enhancements/keps/sig-node/runtime-class.md
|
||||||
// This is an alpha feature and may change in the future.
|
// This is an alpha feature and may change in the future.
|
||||||
// +optional
|
// +optional
|
||||||
optional string runtimeClassName = 29;
|
optional string runtimeClassName = 29;
|
||||||
|
|
||||||
// EnableServiceLinks indicates whether information about services should be injected into pod's
|
// EnableServiceLinks indicates whether information about services should be injected into pod's
|
||||||
// environment variables, matching the syntax of Docker links.
|
// environment variables, matching the syntax of Docker links.
|
||||||
|
// Optional: Defaults to true.
|
||||||
// +optional
|
// +optional
|
||||||
optional bool enableServiceLinks = 30;
|
optional bool enableServiceLinks = 30;
|
||||||
}
|
}
|
||||||
@ -3421,6 +3422,11 @@ message QuobyteVolumeSource {
|
|||||||
// Default is no group
|
// Default is no group
|
||||||
// +optional
|
// +optional
|
||||||
optional string group = 5;
|
optional string group = 5;
|
||||||
|
|
||||||
|
// Tenant owning the given Quobyte volume in the Backend
|
||||||
|
// Used with dynamically provisioned Quobyte volumes, value is set by the plugin
|
||||||
|
// +optional
|
||||||
|
optional string tenant = 6;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Represents a Rados Block Device mount that lasts the lifetime of a pod.
|
// Represents a Rados Block Device mount that lasts the lifetime of a pod.
|
||||||
@ -4247,6 +4253,9 @@ message ServiceSpec {
|
|||||||
// More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
|
// More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
|
||||||
// +patchMergeKey=port
|
// +patchMergeKey=port
|
||||||
// +patchStrategy=merge
|
// +patchStrategy=merge
|
||||||
|
// +listType=map
|
||||||
|
// +listMapKey=port
|
||||||
|
// +listMapKey=protocol
|
||||||
repeated ServicePort ports = 1;
|
repeated ServicePort ports = 1;
|
||||||
|
|
||||||
// Route service traffic to pods with label keys and values matching this
|
// Route service traffic to pods with label keys and values matching this
|
||||||
@ -4283,7 +4292,7 @@ message ServiceSpec {
|
|||||||
// "LoadBalancer" builds on NodePort and creates an
|
// "LoadBalancer" builds on NodePort and creates an
|
||||||
// external load-balancer (if supported in the current cloud) which routes
|
// external load-balancer (if supported in the current cloud) which routes
|
||||||
// to the clusterIP.
|
// to the clusterIP.
|
||||||
// More info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services---service-types
|
// More info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types
|
||||||
// +optional
|
// +optional
|
||||||
optional string type = 4;
|
optional string type = 4;
|
||||||
|
|
||||||
|
19
vendor/k8s.io/api/core/v1/types.go
generated
vendored
19
vendor/k8s.io/api/core/v1/types.go
generated
vendored
@ -467,7 +467,7 @@ type PersistentVolumeClaimSpec struct {
|
|||||||
// In the future, we plan to support more data source types and the behavior
|
// In the future, we plan to support more data source types and the behavior
|
||||||
// of the provisioner may change.
|
// of the provisioner may change.
|
||||||
// +optional
|
// +optional
|
||||||
DataSource *TypedLocalObjectReference `json:"dataSource" protobuf:"bytes,7,opt,name=dataSource"`
|
DataSource *TypedLocalObjectReference `json:"dataSource,omitempty" protobuf:"bytes,7,opt,name=dataSource"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// PersistentVolumeClaimConditionType is a valid value of PersistentVolumeClaimCondition.Type
|
// PersistentVolumeClaimConditionType is a valid value of PersistentVolumeClaimCondition.Type
|
||||||
@ -523,7 +523,7 @@ type PersistentVolumeClaimStatus struct {
|
|||||||
type PersistentVolumeAccessMode string
|
type PersistentVolumeAccessMode string
|
||||||
|
|
||||||
const (
|
const (
|
||||||
// can be mounted read/write mode to exactly 1 host
|
// can be mounted in read/write mode to exactly 1 host
|
||||||
ReadWriteOnce PersistentVolumeAccessMode = "ReadWriteOnce"
|
ReadWriteOnce PersistentVolumeAccessMode = "ReadWriteOnce"
|
||||||
// can be mounted in read-only mode to many hosts
|
// can be mounted in read-only mode to many hosts
|
||||||
ReadOnlyMany PersistentVolumeAccessMode = "ReadOnlyMany"
|
ReadOnlyMany PersistentVolumeAccessMode = "ReadOnlyMany"
|
||||||
@ -955,6 +955,11 @@ type QuobyteVolumeSource struct {
|
|||||||
// Default is no group
|
// Default is no group
|
||||||
// +optional
|
// +optional
|
||||||
Group string `json:"group,omitempty" protobuf:"bytes,5,opt,name=group"`
|
Group string `json:"group,omitempty" protobuf:"bytes,5,opt,name=group"`
|
||||||
|
|
||||||
|
// Tenant owning the given Quobyte volume in the Backend
|
||||||
|
// Used with dynamically provisioned Quobyte volumes, value is set by the plugin
|
||||||
|
// +optional
|
||||||
|
Tenant string `json:"tenant,omitempty" protobuf:"bytes,6,opt,name=tenant"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// FlexPersistentVolumeSource represents a generic persistent volume resource that is
|
// FlexPersistentVolumeSource represents a generic persistent volume resource that is
|
||||||
@ -2907,19 +2912,20 @@ type PodSpec struct {
|
|||||||
// If specified, all readiness gates will be evaluated for pod readiness.
|
// If specified, all readiness gates will be evaluated for pod readiness.
|
||||||
// A pod is ready when all its containers are ready AND
|
// A pod is ready when all its containers are ready AND
|
||||||
// all conditions specified in the readiness gates have status equal to "True"
|
// all conditions specified in the readiness gates have status equal to "True"
|
||||||
// More info: https://github.com/kubernetes/community/blob/master/keps/sig-network/0007-pod-ready%2B%2B.md
|
// More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md
|
||||||
// +optional
|
// +optional
|
||||||
ReadinessGates []PodReadinessGate `json:"readinessGates,omitempty" protobuf:"bytes,28,opt,name=readinessGates"`
|
ReadinessGates []PodReadinessGate `json:"readinessGates,omitempty" protobuf:"bytes,28,opt,name=readinessGates"`
|
||||||
// RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used
|
// RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used
|
||||||
// to run this pod. If no RuntimeClass resource matches the named class, the pod will not be run.
|
// to run this pod. If no RuntimeClass resource matches the named class, the pod will not be run.
|
||||||
// If unset or empty, the "legacy" RuntimeClass will be used, which is an implicit class with an
|
// If unset or empty, the "legacy" RuntimeClass will be used, which is an implicit class with an
|
||||||
// empty definition that uses the default runtime handler.
|
// empty definition that uses the default runtime handler.
|
||||||
// More info: https://github.com/kubernetes/community/blob/master/keps/sig-node/0014-runtime-class.md
|
// More info: https://git.k8s.io/enhancements/keps/sig-node/runtime-class.md
|
||||||
// This is an alpha feature and may change in the future.
|
// This is an alpha feature and may change in the future.
|
||||||
// +optional
|
// +optional
|
||||||
RuntimeClassName *string `json:"runtimeClassName,omitempty" protobuf:"bytes,29,opt,name=runtimeClassName"`
|
RuntimeClassName *string `json:"runtimeClassName,omitempty" protobuf:"bytes,29,opt,name=runtimeClassName"`
|
||||||
// EnableServiceLinks indicates whether information about services should be injected into pod's
|
// EnableServiceLinks indicates whether information about services should be injected into pod's
|
||||||
// environment variables, matching the syntax of Docker links.
|
// environment variables, matching the syntax of Docker links.
|
||||||
|
// Optional: Defaults to true.
|
||||||
// +optional
|
// +optional
|
||||||
EnableServiceLinks *bool `json:"enableServiceLinks,omitempty" protobuf:"varint,30,opt,name=enableServiceLinks"`
|
EnableServiceLinks *bool `json:"enableServiceLinks,omitempty" protobuf:"varint,30,opt,name=enableServiceLinks"`
|
||||||
}
|
}
|
||||||
@ -3450,6 +3456,9 @@ type ServiceSpec struct {
|
|||||||
// More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
|
// More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
|
||||||
// +patchMergeKey=port
|
// +patchMergeKey=port
|
||||||
// +patchStrategy=merge
|
// +patchStrategy=merge
|
||||||
|
// +listType=map
|
||||||
|
// +listMapKey=port
|
||||||
|
// +listMapKey=protocol
|
||||||
Ports []ServicePort `json:"ports,omitempty" patchStrategy:"merge" patchMergeKey:"port" protobuf:"bytes,1,rep,name=ports"`
|
Ports []ServicePort `json:"ports,omitempty" patchStrategy:"merge" patchMergeKey:"port" protobuf:"bytes,1,rep,name=ports"`
|
||||||
|
|
||||||
// Route service traffic to pods with label keys and values matching this
|
// Route service traffic to pods with label keys and values matching this
|
||||||
@ -3486,7 +3495,7 @@ type ServiceSpec struct {
|
|||||||
// "LoadBalancer" builds on NodePort and creates an
|
// "LoadBalancer" builds on NodePort and creates an
|
||||||
// external load-balancer (if supported in the current cloud) which routes
|
// external load-balancer (if supported in the current cloud) which routes
|
||||||
// to the clusterIP.
|
// to the clusterIP.
|
||||||
// More info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services---service-types
|
// More info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types
|
||||||
// +optional
|
// +optional
|
||||||
Type ServiceType `json:"type,omitempty" protobuf:"bytes,4,opt,name=type,casttype=ServiceType"`
|
Type ServiceType `json:"type,omitempty" protobuf:"bytes,4,opt,name=type,casttype=ServiceType"`
|
||||||
|
|
||||||
|
7
vendor/k8s.io/api/core/v1/types_swagger_doc_generated.go
generated
vendored
7
vendor/k8s.io/api/core/v1/types_swagger_doc_generated.go
generated
vendored
@ -1538,9 +1538,9 @@ var map_PodSpec = map[string]string{
|
|||||||
"priorityClassName": "If specified, indicates the pod's priority. \"system-node-critical\" and \"system-cluster-critical\" are two special keywords which indicate the highest priorities with the former being the highest priority. Any other name must be defined by creating a PriorityClass object with that name. If not specified, the pod priority will be default or zero if there is no default.",
|
"priorityClassName": "If specified, indicates the pod's priority. \"system-node-critical\" and \"system-cluster-critical\" are two special keywords which indicate the highest priorities with the former being the highest priority. Any other name must be defined by creating a PriorityClass object with that name. If not specified, the pod priority will be default or zero if there is no default.",
|
||||||
"priority": "The priority value. Various system components use this field to find the priority of the pod. When Priority Admission Controller is enabled, it prevents users from setting this field. The admission controller populates this field from PriorityClassName. The higher the value, the higher the priority.",
|
"priority": "The priority value. Various system components use this field to find the priority of the pod. When Priority Admission Controller is enabled, it prevents users from setting this field. The admission controller populates this field from PriorityClassName. The higher the value, the higher the priority.",
|
||||||
"dnsConfig": "Specifies the DNS parameters of a pod. Parameters specified here will be merged to the generated DNS configuration based on DNSPolicy.",
|
"dnsConfig": "Specifies the DNS parameters of a pod. Parameters specified here will be merged to the generated DNS configuration based on DNSPolicy.",
|
||||||
"readinessGates": "If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to \"True\" More info: https://github.com/kubernetes/community/blob/master/keps/sig-network/0007-pod-ready%2B%2B.md",
|
"readinessGates": "If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to \"True\" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md",
|
||||||
"runtimeClassName": "RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used to run this pod. If no RuntimeClass resource matches the named class, the pod will not be run. If unset or empty, the \"legacy\" RuntimeClass will be used, which is an implicit class with an empty definition that uses the default runtime handler. More info: https://github.com/kubernetes/community/blob/master/keps/sig-node/0014-runtime-class.md This is an alpha feature and may change in the future.",
|
"runtimeClassName": "RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used to run this pod. If no RuntimeClass resource matches the named class, the pod will not be run. If unset or empty, the \"legacy\" RuntimeClass will be used, which is an implicit class with an empty definition that uses the default runtime handler. More info: https://git.k8s.io/enhancements/keps/sig-node/runtime-class.md This is an alpha feature and may change in the future.",
|
||||||
"enableServiceLinks": "EnableServiceLinks indicates whether information about services should be injected into pod's environment variables, matching the syntax of Docker links.",
|
"enableServiceLinks": "EnableServiceLinks indicates whether information about services should be injected into pod's environment variables, matching the syntax of Docker links. Optional: Defaults to true.",
|
||||||
}
|
}
|
||||||
|
|
||||||
func (PodSpec) SwaggerDoc() map[string]string {
|
func (PodSpec) SwaggerDoc() map[string]string {
|
||||||
@ -1678,6 +1678,7 @@ var map_QuobyteVolumeSource = map[string]string{
|
|||||||
"readOnly": "ReadOnly here will force the Quobyte volume to be mounted with read-only permissions. Defaults to false.",
|
"readOnly": "ReadOnly here will force the Quobyte volume to be mounted with read-only permissions. Defaults to false.",
|
||||||
"user": "User to map volume access to Defaults to serivceaccount user",
|
"user": "User to map volume access to Defaults to serivceaccount user",
|
||||||
"group": "Group to map volume access to Default is no group",
|
"group": "Group to map volume access to Default is no group",
|
||||||
|
"tenant": "Tenant owning the given Quobyte volume in the Backend Used with dynamically provisioned Quobyte volumes, value is set by the plugin",
|
||||||
}
|
}
|
||||||
|
|
||||||
func (QuobyteVolumeSource) SwaggerDoc() map[string]string {
|
func (QuobyteVolumeSource) SwaggerDoc() map[string]string {
|
||||||
|
36
vendor/k8s.io/api/core/v1/well_known_labels.go
generated
vendored
Normal file
36
vendor/k8s.io/api/core/v1/well_known_labels.go
generated
vendored
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2019 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 v1
|
||||||
|
|
||||||
|
const (
|
||||||
|
LabelHostname = "kubernetes.io/hostname"
|
||||||
|
LabelZoneFailureDomain = "failure-domain.beta.kubernetes.io/zone"
|
||||||
|
LabelZoneRegion = "failure-domain.beta.kubernetes.io/region"
|
||||||
|
|
||||||
|
LabelInstanceType = "beta.kubernetes.io/instance-type"
|
||||||
|
|
||||||
|
LabelOSStable = "kubernetes.io/os"
|
||||||
|
LabelArchStable = "kubernetes.io/arch"
|
||||||
|
|
||||||
|
// LabelNamespaceSuffixKubelet is an allowed label namespace suffix kubelets can self-set ([*.]kubelet.kubernetes.io/*)
|
||||||
|
LabelNamespaceSuffixKubelet = "kubelet.kubernetes.io"
|
||||||
|
// LabelNamespaceSuffixNode is an allowed label namespace suffix kubelets can self-set ([*.]node.kubernetes.io/*)
|
||||||
|
LabelNamespaceSuffixNode = "node.kubernetes.io"
|
||||||
|
|
||||||
|
// LabelNamespaceNodeRestriction is a forbidden label namespace that kubelets may not self-set when the NodeRestriction admission plugin is enabled
|
||||||
|
LabelNamespaceNodeRestriction = "node-restriction.kubernetes.io"
|
||||||
|
)
|
38
vendor/k8s.io/apimachinery/pkg/api/errors/errors.go
generated
vendored
38
vendor/k8s.io/apimachinery/pkg/api/errors/errors.go
generated
vendored
@ -184,6 +184,20 @@ func NewConflict(qualifiedResource schema.GroupResource, name string, err error)
|
|||||||
}}
|
}}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// NewApplyConflict returns an error including details on the requests apply conflicts
|
||||||
|
func NewApplyConflict(causes []metav1.StatusCause, message string) *StatusError {
|
||||||
|
return &StatusError{ErrStatus: metav1.Status{
|
||||||
|
Status: metav1.StatusFailure,
|
||||||
|
Code: http.StatusConflict,
|
||||||
|
Reason: metav1.StatusReasonConflict,
|
||||||
|
Details: &metav1.StatusDetails{
|
||||||
|
// TODO: Get obj details here?
|
||||||
|
Causes: causes,
|
||||||
|
},
|
||||||
|
Message: message,
|
||||||
|
}}
|
||||||
|
}
|
||||||
|
|
||||||
// NewGone returns an error indicating the item no longer available at the server and no forwarding address is known.
|
// NewGone returns an error indicating the item no longer available at the server and no forwarding address is known.
|
||||||
func NewGone(message string) *StatusError {
|
func NewGone(message string) *StatusError {
|
||||||
return &StatusError{metav1.Status{
|
return &StatusError{metav1.Status{
|
||||||
@ -341,6 +355,17 @@ func NewTooManyRequestsError(message string) *StatusError {
|
|||||||
}}
|
}}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// NewRequestEntityTooLargeError returns an error indicating that the request
|
||||||
|
// entity was too large.
|
||||||
|
func NewRequestEntityTooLargeError(message string) *StatusError {
|
||||||
|
return &StatusError{metav1.Status{
|
||||||
|
Status: metav1.StatusFailure,
|
||||||
|
Code: http.StatusRequestEntityTooLarge,
|
||||||
|
Reason: metav1.StatusReasonRequestEntityTooLarge,
|
||||||
|
Message: fmt.Sprintf("Request entity too large: %s", message),
|
||||||
|
}}
|
||||||
|
}
|
||||||
|
|
||||||
// NewGenericServerResponse returns a new error for server responses that are not in a recognizable form.
|
// NewGenericServerResponse returns a new error for server responses that are not in a recognizable form.
|
||||||
func NewGenericServerResponse(code int, verb string, qualifiedResource schema.GroupResource, name, serverMessage string, retryAfterSeconds int, isUnexpectedResponse bool) *StatusError {
|
func NewGenericServerResponse(code int, verb string, qualifiedResource schema.GroupResource, name, serverMessage string, retryAfterSeconds int, isUnexpectedResponse bool) *StatusError {
|
||||||
reason := metav1.StatusReasonUnknown
|
reason := metav1.StatusReasonUnknown
|
||||||
@ -527,6 +552,19 @@ func IsTooManyRequests(err error) bool {
|
|||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// IsRequestEntityTooLargeError determines if err is an error which indicates
|
||||||
|
// the request entity is too large.
|
||||||
|
func IsRequestEntityTooLargeError(err error) bool {
|
||||||
|
if ReasonForError(err) == metav1.StatusReasonRequestEntityTooLarge {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
switch t := err.(type) {
|
||||||
|
case APIStatus:
|
||||||
|
return t.Status().Code == http.StatusRequestEntityTooLarge
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
// IsUnexpectedServerError returns true if the server response was not in the expected API format,
|
// IsUnexpectedServerError returns true if the server response was not in the expected API format,
|
||||||
// and may be the result of another HTTP actor.
|
// and may be the result of another HTTP actor.
|
||||||
func IsUnexpectedServerError(err error) bool {
|
func IsUnexpectedServerError(err error) bool {
|
||||||
|
2
vendor/k8s.io/apimachinery/pkg/api/resource/quantity.go
generated
vendored
2
vendor/k8s.io/apimachinery/pkg/api/resource/quantity.go
generated
vendored
@ -680,7 +680,7 @@ func NewScaledQuantity(value int64, scale Scale) *Quantity {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Value returns the value of q; any fractional part will be lost.
|
// Value returns the unscaled value of q rounded up to the nearest integer away from 0.
|
||||||
func (q *Quantity) Value() int64 {
|
func (q *Quantity) Value() int64 {
|
||||||
return q.ScaledValue(0)
|
return q.ScaledValue(0)
|
||||||
}
|
}
|
||||||
|
2
vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion/conversion.go
generated
vendored
2
vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion/conversion.go
generated
vendored
@ -28,7 +28,6 @@ func Convert_internalversion_ListOptions_To_v1_ListOptions(in *ListOptions, out
|
|||||||
if err := metav1.Convert_labels_Selector_To_string(&in.LabelSelector, &out.LabelSelector, s); err != nil {
|
if err := metav1.Convert_labels_Selector_To_string(&in.LabelSelector, &out.LabelSelector, s); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
out.IncludeUninitialized = in.IncludeUninitialized
|
|
||||||
out.ResourceVersion = in.ResourceVersion
|
out.ResourceVersion = in.ResourceVersion
|
||||||
out.TimeoutSeconds = in.TimeoutSeconds
|
out.TimeoutSeconds = in.TimeoutSeconds
|
||||||
out.Watch = in.Watch
|
out.Watch = in.Watch
|
||||||
@ -44,7 +43,6 @@ func Convert_v1_ListOptions_To_internalversion_ListOptions(in *metav1.ListOption
|
|||||||
if err := metav1.Convert_string_To_labels_Selector(&in.LabelSelector, &out.LabelSelector, s); err != nil {
|
if err := metav1.Convert_string_To_labels_Selector(&in.LabelSelector, &out.LabelSelector, s); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
out.IncludeUninitialized = in.IncludeUninitialized
|
|
||||||
out.ResourceVersion = in.ResourceVersion
|
out.ResourceVersion = in.ResourceVersion
|
||||||
out.TimeoutSeconds = in.TimeoutSeconds
|
out.TimeoutSeconds = in.TimeoutSeconds
|
||||||
out.Watch = in.Watch
|
out.Watch = in.Watch
|
||||||
|
2
vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion/doc.go
generated
vendored
2
vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion/doc.go
generated
vendored
@ -17,4 +17,4 @@ limitations under the License.
|
|||||||
// +k8s:deepcopy-gen=package
|
// +k8s:deepcopy-gen=package
|
||||||
// +k8s:conversion-gen=k8s.io/apimachinery/pkg/apis/meta/v1
|
// +k8s:conversion-gen=k8s.io/apimachinery/pkg/apis/meta/v1
|
||||||
|
|
||||||
package internalversion
|
package internalversion // import "k8s.io/apimachinery/pkg/apis/meta/internalversion"
|
||||||
|
3
vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion/types.go
generated
vendored
3
vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion/types.go
generated
vendored
@ -33,9 +33,6 @@ type ListOptions struct {
|
|||||||
LabelSelector labels.Selector
|
LabelSelector labels.Selector
|
||||||
// A selector based on fields
|
// A selector based on fields
|
||||||
FieldSelector fields.Selector
|
FieldSelector fields.Selector
|
||||||
// If true, partially initialized resources are included in the response.
|
|
||||||
// +optional
|
|
||||||
IncludeUninitialized bool
|
|
||||||
// If true, watch for changes to this list
|
// If true, watch for changes to this list
|
||||||
Watch bool
|
Watch bool
|
||||||
// When specified with a watch call, shows changes that occur after that particular version of a resource.
|
// When specified with a watch call, shows changes that occur after that particular version of a resource.
|
||||||
|
2
vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion/zz_generated.conversion.go
generated
vendored
2
vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion/zz_generated.conversion.go
generated
vendored
@ -117,7 +117,6 @@ func autoConvert_internalversion_ListOptions_To_v1_ListOptions(in *ListOptions,
|
|||||||
if err := v1.Convert_fields_Selector_To_string(&in.FieldSelector, &out.FieldSelector, s); err != nil {
|
if err := v1.Convert_fields_Selector_To_string(&in.FieldSelector, &out.FieldSelector, s); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
out.IncludeUninitialized = in.IncludeUninitialized
|
|
||||||
out.Watch = in.Watch
|
out.Watch = in.Watch
|
||||||
out.ResourceVersion = in.ResourceVersion
|
out.ResourceVersion = in.ResourceVersion
|
||||||
out.TimeoutSeconds = (*int64)(unsafe.Pointer(in.TimeoutSeconds))
|
out.TimeoutSeconds = (*int64)(unsafe.Pointer(in.TimeoutSeconds))
|
||||||
@ -133,7 +132,6 @@ func autoConvert_v1_ListOptions_To_internalversion_ListOptions(in *v1.ListOption
|
|||||||
if err := v1.Convert_string_To_fields_Selector(&in.FieldSelector, &out.FieldSelector, s); err != nil {
|
if err := v1.Convert_string_To_fields_Selector(&in.FieldSelector, &out.FieldSelector, s); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
out.IncludeUninitialized = in.IncludeUninitialized
|
|
||||||
out.Watch = in.Watch
|
out.Watch = in.Watch
|
||||||
out.ResourceVersion = in.ResourceVersion
|
out.ResourceVersion = in.ResourceVersion
|
||||||
out.TimeoutSeconds = (*int64)(unsafe.Pointer(in.TimeoutSeconds))
|
out.TimeoutSeconds = (*int64)(unsafe.Pointer(in.TimeoutSeconds))
|
||||||
|
10
vendor/k8s.io/apimachinery/pkg/apis/meta/v1/duration.go
generated
vendored
10
vendor/k8s.io/apimachinery/pkg/apis/meta/v1/duration.go
generated
vendored
@ -48,3 +48,13 @@ func (d *Duration) UnmarshalJSON(b []byte) error {
|
|||||||
func (d Duration) MarshalJSON() ([]byte, error) {
|
func (d Duration) MarshalJSON() ([]byte, error) {
|
||||||
return json.Marshal(d.Duration.String())
|
return json.Marshal(d.Duration.String())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// OpenAPISchemaType is used by the kube-openapi generator when constructing
|
||||||
|
// the OpenAPI spec of this type.
|
||||||
|
//
|
||||||
|
// See: https://github.com/kubernetes/kube-openapi/tree/master/pkg/generators
|
||||||
|
func (_ Duration) OpenAPISchemaType() []string { return []string{"string"} }
|
||||||
|
|
||||||
|
// OpenAPISchemaFormat is used by the kube-openapi generator when constructing
|
||||||
|
// the OpenAPI spec of this type.
|
||||||
|
func (_ Duration) OpenAPISchemaFormat() string { return "" }
|
||||||
|
1324
vendor/k8s.io/apimachinery/pkg/apis/meta/v1/generated.pb.go
generated
vendored
1324
vendor/k8s.io/apimachinery/pkg/apis/meta/v1/generated.pb.go
generated
vendored
File diff suppressed because it is too large
Load Diff
98
vendor/k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto
generated
vendored
98
vendor/k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto
generated
vendored
@ -92,6 +92,16 @@ message APIResource {
|
|||||||
|
|
||||||
// categories is a list of the grouped resources this resource belongs to (e.g. 'all')
|
// categories is a list of the grouped resources this resource belongs to (e.g. 'all')
|
||||||
repeated string categories = 7;
|
repeated string categories = 7;
|
||||||
|
|
||||||
|
// The hash value of the storage version, the version this resource is
|
||||||
|
// converted to when written to the data store. Value must be treated
|
||||||
|
// as opaque by clients. Only equality comparison on the value is valid.
|
||||||
|
// This is an alpha feature and may change or be removed in the future.
|
||||||
|
// The field is populated by the apiserver only if the
|
||||||
|
// StorageVersionHash feature gate is enabled.
|
||||||
|
// This field will remain optional even if it graduates.
|
||||||
|
// +optional
|
||||||
|
optional string storageVersionHash = 10;
|
||||||
}
|
}
|
||||||
|
|
||||||
// APIResourceList is a list of APIResource, it is used to expose the name of the
|
// APIResourceList is a list of APIResource, it is used to expose the name of the
|
||||||
@ -133,10 +143,6 @@ message CreateOptions {
|
|||||||
// - All: all dry run stages will be processed
|
// - All: all dry run stages will be processed
|
||||||
// +optional
|
// +optional
|
||||||
repeated string dryRun = 1;
|
repeated string dryRun = 1;
|
||||||
|
|
||||||
// If IncludeUninitialized is specified, the object may be
|
|
||||||
// returned without completing initialization.
|
|
||||||
optional bool includeUninitialized = 2;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeleteOptions may be provided when deleting an API object.
|
// DeleteOptions may be provided when deleting an API object.
|
||||||
@ -196,6 +202,23 @@ message ExportOptions {
|
|||||||
optional bool exact = 2;
|
optional bool exact = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Fields stores a set of fields in a data structure like a Trie.
|
||||||
|
// To understand how this is used, see: https://github.com/kubernetes-sigs/structured-merge-diff
|
||||||
|
message Fields {
|
||||||
|
// Map stores a set of fields in a data structure like a Trie.
|
||||||
|
//
|
||||||
|
// Each key is either a '.' representing the field itself, and will always map to an empty set,
|
||||||
|
// or a string representing a sub-field or item. The string will follow one of these four formats:
|
||||||
|
// 'f:<name>', where <name> is the name of a field in a struct, or key in a map
|
||||||
|
// 'v:<value>', where <value> is the exact json formatted value of a list item
|
||||||
|
// 'i:<index>', where <index> is position of a item in a list
|
||||||
|
// 'k:<keys>', where <keys> is a map of a list item's key fields to their unique values
|
||||||
|
// If a key maps to an empty Fields value, the field that key represents is part of the set.
|
||||||
|
//
|
||||||
|
// The exact format is defined in k8s.io/apiserver/pkg/endpoints/handlers/fieldmanager/internal
|
||||||
|
map<string, Fields> map = 1;
|
||||||
|
}
|
||||||
|
|
||||||
// GetOptions is the standard query options to the standard REST get call.
|
// GetOptions is the standard query options to the standard REST get call.
|
||||||
message GetOptions {
|
message GetOptions {
|
||||||
// When specified:
|
// When specified:
|
||||||
@ -203,10 +226,6 @@ message GetOptions {
|
|||||||
// - if it's 0, then we simply return what we currently have in cache, no guarantee;
|
// - if it's 0, then we simply return what we currently have in cache, no guarantee;
|
||||||
// - if set to non zero, then the result is at least as fresh as given rv.
|
// - if set to non zero, then the result is at least as fresh as given rv.
|
||||||
optional string resourceVersion = 1;
|
optional string resourceVersion = 1;
|
||||||
|
|
||||||
// If true, partially initialized resources are included in the response.
|
|
||||||
// +optional
|
|
||||||
optional bool includeUninitialized = 2;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// GroupKind specifies a Group and a Kind, but does not force a version. This is useful for identifying
|
// GroupKind specifies a Group and a Kind, but does not force a version. This is useful for identifying
|
||||||
@ -380,10 +399,6 @@ message ListOptions {
|
|||||||
// +optional
|
// +optional
|
||||||
optional string fieldSelector = 2;
|
optional string fieldSelector = 2;
|
||||||
|
|
||||||
// If true, partially initialized resources are included in the response.
|
|
||||||
// +optional
|
|
||||||
optional bool includeUninitialized = 6;
|
|
||||||
|
|
||||||
// Watch for changes to the described resources and return them as a stream of
|
// Watch for changes to the described resources and return them as a stream of
|
||||||
// add, update, and remove notifications. Specify resourceVersion.
|
// add, update, and remove notifications. Specify resourceVersion.
|
||||||
// +optional
|
// +optional
|
||||||
@ -438,6 +453,31 @@ message ListOptions {
|
|||||||
optional string continue = 8;
|
optional string continue = 8;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource
|
||||||
|
// that the fieldset applies to.
|
||||||
|
message ManagedFieldsEntry {
|
||||||
|
// Manager is an identifier of the workflow managing these fields.
|
||||||
|
optional string manager = 1;
|
||||||
|
|
||||||
|
// Operation is the type of operation which lead to this ManagedFieldsEntry being created.
|
||||||
|
// The only valid values for this field are 'Apply' and 'Update'.
|
||||||
|
optional string operation = 2;
|
||||||
|
|
||||||
|
// APIVersion defines the version of this resource that this field set
|
||||||
|
// applies to. The format is "group/version" just like the top-level
|
||||||
|
// APIVersion field. It is necessary to track the version of a field
|
||||||
|
// set because it cannot be automatically converted.
|
||||||
|
optional string apiVersion = 3;
|
||||||
|
|
||||||
|
// Time is timestamp of when these fields were set. It should always be empty if Operation is 'Apply'
|
||||||
|
// +optional
|
||||||
|
optional Time time = 4;
|
||||||
|
|
||||||
|
// Fields identifies a set of fields.
|
||||||
|
// +optional
|
||||||
|
optional Fields fields = 5;
|
||||||
|
}
|
||||||
|
|
||||||
// MicroTime is version of Time with microsecond level precision.
|
// MicroTime is version of Time with microsecond level precision.
|
||||||
//
|
//
|
||||||
// +protobuf.options.marshal=false
|
// +protobuf.options.marshal=false
|
||||||
@ -602,6 +642,8 @@ message ObjectMeta {
|
|||||||
// When an object is created, the system will populate this list with the current set of initializers.
|
// When an object is created, the system will populate this list with the current set of initializers.
|
||||||
// Only privileged users may set or modify this list. Once it is empty, it may not be modified further
|
// Only privileged users may set or modify this list. Once it is empty, it may not be modified further
|
||||||
// by any user.
|
// by any user.
|
||||||
|
//
|
||||||
|
// DEPRECATED - initializers are an alpha field and will be removed in v1.15.
|
||||||
optional Initializers initializers = 16;
|
optional Initializers initializers = 16;
|
||||||
|
|
||||||
// Must be empty before the object is deleted from the registry. Each entry
|
// Must be empty before the object is deleted from the registry. Each entry
|
||||||
@ -617,6 +659,19 @@ message ObjectMeta {
|
|||||||
// This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.
|
// This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.
|
||||||
// +optional
|
// +optional
|
||||||
optional string clusterName = 15;
|
optional string clusterName = 15;
|
||||||
|
|
||||||
|
// ManagedFields maps workflow-id and version to the set of fields
|
||||||
|
// that are managed by that workflow. This is mostly for internal
|
||||||
|
// housekeeping, and users typically shouldn't need to set or
|
||||||
|
// understand this field. A workflow can be the user's name, a
|
||||||
|
// controller's name, or the name of a specific apply path like
|
||||||
|
// "ci-cd". The set of fields is always in the version that the
|
||||||
|
// workflow used when modifying the object.
|
||||||
|
//
|
||||||
|
// This field is alpha and can be changed or removed without notice.
|
||||||
|
//
|
||||||
|
// +optional
|
||||||
|
repeated ManagedFieldsEntry managedFields = 17;
|
||||||
}
|
}
|
||||||
|
|
||||||
// OwnerReference contains enough information to let you identify an owning
|
// OwnerReference contains enough information to let you identify an owning
|
||||||
@ -656,6 +711,24 @@ message OwnerReference {
|
|||||||
message Patch {
|
message Patch {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// PatchOptions may be provided when patching an API object.
|
||||||
|
// PatchOptions is meant to be a superset of UpdateOptions.
|
||||||
|
message PatchOptions {
|
||||||
|
// When present, indicates that modifications should not be
|
||||||
|
// persisted. An invalid or unrecognized dryRun directive will
|
||||||
|
// result in an error response and no further processing of the
|
||||||
|
// request. Valid values are:
|
||||||
|
// - All: all dry run stages will be processed
|
||||||
|
// +optional
|
||||||
|
repeated string dryRun = 1;
|
||||||
|
|
||||||
|
// Force is going to "force" Apply requests. It means user will
|
||||||
|
// re-acquire conflicting fields owned by other people. Force
|
||||||
|
// flag must be unset for non-apply patch requests.
|
||||||
|
// +optional
|
||||||
|
optional bool force = 2;
|
||||||
|
}
|
||||||
|
|
||||||
// Preconditions must be fulfilled before an operation (update, delete, etc.) is carried out.
|
// Preconditions must be fulfilled before an operation (update, delete, etc.) is carried out.
|
||||||
message Preconditions {
|
message Preconditions {
|
||||||
// Specifies the target UID.
|
// Specifies the target UID.
|
||||||
@ -841,6 +914,7 @@ message TypeMeta {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// UpdateOptions may be provided when updating an API object.
|
// UpdateOptions may be provided when updating an API object.
|
||||||
|
// All fields in UpdateOptions should also be present in PatchOptions.
|
||||||
message UpdateOptions {
|
message UpdateOptions {
|
||||||
// When present, indicates that modifications should not be
|
// When present, indicates that modifications should not be
|
||||||
// persisted. An invalid or unrecognized dryRun directive will
|
// persisted. An invalid or unrecognized dryRun directive will
|
||||||
|
27
vendor/k8s.io/apimachinery/pkg/apis/meta/v1/helpers.go
generated
vendored
27
vendor/k8s.io/apimachinery/pkg/apis/meta/v1/helpers.go
generated
vendored
@ -17,6 +17,7 @@ limitations under the License.
|
|||||||
package v1
|
package v1
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
"k8s.io/apimachinery/pkg/fields"
|
"k8s.io/apimachinery/pkg/fields"
|
||||||
@ -232,3 +233,29 @@ func HasObjectMetaSystemFieldValues(meta Object) bool {
|
|||||||
return !meta.GetCreationTimestamp().Time.IsZero() ||
|
return !meta.GetCreationTimestamp().Time.IsZero() ||
|
||||||
len(meta.GetUID()) != 0
|
len(meta.GetUID()) != 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ResetObjectMetaForStatus forces the meta fields for a status update to match the meta fields
|
||||||
|
// for a pre-existing object. This is opt-in for new objects with Status subresource.
|
||||||
|
func ResetObjectMetaForStatus(meta, existingMeta Object) {
|
||||||
|
meta.SetDeletionTimestamp(existingMeta.GetDeletionTimestamp())
|
||||||
|
meta.SetGeneration(existingMeta.GetGeneration())
|
||||||
|
meta.SetSelfLink(existingMeta.GetSelfLink())
|
||||||
|
meta.SetLabels(existingMeta.GetLabels())
|
||||||
|
meta.SetAnnotations(existingMeta.GetAnnotations())
|
||||||
|
meta.SetFinalizers(existingMeta.GetFinalizers())
|
||||||
|
meta.SetOwnerReferences(existingMeta.GetOwnerReferences())
|
||||||
|
meta.SetManagedFields(existingMeta.GetManagedFields())
|
||||||
|
}
|
||||||
|
|
||||||
|
// MarshalJSON implements json.Marshaler
|
||||||
|
func (f Fields) MarshalJSON() ([]byte, error) {
|
||||||
|
return json.Marshal(&f.Map)
|
||||||
|
}
|
||||||
|
|
||||||
|
// UnmarshalJSON implements json.Unmarshaler
|
||||||
|
func (f *Fields) UnmarshalJSON(b []byte) error {
|
||||||
|
return json.Unmarshal(b, &f.Map)
|
||||||
|
}
|
||||||
|
|
||||||
|
var _ json.Marshaler = Fields{}
|
||||||
|
var _ json.Unmarshaler = &Fields{}
|
||||||
|
10
vendor/k8s.io/apimachinery/pkg/apis/meta/v1/meta.go
generated
vendored
10
vendor/k8s.io/apimachinery/pkg/apis/meta/v1/meta.go
generated
vendored
@ -63,6 +63,8 @@ type Object interface {
|
|||||||
SetOwnerReferences([]OwnerReference)
|
SetOwnerReferences([]OwnerReference)
|
||||||
GetClusterName() string
|
GetClusterName() string
|
||||||
SetClusterName(clusterName string)
|
SetClusterName(clusterName string)
|
||||||
|
GetManagedFields() []ManagedFieldsEntry
|
||||||
|
SetManagedFields(managedFields []ManagedFieldsEntry)
|
||||||
}
|
}
|
||||||
|
|
||||||
// ListMetaAccessor retrieves the list interface from an object
|
// ListMetaAccessor retrieves the list interface from an object
|
||||||
@ -166,5 +168,9 @@ func (meta *ObjectMeta) GetOwnerReferences() []OwnerReference { return m
|
|||||||
func (meta *ObjectMeta) SetOwnerReferences(references []OwnerReference) {
|
func (meta *ObjectMeta) SetOwnerReferences(references []OwnerReference) {
|
||||||
meta.OwnerReferences = references
|
meta.OwnerReferences = references
|
||||||
}
|
}
|
||||||
func (meta *ObjectMeta) GetClusterName() string { return meta.ClusterName }
|
func (meta *ObjectMeta) GetClusterName() string { return meta.ClusterName }
|
||||||
func (meta *ObjectMeta) SetClusterName(clusterName string) { meta.ClusterName = clusterName }
|
func (meta *ObjectMeta) SetClusterName(clusterName string) { meta.ClusterName = clusterName }
|
||||||
|
func (meta *ObjectMeta) GetManagedFields() []ManagedFieldsEntry { return meta.ManagedFields }
|
||||||
|
func (meta *ObjectMeta) SetManagedFields(managedFields []ManagedFieldsEntry) {
|
||||||
|
meta.ManagedFields = managedFields
|
||||||
|
}
|
||||||
|
2
vendor/k8s.io/apimachinery/pkg/apis/meta/v1/register.go
generated
vendored
2
vendor/k8s.io/apimachinery/pkg/apis/meta/v1/register.go
generated
vendored
@ -55,6 +55,7 @@ func AddToGroupVersion(scheme *runtime.Scheme, groupVersion schema.GroupVersion)
|
|||||||
&DeleteOptions{},
|
&DeleteOptions{},
|
||||||
&CreateOptions{},
|
&CreateOptions{},
|
||||||
&UpdateOptions{},
|
&UpdateOptions{},
|
||||||
|
&PatchOptions{},
|
||||||
)
|
)
|
||||||
utilruntime.Must(scheme.AddConversionFuncs(
|
utilruntime.Must(scheme.AddConversionFuncs(
|
||||||
Convert_v1_WatchEvent_To_watch_Event,
|
Convert_v1_WatchEvent_To_watch_Event,
|
||||||
@ -90,6 +91,7 @@ func init() {
|
|||||||
&DeleteOptions{},
|
&DeleteOptions{},
|
||||||
&CreateOptions{},
|
&CreateOptions{},
|
||||||
&UpdateOptions{},
|
&UpdateOptions{},
|
||||||
|
&PatchOptions{},
|
||||||
)
|
)
|
||||||
|
|
||||||
// register manually. This usually goes through the SchemeBuilder, which we cannot use here.
|
// register manually. This usually goes through the SchemeBuilder, which we cannot use here.
|
||||||
|
113
vendor/k8s.io/apimachinery/pkg/apis/meta/v1/types.go
generated
vendored
113
vendor/k8s.io/apimachinery/pkg/apis/meta/v1/types.go
generated
vendored
@ -235,6 +235,8 @@ type ObjectMeta struct {
|
|||||||
// When an object is created, the system will populate this list with the current set of initializers.
|
// When an object is created, the system will populate this list with the current set of initializers.
|
||||||
// Only privileged users may set or modify this list. Once it is empty, it may not be modified further
|
// Only privileged users may set or modify this list. Once it is empty, it may not be modified further
|
||||||
// by any user.
|
// by any user.
|
||||||
|
//
|
||||||
|
// DEPRECATED - initializers are an alpha field and will be removed in v1.15.
|
||||||
Initializers *Initializers `json:"initializers,omitempty" protobuf:"bytes,16,opt,name=initializers"`
|
Initializers *Initializers `json:"initializers,omitempty" protobuf:"bytes,16,opt,name=initializers"`
|
||||||
|
|
||||||
// Must be empty before the object is deleted from the registry. Each entry
|
// Must be empty before the object is deleted from the registry. Each entry
|
||||||
@ -250,6 +252,19 @@ type ObjectMeta struct {
|
|||||||
// This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.
|
// This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.
|
||||||
// +optional
|
// +optional
|
||||||
ClusterName string `json:"clusterName,omitempty" protobuf:"bytes,15,opt,name=clusterName"`
|
ClusterName string `json:"clusterName,omitempty" protobuf:"bytes,15,opt,name=clusterName"`
|
||||||
|
|
||||||
|
// ManagedFields maps workflow-id and version to the set of fields
|
||||||
|
// that are managed by that workflow. This is mostly for internal
|
||||||
|
// housekeeping, and users typically shouldn't need to set or
|
||||||
|
// understand this field. A workflow can be the user's name, a
|
||||||
|
// controller's name, or the name of a specific apply path like
|
||||||
|
// "ci-cd". The set of fields is always in the version that the
|
||||||
|
// workflow used when modifying the object.
|
||||||
|
//
|
||||||
|
// This field is alpha and can be changed or removed without notice.
|
||||||
|
//
|
||||||
|
// +optional
|
||||||
|
ManagedFields []ManagedFieldsEntry `json:"managedFields,omitempty" protobuf:"bytes,17,rep,name=managedFields"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// Initializers tracks the progress of initialization.
|
// Initializers tracks the progress of initialization.
|
||||||
@ -327,9 +342,9 @@ type ListOptions struct {
|
|||||||
// Defaults to everything.
|
// Defaults to everything.
|
||||||
// +optional
|
// +optional
|
||||||
FieldSelector string `json:"fieldSelector,omitempty" protobuf:"bytes,2,opt,name=fieldSelector"`
|
FieldSelector string `json:"fieldSelector,omitempty" protobuf:"bytes,2,opt,name=fieldSelector"`
|
||||||
// If true, partially initialized resources are included in the response.
|
|
||||||
// +optional
|
// +k8s:deprecated=includeUninitialized,protobuf=6
|
||||||
IncludeUninitialized bool `json:"includeUninitialized,omitempty" protobuf:"varint,6,opt,name=includeUninitialized"`
|
|
||||||
// Watch for changes to the described resources and return them as a stream of
|
// Watch for changes to the described resources and return them as a stream of
|
||||||
// add, update, and remove notifications. Specify resourceVersion.
|
// add, update, and remove notifications. Specify resourceVersion.
|
||||||
// +optional
|
// +optional
|
||||||
@ -402,9 +417,7 @@ type GetOptions struct {
|
|||||||
// - if it's 0, then we simply return what we currently have in cache, no guarantee;
|
// - if it's 0, then we simply return what we currently have in cache, no guarantee;
|
||||||
// - if set to non zero, then the result is at least as fresh as given rv.
|
// - if set to non zero, then the result is at least as fresh as given rv.
|
||||||
ResourceVersion string `json:"resourceVersion,omitempty" protobuf:"bytes,1,opt,name=resourceVersion"`
|
ResourceVersion string `json:"resourceVersion,omitempty" protobuf:"bytes,1,opt,name=resourceVersion"`
|
||||||
// If true, partially initialized resources are included in the response.
|
// +k8s:deprecated=includeUninitialized,protobuf=2
|
||||||
// +optional
|
|
||||||
IncludeUninitialized bool `json:"includeUninitialized,omitempty" protobuf:"varint,2,opt,name=includeUninitialized"`
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeletionPropagation decides if a deletion will propagate to the dependents of
|
// DeletionPropagation decides if a deletion will propagate to the dependents of
|
||||||
@ -489,15 +502,35 @@ type CreateOptions struct {
|
|||||||
// - All: all dry run stages will be processed
|
// - All: all dry run stages will be processed
|
||||||
// +optional
|
// +optional
|
||||||
DryRun []string `json:"dryRun,omitempty" protobuf:"bytes,1,rep,name=dryRun"`
|
DryRun []string `json:"dryRun,omitempty" protobuf:"bytes,1,rep,name=dryRun"`
|
||||||
|
// +k8s:deprecated=includeUninitialized,protobuf=2
|
||||||
|
}
|
||||||
|
|
||||||
// If IncludeUninitialized is specified, the object may be
|
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
||||||
// returned without completing initialization.
|
|
||||||
IncludeUninitialized bool `json:"includeUninitialized,omitempty" protobuf:"varint,2,opt,name=includeUninitialized"`
|
// PatchOptions may be provided when patching an API object.
|
||||||
|
// PatchOptions is meant to be a superset of UpdateOptions.
|
||||||
|
type PatchOptions struct {
|
||||||
|
TypeMeta `json:",inline"`
|
||||||
|
|
||||||
|
// When present, indicates that modifications should not be
|
||||||
|
// persisted. An invalid or unrecognized dryRun directive will
|
||||||
|
// result in an error response and no further processing of the
|
||||||
|
// request. Valid values are:
|
||||||
|
// - All: all dry run stages will be processed
|
||||||
|
// +optional
|
||||||
|
DryRun []string `json:"dryRun,omitempty" protobuf:"bytes,1,rep,name=dryRun"`
|
||||||
|
|
||||||
|
// Force is going to "force" Apply requests. It means user will
|
||||||
|
// re-acquire conflicting fields owned by other people. Force
|
||||||
|
// flag must be unset for non-apply patch requests.
|
||||||
|
// +optional
|
||||||
|
Force *bool `json:"force,omitempty" protobuf:"varint,2,opt,name=force"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
||||||
|
|
||||||
// UpdateOptions may be provided when updating an API object.
|
// UpdateOptions may be provided when updating an API object.
|
||||||
|
// All fields in UpdateOptions should also be present in PatchOptions.
|
||||||
type UpdateOptions struct {
|
type UpdateOptions struct {
|
||||||
TypeMeta `json:",inline"`
|
TypeMeta `json:",inline"`
|
||||||
|
|
||||||
@ -713,6 +746,10 @@ const (
|
|||||||
// Status code 406
|
// Status code 406
|
||||||
StatusReasonNotAcceptable StatusReason = "NotAcceptable"
|
StatusReasonNotAcceptable StatusReason = "NotAcceptable"
|
||||||
|
|
||||||
|
// StatusReasonRequestEntityTooLarge means that the request entity is too large.
|
||||||
|
// Status code 413
|
||||||
|
StatusReasonRequestEntityTooLarge StatusReason = "RequestEntityTooLarge"
|
||||||
|
|
||||||
// StatusReasonUnsupportedMediaType means that the content type sent by the client is not acceptable
|
// StatusReasonUnsupportedMediaType means that the content type sent by the client is not acceptable
|
||||||
// to the server - for instance, attempting to send protobuf for a resource that supports only json and yaml.
|
// to the server - for instance, attempting to send protobuf for a resource that supports only json and yaml.
|
||||||
// API calls that return UnsupportedMediaType can never succeed.
|
// API calls that return UnsupportedMediaType can never succeed.
|
||||||
@ -788,6 +825,9 @@ const (
|
|||||||
// without the expected return type. The presence of this cause indicates the error may be
|
// without the expected return type. The presence of this cause indicates the error may be
|
||||||
// due to an intervening proxy or the server software malfunctioning.
|
// due to an intervening proxy or the server software malfunctioning.
|
||||||
CauseTypeUnexpectedServerResponse CauseType = "UnexpectedServerResponse"
|
CauseTypeUnexpectedServerResponse CauseType = "UnexpectedServerResponse"
|
||||||
|
// FieldManagerConflict is used to report when another client claims to manage this field,
|
||||||
|
// It should only be returned for a request using server-side apply.
|
||||||
|
CauseTypeFieldManagerConflict CauseType = "FieldManagerConflict"
|
||||||
)
|
)
|
||||||
|
|
||||||
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
||||||
@ -902,6 +942,15 @@ type APIResource struct {
|
|||||||
ShortNames []string `json:"shortNames,omitempty" protobuf:"bytes,5,rep,name=shortNames"`
|
ShortNames []string `json:"shortNames,omitempty" protobuf:"bytes,5,rep,name=shortNames"`
|
||||||
// categories is a list of the grouped resources this resource belongs to (e.g. 'all')
|
// categories is a list of the grouped resources this resource belongs to (e.g. 'all')
|
||||||
Categories []string `json:"categories,omitempty" protobuf:"bytes,7,rep,name=categories"`
|
Categories []string `json:"categories,omitempty" protobuf:"bytes,7,rep,name=categories"`
|
||||||
|
// The hash value of the storage version, the version this resource is
|
||||||
|
// converted to when written to the data store. Value must be treated
|
||||||
|
// as opaque by clients. Only equality comparison on the value is valid.
|
||||||
|
// This is an alpha feature and may change or be removed in the future.
|
||||||
|
// The field is populated by the apiserver only if the
|
||||||
|
// StorageVersionHash feature gate is enabled.
|
||||||
|
// This field will remain optional even if it graduates.
|
||||||
|
// +optional
|
||||||
|
StorageVersionHash string `json:"storageVersionHash,omitempty" protobuf:"bytes,10,opt,name=storageVersionHash"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// Verbs masks the value so protobuf can generate
|
// Verbs masks the value so protobuf can generate
|
||||||
@ -1003,3 +1052,49 @@ const (
|
|||||||
LabelSelectorOpExists LabelSelectorOperator = "Exists"
|
LabelSelectorOpExists LabelSelectorOperator = "Exists"
|
||||||
LabelSelectorOpDoesNotExist LabelSelectorOperator = "DoesNotExist"
|
LabelSelectorOpDoesNotExist LabelSelectorOperator = "DoesNotExist"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource
|
||||||
|
// that the fieldset applies to.
|
||||||
|
type ManagedFieldsEntry struct {
|
||||||
|
// Manager is an identifier of the workflow managing these fields.
|
||||||
|
Manager string `json:"manager,omitempty" protobuf:"bytes,1,opt,name=manager"`
|
||||||
|
// Operation is the type of operation which lead to this ManagedFieldsEntry being created.
|
||||||
|
// The only valid values for this field are 'Apply' and 'Update'.
|
||||||
|
Operation ManagedFieldsOperationType `json:"operation,omitempty" protobuf:"bytes,2,opt,name=operation,casttype=ManagedFieldsOperationType"`
|
||||||
|
// APIVersion defines the version of this resource that this field set
|
||||||
|
// applies to. The format is "group/version" just like the top-level
|
||||||
|
// APIVersion field. It is necessary to track the version of a field
|
||||||
|
// set because it cannot be automatically converted.
|
||||||
|
APIVersion string `json:"apiVersion,omitempty" protobuf:"bytes,3,opt,name=apiVersion"`
|
||||||
|
// Time is timestamp of when these fields were set. It should always be empty if Operation is 'Apply'
|
||||||
|
// +optional
|
||||||
|
Time *Time `json:"time,omitempty" protobuf:"bytes,4,opt,name=time"`
|
||||||
|
// Fields identifies a set of fields.
|
||||||
|
// +optional
|
||||||
|
Fields *Fields `json:"fields,omitempty" protobuf:"bytes,5,opt,name=fields,casttype=Fields"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// ManagedFieldsOperationType is the type of operation which lead to a ManagedFieldsEntry being created.
|
||||||
|
type ManagedFieldsOperationType string
|
||||||
|
|
||||||
|
const (
|
||||||
|
ManagedFieldsOperationApply ManagedFieldsOperationType = "Apply"
|
||||||
|
ManagedFieldsOperationUpdate ManagedFieldsOperationType = "Update"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Fields stores a set of fields in a data structure like a Trie.
|
||||||
|
// To understand how this is used, see: https://github.com/kubernetes-sigs/structured-merge-diff
|
||||||
|
type Fields struct {
|
||||||
|
// Map stores a set of fields in a data structure like a Trie.
|
||||||
|
//
|
||||||
|
// Each key is either a '.' representing the field itself, and will always map to an empty set,
|
||||||
|
// or a string representing a sub-field or item. The string will follow one of these four formats:
|
||||||
|
// 'f:<name>', where <name> is the name of a field in a struct, or key in a map
|
||||||
|
// 'v:<value>', where <value> is the exact json formatted value of a list item
|
||||||
|
// 'i:<index>', where <index> is position of a item in a list
|
||||||
|
// 'k:<keys>', where <keys> is a map of a list item's key fields to their unique values
|
||||||
|
// If a key maps to an empty Fields value, the field that key represents is part of the set.
|
||||||
|
//
|
||||||
|
// The exact format is defined in k8s.io/apiserver/pkg/endpoints/handlers/fieldmanager/internal
|
||||||
|
Map map[string]Fields `json:",inline" protobuf:"bytes,1,rep,name=map"`
|
||||||
|
}
|
||||||
|
84
vendor/k8s.io/apimachinery/pkg/apis/meta/v1/types_swagger_doc_generated.go
generated
vendored
84
vendor/k8s.io/apimachinery/pkg/apis/meta/v1/types_swagger_doc_generated.go
generated
vendored
@ -49,16 +49,17 @@ func (APIGroupList) SwaggerDoc() map[string]string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var map_APIResource = map[string]string{
|
var map_APIResource = map[string]string{
|
||||||
"": "APIResource specifies the name of a resource and whether it is namespaced.",
|
"": "APIResource specifies the name of a resource and whether it is namespaced.",
|
||||||
"name": "name is the plural name of the resource.",
|
"name": "name is the plural name of the resource.",
|
||||||
"singularName": "singularName is the singular name of the resource. This allows clients to handle plural and singular opaquely. The singularName is more correct for reporting status on a single item and both singular and plural are allowed from the kubectl CLI interface.",
|
"singularName": "singularName is the singular name of the resource. This allows clients to handle plural and singular opaquely. The singularName is more correct for reporting status on a single item and both singular and plural are allowed from the kubectl CLI interface.",
|
||||||
"namespaced": "namespaced indicates if a resource is namespaced or not.",
|
"namespaced": "namespaced indicates if a resource is namespaced or not.",
|
||||||
"group": "group is the preferred group of the resource. Empty implies the group of the containing resource list. For subresources, this may have a different value, for example: Scale\".",
|
"group": "group is the preferred group of the resource. Empty implies the group of the containing resource list. For subresources, this may have a different value, for example: Scale\".",
|
||||||
"version": "version is the preferred version of the resource. Empty implies the version of the containing resource list For subresources, this may have a different value, for example: v1 (while inside a v1beta1 version of the core resource's group)\".",
|
"version": "version is the preferred version of the resource. Empty implies the version of the containing resource list For subresources, this may have a different value, for example: v1 (while inside a v1beta1 version of the core resource's group)\".",
|
||||||
"kind": "kind is the kind for the resource (e.g. 'Foo' is the kind for a resource 'foo')",
|
"kind": "kind is the kind for the resource (e.g. 'Foo' is the kind for a resource 'foo')",
|
||||||
"verbs": "verbs is a list of supported kube verbs (this includes get, list, watch, create, update, patch, delete, deletecollection, and proxy)",
|
"verbs": "verbs is a list of supported kube verbs (this includes get, list, watch, create, update, patch, delete, deletecollection, and proxy)",
|
||||||
"shortNames": "shortNames is a list of suggested short names of the resource.",
|
"shortNames": "shortNames is a list of suggested short names of the resource.",
|
||||||
"categories": "categories is a list of the grouped resources this resource belongs to (e.g. 'all')",
|
"categories": "categories is a list of the grouped resources this resource belongs to (e.g. 'all')",
|
||||||
|
"storageVersionHash": "The hash value of the storage version, the version this resource is converted to when written to the data store. Value must be treated as opaque by clients. Only equality comparison on the value is valid. This is an alpha feature and may change or be removed in the future. The field is populated by the apiserver only if the StorageVersionHash feature gate is enabled. This field will remain optional even if it graduates.",
|
||||||
}
|
}
|
||||||
|
|
||||||
func (APIResource) SwaggerDoc() map[string]string {
|
func (APIResource) SwaggerDoc() map[string]string {
|
||||||
@ -86,9 +87,8 @@ func (APIVersions) SwaggerDoc() map[string]string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var map_CreateOptions = map[string]string{
|
var map_CreateOptions = map[string]string{
|
||||||
"": "CreateOptions may be provided when creating an API object.",
|
"": "CreateOptions may be provided when creating an API object.",
|
||||||
"dryRun": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed",
|
"dryRun": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed",
|
||||||
"includeUninitialized": "If IncludeUninitialized is specified, the object may be returned without completing initialization.",
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (CreateOptions) SwaggerDoc() map[string]string {
|
func (CreateOptions) SwaggerDoc() map[string]string {
|
||||||
@ -118,10 +118,17 @@ func (ExportOptions) SwaggerDoc() map[string]string {
|
|||||||
return map_ExportOptions
|
return map_ExportOptions
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var map_Fields = map[string]string{
|
||||||
|
"": "Fields stores a set of fields in a data structure like a Trie. To understand how this is used, see: https://github.com/kubernetes-sigs/structured-merge-diff",
|
||||||
|
}
|
||||||
|
|
||||||
|
func (Fields) SwaggerDoc() map[string]string {
|
||||||
|
return map_Fields
|
||||||
|
}
|
||||||
|
|
||||||
var map_GetOptions = map[string]string{
|
var map_GetOptions = map[string]string{
|
||||||
"": "GetOptions is the standard query options to the standard REST get call.",
|
"": "GetOptions is the standard query options to the standard REST get call.",
|
||||||
"resourceVersion": "When specified: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.",
|
"resourceVersion": "When specified: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.",
|
||||||
"includeUninitialized": "If true, partially initialized resources are included in the response.",
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (GetOptions) SwaggerDoc() map[string]string {
|
func (GetOptions) SwaggerDoc() map[string]string {
|
||||||
@ -200,21 +207,33 @@ func (ListMeta) SwaggerDoc() map[string]string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var map_ListOptions = map[string]string{
|
var map_ListOptions = map[string]string{
|
||||||
"": "ListOptions is the query options to a standard REST list call.",
|
"": "ListOptions is the query options to a standard REST list call.",
|
||||||
"labelSelector": "A selector to restrict the list of returned objects by their labels. Defaults to everything.",
|
"labelSelector": "A selector to restrict the list of returned objects by their labels. Defaults to everything.",
|
||||||
"fieldSelector": "A selector to restrict the list of returned objects by their fields. Defaults to everything.",
|
"fieldSelector": "A selector to restrict the list of returned objects by their fields. Defaults to everything.",
|
||||||
"includeUninitialized": "If true, partially initialized resources are included in the response.",
|
"watch": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.",
|
||||||
"watch": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.",
|
"resourceVersion": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.",
|
||||||
"resourceVersion": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.",
|
"timeoutSeconds": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.",
|
||||||
"timeoutSeconds": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.",
|
"limit": "limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true.\n\nThe server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned.",
|
||||||
"limit": "limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true.\n\nThe server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned.",
|
"continue": "The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\".\n\nThis field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications.",
|
||||||
"continue": "The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\".\n\nThis field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications.",
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ListOptions) SwaggerDoc() map[string]string {
|
func (ListOptions) SwaggerDoc() map[string]string {
|
||||||
return map_ListOptions
|
return map_ListOptions
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var map_ManagedFieldsEntry = map[string]string{
|
||||||
|
"": "ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.",
|
||||||
|
"manager": "Manager is an identifier of the workflow managing these fields.",
|
||||||
|
"operation": "Operation is the type of operation which lead to this ManagedFieldsEntry being created. The only valid values for this field are 'Apply' and 'Update'.",
|
||||||
|
"apiVersion": "APIVersion defines the version of this resource that this field set applies to. The format is \"group/version\" just like the top-level APIVersion field. It is necessary to track the version of a field set because it cannot be automatically converted.",
|
||||||
|
"time": "Time is timestamp of when these fields were set. It should always be empty if Operation is 'Apply'",
|
||||||
|
"fields": "Fields identifies a set of fields.",
|
||||||
|
}
|
||||||
|
|
||||||
|
func (ManagedFieldsEntry) SwaggerDoc() map[string]string {
|
||||||
|
return map_ManagedFieldsEntry
|
||||||
|
}
|
||||||
|
|
||||||
var map_ObjectMeta = map[string]string{
|
var map_ObjectMeta = map[string]string{
|
||||||
"": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
|
"": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
|
||||||
"name": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names",
|
"name": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names",
|
||||||
@ -230,9 +249,10 @@ var map_ObjectMeta = map[string]string{
|
|||||||
"labels": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels",
|
"labels": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels",
|
||||||
"annotations": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations",
|
"annotations": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations",
|
||||||
"ownerReferences": "List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.",
|
"ownerReferences": "List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.",
|
||||||
"initializers": "An initializer is a controller which enforces some system invariant at object creation time. This field is a list of initializers that have not yet acted on this object. If nil or empty, this object has been completely initialized. Otherwise, the object is considered uninitialized and is hidden (in list/watch and get calls) from clients that haven't explicitly asked to observe uninitialized objects.\n\nWhen an object is created, the system will populate this list with the current set of initializers. Only privileged users may set or modify this list. Once it is empty, it may not be modified further by any user.",
|
"initializers": "An initializer is a controller which enforces some system invariant at object creation time. This field is a list of initializers that have not yet acted on this object. If nil or empty, this object has been completely initialized. Otherwise, the object is considered uninitialized and is hidden (in list/watch and get calls) from clients that haven't explicitly asked to observe uninitialized objects.\n\nWhen an object is created, the system will populate this list with the current set of initializers. Only privileged users may set or modify this list. Once it is empty, it may not be modified further by any user.\n\nDEPRECATED - initializers are an alpha field and will be removed in v1.15.",
|
||||||
"finalizers": "Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.",
|
"finalizers": "Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.",
|
||||||
"clusterName": "The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.",
|
"clusterName": "The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.",
|
||||||
|
"managedFields": "ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like \"ci-cd\". The set of fields is always in the version that the workflow used when modifying the object.\n\nThis field is alpha and can be changed or removed without notice.",
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ObjectMeta) SwaggerDoc() map[string]string {
|
func (ObjectMeta) SwaggerDoc() map[string]string {
|
||||||
@ -261,6 +281,16 @@ func (Patch) SwaggerDoc() map[string]string {
|
|||||||
return map_Patch
|
return map_Patch
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var map_PatchOptions = map[string]string{
|
||||||
|
"": "PatchOptions may be provided when patching an API object. PatchOptions is meant to be a superset of UpdateOptions.",
|
||||||
|
"dryRun": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed",
|
||||||
|
"force": "Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests.",
|
||||||
|
}
|
||||||
|
|
||||||
|
func (PatchOptions) SwaggerDoc() map[string]string {
|
||||||
|
return map_PatchOptions
|
||||||
|
}
|
||||||
|
|
||||||
var map_Preconditions = map[string]string{
|
var map_Preconditions = map[string]string{
|
||||||
"": "Preconditions must be fulfilled before an operation (update, delete, etc.) is carried out.",
|
"": "Preconditions must be fulfilled before an operation (update, delete, etc.) is carried out.",
|
||||||
"uid": "Specifies the target UID.",
|
"uid": "Specifies the target UID.",
|
||||||
@ -339,7 +369,7 @@ func (TypeMeta) SwaggerDoc() map[string]string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var map_UpdateOptions = map[string]string{
|
var map_UpdateOptions = map[string]string{
|
||||||
"": "UpdateOptions may be provided when updating an API object.",
|
"": "UpdateOptions may be provided when updating an API object. All fields in UpdateOptions should also be present in PatchOptions.",
|
||||||
"dryRun": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed",
|
"dryRun": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed",
|
||||||
}
|
}
|
||||||
|
|
||||||
|
3
vendor/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured/helpers.go
generated
vendored
3
vendor/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured/helpers.go
generated
vendored
@ -47,6 +47,9 @@ func NestedFieldNoCopy(obj map[string]interface{}, fields ...string) (interface{
|
|||||||
var val interface{} = obj
|
var val interface{} = obj
|
||||||
|
|
||||||
for i, field := range fields {
|
for i, field := range fields {
|
||||||
|
if val == nil {
|
||||||
|
return nil, false, nil
|
||||||
|
}
|
||||||
if m, ok := val.(map[string]interface{}); ok {
|
if m, ok := val.(map[string]interface{}); ok {
|
||||||
val, ok = m[field]
|
val, ok = m[field]
|
||||||
if !ok {
|
if !ok {
|
||||||
|
50
vendor/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured/unstructured.go
generated
vendored
50
vendor/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured/unstructured.go
generated
vendored
@ -143,13 +143,20 @@ func (u *Unstructured) setNestedField(value interface{}, fields ...string) {
|
|||||||
SetNestedField(u.Object, value, fields...)
|
SetNestedField(u.Object, value, fields...)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (u *Unstructured) setNestedSlice(value []string, fields ...string) {
|
func (u *Unstructured) setNestedStringSlice(value []string, fields ...string) {
|
||||||
if u.Object == nil {
|
if u.Object == nil {
|
||||||
u.Object = make(map[string]interface{})
|
u.Object = make(map[string]interface{})
|
||||||
}
|
}
|
||||||
SetNestedStringSlice(u.Object, value, fields...)
|
SetNestedStringSlice(u.Object, value, fields...)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (u *Unstructured) setNestedSlice(value []interface{}, fields ...string) {
|
||||||
|
if u.Object == nil {
|
||||||
|
u.Object = make(map[string]interface{})
|
||||||
|
}
|
||||||
|
SetNestedSlice(u.Object, value, fields...)
|
||||||
|
}
|
||||||
|
|
||||||
func (u *Unstructured) setNestedMap(value map[string]string, fields ...string) {
|
func (u *Unstructured) setNestedMap(value map[string]string, fields ...string) {
|
||||||
if u.Object == nil {
|
if u.Object == nil {
|
||||||
u.Object = make(map[string]interface{})
|
u.Object = make(map[string]interface{})
|
||||||
@ -436,7 +443,7 @@ func (u *Unstructured) SetFinalizers(finalizers []string) {
|
|||||||
RemoveNestedField(u.Object, "metadata", "finalizers")
|
RemoveNestedField(u.Object, "metadata", "finalizers")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
u.setNestedSlice(finalizers, "metadata", "finalizers")
|
u.setNestedStringSlice(finalizers, "metadata", "finalizers")
|
||||||
}
|
}
|
||||||
|
|
||||||
func (u *Unstructured) GetClusterName() string {
|
func (u *Unstructured) GetClusterName() string {
|
||||||
@ -450,3 +457,42 @@ func (u *Unstructured) SetClusterName(clusterName string) {
|
|||||||
}
|
}
|
||||||
u.setNestedField(clusterName, "metadata", "clusterName")
|
u.setNestedField(clusterName, "metadata", "clusterName")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (u *Unstructured) GetManagedFields() []metav1.ManagedFieldsEntry {
|
||||||
|
items, found, err := NestedSlice(u.Object, "metadata", "managedFields")
|
||||||
|
if !found || err != nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
managedFields := []metav1.ManagedFieldsEntry{}
|
||||||
|
for _, item := range items {
|
||||||
|
m, ok := item.(map[string]interface{})
|
||||||
|
if !ok {
|
||||||
|
utilruntime.HandleError(fmt.Errorf("unable to retrieve managedFields for object, item %v is not a map", item))
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
out := metav1.ManagedFieldsEntry{}
|
||||||
|
if err := runtime.DefaultUnstructuredConverter.FromUnstructured(m, &out); err != nil {
|
||||||
|
utilruntime.HandleError(fmt.Errorf("unable to retrieve managedFields for object: %v", err))
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
managedFields = append(managedFields, out)
|
||||||
|
}
|
||||||
|
return managedFields
|
||||||
|
}
|
||||||
|
|
||||||
|
func (u *Unstructured) SetManagedFields(managedFields []metav1.ManagedFieldsEntry) {
|
||||||
|
if managedFields == nil {
|
||||||
|
RemoveNestedField(u.Object, "metadata", "managedFields")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
items := []interface{}{}
|
||||||
|
for _, managedFieldsEntry := range managedFields {
|
||||||
|
out, err := runtime.DefaultUnstructuredConverter.ToUnstructured(&managedFieldsEntry)
|
||||||
|
if err != nil {
|
||||||
|
utilruntime.HandleError(fmt.Errorf("unable to set managedFields for object: %v", err))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
items = append(items, out)
|
||||||
|
}
|
||||||
|
u.setNestedSlice(items, "metadata", "managedFields")
|
||||||
|
}
|
||||||
|
90
vendor/k8s.io/apimachinery/pkg/apis/meta/v1/zz_generated.deepcopy.go
generated
vendored
90
vendor/k8s.io/apimachinery/pkg/apis/meta/v1/zz_generated.deepcopy.go
generated
vendored
@ -312,6 +312,29 @@ func (in *ExportOptions) DeepCopyObject() runtime.Object {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
|
func (in *Fields) DeepCopyInto(out *Fields) {
|
||||||
|
*out = *in
|
||||||
|
if in.Map != nil {
|
||||||
|
in, out := &in.Map, &out.Map
|
||||||
|
*out = make(map[string]Fields, len(*in))
|
||||||
|
for key, val := range *in {
|
||||||
|
(*out)[key] = *val.DeepCopy()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Fields.
|
||||||
|
func (in *Fields) DeepCopy() *Fields {
|
||||||
|
if in == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
out := new(Fields)
|
||||||
|
in.DeepCopyInto(out)
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
|
||||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
func (in *GetOptions) DeepCopyInto(out *GetOptions) {
|
func (in *GetOptions) DeepCopyInto(out *GetOptions) {
|
||||||
*out = *in
|
*out = *in
|
||||||
@ -624,6 +647,31 @@ func (in *ListOptions) DeepCopyObject() runtime.Object {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
|
func (in *ManagedFieldsEntry) DeepCopyInto(out *ManagedFieldsEntry) {
|
||||||
|
*out = *in
|
||||||
|
if in.Time != nil {
|
||||||
|
in, out := &in.Time, &out.Time
|
||||||
|
*out = (*in).DeepCopy()
|
||||||
|
}
|
||||||
|
if in.Fields != nil {
|
||||||
|
in, out := &in.Fields, &out.Fields
|
||||||
|
*out = new(Fields)
|
||||||
|
(*in).DeepCopyInto(*out)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ManagedFieldsEntry.
|
||||||
|
func (in *ManagedFieldsEntry) DeepCopy() *ManagedFieldsEntry {
|
||||||
|
if in == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
out := new(ManagedFieldsEntry)
|
||||||
|
in.DeepCopyInto(out)
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MicroTime.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MicroTime.
|
||||||
func (in *MicroTime) DeepCopy() *MicroTime {
|
func (in *MicroTime) DeepCopy() *MicroTime {
|
||||||
if in == nil {
|
if in == nil {
|
||||||
@ -678,6 +726,13 @@ func (in *ObjectMeta) DeepCopyInto(out *ObjectMeta) {
|
|||||||
*out = make([]string, len(*in))
|
*out = make([]string, len(*in))
|
||||||
copy(*out, *in)
|
copy(*out, *in)
|
||||||
}
|
}
|
||||||
|
if in.ManagedFields != nil {
|
||||||
|
in, out := &in.ManagedFields, &out.ManagedFields
|
||||||
|
*out = make([]ManagedFieldsEntry, len(*in))
|
||||||
|
for i := range *in {
|
||||||
|
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||||
|
}
|
||||||
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -733,6 +788,41 @@ func (in *Patch) DeepCopy() *Patch {
|
|||||||
return out
|
return out
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
|
func (in *PatchOptions) DeepCopyInto(out *PatchOptions) {
|
||||||
|
*out = *in
|
||||||
|
out.TypeMeta = in.TypeMeta
|
||||||
|
if in.DryRun != nil {
|
||||||
|
in, out := &in.DryRun, &out.DryRun
|
||||||
|
*out = make([]string, len(*in))
|
||||||
|
copy(*out, *in)
|
||||||
|
}
|
||||||
|
if in.Force != nil {
|
||||||
|
in, out := &in.Force, &out.Force
|
||||||
|
*out = new(bool)
|
||||||
|
**out = **in
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PatchOptions.
|
||||||
|
func (in *PatchOptions) DeepCopy() *PatchOptions {
|
||||||
|
if in == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
out := new(PatchOptions)
|
||||||
|
in.DeepCopyInto(out)
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
|
||||||
|
func (in *PatchOptions) DeepCopyObject() runtime.Object {
|
||||||
|
if c := in.DeepCopy(); c != nil {
|
||||||
|
return c
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
func (in *Preconditions) DeepCopyInto(out *Preconditions) {
|
func (in *Preconditions) DeepCopyInto(out *Preconditions) {
|
||||||
*out = *in
|
*out = *in
|
||||||
|
2
vendor/k8s.io/apimachinery/pkg/apis/meta/v1beta1/doc.go
generated
vendored
2
vendor/k8s.io/apimachinery/pkg/apis/meta/v1beta1/doc.go
generated
vendored
@ -20,4 +20,4 @@ limitations under the License.
|
|||||||
|
|
||||||
// +groupName=meta.k8s.io
|
// +groupName=meta.k8s.io
|
||||||
|
|
||||||
package v1beta1
|
package v1beta1 // import "k8s.io/apimachinery/pkg/apis/meta/v1beta1"
|
||||||
|
20
vendor/k8s.io/apimachinery/pkg/runtime/codec.go
generated
vendored
20
vendor/k8s.io/apimachinery/pkg/runtime/codec.go
generated
vendored
@ -283,6 +283,7 @@ var _ GroupVersioner = multiGroupVersioner{}
|
|||||||
type multiGroupVersioner struct {
|
type multiGroupVersioner struct {
|
||||||
target schema.GroupVersion
|
target schema.GroupVersion
|
||||||
acceptedGroupKinds []schema.GroupKind
|
acceptedGroupKinds []schema.GroupKind
|
||||||
|
coerce bool
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewMultiGroupVersioner returns the provided group version for any kind that matches one of the provided group kinds.
|
// NewMultiGroupVersioner returns the provided group version for any kind that matches one of the provided group kinds.
|
||||||
@ -294,6 +295,22 @@ func NewMultiGroupVersioner(gv schema.GroupVersion, groupKinds ...schema.GroupKi
|
|||||||
return multiGroupVersioner{target: gv, acceptedGroupKinds: groupKinds}
|
return multiGroupVersioner{target: gv, acceptedGroupKinds: groupKinds}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// NewCoercingMultiGroupVersioner returns the provided group version for any incoming kind.
|
||||||
|
// Incoming kinds that match the provided groupKinds are preferred.
|
||||||
|
// Kind may be empty in the provided group kind, in which case any kind will match.
|
||||||
|
// Examples:
|
||||||
|
// gv=mygroup/__internal, groupKinds=mygroup/Foo, anothergroup/Bar
|
||||||
|
// KindForGroupVersionKinds(yetanother/v1/Baz, anothergroup/v1/Bar) -> mygroup/__internal/Bar (matched preferred group/kind)
|
||||||
|
//
|
||||||
|
// gv=mygroup/__internal, groupKinds=mygroup, anothergroup
|
||||||
|
// KindForGroupVersionKinds(yetanother/v1/Baz, anothergroup/v1/Bar) -> mygroup/__internal/Bar (matched preferred group)
|
||||||
|
//
|
||||||
|
// gv=mygroup/__internal, groupKinds=mygroup, anothergroup
|
||||||
|
// KindForGroupVersionKinds(yetanother/v1/Baz, yetanother/v1/Bar) -> mygroup/__internal/Baz (no preferred group/kind match, uses first kind in list)
|
||||||
|
func NewCoercingMultiGroupVersioner(gv schema.GroupVersion, groupKinds ...schema.GroupKind) GroupVersioner {
|
||||||
|
return multiGroupVersioner{target: gv, acceptedGroupKinds: groupKinds, coerce: true}
|
||||||
|
}
|
||||||
|
|
||||||
// KindForGroupVersionKinds returns the target group version if any kind matches any of the original group kinds. It will
|
// KindForGroupVersionKinds returns the target group version if any kind matches any of the original group kinds. It will
|
||||||
// use the originating kind where possible.
|
// use the originating kind where possible.
|
||||||
func (v multiGroupVersioner) KindForGroupVersionKinds(kinds []schema.GroupVersionKind) (schema.GroupVersionKind, bool) {
|
func (v multiGroupVersioner) KindForGroupVersionKinds(kinds []schema.GroupVersionKind) (schema.GroupVersionKind, bool) {
|
||||||
@ -308,5 +325,8 @@ func (v multiGroupVersioner) KindForGroupVersionKinds(kinds []schema.GroupVersio
|
|||||||
return v.target.WithKind(src.Kind), true
|
return v.target.WithKind(src.Kind), true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if v.coerce && len(kinds) > 0 {
|
||||||
|
return v.target.WithKind(kinds[0].Kind), true
|
||||||
|
}
|
||||||
return schema.GroupVersionKind{}, false
|
return schema.GroupVersionKind{}, false
|
||||||
}
|
}
|
||||||
|
2
vendor/k8s.io/apimachinery/pkg/runtime/converter.go
generated
vendored
2
vendor/k8s.io/apimachinery/pkg/runtime/converter.go
generated
vendored
@ -746,7 +746,7 @@ func isZero(v reflect.Value) bool {
|
|||||||
func structToUnstructured(sv, dv reflect.Value) error {
|
func structToUnstructured(sv, dv reflect.Value) error {
|
||||||
st, dt := sv.Type(), dv.Type()
|
st, dt := sv.Type(), dv.Type()
|
||||||
if dt.Kind() == reflect.Interface && dv.NumMethod() == 0 {
|
if dt.Kind() == reflect.Interface && dv.NumMethod() == 0 {
|
||||||
dv.Set(reflect.MakeMap(mapStringInterfaceType))
|
dv.Set(reflect.MakeMapWithSize(mapStringInterfaceType, st.NumField()))
|
||||||
dv = dv.Elem()
|
dv = dv.Elem()
|
||||||
dt = dv.Type()
|
dt = dv.Type()
|
||||||
}
|
}
|
||||||
|
2
vendor/k8s.io/apimachinery/pkg/runtime/serializer/streaming/streaming.go
generated
vendored
2
vendor/k8s.io/apimachinery/pkg/runtime/serializer/streaming/streaming.go
generated
vendored
@ -64,7 +64,7 @@ func NewDecoder(r io.ReadCloser, d runtime.Decoder) Decoder {
|
|||||||
reader: r,
|
reader: r,
|
||||||
decoder: d,
|
decoder: d,
|
||||||
buf: make([]byte, 1024),
|
buf: make([]byte, 1024),
|
||||||
maxBytes: 1024 * 1024,
|
maxBytes: 16 * 1024 * 1024,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
1
vendor/k8s.io/apimachinery/pkg/runtime/types.go
generated
vendored
1
vendor/k8s.io/apimachinery/pkg/runtime/types.go
generated
vendored
@ -42,6 +42,7 @@ type TypeMeta struct {
|
|||||||
|
|
||||||
const (
|
const (
|
||||||
ContentTypeJSON string = "application/json"
|
ContentTypeJSON string = "application/json"
|
||||||
|
ContentTypeYAML string = "application/yaml"
|
||||||
)
|
)
|
||||||
|
|
||||||
// RawExtension is used to hold extensions in external versions.
|
// RawExtension is used to hold extensions in external versions.
|
||||||
|
1
vendor/k8s.io/apimachinery/pkg/types/patch.go
generated
vendored
1
vendor/k8s.io/apimachinery/pkg/types/patch.go
generated
vendored
@ -25,4 +25,5 @@ const (
|
|||||||
JSONPatchType PatchType = "application/json-patch+json"
|
JSONPatchType PatchType = "application/json-patch+json"
|
||||||
MergePatchType PatchType = "application/merge-patch+json"
|
MergePatchType PatchType = "application/merge-patch+json"
|
||||||
StrategicMergePatchType PatchType = "application/strategic-merge-patch+json"
|
StrategicMergePatchType PatchType = "application/strategic-merge-patch+json"
|
||||||
|
ApplyPatchType PatchType = "application/apply-patch+yaml"
|
||||||
)
|
)
|
||||||
|
38
vendor/k8s.io/apimachinery/pkg/util/errors/errors.go
generated
vendored
38
vendor/k8s.io/apimachinery/pkg/util/errors/errors.go
generated
vendored
@ -19,6 +19,8 @@ package errors
|
|||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
|
"k8s.io/apimachinery/pkg/util/sets"
|
||||||
)
|
)
|
||||||
|
|
||||||
// MessageCountMap contains occurrence for each error message.
|
// MessageCountMap contains occurrence for each error message.
|
||||||
@ -67,12 +69,38 @@ func (agg aggregate) Error() string {
|
|||||||
if len(agg) == 1 {
|
if len(agg) == 1 {
|
||||||
return agg[0].Error()
|
return agg[0].Error()
|
||||||
}
|
}
|
||||||
result := fmt.Sprintf("[%s", agg[0].Error())
|
seenerrs := sets.NewString()
|
||||||
for i := 1; i < len(agg); i++ {
|
result := ""
|
||||||
result += fmt.Sprintf(", %s", agg[i].Error())
|
agg.visit(func(err error) {
|
||||||
|
msg := err.Error()
|
||||||
|
if seenerrs.Has(msg) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
seenerrs.Insert(msg)
|
||||||
|
if len(seenerrs) > 1 {
|
||||||
|
result += ", "
|
||||||
|
}
|
||||||
|
result += msg
|
||||||
|
})
|
||||||
|
if len(seenerrs) == 1 {
|
||||||
|
return result
|
||||||
|
}
|
||||||
|
return "[" + result + "]"
|
||||||
|
}
|
||||||
|
|
||||||
|
func (agg aggregate) visit(f func(err error)) {
|
||||||
|
for _, err := range agg {
|
||||||
|
switch err := err.(type) {
|
||||||
|
case aggregate:
|
||||||
|
err.visit(f)
|
||||||
|
case Aggregate:
|
||||||
|
for _, nestedErr := range err.Errors() {
|
||||||
|
f(nestedErr)
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
f(err)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
result += "]"
|
|
||||||
return result
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Errors is part of the Aggregate interface.
|
// Errors is part of the Aggregate interface.
|
||||||
|
9
vendor/k8s.io/apimachinery/pkg/util/net/http.go
generated
vendored
9
vendor/k8s.io/apimachinery/pkg/util/net/http.go
generated
vendored
@ -68,14 +68,17 @@ func IsProbableEOF(err error) bool {
|
|||||||
if uerr, ok := err.(*url.Error); ok {
|
if uerr, ok := err.(*url.Error); ok {
|
||||||
err = uerr.Err
|
err = uerr.Err
|
||||||
}
|
}
|
||||||
|
msg := err.Error()
|
||||||
switch {
|
switch {
|
||||||
case err == io.EOF:
|
case err == io.EOF:
|
||||||
return true
|
return true
|
||||||
case err.Error() == "http: can't write HTTP request on broken connection":
|
case msg == "http: can't write HTTP request on broken connection":
|
||||||
return true
|
return true
|
||||||
case strings.Contains(err.Error(), "connection reset by peer"):
|
case strings.Contains(msg, "http2: server sent GOAWAY and closed the connection"):
|
||||||
return true
|
return true
|
||||||
case strings.Contains(strings.ToLower(err.Error()), "use of closed network connection"):
|
case strings.Contains(msg, "connection reset by peer"):
|
||||||
|
return true
|
||||||
|
case strings.Contains(strings.ToLower(msg), "use of closed network connection"):
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
return false
|
return false
|
||||||
|
13
vendor/k8s.io/apimachinery/pkg/util/validation/validation.go
generated
vendored
13
vendor/k8s.io/apimachinery/pkg/util/validation/validation.go
generated
vendored
@ -87,6 +87,8 @@ func IsFullyQualifiedName(fldPath *field.Path, name string) field.ErrorList {
|
|||||||
|
|
||||||
const labelValueFmt string = "(" + qualifiedNameFmt + ")?"
|
const labelValueFmt string = "(" + qualifiedNameFmt + ")?"
|
||||||
const labelValueErrMsg string = "a valid label must be an empty string or consist of alphanumeric characters, '-', '_' or '.', and must start and end with an alphanumeric character"
|
const labelValueErrMsg string = "a valid label must be an empty string or consist of alphanumeric characters, '-', '_' or '.', and must start and end with an alphanumeric character"
|
||||||
|
|
||||||
|
// LabelValueMaxLength is a label's max length
|
||||||
const LabelValueMaxLength int = 63
|
const LabelValueMaxLength int = 63
|
||||||
|
|
||||||
var labelValueRegexp = regexp.MustCompile("^" + labelValueFmt + "$")
|
var labelValueRegexp = regexp.MustCompile("^" + labelValueFmt + "$")
|
||||||
@ -107,6 +109,8 @@ func IsValidLabelValue(value string) []string {
|
|||||||
|
|
||||||
const dns1123LabelFmt string = "[a-z0-9]([-a-z0-9]*[a-z0-9])?"
|
const dns1123LabelFmt string = "[a-z0-9]([-a-z0-9]*[a-z0-9])?"
|
||||||
const dns1123LabelErrMsg string = "a DNS-1123 label must consist of lower case alphanumeric characters or '-', and must start and end with an alphanumeric character"
|
const dns1123LabelErrMsg string = "a DNS-1123 label must consist of lower case alphanumeric characters or '-', and must start and end with an alphanumeric character"
|
||||||
|
|
||||||
|
// DNS1123LabelMaxLength is a label's max length in DNS (RFC 1123)
|
||||||
const DNS1123LabelMaxLength int = 63
|
const DNS1123LabelMaxLength int = 63
|
||||||
|
|
||||||
var dns1123LabelRegexp = regexp.MustCompile("^" + dns1123LabelFmt + "$")
|
var dns1123LabelRegexp = regexp.MustCompile("^" + dns1123LabelFmt + "$")
|
||||||
@ -126,6 +130,8 @@ func IsDNS1123Label(value string) []string {
|
|||||||
|
|
||||||
const dns1123SubdomainFmt string = dns1123LabelFmt + "(\\." + dns1123LabelFmt + ")*"
|
const dns1123SubdomainFmt string = dns1123LabelFmt + "(\\." + dns1123LabelFmt + ")*"
|
||||||
const dns1123SubdomainErrorMsg string = "a DNS-1123 subdomain must consist of lower case alphanumeric characters, '-' or '.', and must start and end with an alphanumeric character"
|
const dns1123SubdomainErrorMsg string = "a DNS-1123 subdomain must consist of lower case alphanumeric characters, '-' or '.', and must start and end with an alphanumeric character"
|
||||||
|
|
||||||
|
// DNS1123SubdomainMaxLength is a subdomain's max length in DNS (RFC 1123)
|
||||||
const DNS1123SubdomainMaxLength int = 253
|
const DNS1123SubdomainMaxLength int = 253
|
||||||
|
|
||||||
var dns1123SubdomainRegexp = regexp.MustCompile("^" + dns1123SubdomainFmt + "$")
|
var dns1123SubdomainRegexp = regexp.MustCompile("^" + dns1123SubdomainFmt + "$")
|
||||||
@ -145,6 +151,8 @@ func IsDNS1123Subdomain(value string) []string {
|
|||||||
|
|
||||||
const dns1035LabelFmt string = "[a-z]([-a-z0-9]*[a-z0-9])?"
|
const dns1035LabelFmt string = "[a-z]([-a-z0-9]*[a-z0-9])?"
|
||||||
const dns1035LabelErrMsg string = "a DNS-1035 label must consist of lower case alphanumeric characters or '-', start with an alphabetic character, and end with an alphanumeric character"
|
const dns1035LabelErrMsg string = "a DNS-1035 label must consist of lower case alphanumeric characters or '-', start with an alphabetic character, and end with an alphanumeric character"
|
||||||
|
|
||||||
|
// DNS1035LabelMaxLength is a label's max length in DNS (RFC 1035)
|
||||||
const DNS1035LabelMaxLength int = 63
|
const DNS1035LabelMaxLength int = 63
|
||||||
|
|
||||||
var dns1035LabelRegexp = regexp.MustCompile("^" + dns1035LabelFmt + "$")
|
var dns1035LabelRegexp = regexp.MustCompile("^" + dns1035LabelFmt + "$")
|
||||||
@ -282,6 +290,7 @@ const percentErrMsg string = "a valid percent string must be a numeric string fo
|
|||||||
|
|
||||||
var percentRegexp = regexp.MustCompile("^" + percentFmt + "$")
|
var percentRegexp = regexp.MustCompile("^" + percentFmt + "$")
|
||||||
|
|
||||||
|
// IsValidPercent checks that string is in the form of a percentage
|
||||||
func IsValidPercent(percent string) []string {
|
func IsValidPercent(percent string) []string {
|
||||||
if !percentRegexp.MatchString(percent) {
|
if !percentRegexp.MatchString(percent) {
|
||||||
return []string{RegexError(percentErrMsg, percentFmt, "1%", "93%")}
|
return []string{RegexError(percentErrMsg, percentFmt, "1%", "93%")}
|
||||||
@ -391,13 +400,13 @@ func hasChDirPrefix(value string) []string {
|
|||||||
return errs
|
return errs
|
||||||
}
|
}
|
||||||
|
|
||||||
// IsSocketAddr checks that a string conforms is a valid socket address
|
// IsValidSocketAddr checks that string represents a valid socket address
|
||||||
// as defined in RFC 789. (e.g 0.0.0.0:10254 or [::]:10254))
|
// as defined in RFC 789. (e.g 0.0.0.0:10254 or [::]:10254))
|
||||||
func IsValidSocketAddr(value string) []string {
|
func IsValidSocketAddr(value string) []string {
|
||||||
var errs []string
|
var errs []string
|
||||||
ip, port, err := net.SplitHostPort(value)
|
ip, port, err := net.SplitHostPort(value)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return append(errs, "must be a valid socket address format, (e.g. 0.0.0.0:10254 or [::]:10254)")
|
errs = append(errs, "must be a valid socket address format, (e.g. 0.0.0.0:10254 or [::]:10254)")
|
||||||
return errs
|
return errs
|
||||||
}
|
}
|
||||||
portInt, _ := strconv.Atoi(port)
|
portInt, _ := strconv.Atoi(port)
|
||||||
|
2
vendor/k8s.io/apimachinery/pkg/util/yaml/decoder.go
generated
vendored
2
vendor/k8s.io/apimachinery/pkg/util/yaml/decoder.go
generated
vendored
@ -217,11 +217,9 @@ func (d *YAMLOrJSONDecoder) Decode(into interface{}) error {
|
|||||||
if d.decoder == nil {
|
if d.decoder == nil {
|
||||||
buffer, origData, isJSON := GuessJSONStream(d.r, d.bufferSize)
|
buffer, origData, isJSON := GuessJSONStream(d.r, d.bufferSize)
|
||||||
if isJSON {
|
if isJSON {
|
||||||
klog.V(4).Infof("decoding stream as JSON")
|
|
||||||
d.decoder = json.NewDecoder(buffer)
|
d.decoder = json.NewDecoder(buffer)
|
||||||
d.rawData = origData
|
d.rawData = origData
|
||||||
} else {
|
} else {
|
||||||
klog.V(4).Infof("decoding stream as YAML")
|
|
||||||
d.decoder = NewYAMLToJSONDecoder(buffer)
|
d.decoder = NewYAMLToJSONDecoder(buffer)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
26
vendor/k8s.io/client-go/README.md
generated
vendored
26
vendor/k8s.io/client-go/README.md
generated
vendored
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
Go clients for talking to a [kubernetes](http://kubernetes.io/) cluster.
|
Go clients for talking to a [kubernetes](http://kubernetes.io/) cluster.
|
||||||
|
|
||||||
We currently recommend using the v9.0.0 tag. See [INSTALL.md](/INSTALL.md) for
|
We currently recommend using the v10.0.0 tag. See [INSTALL.md](/INSTALL.md) for
|
||||||
detailed installation instructions. `go get k8s.io/client-go/...` works, but
|
detailed installation instructions. `go get k8s.io/client-go/...` works, but
|
||||||
will build `master`, which doesn't handle the dependencies well.
|
will build `master`, which doesn't handle the dependencies well.
|
||||||
|
|
||||||
@ -38,6 +38,7 @@ will build `master`, which doesn't handle the dependencies well.
|
|||||||
* The `kubernetes` package contains the clientset to access Kubernetes API.
|
* The `kubernetes` package contains the clientset to access Kubernetes API.
|
||||||
* The `discovery` package is used to discover APIs supported by a Kubernetes API server.
|
* The `discovery` package is used to discover APIs supported by a Kubernetes API server.
|
||||||
* The `dynamic` package contains a dynamic client that can perform generic operations on arbitrary Kubernetes API objects.
|
* The `dynamic` package contains a dynamic client that can perform generic operations on arbitrary Kubernetes API objects.
|
||||||
|
* The `plugin/pkg/client/auth` packages contain optional authentication plugins for obtaining credentials from external sources.
|
||||||
* The `transport` package is used to set up auth and start a connection.
|
* The `transport` package is used to set up auth and start a connection.
|
||||||
* The `tools/cache` package is useful for writing controllers.
|
* The `tools/cache` package is useful for writing controllers.
|
||||||
|
|
||||||
@ -91,16 +92,16 @@ We will backport bugfixes--but not new features--into older versions of
|
|||||||
|
|
||||||
#### Compatibility matrix
|
#### Compatibility matrix
|
||||||
|
|
||||||
| | Kubernetes 1.6 | Kubernetes 1.7 | Kubernetes 1.8 | Kubernetes 1.9 | Kubernetes 1.10 | Kubernetes 1.11 | Kubernetes 1.12 |
|
| | Kubernetes 1.7 | Kubernetes 1.8 | Kubernetes 1.9 | Kubernetes 1.10 | Kubernetes 1.11 | Kubernetes 1.12 | Kubernetes 1.13 |
|
||||||
|---------------------|----------------|----------------|----------------|----------------|-----------------|-----------------|-----------------|
|
|---------------------|----------------|----------------|----------------|-----------------|-----------------|-----------------|-----------------|
|
||||||
| client-go 3.0 | ✓ | - | +- | +- | +- | +- | +- |
|
| client-go 4.0 | ✓ | +- | +- | +- | +- | +- | +- |
|
||||||
| client-go 4.0 | +- | ✓ | +- | +- | +- | +- | +- |
|
| client-go 5.0 | +- | ✓ | +- | +- | +- | +- | +- |
|
||||||
| client-go 5.0 | +- | +- | ✓ | +- | +- | +- | +- |
|
| client-go 6.0 | +- | +- | ✓ | +- | +- | +- | +- |
|
||||||
| client-go 6.0 | +- | +- | +- | ✓ | +- | +- | +- |
|
| client-go 7.0 | +- | +- | +- | ✓ | +- | +- | +- |
|
||||||
| client-go 7.0 | +- | +- | +- | +- | ✓ | +- | +- |
|
| client-go 8.0 | +- | +- | +- | +- | ✓ | +- | +- |
|
||||||
| client-go 8.0 | +- | +- | +- | +- | +- | ✓ | +- |
|
| client-go 9.0 | +- | +- | +- | +- | +- | ✓ | +- |
|
||||||
| client-go 9.0 | +- | +- | +- | +- | +- | +- | ✓ |
|
| client-go 10.0 | +- | +- | +- | +- | +- | +- | ✓ |
|
||||||
| client-go HEAD | +- | +- | +- | +- | +- | +- | +- |
|
| client-go HEAD | +- | +- | +- | +- | +- | +- | +- |
|
||||||
|
|
||||||
Key:
|
Key:
|
||||||
|
|
||||||
@ -128,9 +129,10 @@ between client-go versions.
|
|||||||
| client-go 4.0 | Kubernetes main repo, 1.7 branch | = - |
|
| client-go 4.0 | Kubernetes main repo, 1.7 branch | = - |
|
||||||
| client-go 5.0 | Kubernetes main repo, 1.8 branch | = - |
|
| client-go 5.0 | Kubernetes main repo, 1.8 branch | = - |
|
||||||
| client-go 6.0 | Kubernetes main repo, 1.9 branch | = - |
|
| client-go 6.0 | Kubernetes main repo, 1.9 branch | = - |
|
||||||
| client-go 7.0 | Kubernetes main repo, 1.10 branch | ✓ |
|
| client-go 7.0 | Kubernetes main repo, 1.10 branch | = - |
|
||||||
| client-go 8.0 | Kubernetes main repo, 1.11 branch | ✓ |
|
| client-go 8.0 | Kubernetes main repo, 1.11 branch | ✓ |
|
||||||
| client-go 9.0 | Kubernetes main repo, 1.12 branch | ✓ |
|
| client-go 9.0 | Kubernetes main repo, 1.12 branch | ✓ |
|
||||||
|
| client-go 10.0 | Kubernetes main repo, 1.13 branch | ✓ |
|
||||||
| client-go HEAD | Kubernetes main repo, master branch | ✓ |
|
| client-go HEAD | Kubernetes main repo, master branch | ✓ |
|
||||||
|
|
||||||
Key:
|
Key:
|
||||||
|
2
vendor/k8s.io/client-go/pkg/apis/clientauthentication/v1alpha1/types.go
generated
vendored
2
vendor/k8s.io/client-go/pkg/apis/clientauthentication/v1alpha1/types.go
generated
vendored
@ -22,7 +22,7 @@ import (
|
|||||||
|
|
||||||
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
||||||
|
|
||||||
// ExecCredentials is used by exec-based plugins to communicate credentials to
|
// ExecCredential is used by exec-based plugins to communicate credentials to
|
||||||
// HTTP transports.
|
// HTTP transports.
|
||||||
type ExecCredential struct {
|
type ExecCredential struct {
|
||||||
metav1.TypeMeta `json:",inline"`
|
metav1.TypeMeta `json:",inline"`
|
||||||
|
15
vendor/k8s.io/client-go/plugin/pkg/client/auth/exec/exec.go
generated
vendored
15
vendor/k8s.io/client-go/plugin/pkg/client/auth/exec/exec.go
generated
vendored
@ -31,8 +31,9 @@ import (
|
|||||||
"sync"
|
"sync"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"github.com/davecgh/go-spew/spew"
|
||||||
"golang.org/x/crypto/ssh/terminal"
|
"golang.org/x/crypto/ssh/terminal"
|
||||||
"k8s.io/apimachinery/pkg/apis/meta/v1"
|
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
"k8s.io/apimachinery/pkg/runtime"
|
"k8s.io/apimachinery/pkg/runtime"
|
||||||
"k8s.io/apimachinery/pkg/runtime/schema"
|
"k8s.io/apimachinery/pkg/runtime/schema"
|
||||||
"k8s.io/apimachinery/pkg/runtime/serializer"
|
"k8s.io/apimachinery/pkg/runtime/serializer"
|
||||||
@ -73,8 +74,10 @@ func newCache() *cache {
|
|||||||
return &cache{m: make(map[string]*Authenticator)}
|
return &cache{m: make(map[string]*Authenticator)}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var spewConfig = &spew.ConfigState{DisableMethods: true, Indent: " "}
|
||||||
|
|
||||||
func cacheKey(c *api.ExecConfig) string {
|
func cacheKey(c *api.ExecConfig) string {
|
||||||
return fmt.Sprintf("%#v", c)
|
return spewConfig.Sprint(c)
|
||||||
}
|
}
|
||||||
|
|
||||||
type cache struct {
|
type cache struct {
|
||||||
@ -172,13 +175,9 @@ type credentials struct {
|
|||||||
// UpdateTransportConfig updates the transport.Config to use credentials
|
// UpdateTransportConfig updates the transport.Config to use credentials
|
||||||
// returned by the plugin.
|
// returned by the plugin.
|
||||||
func (a *Authenticator) UpdateTransportConfig(c *transport.Config) error {
|
func (a *Authenticator) UpdateTransportConfig(c *transport.Config) error {
|
||||||
wt := c.WrapTransport
|
c.Wrap(func(rt http.RoundTripper) http.RoundTripper {
|
||||||
c.WrapTransport = func(rt http.RoundTripper) http.RoundTripper {
|
|
||||||
if wt != nil {
|
|
||||||
rt = wt(rt)
|
|
||||||
}
|
|
||||||
return &roundTripper{a, rt}
|
return &roundTripper{a, rt}
|
||||||
}
|
})
|
||||||
|
|
||||||
if c.TLS.GetCert != nil {
|
if c.TLS.GetCert != nil {
|
||||||
return errors.New("can't add TLS certificate callback: transport.Config.TLS.GetCert already set")
|
return errors.New("can't add TLS certificate callback: transport.Config.TLS.GetCert already set")
|
||||||
|
109
vendor/k8s.io/client-go/rest/config.go
generated
vendored
109
vendor/k8s.io/client-go/rest/config.go
generated
vendored
@ -34,6 +34,7 @@ import (
|
|||||||
"k8s.io/apimachinery/pkg/runtime/schema"
|
"k8s.io/apimachinery/pkg/runtime/schema"
|
||||||
"k8s.io/client-go/pkg/version"
|
"k8s.io/client-go/pkg/version"
|
||||||
clientcmdapi "k8s.io/client-go/tools/clientcmd/api"
|
clientcmdapi "k8s.io/client-go/tools/clientcmd/api"
|
||||||
|
"k8s.io/client-go/transport"
|
||||||
certutil "k8s.io/client-go/util/cert"
|
certutil "k8s.io/client-go/util/cert"
|
||||||
"k8s.io/client-go/util/flowcontrol"
|
"k8s.io/client-go/util/flowcontrol"
|
||||||
"k8s.io/klog"
|
"k8s.io/klog"
|
||||||
@ -70,6 +71,11 @@ type Config struct {
|
|||||||
// TODO: demonstrate an OAuth2 compatible client.
|
// TODO: demonstrate an OAuth2 compatible client.
|
||||||
BearerToken string
|
BearerToken string
|
||||||
|
|
||||||
|
// Path to a file containing a BearerToken.
|
||||||
|
// If set, the contents are periodically read.
|
||||||
|
// The last successfully read value takes precedence over BearerToken.
|
||||||
|
BearerTokenFile string
|
||||||
|
|
||||||
// Impersonate is the configuration that RESTClient will use for impersonation.
|
// Impersonate is the configuration that RESTClient will use for impersonation.
|
||||||
Impersonate ImpersonationConfig
|
Impersonate ImpersonationConfig
|
||||||
|
|
||||||
@ -90,13 +96,16 @@ type Config struct {
|
|||||||
|
|
||||||
// Transport may be used for custom HTTP behavior. This attribute may not
|
// Transport may be used for custom HTTP behavior. This attribute may not
|
||||||
// be specified with the TLS client certificate options. Use WrapTransport
|
// be specified with the TLS client certificate options. Use WrapTransport
|
||||||
// for most client level operations.
|
// to provide additional per-server middleware behavior.
|
||||||
Transport http.RoundTripper
|
Transport http.RoundTripper
|
||||||
// WrapTransport will be invoked for custom HTTP behavior after the underlying
|
// WrapTransport will be invoked for custom HTTP behavior after the underlying
|
||||||
// transport is initialized (either the transport created from TLSClientConfig,
|
// transport is initialized (either the transport created from TLSClientConfig,
|
||||||
// Transport, or http.DefaultTransport). The config may layer other RoundTrippers
|
// Transport, or http.DefaultTransport). The config may layer other RoundTrippers
|
||||||
// on top of the returned RoundTripper.
|
// on top of the returned RoundTripper.
|
||||||
WrapTransport func(rt http.RoundTripper) http.RoundTripper
|
//
|
||||||
|
// A future release will change this field to an array. Use config.Wrap()
|
||||||
|
// instead of setting this value directly.
|
||||||
|
WrapTransport transport.WrapperFunc
|
||||||
|
|
||||||
// QPS indicates the maximum QPS to the master from this client.
|
// QPS indicates the maximum QPS to the master from this client.
|
||||||
// If it's zero, the created RESTClient will use DefaultQPS: 5
|
// If it's zero, the created RESTClient will use DefaultQPS: 5
|
||||||
@ -120,6 +129,47 @@ type Config struct {
|
|||||||
// Version string
|
// Version string
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var _ fmt.Stringer = new(Config)
|
||||||
|
var _ fmt.GoStringer = new(Config)
|
||||||
|
|
||||||
|
type sanitizedConfig *Config
|
||||||
|
|
||||||
|
type sanitizedAuthConfigPersister struct{ AuthProviderConfigPersister }
|
||||||
|
|
||||||
|
func (sanitizedAuthConfigPersister) GoString() string {
|
||||||
|
return "rest.AuthProviderConfigPersister(--- REDACTED ---)"
|
||||||
|
}
|
||||||
|
func (sanitizedAuthConfigPersister) String() string {
|
||||||
|
return "rest.AuthProviderConfigPersister(--- REDACTED ---)"
|
||||||
|
}
|
||||||
|
|
||||||
|
// GoString implements fmt.GoStringer and sanitizes sensitive fields of Config
|
||||||
|
// to prevent accidental leaking via logs.
|
||||||
|
func (c *Config) GoString() string {
|
||||||
|
return c.String()
|
||||||
|
}
|
||||||
|
|
||||||
|
// String implements fmt.Stringer and sanitizes sensitive fields of Config to
|
||||||
|
// prevent accidental leaking via logs.
|
||||||
|
func (c *Config) String() string {
|
||||||
|
if c == nil {
|
||||||
|
return "<nil>"
|
||||||
|
}
|
||||||
|
cc := sanitizedConfig(CopyConfig(c))
|
||||||
|
// Explicitly mark non-empty credential fields as redacted.
|
||||||
|
if cc.Password != "" {
|
||||||
|
cc.Password = "--- REDACTED ---"
|
||||||
|
}
|
||||||
|
if cc.BearerToken != "" {
|
||||||
|
cc.BearerToken = "--- REDACTED ---"
|
||||||
|
}
|
||||||
|
if cc.AuthConfigPersister != nil {
|
||||||
|
cc.AuthConfigPersister = sanitizedAuthConfigPersister{cc.AuthConfigPersister}
|
||||||
|
}
|
||||||
|
|
||||||
|
return fmt.Sprintf("%#v", cc)
|
||||||
|
}
|
||||||
|
|
||||||
// ImpersonationConfig has all the available impersonation options
|
// ImpersonationConfig has all the available impersonation options
|
||||||
type ImpersonationConfig struct {
|
type ImpersonationConfig struct {
|
||||||
// UserName is the username to impersonate on each request.
|
// UserName is the username to impersonate on each request.
|
||||||
@ -159,6 +209,40 @@ type TLSClientConfig struct {
|
|||||||
CAData []byte
|
CAData []byte
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var _ fmt.Stringer = TLSClientConfig{}
|
||||||
|
var _ fmt.GoStringer = TLSClientConfig{}
|
||||||
|
|
||||||
|
type sanitizedTLSClientConfig TLSClientConfig
|
||||||
|
|
||||||
|
// GoString implements fmt.GoStringer and sanitizes sensitive fields of
|
||||||
|
// TLSClientConfig to prevent accidental leaking via logs.
|
||||||
|
func (c TLSClientConfig) GoString() string {
|
||||||
|
return c.String()
|
||||||
|
}
|
||||||
|
|
||||||
|
// String implements fmt.Stringer and sanitizes sensitive fields of
|
||||||
|
// TLSClientConfig to prevent accidental leaking via logs.
|
||||||
|
func (c TLSClientConfig) String() string {
|
||||||
|
cc := sanitizedTLSClientConfig{
|
||||||
|
Insecure: c.Insecure,
|
||||||
|
ServerName: c.ServerName,
|
||||||
|
CertFile: c.CertFile,
|
||||||
|
KeyFile: c.KeyFile,
|
||||||
|
CAFile: c.CAFile,
|
||||||
|
CertData: c.CertData,
|
||||||
|
KeyData: c.KeyData,
|
||||||
|
CAData: c.CAData,
|
||||||
|
}
|
||||||
|
// Explicitly mark non-empty credential fields as redacted.
|
||||||
|
if len(cc.CertData) != 0 {
|
||||||
|
cc.CertData = []byte("--- TRUNCATED ---")
|
||||||
|
}
|
||||||
|
if len(cc.KeyData) != 0 {
|
||||||
|
cc.KeyData = []byte("--- REDACTED ---")
|
||||||
|
}
|
||||||
|
return fmt.Sprintf("%#v", cc)
|
||||||
|
}
|
||||||
|
|
||||||
type ContentConfig struct {
|
type ContentConfig struct {
|
||||||
// AcceptContentTypes specifies the types the client will accept and is optional.
|
// AcceptContentTypes specifies the types the client will accept and is optional.
|
||||||
// If not set, ContentType will be used to define the Accept header
|
// If not set, ContentType will be used to define the Accept header
|
||||||
@ -322,9 +406,8 @@ func InClusterConfig() (*Config, error) {
|
|||||||
return nil, ErrNotInCluster
|
return nil, ErrNotInCluster
|
||||||
}
|
}
|
||||||
|
|
||||||
ts := NewCachedFileTokenSource(tokenFile)
|
token, err := ioutil.ReadFile(tokenFile)
|
||||||
|
if err != nil {
|
||||||
if _, err := ts.Token(); err != nil {
|
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -340,7 +423,8 @@ func InClusterConfig() (*Config, error) {
|
|||||||
// TODO: switch to using cluster DNS.
|
// TODO: switch to using cluster DNS.
|
||||||
Host: "https://" + net.JoinHostPort(host, port),
|
Host: "https://" + net.JoinHostPort(host, port),
|
||||||
TLSClientConfig: tlsClientConfig,
|
TLSClientConfig: tlsClientConfig,
|
||||||
WrapTransport: TokenSourceWrapTransport(ts),
|
BearerToken: string(token),
|
||||||
|
BearerTokenFile: tokenFile,
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -430,12 +514,13 @@ func AnonymousClientConfig(config *Config) *Config {
|
|||||||
// CopyConfig returns a copy of the given config
|
// CopyConfig returns a copy of the given config
|
||||||
func CopyConfig(config *Config) *Config {
|
func CopyConfig(config *Config) *Config {
|
||||||
return &Config{
|
return &Config{
|
||||||
Host: config.Host,
|
Host: config.Host,
|
||||||
APIPath: config.APIPath,
|
APIPath: config.APIPath,
|
||||||
ContentConfig: config.ContentConfig,
|
ContentConfig: config.ContentConfig,
|
||||||
Username: config.Username,
|
Username: config.Username,
|
||||||
Password: config.Password,
|
Password: config.Password,
|
||||||
BearerToken: config.BearerToken,
|
BearerToken: config.BearerToken,
|
||||||
|
BearerTokenFile: config.BearerTokenFile,
|
||||||
Impersonate: ImpersonationConfig{
|
Impersonate: ImpersonationConfig{
|
||||||
Groups: config.Impersonate.Groups,
|
Groups: config.Impersonate.Groups,
|
||||||
Extra: config.Impersonate.Extra,
|
Extra: config.Impersonate.Extra,
|
||||||
|
6
vendor/k8s.io/client-go/rest/request.go
generated
vendored
6
vendor/k8s.io/client-go/rest/request.go
generated
vendored
@ -1100,7 +1100,8 @@ func (r Result) Into(obj runtime.Object) error {
|
|||||||
return fmt.Errorf("serializer for %s doesn't exist", r.contentType)
|
return fmt.Errorf("serializer for %s doesn't exist", r.contentType)
|
||||||
}
|
}
|
||||||
if len(r.body) == 0 {
|
if len(r.body) == 0 {
|
||||||
return fmt.Errorf("0-length response")
|
return fmt.Errorf("0-length response with status code: %d and content type: %s",
|
||||||
|
r.statusCode, r.contentType)
|
||||||
}
|
}
|
||||||
|
|
||||||
out, _, err := r.decoder.Decode(r.body, nil, obj)
|
out, _, err := r.decoder.Decode(r.body, nil, obj)
|
||||||
@ -1195,7 +1196,6 @@ func IsValidPathSegmentPrefix(name string) []string {
|
|||||||
func ValidatePathSegmentName(name string, prefix bool) []string {
|
func ValidatePathSegmentName(name string, prefix bool) []string {
|
||||||
if prefix {
|
if prefix {
|
||||||
return IsValidPathSegmentPrefix(name)
|
return IsValidPathSegmentPrefix(name)
|
||||||
} else {
|
|
||||||
return IsValidPathSegmentName(name)
|
|
||||||
}
|
}
|
||||||
|
return IsValidPathSegmentName(name)
|
||||||
}
|
}
|
||||||
|
17
vendor/k8s.io/client-go/rest/transport.go
generated
vendored
17
vendor/k8s.io/client-go/rest/transport.go
generated
vendored
@ -103,14 +103,15 @@ func (c *Config) TransportConfig() (*transport.Config, error) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
wt := conf.WrapTransport
|
conf.Wrap(provider.WrapTransport)
|
||||||
if wt != nil {
|
|
||||||
conf.WrapTransport = func(rt http.RoundTripper) http.RoundTripper {
|
|
||||||
return provider.WrapTransport(wt(rt))
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
conf.WrapTransport = provider.WrapTransport
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return conf, nil
|
return conf, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Wrap adds a transport middleware function that will give the caller
|
||||||
|
// an opportunity to wrap the underlying http.RoundTripper prior to the
|
||||||
|
// first API call being made. The provided function is invoked after any
|
||||||
|
// existing transport wrappers are invoked.
|
||||||
|
func (c *Config) Wrap(fn transport.WrapperFunc) {
|
||||||
|
c.WrapTransport = transport.Wrappers(c.WrapTransport, fn)
|
||||||
|
}
|
||||||
|
44
vendor/k8s.io/client-go/tools/clientcmd/api/types.go
generated
vendored
44
vendor/k8s.io/client-go/tools/clientcmd/api/types.go
generated
vendored
@ -17,6 +17,8 @@ limitations under the License.
|
|||||||
package api
|
package api
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"fmt"
|
||||||
|
|
||||||
"k8s.io/apimachinery/pkg/runtime"
|
"k8s.io/apimachinery/pkg/runtime"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -150,6 +152,25 @@ type AuthProviderConfig struct {
|
|||||||
Config map[string]string `json:"config,omitempty"`
|
Config map[string]string `json:"config,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var _ fmt.Stringer = new(AuthProviderConfig)
|
||||||
|
var _ fmt.GoStringer = new(AuthProviderConfig)
|
||||||
|
|
||||||
|
// GoString implements fmt.GoStringer and sanitizes sensitive fields of
|
||||||
|
// AuthProviderConfig to prevent accidental leaking via logs.
|
||||||
|
func (c AuthProviderConfig) GoString() string {
|
||||||
|
return c.String()
|
||||||
|
}
|
||||||
|
|
||||||
|
// String implements fmt.Stringer and sanitizes sensitive fields of
|
||||||
|
// AuthProviderConfig to prevent accidental leaking via logs.
|
||||||
|
func (c AuthProviderConfig) String() string {
|
||||||
|
cfg := "<nil>"
|
||||||
|
if c.Config != nil {
|
||||||
|
cfg = "--- REDACTED ---"
|
||||||
|
}
|
||||||
|
return fmt.Sprintf("api.AuthProviderConfig{Name: %q, Config: map[string]string{%s}}", c.Name, cfg)
|
||||||
|
}
|
||||||
|
|
||||||
// ExecConfig specifies a command to provide client credentials. The command is exec'd
|
// ExecConfig specifies a command to provide client credentials. The command is exec'd
|
||||||
// and outputs structured stdout holding credentials.
|
// and outputs structured stdout holding credentials.
|
||||||
//
|
//
|
||||||
@ -172,6 +193,29 @@ type ExecConfig struct {
|
|||||||
APIVersion string `json:"apiVersion,omitempty"`
|
APIVersion string `json:"apiVersion,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var _ fmt.Stringer = new(ExecConfig)
|
||||||
|
var _ fmt.GoStringer = new(ExecConfig)
|
||||||
|
|
||||||
|
// GoString implements fmt.GoStringer and sanitizes sensitive fields of
|
||||||
|
// ExecConfig to prevent accidental leaking via logs.
|
||||||
|
func (c ExecConfig) GoString() string {
|
||||||
|
return c.String()
|
||||||
|
}
|
||||||
|
|
||||||
|
// String implements fmt.Stringer and sanitizes sensitive fields of ExecConfig
|
||||||
|
// to prevent accidental leaking via logs.
|
||||||
|
func (c ExecConfig) String() string {
|
||||||
|
var args []string
|
||||||
|
if len(c.Args) > 0 {
|
||||||
|
args = []string{"--- REDACTED ---"}
|
||||||
|
}
|
||||||
|
env := "[]ExecEnvVar(nil)"
|
||||||
|
if len(c.Env) > 0 {
|
||||||
|
env = "[]ExecEnvVar{--- REDACTED ---}"
|
||||||
|
}
|
||||||
|
return fmt.Sprintf("api.AuthProviderConfig{Command: %q, Args: %#v, Env: %s, APIVersion: %q}", c.Command, args, env, c.APIVersion)
|
||||||
|
}
|
||||||
|
|
||||||
// ExecEnvVar is used for setting environment variables when executing an exec-based
|
// ExecEnvVar is used for setting environment variables when executing an exec-based
|
||||||
// credential plugin.
|
// credential plugin.
|
||||||
type ExecEnvVar struct {
|
type ExecEnvVar struct {
|
||||||
|
20
vendor/k8s.io/client-go/transport/config.go
generated
vendored
20
vendor/k8s.io/client-go/transport/config.go
generated
vendored
@ -39,6 +39,11 @@ type Config struct {
|
|||||||
// Bearer token for authentication
|
// Bearer token for authentication
|
||||||
BearerToken string
|
BearerToken string
|
||||||
|
|
||||||
|
// Path to a file containing a BearerToken.
|
||||||
|
// If set, the contents are periodically read.
|
||||||
|
// The last successfully read value takes precedence over BearerToken.
|
||||||
|
BearerTokenFile string
|
||||||
|
|
||||||
// Impersonate is the config that this Config will impersonate using
|
// Impersonate is the config that this Config will impersonate using
|
||||||
Impersonate ImpersonationConfig
|
Impersonate ImpersonationConfig
|
||||||
|
|
||||||
@ -52,7 +57,10 @@ type Config struct {
|
|||||||
// from TLSClientConfig, Transport, or http.DefaultTransport). The
|
// from TLSClientConfig, Transport, or http.DefaultTransport). The
|
||||||
// config may layer other RoundTrippers on top of the returned
|
// config may layer other RoundTrippers on top of the returned
|
||||||
// RoundTripper.
|
// RoundTripper.
|
||||||
WrapTransport func(rt http.RoundTripper) http.RoundTripper
|
//
|
||||||
|
// A future release will change this field to an array. Use config.Wrap()
|
||||||
|
// instead of setting this value directly.
|
||||||
|
WrapTransport WrapperFunc
|
||||||
|
|
||||||
// Dial specifies the dial function for creating unencrypted TCP connections.
|
// Dial specifies the dial function for creating unencrypted TCP connections.
|
||||||
Dial func(ctx context.Context, network, address string) (net.Conn, error)
|
Dial func(ctx context.Context, network, address string) (net.Conn, error)
|
||||||
@ -80,7 +88,7 @@ func (c *Config) HasBasicAuth() bool {
|
|||||||
|
|
||||||
// HasTokenAuth returns whether the configuration has token authentication or not.
|
// HasTokenAuth returns whether the configuration has token authentication or not.
|
||||||
func (c *Config) HasTokenAuth() bool {
|
func (c *Config) HasTokenAuth() bool {
|
||||||
return len(c.BearerToken) != 0
|
return len(c.BearerToken) != 0 || len(c.BearerTokenFile) != 0
|
||||||
}
|
}
|
||||||
|
|
||||||
// HasCertAuth returns whether the configuration has certificate authentication or not.
|
// HasCertAuth returns whether the configuration has certificate authentication or not.
|
||||||
@ -93,6 +101,14 @@ func (c *Config) HasCertCallback() bool {
|
|||||||
return c.TLS.GetCert != nil
|
return c.TLS.GetCert != nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Wrap adds a transport middleware function that will give the caller
|
||||||
|
// an opportunity to wrap the underlying http.RoundTripper prior to the
|
||||||
|
// first API call being made. The provided function is invoked after any
|
||||||
|
// existing transport wrappers are invoked.
|
||||||
|
func (c *Config) Wrap(fn WrapperFunc) {
|
||||||
|
c.WrapTransport = Wrappers(c.WrapTransport, fn)
|
||||||
|
}
|
||||||
|
|
||||||
// TLSConfig holds the information needed to set up a TLS transport.
|
// TLSConfig holds the information needed to set up a TLS transport.
|
||||||
type TLSConfig struct {
|
type TLSConfig struct {
|
||||||
CAFile string // Path of the PEM-encoded server trusted root certificates.
|
CAFile string // Path of the PEM-encoded server trusted root certificates.
|
||||||
|
39
vendor/k8s.io/client-go/transport/round_trippers.go
generated
vendored
39
vendor/k8s.io/client-go/transport/round_trippers.go
generated
vendored
@ -22,6 +22,7 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"golang.org/x/oauth2"
|
||||||
"k8s.io/klog"
|
"k8s.io/klog"
|
||||||
|
|
||||||
utilnet "k8s.io/apimachinery/pkg/util/net"
|
utilnet "k8s.io/apimachinery/pkg/util/net"
|
||||||
@ -44,7 +45,11 @@ func HTTPWrappersForConfig(config *Config, rt http.RoundTripper) (http.RoundTrip
|
|||||||
case config.HasBasicAuth() && config.HasTokenAuth():
|
case config.HasBasicAuth() && config.HasTokenAuth():
|
||||||
return nil, fmt.Errorf("username/password or bearer token may be set, but not both")
|
return nil, fmt.Errorf("username/password or bearer token may be set, but not both")
|
||||||
case config.HasTokenAuth():
|
case config.HasTokenAuth():
|
||||||
rt = NewBearerAuthRoundTripper(config.BearerToken, rt)
|
var err error
|
||||||
|
rt, err = NewBearerAuthWithRefreshRoundTripper(config.BearerToken, config.BearerTokenFile, rt)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
case config.HasBasicAuth():
|
case config.HasBasicAuth():
|
||||||
rt = NewBasicAuthRoundTripper(config.Username, config.Password, rt)
|
rt = NewBasicAuthRoundTripper(config.Username, config.Password, rt)
|
||||||
}
|
}
|
||||||
@ -265,13 +270,35 @@ func (rt *impersonatingRoundTripper) WrappedRoundTripper() http.RoundTripper { r
|
|||||||
|
|
||||||
type bearerAuthRoundTripper struct {
|
type bearerAuthRoundTripper struct {
|
||||||
bearer string
|
bearer string
|
||||||
|
source oauth2.TokenSource
|
||||||
rt http.RoundTripper
|
rt http.RoundTripper
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewBearerAuthRoundTripper adds the provided bearer token to a request
|
// NewBearerAuthRoundTripper adds the provided bearer token to a request
|
||||||
// unless the authorization header has already been set.
|
// unless the authorization header has already been set.
|
||||||
func NewBearerAuthRoundTripper(bearer string, rt http.RoundTripper) http.RoundTripper {
|
func NewBearerAuthRoundTripper(bearer string, rt http.RoundTripper) http.RoundTripper {
|
||||||
return &bearerAuthRoundTripper{bearer, rt}
|
return &bearerAuthRoundTripper{bearer, nil, rt}
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewBearerAuthRoundTripper adds the provided bearer token to a request
|
||||||
|
// unless the authorization header has already been set.
|
||||||
|
// If tokenFile is non-empty, it is periodically read,
|
||||||
|
// and the last successfully read content is used as the bearer token.
|
||||||
|
// If tokenFile is non-empty and bearer is empty, the tokenFile is read
|
||||||
|
// immediately to populate the initial bearer token.
|
||||||
|
func NewBearerAuthWithRefreshRoundTripper(bearer string, tokenFile string, rt http.RoundTripper) (http.RoundTripper, error) {
|
||||||
|
if len(tokenFile) == 0 {
|
||||||
|
return &bearerAuthRoundTripper{bearer, nil, rt}, nil
|
||||||
|
}
|
||||||
|
source := NewCachedFileTokenSource(tokenFile)
|
||||||
|
if len(bearer) == 0 {
|
||||||
|
token, err := source.Token()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
bearer = token.AccessToken
|
||||||
|
}
|
||||||
|
return &bearerAuthRoundTripper{bearer, source, rt}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (rt *bearerAuthRoundTripper) RoundTrip(req *http.Request) (*http.Response, error) {
|
func (rt *bearerAuthRoundTripper) RoundTrip(req *http.Request) (*http.Response, error) {
|
||||||
@ -280,7 +307,13 @@ func (rt *bearerAuthRoundTripper) RoundTrip(req *http.Request) (*http.Response,
|
|||||||
}
|
}
|
||||||
|
|
||||||
req = utilnet.CloneRequest(req)
|
req = utilnet.CloneRequest(req)
|
||||||
req.Header.Set("Authorization", fmt.Sprintf("Bearer %s", rt.bearer))
|
token := rt.bearer
|
||||||
|
if rt.source != nil {
|
||||||
|
if refreshedToken, err := rt.source.Token(); err == nil {
|
||||||
|
token = refreshedToken.AccessToken
|
||||||
|
}
|
||||||
|
}
|
||||||
|
req.Header.Set("Authorization", fmt.Sprintf("Bearer %s", token))
|
||||||
return rt.rt.RoundTrip(req)
|
return rt.rt.RoundTrip(req)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package rest
|
package transport
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
@ -47,14 +47,14 @@ func TokenSourceWrapTransport(ts oauth2.TokenSource) func(http.RoundTripper) htt
|
|||||||
func NewCachedFileTokenSource(path string) oauth2.TokenSource {
|
func NewCachedFileTokenSource(path string) oauth2.TokenSource {
|
||||||
return &cachingTokenSource{
|
return &cachingTokenSource{
|
||||||
now: time.Now,
|
now: time.Now,
|
||||||
leeway: 1 * time.Minute,
|
leeway: 10 * time.Second,
|
||||||
base: &fileTokenSource{
|
base: &fileTokenSource{
|
||||||
path: path,
|
path: path,
|
||||||
// This period was picked because it is half of the minimum validity
|
// This period was picked because it is half of the duration between when the kubelet
|
||||||
// duration for a token provisioned by they TokenRequest API. This is
|
// refreshes a projected service account token and when the original token expires.
|
||||||
// unsophisticated and should induce rotation at a frequency that should
|
// Default token lifetime is 10 minutes, and the kubelet starts refreshing at 80% of lifetime.
|
||||||
// work with the token volume source.
|
// This should induce re-reading at a frequency that works with the token volume source.
|
||||||
period: 5 * time.Minute,
|
period: time.Minute,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
58
vendor/k8s.io/client-go/transport/transport.go
generated
vendored
58
vendor/k8s.io/client-go/transport/transport.go
generated
vendored
@ -17,6 +17,7 @@ limitations under the License.
|
|||||||
package transport
|
package transport
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"context"
|
||||||
"crypto/tls"
|
"crypto/tls"
|
||||||
"crypto/x509"
|
"crypto/x509"
|
||||||
"fmt"
|
"fmt"
|
||||||
@ -167,3 +168,60 @@ func rootCertPool(caData []byte) *x509.CertPool {
|
|||||||
certPool.AppendCertsFromPEM(caData)
|
certPool.AppendCertsFromPEM(caData)
|
||||||
return certPool
|
return certPool
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// WrapperFunc wraps an http.RoundTripper when a new transport
|
||||||
|
// is created for a client, allowing per connection behavior
|
||||||
|
// to be injected.
|
||||||
|
type WrapperFunc func(rt http.RoundTripper) http.RoundTripper
|
||||||
|
|
||||||
|
// Wrappers accepts any number of wrappers and returns a wrapper
|
||||||
|
// function that is the equivalent of calling each of them in order. Nil
|
||||||
|
// values are ignored, which makes this function convenient for incrementally
|
||||||
|
// wrapping a function.
|
||||||
|
func Wrappers(fns ...WrapperFunc) WrapperFunc {
|
||||||
|
if len(fns) == 0 {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
// optimize the common case of wrapping a possibly nil transport wrapper
|
||||||
|
// with an additional wrapper
|
||||||
|
if len(fns) == 2 && fns[0] == nil {
|
||||||
|
return fns[1]
|
||||||
|
}
|
||||||
|
return func(rt http.RoundTripper) http.RoundTripper {
|
||||||
|
base := rt
|
||||||
|
for _, fn := range fns {
|
||||||
|
if fn != nil {
|
||||||
|
base = fn(base)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return base
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// ContextCanceller prevents new requests after the provided context is finished.
|
||||||
|
// err is returned when the context is closed, allowing the caller to provide a context
|
||||||
|
// appropriate error.
|
||||||
|
func ContextCanceller(ctx context.Context, err error) WrapperFunc {
|
||||||
|
return func(rt http.RoundTripper) http.RoundTripper {
|
||||||
|
return &contextCanceller{
|
||||||
|
ctx: ctx,
|
||||||
|
rt: rt,
|
||||||
|
err: err,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
type contextCanceller struct {
|
||||||
|
ctx context.Context
|
||||||
|
rt http.RoundTripper
|
||||||
|
err error
|
||||||
|
}
|
||||||
|
|
||||||
|
func (b *contextCanceller) RoundTrip(req *http.Request) (*http.Response, error) {
|
||||||
|
select {
|
||||||
|
case <-b.ctx.Done():
|
||||||
|
return nil, b.err
|
||||||
|
default:
|
||||||
|
return b.rt.RoundTrip(req)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
42
vendor/k8s.io/client-go/util/cert/cert.go
generated
vendored
42
vendor/k8s.io/client-go/util/cert/cert.go
generated
vendored
@ -21,16 +21,13 @@ import (
|
|||||||
"crypto"
|
"crypto"
|
||||||
"crypto/ecdsa"
|
"crypto/ecdsa"
|
||||||
"crypto/elliptic"
|
"crypto/elliptic"
|
||||||
"crypto/rand"
|
|
||||||
cryptorand "crypto/rand"
|
cryptorand "crypto/rand"
|
||||||
"crypto/rsa"
|
"crypto/rsa"
|
||||||
"crypto/x509"
|
"crypto/x509"
|
||||||
"crypto/x509/pkix"
|
"crypto/x509/pkix"
|
||||||
"encoding/pem"
|
"encoding/pem"
|
||||||
"errors"
|
|
||||||
"fmt"
|
"fmt"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"math"
|
|
||||||
"math/big"
|
"math/big"
|
||||||
"net"
|
"net"
|
||||||
"path"
|
"path"
|
||||||
@ -39,7 +36,6 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
rsaKeySize = 2048
|
|
||||||
duration365d = time.Hour * 24 * 365
|
duration365d = time.Hour * 24 * 365
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -59,11 +55,6 @@ type AltNames struct {
|
|||||||
IPs []net.IP
|
IPs []net.IP
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewPrivateKey creates an RSA private key
|
|
||||||
func NewPrivateKey() (*rsa.PrivateKey, error) {
|
|
||||||
return rsa.GenerateKey(cryptorand.Reader, rsaKeySize)
|
|
||||||
}
|
|
||||||
|
|
||||||
// NewSelfSignedCACert creates a CA certificate
|
// NewSelfSignedCACert creates a CA certificate
|
||||||
func NewSelfSignedCACert(cfg Config, key crypto.Signer) (*x509.Certificate, error) {
|
func NewSelfSignedCACert(cfg Config, key crypto.Signer) (*x509.Certificate, error) {
|
||||||
now := time.Now()
|
now := time.Now()
|
||||||
@ -87,39 +78,6 @@ func NewSelfSignedCACert(cfg Config, key crypto.Signer) (*x509.Certificate, erro
|
|||||||
return x509.ParseCertificate(certDERBytes)
|
return x509.ParseCertificate(certDERBytes)
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewSignedCert creates a signed certificate using the given CA certificate and key
|
|
||||||
func NewSignedCert(cfg Config, key crypto.Signer, caCert *x509.Certificate, caKey crypto.Signer) (*x509.Certificate, error) {
|
|
||||||
serial, err := rand.Int(rand.Reader, new(big.Int).SetInt64(math.MaxInt64))
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
if len(cfg.CommonName) == 0 {
|
|
||||||
return nil, errors.New("must specify a CommonName")
|
|
||||||
}
|
|
||||||
if len(cfg.Usages) == 0 {
|
|
||||||
return nil, errors.New("must specify at least one ExtKeyUsage")
|
|
||||||
}
|
|
||||||
|
|
||||||
certTmpl := x509.Certificate{
|
|
||||||
Subject: pkix.Name{
|
|
||||||
CommonName: cfg.CommonName,
|
|
||||||
Organization: cfg.Organization,
|
|
||||||
},
|
|
||||||
DNSNames: cfg.AltNames.DNSNames,
|
|
||||||
IPAddresses: cfg.AltNames.IPs,
|
|
||||||
SerialNumber: serial,
|
|
||||||
NotBefore: caCert.NotBefore,
|
|
||||||
NotAfter: time.Now().Add(duration365d).UTC(),
|
|
||||||
KeyUsage: x509.KeyUsageKeyEncipherment | x509.KeyUsageDigitalSignature,
|
|
||||||
ExtKeyUsage: cfg.Usages,
|
|
||||||
}
|
|
||||||
certDERBytes, err := x509.CreateCertificate(cryptorand.Reader, &certTmpl, caCert, key.Public(), caKey)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
return x509.ParseCertificate(certDERBytes)
|
|
||||||
}
|
|
||||||
|
|
||||||
// MakeEllipticPrivateKeyPEM creates an ECDSA private key
|
// MakeEllipticPrivateKeyPEM creates an ECDSA private key
|
||||||
func MakeEllipticPrivateKeyPEM() ([]byte, error) {
|
func MakeEllipticPrivateKeyPEM() ([]byte, error) {
|
||||||
privateKey, err := ecdsa.GenerateKey(elliptic.P256(), cryptorand.Reader)
|
privateKey, err := ecdsa.GenerateKey(elliptic.P256(), cryptorand.Reader)
|
||||||
|
51
vendor/k8s.io/client-go/util/cert/pem.go
generated
vendored
51
vendor/k8s.io/client-go/util/cert/pem.go
generated
vendored
@ -26,51 +26,19 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
|
||||||
// ECPrivateKeyBlockType is a possible value for pem.Block.Type.
|
// ECPrivateKeyBlockType is a possible value for pem.Block.Type.
|
||||||
ECPrivateKeyBlockType = "EC PRIVATE KEY"
|
ECPrivateKeyBlockType = "EC PRIVATE KEY"
|
||||||
// RSAPrivateKeyBlockType is a possible value for pem.Block.Type.
|
// RSAPrivateKeyBlockType is a possible value for pem.Block.Type.
|
||||||
RSAPrivateKeyBlockType = "RSA PRIVATE KEY"
|
RSAPrivateKeyBlockType = "RSA PRIVATE KEY"
|
||||||
// PrivateKeyBlockType is a possible value for pem.Block.Type.
|
|
||||||
PrivateKeyBlockType = "PRIVATE KEY"
|
|
||||||
// PublicKeyBlockType is a possible value for pem.Block.Type.
|
|
||||||
PublicKeyBlockType = "PUBLIC KEY"
|
|
||||||
// CertificateBlockType is a possible value for pem.Block.Type.
|
|
||||||
CertificateBlockType = "CERTIFICATE"
|
|
||||||
// CertificateRequestBlockType is a possible value for pem.Block.Type.
|
// CertificateRequestBlockType is a possible value for pem.Block.Type.
|
||||||
CertificateRequestBlockType = "CERTIFICATE REQUEST"
|
CertificateRequestBlockType = "CERTIFICATE REQUEST"
|
||||||
|
// CertificateBlockType is a possible value for pem.Block.Type.
|
||||||
|
CertificateBlockType = "CERTIFICATE"
|
||||||
|
// PrivateKeyBlockType is a possible value for pem.Block.Type.
|
||||||
|
PrivateKeyBlockType = "PRIVATE KEY"
|
||||||
)
|
)
|
||||||
|
|
||||||
// EncodePublicKeyPEM returns PEM-encoded public data
|
|
||||||
func EncodePublicKeyPEM(key *rsa.PublicKey) ([]byte, error) {
|
|
||||||
der, err := x509.MarshalPKIXPublicKey(key)
|
|
||||||
if err != nil {
|
|
||||||
return []byte{}, err
|
|
||||||
}
|
|
||||||
block := pem.Block{
|
|
||||||
Type: PublicKeyBlockType,
|
|
||||||
Bytes: der,
|
|
||||||
}
|
|
||||||
return pem.EncodeToMemory(&block), nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// EncodePrivateKeyPEM returns PEM-encoded private key data
|
|
||||||
func EncodePrivateKeyPEM(key *rsa.PrivateKey) []byte {
|
|
||||||
block := pem.Block{
|
|
||||||
Type: RSAPrivateKeyBlockType,
|
|
||||||
Bytes: x509.MarshalPKCS1PrivateKey(key),
|
|
||||||
}
|
|
||||||
return pem.EncodeToMemory(&block)
|
|
||||||
}
|
|
||||||
|
|
||||||
// EncodeCertPEM returns PEM-endcoded certificate data
|
|
||||||
func EncodeCertPEM(cert *x509.Certificate) []byte {
|
|
||||||
block := pem.Block{
|
|
||||||
Type: CertificateBlockType,
|
|
||||||
Bytes: cert.Raw,
|
|
||||||
}
|
|
||||||
return pem.EncodeToMemory(&block)
|
|
||||||
}
|
|
||||||
|
|
||||||
// ParsePrivateKeyPEM returns a private key parsed from a PEM block in the supplied data.
|
// ParsePrivateKeyPEM returns a private key parsed from a PEM block in the supplied data.
|
||||||
// Recognizes PEM blocks for "EC PRIVATE KEY", "RSA PRIVATE KEY", or "PRIVATE KEY"
|
// Recognizes PEM blocks for "EC PRIVATE KEY", "RSA PRIVATE KEY", or "PRIVATE KEY"
|
||||||
func ParsePrivateKeyPEM(keyData []byte) (interface{}, error) {
|
func ParsePrivateKeyPEM(keyData []byte) (interface{}, error) {
|
||||||
@ -147,6 +115,15 @@ func ParsePublicKeysPEM(keyData []byte) ([]interface{}, error) {
|
|||||||
return keys, nil
|
return keys, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// EncodePrivateKeyPEM returns PEM-encoded private key data
|
||||||
|
func EncodePrivateKeyPEM(key *rsa.PrivateKey) []byte {
|
||||||
|
block := pem.Block{
|
||||||
|
Type: RSAPrivateKeyBlockType,
|
||||||
|
Bytes: x509.MarshalPKCS1PrivateKey(key),
|
||||||
|
}
|
||||||
|
return pem.EncodeToMemory(&block)
|
||||||
|
}
|
||||||
|
|
||||||
// ParseCertsPEM returns the x509.Certificates contained in the given PEM-encoded byte array
|
// ParseCertsPEM returns the x509.Certificates contained in the given PEM-encoded byte array
|
||||||
// Returns an error if a certificate could not be parsed, or if the data does not contain any certificates
|
// Returns an error if a certificate could not be parsed, or if the data does not contain any certificates
|
||||||
func ParseCertsPEM(pemCerts []byte) ([]*x509.Certificate, error) {
|
func ParseCertsPEM(pemCerts []byte) ([]*x509.Certificate, error) {
|
||||||
|
2
vendor/k8s.io/client-go/util/flowcontrol/backoff.go
generated
vendored
2
vendor/k8s.io/client-go/util/flowcontrol/backoff.go
generated
vendored
@ -21,7 +21,7 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
|
|
||||||
"k8s.io/apimachinery/pkg/util/clock"
|
"k8s.io/apimachinery/pkg/util/clock"
|
||||||
"k8s.io/client-go/util/integer"
|
"k8s.io/utils/integer"
|
||||||
)
|
)
|
||||||
|
|
||||||
type backoffEntry struct {
|
type backoffEntry struct {
|
||||||
|
38
vendor/k8s.io/klog/README.md
generated
vendored
38
vendor/k8s.io/klog/README.md
generated
vendored
@ -5,6 +5,32 @@ klog is a permanant fork of https://github.com/golang/glog. original README from
|
|||||||
|
|
||||||
----
|
----
|
||||||
|
|
||||||
|
How to use klog
|
||||||
|
===============
|
||||||
|
- Replace imports for `github.com/golang/glog` with `k8s.io/klog`
|
||||||
|
- Use `klog.InitFlags(nil)` explicitly for initializing global flags as we no longer use `init()` method to register the flags
|
||||||
|
- You can now use `log-file` instead of `log-dir` for logging to a single file (See `examples/log_file/usage_log_file.go`)
|
||||||
|
- If you want to redirect everything logged using klog somewhere else (say syslog!), you can use `klog.SetOutput()` method and supply a `io.Writer`. (See `examples/set_output/usage_set_output.go`)
|
||||||
|
- For more logging conventions (See [Logging Conventions](https://github.com/kubernetes/community/blob/master/contributors/devel/logging.md))
|
||||||
|
|
||||||
|
### Coexisting with glog
|
||||||
|
This package can be used side by side with glog. [This example](examples/coexist_glog/coexist_glog.go) shows how to initialize and syncronize flags from the global `flag.CommandLine` FlagSet. In addition, the example makes use of stderr as combined output by setting `alsologtostderr` (or `logtostderr`) to `true`.
|
||||||
|
|
||||||
|
## Community, discussion, contribution, and support
|
||||||
|
|
||||||
|
Learn how to engage with the Kubernetes community on the [community page](http://kubernetes.io/community/).
|
||||||
|
|
||||||
|
You can reach the maintainers of this project at:
|
||||||
|
|
||||||
|
- [Slack](https://kubernetes.slack.com/messages/sig-architecture)
|
||||||
|
- [Mailing List](https://groups.google.com/forum/#!forum/kubernetes-sig-architecture)
|
||||||
|
|
||||||
|
### Code of conduct
|
||||||
|
|
||||||
|
Participation in the Kubernetes community is governed by the [Kubernetes Code of Conduct](code-of-conduct.md).
|
||||||
|
|
||||||
|
----
|
||||||
|
|
||||||
glog
|
glog
|
||||||
====
|
====
|
||||||
|
|
||||||
@ -26,20 +52,20 @@ The comment from glog.go introduces the ideas:
|
|||||||
Error, Fatal, plus formatting variants such as Infof. It
|
Error, Fatal, plus formatting variants such as Infof. It
|
||||||
also provides V-style logging controlled by the -v and
|
also provides V-style logging controlled by the -v and
|
||||||
-vmodule=file=2 flags.
|
-vmodule=file=2 flags.
|
||||||
|
|
||||||
Basic examples:
|
Basic examples:
|
||||||
|
|
||||||
glog.Info("Prepare to repel boarders")
|
glog.Info("Prepare to repel boarders")
|
||||||
|
|
||||||
glog.Fatalf("Initialization failed: %s", err)
|
glog.Fatalf("Initialization failed: %s", err)
|
||||||
|
|
||||||
See the documentation for the V function for an explanation
|
See the documentation for the V function for an explanation
|
||||||
of these examples:
|
of these examples:
|
||||||
|
|
||||||
if glog.V(2) {
|
if glog.V(2) {
|
||||||
glog.Info("Starting transaction...")
|
glog.Info("Starting transaction...")
|
||||||
}
|
}
|
||||||
|
|
||||||
glog.V(2).Infoln("Processed", nItems, "elements")
|
glog.V(2).Infoln("Processed", nItems, "elements")
|
||||||
|
|
||||||
|
|
||||||
|
16
vendor/k8s.io/klog/klog.go
generated
vendored
16
vendor/k8s.io/klog/klog.go
generated
vendored
@ -43,7 +43,7 @@
|
|||||||
// Logs are written to standard error instead of to files.
|
// Logs are written to standard error instead of to files.
|
||||||
// -alsologtostderr=false
|
// -alsologtostderr=false
|
||||||
// Logs are written to standard error as well as to files.
|
// Logs are written to standard error as well as to files.
|
||||||
// -stderrthreshold=ERROR
|
// -stderrthreshold=INFO
|
||||||
// Log events at or above this severity are logged to standard
|
// Log events at or above this severity are logged to standard
|
||||||
// error as well as to files.
|
// error as well as to files.
|
||||||
// -log_dir=""
|
// -log_dir=""
|
||||||
@ -396,8 +396,8 @@ type flushSyncWriter interface {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
// Default stderrThreshold is ERROR.
|
// Default stderrThreshold is INFO.
|
||||||
logging.stderrThreshold = errorLog
|
logging.stderrThreshold = infoLog
|
||||||
|
|
||||||
logging.setVState(0, nil, false)
|
logging.setVState(0, nil, false)
|
||||||
go logging.flushDaemon()
|
go logging.flushDaemon()
|
||||||
@ -410,9 +410,9 @@ func InitFlags(flagset *flag.FlagSet) {
|
|||||||
}
|
}
|
||||||
flagset.StringVar(&logging.logDir, "log_dir", "", "If non-empty, write log files in this directory")
|
flagset.StringVar(&logging.logDir, "log_dir", "", "If non-empty, write log files in this directory")
|
||||||
flagset.StringVar(&logging.logFile, "log_file", "", "If non-empty, use this log file")
|
flagset.StringVar(&logging.logFile, "log_file", "", "If non-empty, use this log file")
|
||||||
flagset.BoolVar(&logging.toStderr, "logtostderr", false, "log to standard error instead of files")
|
flagset.BoolVar(&logging.toStderr, "logtostderr", true, "log to standard error instead of files")
|
||||||
flagset.BoolVar(&logging.alsoToStderr, "alsologtostderr", false, "log to standard error as well as files")
|
flagset.BoolVar(&logging.alsoToStderr, "alsologtostderr", false, "log to standard error as well as files")
|
||||||
flagset.Var(&logging.verbosity, "v", "log level for V logs")
|
flagset.Var(&logging.verbosity, "v", "number for the log level verbosity")
|
||||||
flagset.BoolVar(&logging.skipHeaders, "skip_headers", false, "If true, avoid header prefixes in the log messages")
|
flagset.BoolVar(&logging.skipHeaders, "skip_headers", false, "If true, avoid header prefixes in the log messages")
|
||||||
flagset.Var(&logging.stderrThreshold, "stderrthreshold", "logs at or above this threshold go to stderr")
|
flagset.Var(&logging.stderrThreshold, "stderrthreshold", "logs at or above this threshold go to stderr")
|
||||||
flagset.Var(&logging.vmodule, "vmodule", "comma-separated list of pattern=N settings for file-filtered logging")
|
flagset.Var(&logging.vmodule, "vmodule", "comma-separated list of pattern=N settings for file-filtered logging")
|
||||||
@ -739,7 +739,9 @@ func (l *loggingT) output(s severity, buf *buffer, file string, line int, alsoTo
|
|||||||
}
|
}
|
||||||
data := buf.Bytes()
|
data := buf.Bytes()
|
||||||
if l.toStderr {
|
if l.toStderr {
|
||||||
os.Stderr.Write(data)
|
if s >= l.stderrThreshold.get() {
|
||||||
|
os.Stderr.Write(data)
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
if alsoToStderr || l.alsoToStderr || s >= l.stderrThreshold.get() {
|
if alsoToStderr || l.alsoToStderr || s >= l.stderrThreshold.get() {
|
||||||
os.Stderr.Write(data)
|
os.Stderr.Write(data)
|
||||||
@ -934,7 +936,7 @@ func (l *loggingT) createFiles(sev severity) error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
const flushInterval = 30 * time.Second
|
const flushInterval = 5 * time.Second
|
||||||
|
|
||||||
// flushDaemon periodically flushes the log file buffers.
|
// flushDaemon periodically flushes the log file buffers.
|
||||||
func (l *loggingT) flushDaemon() {
|
func (l *loggingT) flushDaemon() {
|
||||||
|
9
vendor/k8s.io/kubernetes/pkg/apis/core/types.go
generated
vendored
9
vendor/k8s.io/kubernetes/pkg/apis/core/types.go
generated
vendored
@ -918,6 +918,11 @@ type QuobyteVolumeSource struct {
|
|||||||
// Default is no group
|
// Default is no group
|
||||||
// +optional
|
// +optional
|
||||||
Group string
|
Group string
|
||||||
|
|
||||||
|
// Tenant owning the given Quobyte volume in the Backend
|
||||||
|
// Used with dynamically provisioned Quobyte volumes, value is set by the plugin
|
||||||
|
// +optional
|
||||||
|
Tenant string
|
||||||
}
|
}
|
||||||
|
|
||||||
// Represents a Glusterfs mount that lasts the lifetime of a pod.
|
// Represents a Glusterfs mount that lasts the lifetime of a pod.
|
||||||
@ -2610,14 +2615,14 @@ type PodSpec struct {
|
|||||||
// If specified, all readiness gates will be evaluated for pod readiness.
|
// If specified, all readiness gates will be evaluated for pod readiness.
|
||||||
// A pod is ready when all its containers are ready AND
|
// A pod is ready when all its containers are ready AND
|
||||||
// all conditions specified in the readiness gates have status equal to "True"
|
// all conditions specified in the readiness gates have status equal to "True"
|
||||||
// More info: https://github.com/kubernetes/community/blob/master/keps/sig-network/0007-pod-ready%2B%2B.md
|
// More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md
|
||||||
// +optional
|
// +optional
|
||||||
ReadinessGates []PodReadinessGate
|
ReadinessGates []PodReadinessGate
|
||||||
// RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used
|
// RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used
|
||||||
// to run this pod. If no RuntimeClass resource matches the named class, the pod will not be run.
|
// to run this pod. If no RuntimeClass resource matches the named class, the pod will not be run.
|
||||||
// If unset or empty, the "legacy" RuntimeClass will be used, which is an implicit class with an
|
// If unset or empty, the "legacy" RuntimeClass will be used, which is an implicit class with an
|
||||||
// empty definition that uses the default runtime handler.
|
// empty definition that uses the default runtime handler.
|
||||||
// More info: https://github.com/kubernetes/community/blob/master/keps/sig-node/0014-runtime-class.md
|
// More info: https://git.k8s.io/enhancements/keps/sig-node/runtime-class.md
|
||||||
// This is an alpha feature and may change in the future.
|
// This is an alpha feature and may change in the future.
|
||||||
// +optional
|
// +optional
|
||||||
RuntimeClassName *string
|
RuntimeClassName *string
|
||||||
|
693
vendor/k8s.io/kubernetes/pkg/kubelet/apis/cri/runtime/v1alpha2/api.pb.go
generated
vendored
693
vendor/k8s.io/kubernetes/pkg/kubelet/apis/cri/runtime/v1alpha2/api.pb.go
generated
vendored
@ -736,7 +736,8 @@ type PodSandboxConfig struct {
|
|||||||
// operation. The runtime may also use this information to improve UX, such
|
// operation. The runtime may also use this information to improve UX, such
|
||||||
// as by constructing a readable name.
|
// as by constructing a readable name.
|
||||||
Metadata *PodSandboxMetadata `protobuf:"bytes,1,opt,name=metadata" json:"metadata,omitempty"`
|
Metadata *PodSandboxMetadata `protobuf:"bytes,1,opt,name=metadata" json:"metadata,omitempty"`
|
||||||
// Hostname of the sandbox.
|
// Hostname of the sandbox. Hostname could only be empty when the pod
|
||||||
|
// network namespace is NODE.
|
||||||
Hostname string `protobuf:"bytes,2,opt,name=hostname,proto3" json:"hostname,omitempty"`
|
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
|
// Path to the directory on the host in which container log files are
|
||||||
// stored.
|
// stored.
|
||||||
@ -848,7 +849,7 @@ type RunPodSandboxRequest struct {
|
|||||||
// If the runtime handler is unknown, this request should be rejected. An
|
// If the runtime handler is unknown, this request should be rejected. An
|
||||||
// empty string should select the default handler, equivalent to the
|
// empty string should select the default handler, equivalent to the
|
||||||
// behavior before this feature was added.
|
// behavior before this feature was added.
|
||||||
// See https://git.k8s.io/community/keps/sig-node/0014-runtime-class.md
|
// See https://git.k8s.io/enhancements/keps/sig-node/runtime-class.md
|
||||||
RuntimeHandler string `protobuf:"bytes,2,opt,name=runtime_handler,json=runtimeHandler,proto3" json:"runtime_handler,omitempty"`
|
RuntimeHandler string `protobuf:"bytes,2,opt,name=runtime_handler,json=runtimeHandler,proto3" json:"runtime_handler,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1029,6 +1030,8 @@ type PodSandboxStatus struct {
|
|||||||
// MUST be identical to that of the corresponding PodSandboxConfig used to
|
// MUST be identical to that of the corresponding PodSandboxConfig used to
|
||||||
// instantiate the pod sandbox this status represents.
|
// 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"`
|
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"`
|
||||||
|
// runtime configuration used for this PodSandbox.
|
||||||
|
RuntimeHandler string `protobuf:"bytes,9,opt,name=runtime_handler,json=runtimeHandler,proto3" json:"runtime_handler,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *PodSandboxStatus) Reset() { *m = PodSandboxStatus{} }
|
func (m *PodSandboxStatus) Reset() { *m = PodSandboxStatus{} }
|
||||||
@ -1091,6 +1094,13 @@ func (m *PodSandboxStatus) GetAnnotations() map[string]string {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (m *PodSandboxStatus) GetRuntimeHandler() string {
|
||||||
|
if m != nil {
|
||||||
|
return m.RuntimeHandler
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
type PodSandboxStatusResponse struct {
|
type PodSandboxStatusResponse struct {
|
||||||
// Status of the PodSandbox.
|
// Status of the PodSandbox.
|
||||||
Status *PodSandboxStatus `protobuf:"bytes,1,opt,name=status" json:"status,omitempty"`
|
Status *PodSandboxStatus `protobuf:"bytes,1,opt,name=status" json:"status,omitempty"`
|
||||||
@ -1207,6 +1217,8 @@ type PodSandbox struct {
|
|||||||
// MUST be identical to that of the corresponding PodSandboxConfig used to
|
// MUST be identical to that of the corresponding PodSandboxConfig used to
|
||||||
// instantiate this PodSandbox.
|
// 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"`
|
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"`
|
||||||
|
// runtime configuration used for this PodSandbox.
|
||||||
|
RuntimeHandler string `protobuf:"bytes,7,opt,name=runtime_handler,json=runtimeHandler,proto3" json:"runtime_handler,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *PodSandbox) Reset() { *m = PodSandbox{} }
|
func (m *PodSandbox) Reset() { *m = PodSandbox{} }
|
||||||
@ -1255,6 +1267,13 @@ func (m *PodSandbox) GetAnnotations() map[string]string {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (m *PodSandbox) GetRuntimeHandler() string {
|
||||||
|
if m != nil {
|
||||||
|
return m.RuntimeHandler
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
type ListPodSandboxResponse struct {
|
type ListPodSandboxResponse struct {
|
||||||
// List of PodSandboxes.
|
// List of PodSandboxes.
|
||||||
Items []*PodSandbox `protobuf:"bytes,1,rep,name=items" json:"items,omitempty"`
|
Items []*PodSandbox `protobuf:"bytes,1,rep,name=items" json:"items,omitempty"`
|
||||||
@ -3550,7 +3569,7 @@ type ContainerStats struct {
|
|||||||
Cpu *CpuUsage `protobuf:"bytes,2,opt,name=cpu" json:"cpu,omitempty"`
|
Cpu *CpuUsage `protobuf:"bytes,2,opt,name=cpu" json:"cpu,omitempty"`
|
||||||
// Memory usage gathered from the container.
|
// Memory usage gathered from the container.
|
||||||
Memory *MemoryUsage `protobuf:"bytes,3,opt,name=memory" json:"memory,omitempty"`
|
Memory *MemoryUsage `protobuf:"bytes,3,opt,name=memory" json:"memory,omitempty"`
|
||||||
// Usage of the writeable layer.
|
// Usage of the writable layer.
|
||||||
WritableLayer *FilesystemUsage `protobuf:"bytes,4,opt,name=writable_layer,json=writableLayer" json:"writable_layer,omitempty"`
|
WritableLayer *FilesystemUsage `protobuf:"bytes,4,opt,name=writable_layer,json=writableLayer" json:"writable_layer,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -5774,6 +5793,12 @@ func (m *PodSandboxStatus) MarshalTo(dAtA []byte) (int, error) {
|
|||||||
i += copy(dAtA[i:], v)
|
i += copy(dAtA[i:], v)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if len(m.RuntimeHandler) > 0 {
|
||||||
|
dAtA[i] = 0x4a
|
||||||
|
i++
|
||||||
|
i = encodeVarintApi(dAtA, i, uint64(len(m.RuntimeHandler)))
|
||||||
|
i += copy(dAtA[i:], m.RuntimeHandler)
|
||||||
|
}
|
||||||
return i, nil
|
return i, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -5999,6 +6024,12 @@ func (m *PodSandbox) MarshalTo(dAtA []byte) (int, error) {
|
|||||||
i += copy(dAtA[i:], v)
|
i += copy(dAtA[i:], v)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if len(m.RuntimeHandler) > 0 {
|
||||||
|
dAtA[i] = 0x3a
|
||||||
|
i++
|
||||||
|
i = encodeVarintApi(dAtA, i, uint64(len(m.RuntimeHandler)))
|
||||||
|
i += copy(dAtA[i:], m.RuntimeHandler)
|
||||||
|
}
|
||||||
return i, nil
|
return i, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -9446,6 +9477,10 @@ func (m *PodSandboxStatus) Size() (n int) {
|
|||||||
n += mapEntrySize + 1 + sovApi(uint64(mapEntrySize))
|
n += mapEntrySize + 1 + sovApi(uint64(mapEntrySize))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
l = len(m.RuntimeHandler)
|
||||||
|
if l > 0 {
|
||||||
|
n += 1 + l + sovApi(uint64(l))
|
||||||
|
}
|
||||||
return n
|
return n
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -9541,6 +9576,10 @@ func (m *PodSandbox) Size() (n int) {
|
|||||||
n += mapEntrySize + 1 + sovApi(uint64(mapEntrySize))
|
n += mapEntrySize + 1 + sovApi(uint64(mapEntrySize))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
l = len(m.RuntimeHandler)
|
||||||
|
if l > 0 {
|
||||||
|
n += 1 + l + sovApi(uint64(l))
|
||||||
|
}
|
||||||
return n
|
return n
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -11127,6 +11166,7 @@ func (this *PodSandboxStatus) String() string {
|
|||||||
`Linux:` + strings.Replace(fmt.Sprintf("%v", this.Linux), "LinuxPodSandboxStatus", "LinuxPodSandboxStatus", 1) + `,`,
|
`Linux:` + strings.Replace(fmt.Sprintf("%v", this.Linux), "LinuxPodSandboxStatus", "LinuxPodSandboxStatus", 1) + `,`,
|
||||||
`Labels:` + mapStringForLabels + `,`,
|
`Labels:` + mapStringForLabels + `,`,
|
||||||
`Annotations:` + mapStringForAnnotations + `,`,
|
`Annotations:` + mapStringForAnnotations + `,`,
|
||||||
|
`RuntimeHandler:` + fmt.Sprintf("%v", this.RuntimeHandler) + `,`,
|
||||||
`}`,
|
`}`,
|
||||||
}, "")
|
}, "")
|
||||||
return s
|
return s
|
||||||
@ -11225,6 +11265,7 @@ func (this *PodSandbox) String() string {
|
|||||||
`CreatedAt:` + fmt.Sprintf("%v", this.CreatedAt) + `,`,
|
`CreatedAt:` + fmt.Sprintf("%v", this.CreatedAt) + `,`,
|
||||||
`Labels:` + mapStringForLabels + `,`,
|
`Labels:` + mapStringForLabels + `,`,
|
||||||
`Annotations:` + mapStringForAnnotations + `,`,
|
`Annotations:` + mapStringForAnnotations + `,`,
|
||||||
|
`RuntimeHandler:` + fmt.Sprintf("%v", this.RuntimeHandler) + `,`,
|
||||||
`}`,
|
`}`,
|
||||||
}, "")
|
}, "")
|
||||||
return s
|
return s
|
||||||
@ -15490,6 +15531,35 @@ func (m *PodSandboxStatus) Unmarshal(dAtA []byte) error {
|
|||||||
}
|
}
|
||||||
m.Annotations[mapkey] = mapvalue
|
m.Annotations[mapkey] = mapvalue
|
||||||
iNdEx = postIndex
|
iNdEx = postIndex
|
||||||
|
case 9:
|
||||||
|
if wireType != 2 {
|
||||||
|
return fmt.Errorf("proto: wrong wireType = %d for field RuntimeHandler", 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.RuntimeHandler = string(dAtA[iNdEx:postIndex])
|
||||||
|
iNdEx = postIndex
|
||||||
default:
|
default:
|
||||||
iNdEx = preIndex
|
iNdEx = preIndex
|
||||||
skippy, err := skipApi(dAtA[iNdEx:])
|
skippy, err := skipApi(dAtA[iNdEx:])
|
||||||
@ -16459,6 +16529,35 @@ func (m *PodSandbox) Unmarshal(dAtA []byte) error {
|
|||||||
}
|
}
|
||||||
m.Annotations[mapkey] = mapvalue
|
m.Annotations[mapkey] = mapvalue
|
||||||
iNdEx = postIndex
|
iNdEx = postIndex
|
||||||
|
case 7:
|
||||||
|
if wireType != 2 {
|
||||||
|
return fmt.Errorf("proto: wrong wireType = %d for field RuntimeHandler", 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.RuntimeHandler = string(dAtA[iNdEx:postIndex])
|
||||||
|
iNdEx = postIndex
|
||||||
default:
|
default:
|
||||||
iNdEx = preIndex
|
iNdEx = preIndex
|
||||||
skippy, err := skipApi(dAtA[iNdEx:])
|
skippy, err := skipApi(dAtA[iNdEx:])
|
||||||
@ -26861,300 +26960,300 @@ var (
|
|||||||
func init() { proto.RegisterFile("api.proto", fileDescriptorApi) }
|
func init() { proto.RegisterFile("api.proto", fileDescriptorApi) }
|
||||||
|
|
||||||
var fileDescriptorApi = []byte{
|
var fileDescriptorApi = []byte{
|
||||||
// 4708 bytes of a gzipped FileDescriptorProto
|
// 4720 bytes of a gzipped FileDescriptorProto
|
||||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x5c, 0xcd, 0x6f, 0x1b, 0x49,
|
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x5c, 0xcd, 0x6f, 0x1b, 0x49,
|
||||||
0x76, 0x57, 0x93, 0xfa, 0x20, 0x1f, 0x45, 0x89, 0x2a, 0xcb, 0x16, 0x4d, 0x8f, 0x35, 0x56, 0xcf,
|
0x76, 0x57, 0x93, 0xfa, 0x20, 0x1f, 0x45, 0x89, 0x2a, 0xcb, 0x16, 0x4d, 0x8f, 0x35, 0x56, 0xcf,
|
||||||
0xf8, 0x73, 0x66, 0xe4, 0xb1, 0x66, 0xd7, 0x13, 0xdb, 0xb3, 0xb6, 0x69, 0x49, 0xb6, 0x99, 0xb5,
|
0xf8, 0x73, 0xc7, 0xf2, 0x58, 0xb3, 0xeb, 0x89, 0xed, 0x59, 0xdb, 0xb4, 0x24, 0xdb, 0xcc, 0xda,
|
||||||
0x29, 0xa6, 0x29, 0xcd, 0xc7, 0xce, 0x00, 0xbd, 0x2d, 0x76, 0x89, 0xea, 0x35, 0xd9, 0xd5, 0xd3,
|
0x14, 0xd3, 0x94, 0xe6, 0x63, 0x67, 0x80, 0xde, 0x16, 0xbb, 0x44, 0xf5, 0x9a, 0xec, 0xea, 0xe9,
|
||||||
0xdd, 0xb4, 0xad, 0x04, 0x08, 0x16, 0x08, 0xb2, 0x87, 0x00, 0x01, 0x72, 0xce, 0x71, 0x73, 0xc8,
|
0x6e, 0xda, 0x56, 0x02, 0x04, 0x0b, 0x2c, 0xb2, 0x87, 0x00, 0x01, 0x72, 0xce, 0x71, 0x73, 0xc8,
|
||||||
0x21, 0xb7, 0x00, 0x41, 0x0e, 0x39, 0x6d, 0xb0, 0x87, 0xbd, 0x04, 0xc8, 0x69, 0x91, 0x8f, 0x4b,
|
0x21, 0xb7, 0x00, 0x41, 0x0e, 0x39, 0x6d, 0x90, 0xc3, 0x5e, 0x02, 0xe4, 0xb4, 0x48, 0x90, 0x4b,
|
||||||
0x66, 0x92, 0x5c, 0x72, 0x08, 0xf2, 0x07, 0xe4, 0x10, 0xd4, 0x57, 0xb3, 0x3f, 0xf9, 0xe1, 0xf1,
|
0x66, 0x92, 0x5c, 0x02, 0x24, 0xc8, 0x1f, 0x90, 0x43, 0x50, 0x5f, 0xcd, 0xfe, 0xe4, 0x87, 0xc7,
|
||||||
0xee, 0x4c, 0x4e, 0xea, 0x7a, 0xfd, 0xde, 0xab, 0x57, 0xaf, 0x5e, 0xbf, 0x7a, 0xf5, 0xab, 0xa2,
|
0xbb, 0xb3, 0x39, 0xa9, 0xfb, 0xf5, 0x7b, 0xaf, 0x5e, 0xbd, 0x7a, 0xf5, 0xea, 0xd5, 0xaf, 0x8a,
|
||||||
0xa0, 0x68, 0x38, 0xd6, 0xa6, 0xe3, 0x12, 0x9f, 0xa0, 0x8a, 0x3b, 0xb0, 0x7d, 0xab, 0x8f, 0x37,
|
0x82, 0xa2, 0xe1, 0x58, 0x9b, 0x8e, 0x4b, 0x7c, 0x82, 0x2a, 0xee, 0xc0, 0xf6, 0xad, 0x3e, 0xde,
|
||||||
0x9f, 0xdf, 0x30, 0x7a, 0xce, 0xb1, 0xb1, 0x55, 0x7b, 0xaf, 0x6b, 0xf9, 0xc7, 0x83, 0xc3, 0xcd,
|
0x7c, 0x71, 0xd3, 0xe8, 0x39, 0xc7, 0xc6, 0x56, 0xed, 0x7a, 0xd7, 0xf2, 0x8f, 0x07, 0x87, 0x9b,
|
||||||
0x0e, 0xe9, 0x5f, 0xef, 0x92, 0x2e, 0xb9, 0xce, 0x18, 0x0f, 0x07, 0x47, 0xac, 0xc5, 0x1a, 0xec,
|
0x1d, 0xd2, 0xbf, 0xd1, 0x25, 0x5d, 0x72, 0x83, 0x31, 0x1e, 0x0e, 0x8e, 0xd8, 0x1b, 0x7b, 0x61,
|
||||||
0x89, 0x2b, 0x50, 0xaf, 0xc1, 0xd2, 0xc7, 0xd8, 0xf5, 0x2c, 0x62, 0x6b, 0xf8, 0xcb, 0x01, 0xf6,
|
0x4f, 0x5c, 0x81, 0x7a, 0x0d, 0x96, 0x3e, 0xc6, 0xae, 0x67, 0x11, 0x5b, 0xc3, 0x5f, 0x0e, 0xb0,
|
||||||
0x7c, 0x54, 0x85, 0x85, 0xe7, 0x9c, 0x52, 0x55, 0x2e, 0x28, 0x57, 0x8a, 0x9a, 0x6c, 0xaa, 0x7f,
|
0xe7, 0xa3, 0x2a, 0x2c, 0xbc, 0xe0, 0x94, 0xaa, 0x72, 0x41, 0xb9, 0x52, 0xd4, 0xe4, 0xab, 0xfa,
|
||||||
0xa9, 0xc0, 0x72, 0xc0, 0xec, 0x39, 0xc4, 0xf6, 0x70, 0x36, 0x37, 0xda, 0x80, 0x45, 0x61, 0x9c,
|
0x17, 0x0a, 0x2c, 0x07, 0xcc, 0x9e, 0x43, 0x6c, 0x0f, 0x67, 0x73, 0xa3, 0x0d, 0x58, 0x14, 0xc6,
|
||||||
0x6e, 0x1b, 0x7d, 0x5c, 0xcd, 0xb1, 0xd7, 0x25, 0x41, 0x6b, 0x1a, 0x7d, 0x8c, 0x2e, 0xc3, 0xb2,
|
0xe9, 0xb6, 0xd1, 0xc7, 0xd5, 0x1c, 0xfb, 0x5c, 0x12, 0xb4, 0xa6, 0xd1, 0xc7, 0xe8, 0x32, 0x2c,
|
||||||
0x64, 0x91, 0x4a, 0xf2, 0x8c, 0x6b, 0x49, 0x90, 0x45, 0x6f, 0x68, 0x13, 0x4e, 0x49, 0x46, 0xc3,
|
0x4b, 0x16, 0xa9, 0x24, 0xcf, 0xb8, 0x96, 0x04, 0x59, 0xb4, 0x86, 0x36, 0xe1, 0x94, 0x64, 0x34,
|
||||||
0xb1, 0x02, 0xe6, 0x59, 0xc6, 0xbc, 0x22, 0x5e, 0xd5, 0x1d, 0x4b, 0xf0, 0xab, 0x9f, 0x43, 0x71,
|
0x1c, 0x2b, 0x60, 0x9e, 0x65, 0xcc, 0x2b, 0xe2, 0x53, 0xdd, 0xb1, 0x04, 0xbf, 0xfa, 0x39, 0x14,
|
||||||
0xa7, 0xd9, 0xde, 0x26, 0xf6, 0x91, 0xd5, 0xa5, 0x26, 0x7a, 0xd8, 0xa5, 0x32, 0x55, 0xe5, 0x42,
|
0x77, 0x9a, 0xed, 0x6d, 0x62, 0x1f, 0x59, 0x5d, 0x6a, 0xa2, 0x87, 0x5d, 0x2a, 0x53, 0x55, 0x2e,
|
||||||
0x9e, 0x9a, 0x28, 0x9a, 0xa8, 0x06, 0x05, 0x0f, 0x1b, 0x6e, 0xe7, 0x18, 0x7b, 0xd5, 0x1c, 0x7b,
|
0xe4, 0xa9, 0x89, 0xe2, 0x15, 0xd5, 0xa0, 0xe0, 0x61, 0xc3, 0xed, 0x1c, 0x63, 0xaf, 0x9a, 0x63,
|
||||||
0x15, 0xb4, 0xa9, 0x14, 0x71, 0x7c, 0x8b, 0xd8, 0x5e, 0x35, 0xcf, 0xa5, 0x44, 0x53, 0xfd, 0xb9,
|
0x9f, 0x82, 0x77, 0x2a, 0x45, 0x1c, 0xdf, 0x22, 0xb6, 0x57, 0xcd, 0x73, 0x29, 0xf1, 0xaa, 0xfe,
|
||||||
0x02, 0xa5, 0x16, 0x71, 0xfd, 0xa7, 0x86, 0xe3, 0x58, 0x76, 0x17, 0xdd, 0x84, 0x02, 0xf3, 0x65,
|
0x5c, 0x81, 0x52, 0x8b, 0xb8, 0xfe, 0x33, 0xc3, 0x71, 0x2c, 0xbb, 0x8b, 0x6e, 0x41, 0x81, 0xf9,
|
||||||
0x87, 0xf4, 0x98, 0x0f, 0x96, 0xb6, 0x6a, 0x9b, 0xf1, 0x69, 0xd9, 0x6c, 0x09, 0x0e, 0x2d, 0xe0,
|
0xb2, 0x43, 0x7a, 0xcc, 0x07, 0x4b, 0x5b, 0xb5, 0xcd, 0xf8, 0xb0, 0x6c, 0xb6, 0x04, 0x87, 0x16,
|
||||||
0x45, 0x17, 0x61, 0xa9, 0x43, 0x6c, 0xdf, 0xb0, 0x6c, 0xec, 0xea, 0x0e, 0x71, 0x7d, 0xe6, 0xa2,
|
0xf0, 0xa2, 0x8b, 0xb0, 0xd4, 0x21, 0xb6, 0x6f, 0x58, 0x36, 0x76, 0x75, 0x87, 0xb8, 0x3e, 0x73,
|
||||||
0x39, 0xad, 0x1c, 0x50, 0x69, 0x2f, 0xe8, 0x1c, 0x14, 0x8f, 0x89, 0xe7, 0x73, 0x8e, 0x3c, 0xe3,
|
0xd1, 0x9c, 0x56, 0x0e, 0xa8, 0xb4, 0x15, 0x74, 0x0e, 0x8a, 0xc7, 0xc4, 0xf3, 0x39, 0x47, 0x9e,
|
||||||
0x28, 0x50, 0x02, 0x7b, 0xb9, 0x06, 0x0b, 0xec, 0xa5, 0xe5, 0x08, 0x67, 0xcc, 0xd3, 0x66, 0xc3,
|
0x71, 0x14, 0x28, 0x81, 0x7d, 0x5c, 0x83, 0x05, 0xf6, 0xd1, 0x72, 0x84, 0x33, 0xe6, 0xe9, 0x6b,
|
||||||
0x51, 0x7f, 0xad, 0xc0, 0xdc, 0x53, 0x32, 0xb0, 0xfd, 0x58, 0x37, 0x86, 0x7f, 0x2c, 0x26, 0x2a,
|
0xc3, 0x51, 0x7f, 0xa5, 0xc0, 0xdc, 0x33, 0x32, 0xb0, 0xfd, 0x58, 0x33, 0x86, 0x7f, 0x2c, 0x06,
|
||||||
0xd4, 0x8d, 0xe1, 0x1f, 0x0f, 0xbb, 0xa1, 0x1c, 0x7c, 0xae, 0x78, 0x37, 0xf4, 0x65, 0x0d, 0x0a,
|
0x2a, 0xd4, 0x8c, 0xe1, 0x1f, 0x0f, 0x9b, 0xa1, 0x1c, 0x7c, 0xac, 0x78, 0x33, 0xf4, 0x63, 0x0d,
|
||||||
0x2e, 0x36, 0x4c, 0x62, 0xf7, 0x4e, 0x98, 0x09, 0x05, 0x2d, 0x68, 0xd3, 0x49, 0xf4, 0x70, 0xcf,
|
0x0a, 0x2e, 0x36, 0x4c, 0x62, 0xf7, 0x4e, 0x98, 0x09, 0x05, 0x2d, 0x78, 0xa7, 0x83, 0xe8, 0xe1,
|
||||||
0xb2, 0x07, 0x2f, 0x75, 0x17, 0xf7, 0x8c, 0x43, 0xdc, 0x63, 0xa6, 0x14, 0xb4, 0x25, 0x41, 0xd6,
|
0x9e, 0x65, 0x0f, 0x5e, 0xe9, 0x2e, 0xee, 0x19, 0x87, 0xb8, 0xc7, 0x4c, 0x29, 0x68, 0x4b, 0x82,
|
||||||
0x38, 0x15, 0xed, 0x40, 0xc9, 0x71, 0x89, 0x63, 0x74, 0x0d, 0xea, 0xc7, 0xea, 0x1c, 0x73, 0x95,
|
0xac, 0x71, 0x2a, 0xda, 0x81, 0x92, 0xe3, 0x12, 0xc7, 0xe8, 0x1a, 0xd4, 0x8f, 0xd5, 0x39, 0xe6,
|
||||||
0x9a, 0x74, 0x15, 0x33, 0xbb, 0x35, 0xe4, 0xd4, 0xc2, 0x62, 0xea, 0x5f, 0x2b, 0xb0, 0x4c, 0x83,
|
0x2a, 0x35, 0xe9, 0x2a, 0x66, 0x76, 0x6b, 0xc8, 0xa9, 0x85, 0xc5, 0xd4, 0xbf, 0x52, 0x60, 0x99,
|
||||||
0xc7, 0x73, 0x8c, 0x0e, 0xde, 0x63, 0x53, 0x82, 0x6e, 0xc1, 0x82, 0x8d, 0xfd, 0x17, 0xc4, 0x7d,
|
0x06, 0x8f, 0xe7, 0x18, 0x1d, 0xbc, 0xc7, 0x86, 0x04, 0xdd, 0x86, 0x05, 0x1b, 0xfb, 0x2f, 0x89,
|
||||||
0x26, 0x26, 0xe0, 0xcd, 0xa4, 0xd6, 0x40, 0xe6, 0x29, 0x31, 0xb1, 0x26, 0xf9, 0xd1, 0x0d, 0xc8,
|
0xfb, 0x5c, 0x0c, 0xc0, 0xdb, 0x49, 0xad, 0x81, 0xcc, 0x33, 0x62, 0x62, 0x4d, 0xf2, 0xa3, 0x9b,
|
||||||
0x3b, 0x96, 0xc9, 0x06, 0x3c, 0x81, 0x18, 0xe5, 0xa5, 0x22, 0x96, 0xd3, 0x61, 0x7e, 0x98, 0x44,
|
0x90, 0x77, 0x2c, 0x93, 0x75, 0x78, 0x02, 0x31, 0xca, 0x4b, 0x45, 0x2c, 0xa7, 0xc3, 0xfc, 0x30,
|
||||||
0xc4, 0x72, 0x3a, 0xaa, 0x0a, 0xd0, 0xb0, 0xfd, 0x9b, 0xdf, 0xfb, 0xd8, 0xe8, 0x0d, 0x30, 0x5a,
|
0x89, 0x88, 0xe5, 0x74, 0x54, 0x15, 0xa0, 0x61, 0xfb, 0xb7, 0xbe, 0xfb, 0xb1, 0xd1, 0x1b, 0x60,
|
||||||
0x85, 0xb9, 0xe7, 0xf4, 0x81, 0x19, 0x9b, 0xd7, 0x78, 0x43, 0xfd, 0x2a, 0x0f, 0xe7, 0x9e, 0x50,
|
0xb4, 0x0a, 0x73, 0x2f, 0xe8, 0x03, 0x33, 0x36, 0xaf, 0xf1, 0x17, 0xf5, 0xab, 0x3c, 0x9c, 0x7b,
|
||||||
0x7f, 0xb5, 0x0d, 0xdb, 0x3c, 0x24, 0x2f, 0xdb, 0xb8, 0x33, 0x70, 0x2d, 0xff, 0x64, 0x9b, 0xd8,
|
0x4a, 0xfd, 0xd5, 0x36, 0x6c, 0xf3, 0x90, 0xbc, 0x6a, 0xe3, 0xce, 0xc0, 0xb5, 0xfc, 0x93, 0x6d,
|
||||||
0x3e, 0x7e, 0xe9, 0xa3, 0x26, 0xac, 0xd8, 0x52, 0xb3, 0x2e, 0x43, 0x93, 0x6a, 0x28, 0x6d, 0x6d,
|
0x62, 0xfb, 0xf8, 0x95, 0x8f, 0x9a, 0xb0, 0x62, 0x4b, 0xcd, 0xba, 0x0c, 0x4d, 0xaa, 0xa1, 0xb4,
|
||||||
0x8c, 0x30, 0x82, 0xbb, 0x48, 0xab, 0xd8, 0x51, 0x82, 0x87, 0x1e, 0x0f, 0xe7, 0x4d, 0x6a, 0xcb,
|
0xb5, 0x31, 0xc2, 0x08, 0xee, 0x22, 0xad, 0x62, 0x47, 0x09, 0x1e, 0x7a, 0x32, 0x1c, 0x37, 0xa9,
|
||||||
0x31, 0x6d, 0x29, 0x43, 0x6a, 0xef, 0x32, 0xcb, 0x84, 0x2e, 0x39, 0xb1, 0x52, 0xd3, 0x47, 0x40,
|
0x2d, 0xc7, 0xb4, 0xa5, 0x74, 0xa9, 0xbd, 0xcb, 0x2c, 0x13, 0xba, 0xe4, 0xc0, 0x4a, 0x4d, 0x1f,
|
||||||
0xbf, 0x6a, 0xdd, 0xf0, 0xf4, 0x81, 0x87, 0x5d, 0xe6, 0x98, 0xd2, 0xd6, 0x1b, 0x49, 0x2d, 0x43,
|
0x01, 0x9d, 0xd5, 0xba, 0xe1, 0xe9, 0x03, 0x0f, 0xbb, 0xcc, 0x31, 0xa5, 0xad, 0xb7, 0x92, 0x5a,
|
||||||
0x17, 0x68, 0x45, 0x77, 0x60, 0xd7, 0xbd, 0x03, 0x0f, 0xbb, 0x2c, 0x09, 0x88, 0x58, 0xd2, 0x5d,
|
0x86, 0x2e, 0xd0, 0x8a, 0xee, 0xc0, 0xae, 0x7b, 0x07, 0x1e, 0x76, 0x59, 0x12, 0x10, 0xb1, 0xa4,
|
||||||
0x42, 0xfc, 0x23, 0x4f, 0xc6, 0x8f, 0x24, 0x6b, 0x8c, 0x8a, 0xae, 0xc3, 0x29, 0x6f, 0xe0, 0x38,
|
0xbb, 0x84, 0xf8, 0x47, 0x9e, 0x8c, 0x1f, 0x49, 0xd6, 0x18, 0x15, 0xdd, 0x80, 0x53, 0xde, 0xc0,
|
||||||
0x3d, 0xdc, 0xc7, 0xb6, 0x6f, 0xf4, 0xf4, 0xae, 0x4b, 0x06, 0x8e, 0x57, 0x9d, 0xbb, 0x90, 0xbf,
|
0x71, 0x7a, 0xb8, 0x8f, 0x6d, 0xdf, 0xe8, 0xe9, 0x5d, 0x97, 0x0c, 0x1c, 0xaf, 0x3a, 0x77, 0x21,
|
||||||
0x92, 0xd7, 0x50, 0xf8, 0xd5, 0x23, 0xf6, 0x06, 0xad, 0x03, 0x38, 0xae, 0xf5, 0xdc, 0xea, 0xe1,
|
0x7f, 0x25, 0xaf, 0xa1, 0xf0, 0xa7, 0xc7, 0xec, 0x0b, 0x5a, 0x07, 0x70, 0x5c, 0xeb, 0x85, 0xd5,
|
||||||
0x2e, 0x36, 0xab, 0xf3, 0x4c, 0x69, 0x88, 0x82, 0xde, 0x87, 0x55, 0x0f, 0x77, 0x3a, 0xa4, 0xef,
|
0xc3, 0x5d, 0x6c, 0x56, 0xe7, 0x99, 0xd2, 0x10, 0x05, 0xbd, 0x0f, 0xab, 0x1e, 0xee, 0x74, 0x48,
|
||||||
0xe8, 0x8e, 0x4b, 0x8e, 0xac, 0x1e, 0xe6, 0xd1, 0xbf, 0xc0, 0xa2, 0x1f, 0x89, 0x77, 0x2d, 0xfe,
|
0xdf, 0xd1, 0x1d, 0x97, 0x1c, 0x59, 0x3d, 0xcc, 0xa3, 0x7f, 0x81, 0x45, 0x3f, 0x12, 0xdf, 0x5a,
|
||||||
0x8a, 0x7d, 0x07, 0x77, 0x59, 0x4e, 0xa3, 0x23, 0x65, 0x9d, 0x57, 0x0b, 0x13, 0x0c, 0x15, 0xd8,
|
0xfc, 0x13, 0x9b, 0x07, 0xf7, 0x58, 0x4e, 0xa3, 0x3d, 0x65, 0x8d, 0x57, 0x0b, 0x13, 0x74, 0x15,
|
||||||
0x50, 0x99, 0x49, 0xea, 0xcf, 0x73, 0x70, 0x9a, 0x79, 0xb2, 0x45, 0x4c, 0x31, 0xcd, 0x22, 0x49,
|
0x58, 0x57, 0x99, 0x49, 0xea, 0xcf, 0x73, 0x70, 0x9a, 0x79, 0xb2, 0x45, 0x4c, 0x31, 0xcc, 0x22,
|
||||||
0xbd, 0x05, 0xe5, 0x0e, 0xd3, 0xa9, 0x3b, 0x86, 0x8b, 0x6d, 0x5f, 0x7c, 0xa4, 0x8b, 0x9c, 0xd8,
|
0x49, 0xbd, 0x03, 0xe5, 0x0e, 0xd3, 0xa9, 0x3b, 0x86, 0x8b, 0x6d, 0x5f, 0x4c, 0xd2, 0x45, 0x4e,
|
||||||
0x62, 0x34, 0xf4, 0x29, 0x54, 0x3c, 0x11, 0x15, 0x7a, 0x87, 0x87, 0x85, 0x98, 0xb3, 0xf7, 0x92,
|
0x6c, 0x31, 0x1a, 0xfa, 0x14, 0x2a, 0x9e, 0x88, 0x0a, 0xbd, 0xc3, 0xc3, 0x42, 0x8c, 0xd9, 0xf5,
|
||||||
0x26, 0x8c, 0x88, 0x25, 0x6d, 0xd9, 0x4b, 0x04, 0xd7, 0x82, 0x77, 0xe2, 0x75, 0xfc, 0x1e, 0xcf,
|
0xa4, 0x09, 0x23, 0x62, 0x49, 0x5b, 0xf6, 0x12, 0xc1, 0xb5, 0xe0, 0x9d, 0x78, 0x1d, 0xbf, 0xc7,
|
||||||
0x76, 0xa5, 0xad, 0xef, 0x65, 0x28, 0x8c, 0x1b, 0xbe, 0xd9, 0xe6, 0x62, 0xbb, 0xb6, 0xef, 0x9e,
|
0xb3, 0x5d, 0x69, 0xeb, 0xbb, 0x19, 0x0a, 0xe3, 0x86, 0x6f, 0xb6, 0xb9, 0xd8, 0xae, 0xed, 0xbb,
|
||||||
0x68, 0x52, 0x49, 0xed, 0x36, 0x2c, 0x86, 0x5f, 0xa0, 0x0a, 0xe4, 0x9f, 0xe1, 0x13, 0x31, 0x28,
|
0x27, 0x9a, 0x54, 0x52, 0xbb, 0x03, 0x8b, 0xe1, 0x0f, 0xa8, 0x02, 0xf9, 0xe7, 0xf8, 0x44, 0x74,
|
||||||
0xfa, 0x38, 0xfc, 0x08, 0x78, 0xae, 0xe1, 0x8d, 0xdb, 0xb9, 0xdf, 0x51, 0x54, 0x17, 0xd0, 0xb0,
|
0x8a, 0x3e, 0x0e, 0x27, 0x01, 0xcf, 0x35, 0xfc, 0xe5, 0x4e, 0xee, 0x77, 0x14, 0xd5, 0x05, 0x34,
|
||||||
0x97, 0xa7, 0xd8, 0x37, 0x4c, 0xc3, 0x37, 0x10, 0x82, 0x59, 0xb6, 0x8c, 0x70, 0x15, 0xec, 0x99,
|
0x6c, 0xe5, 0x19, 0xf6, 0x0d, 0xd3, 0xf0, 0x0d, 0x84, 0x60, 0x96, 0x2d, 0x23, 0x5c, 0x05, 0x7b,
|
||||||
0x6a, 0x1d, 0x88, 0x8f, 0xb7, 0xa8, 0xd1, 0x47, 0xf4, 0x06, 0x14, 0x83, 0x40, 0x17, 0x6b, 0xc9,
|
0xa6, 0x5a, 0x07, 0x62, 0xf2, 0x16, 0x35, 0xfa, 0x88, 0xde, 0x82, 0x62, 0x10, 0xe8, 0x62, 0x2d,
|
||||||
0x90, 0x40, 0x73, 0xba, 0xe1, 0xfb, 0xb8, 0xef, 0xf8, 0x2c, 0xc4, 0xca, 0x9a, 0x6c, 0xaa, 0xff,
|
0x19, 0x12, 0x68, 0x4e, 0x37, 0x7c, 0x1f, 0xf7, 0x1d, 0x9f, 0x85, 0x58, 0x59, 0x93, 0xaf, 0xea,
|
||||||
0x3d, 0x0b, 0x95, 0xc4, 0x9c, 0xdc, 0x87, 0x42, 0x5f, 0x74, 0x2f, 0x3e, 0xb4, 0xb7, 0x53, 0x12,
|
0x7f, 0xcf, 0x42, 0x25, 0x31, 0x26, 0x0f, 0xa0, 0xd0, 0x17, 0xcd, 0x8b, 0x89, 0xf6, 0x6e, 0x4a,
|
||||||
0x7b, 0xc2, 0x54, 0x2d, 0x90, 0xa2, 0x79, 0x93, 0xe6, 0xd0, 0xd0, 0xfa, 0x17, 0xb4, 0xe9, 0x8c,
|
0x62, 0x4f, 0x98, 0xaa, 0x05, 0x52, 0x34, 0x6f, 0xd2, 0x1c, 0x1a, 0x5a, 0xff, 0x82, 0x77, 0x3a,
|
||||||
0xf7, 0x48, 0x57, 0x37, 0x2d, 0x17, 0x77, 0x7c, 0xe2, 0x9e, 0x08, 0x73, 0x17, 0x7b, 0xa4, 0xbb,
|
0xe2, 0x3d, 0xd2, 0xd5, 0x4d, 0xcb, 0xc5, 0x1d, 0x9f, 0xb8, 0x27, 0xc2, 0xdc, 0xc5, 0x1e, 0xe9,
|
||||||
0x23, 0x69, 0xe8, 0x36, 0x80, 0x69, 0x7b, 0x74, 0xb2, 0x8f, 0xac, 0x2e, 0x33, 0xba, 0xb4, 0x75,
|
0xee, 0x48, 0x1a, 0xba, 0x03, 0x60, 0xda, 0x1e, 0x1d, 0xec, 0x23, 0xab, 0xcb, 0x8c, 0x2e, 0x6d,
|
||||||
0x2e, 0x69, 0x44, 0xb0, 0xd8, 0x69, 0x45, 0xd3, 0xf6, 0x84, 0xf9, 0x0f, 0xa0, 0x4c, 0xd7, 0x0c,
|
0x9d, 0x4b, 0x1a, 0x11, 0x2c, 0x76, 0x5a, 0xd1, 0xb4, 0x3d, 0x61, 0xfe, 0x43, 0x28, 0xd3, 0x35,
|
||||||
0xbd, 0xcf, 0xd7, 0x29, 0xfe, 0xa5, 0x94, 0xb6, 0xce, 0xa7, 0x8d, 0x21, 0x58, 0xcd, 0xb4, 0x45,
|
0x43, 0xef, 0xf3, 0x75, 0x8a, 0xcf, 0x94, 0xd2, 0xd6, 0xf9, 0xb4, 0x3e, 0x04, 0xab, 0x99, 0xb6,
|
||||||
0x67, 0xd8, 0xf0, 0xd0, 0x43, 0x98, 0x67, 0xc9, 0xdb, 0xab, 0xce, 0x33, 0xe1, 0xcd, 0x51, 0x0e,
|
0xe8, 0x0c, 0x5f, 0x3c, 0xf4, 0x08, 0xe6, 0x59, 0xf2, 0xf6, 0xaa, 0xf3, 0x4c, 0x78, 0x73, 0x94,
|
||||||
0x10, 0x11, 0xf1, 0x84, 0x09, 0xf0, 0x80, 0x10, 0xd2, 0xe8, 0x00, 0x4a, 0x86, 0x6d, 0x13, 0xdf,
|
0x03, 0x44, 0x44, 0x3c, 0x65, 0x02, 0x3c, 0x20, 0x84, 0x34, 0x3a, 0x80, 0x92, 0x61, 0xdb, 0xc4,
|
||||||
0xe0, 0x89, 0x66, 0x81, 0x29, 0xfb, 0x60, 0x02, 0x65, 0xf5, 0xa1, 0x14, 0xd7, 0x18, 0xd6, 0x83,
|
0x37, 0x78, 0xa2, 0x59, 0x60, 0xca, 0x3e, 0x98, 0x40, 0x59, 0x7d, 0x28, 0xc5, 0x35, 0x86, 0xf5,
|
||||||
0x7e, 0x00, 0x73, 0x2c, 0x13, 0x89, 0x0f, 0xf1, 0xf2, 0x84, 0x41, 0xab, 0x71, 0xa9, 0xda, 0x2d,
|
0xa0, 0xef, 0xc3, 0x1c, 0xcb, 0x44, 0x62, 0x22, 0x5e, 0x9e, 0x30, 0x68, 0x35, 0x2e, 0x55, 0xbb,
|
||||||
0x28, 0x85, 0x8c, 0x9d, 0x26, 0x48, 0x6b, 0x77, 0xa1, 0x12, 0x37, 0x6d, 0xaa, 0x20, 0xff, 0x03,
|
0x0d, 0xa5, 0x90, 0xb1, 0xd3, 0x04, 0x69, 0xed, 0x1e, 0x54, 0xe2, 0xa6, 0x4d, 0x15, 0xe4, 0x7f,
|
||||||
0x58, 0xd5, 0x06, 0xf6, 0xd0, 0x30, 0x59, 0x7d, 0xdd, 0x86, 0x79, 0x31, 0xd9, 0x3c, 0xe2, 0xd4,
|
0x00, 0xab, 0xda, 0xc0, 0x1e, 0x1a, 0x26, 0xab, 0xaf, 0x3b, 0x30, 0x2f, 0x06, 0x9b, 0x47, 0x9c,
|
||||||
0xf1, 0x3e, 0xd2, 0x84, 0x44, 0xb8, 0x9c, 0x3a, 0x36, 0x6c, 0xb3, 0x87, 0x5d, 0xd1, 0xaf, 0x2c,
|
0x3a, 0xde, 0x47, 0x9a, 0x90, 0x08, 0x97, 0x53, 0xc7, 0x86, 0x6d, 0xf6, 0xb0, 0x2b, 0xda, 0x95,
|
||||||
0xa7, 0x1e, 0x73, 0xaa, 0xfa, 0x03, 0x38, 0x1d, 0xeb, 0x5c, 0x54, 0x73, 0x6f, 0xc3, 0x92, 0x43,
|
0xe5, 0xd4, 0x13, 0x4e, 0x55, 0xbf, 0x0f, 0xa7, 0x63, 0x8d, 0x8b, 0x6a, 0xee, 0x5d, 0x58, 0x72,
|
||||||
0x4c, 0xdd, 0xe3, 0x64, 0xdd, 0x32, 0x65, 0x1a, 0x72, 0x02, 0xde, 0x86, 0x49, 0xc5, 0xdb, 0x3e,
|
0x88, 0xa9, 0x7b, 0x9c, 0xac, 0x5b, 0xa6, 0x4c, 0x43, 0x4e, 0xc0, 0xdb, 0x30, 0xa9, 0x78, 0xdb,
|
||||||
0x71, 0x92, 0xc6, 0x4f, 0x26, 0x5e, 0x85, 0x33, 0x71, 0x71, 0xde, 0xbd, 0x7a, 0x0f, 0xd6, 0x34,
|
0x27, 0x4e, 0xd2, 0xf8, 0xc9, 0xc4, 0xab, 0x70, 0x26, 0x2e, 0xce, 0x9b, 0x57, 0xef, 0xc3, 0x9a,
|
||||||
0xdc, 0x27, 0xcf, 0xf1, 0xab, 0xaa, 0xae, 0x41, 0x35, 0xa9, 0x40, 0x28, 0xff, 0x0c, 0xd6, 0x86,
|
0x86, 0xfb, 0xe4, 0x05, 0x7e, 0x5d, 0xd5, 0x35, 0xa8, 0x26, 0x15, 0x08, 0xe5, 0x9f, 0xc1, 0xda,
|
||||||
0xd4, 0xb6, 0x6f, 0xf8, 0x03, 0x6f, 0x2a, 0xe5, 0xa2, 0xd4, 0x3d, 0x24, 0x1e, 0x9f, 0xce, 0x82,
|
0x90, 0xda, 0xf6, 0x0d, 0x7f, 0xe0, 0x4d, 0xa5, 0x5c, 0x94, 0xba, 0x87, 0xc4, 0xe3, 0xc3, 0x59,
|
||||||
0x26, 0x9b, 0xea, 0xd5, 0xb0, 0xea, 0x26, 0xaf, 0x2c, 0x78, 0x0f, 0x68, 0x09, 0x72, 0x96, 0x23,
|
0xd0, 0xe4, 0xab, 0x7a, 0x35, 0xac, 0xba, 0xc9, 0x2b, 0x0b, 0xde, 0x02, 0x5a, 0x82, 0x9c, 0xe5,
|
||||||
0xd4, 0xe5, 0x2c, 0x47, 0x7d, 0x0c, 0xc5, 0x60, 0x69, 0x46, 0x77, 0x86, 0x35, 0x66, 0x6e, 0xd2,
|
0x08, 0x75, 0x39, 0xcb, 0x51, 0x9f, 0x40, 0x31, 0x58, 0x9a, 0xd1, 0xdd, 0x61, 0x8d, 0x99, 0x9b,
|
||||||
0x85, 0x3c, 0x28, 0x43, 0xf7, 0x13, 0x4b, 0x89, 0xe8, 0xf2, 0x0e, 0x40, 0x90, 0xf2, 0x64, 0x85,
|
0x74, 0x21, 0x0f, 0xca, 0xd0, 0xfd, 0xc4, 0x52, 0x22, 0x9a, 0xbc, 0x0b, 0x10, 0xa4, 0x3c, 0x59,
|
||||||
0x70, 0x6e, 0x84, 0x62, 0x2d, 0xc4, 0xae, 0xfe, 0x4b, 0x24, 0x11, 0x86, 0x06, 0x61, 0x06, 0x83,
|
0x21, 0x9c, 0x1b, 0xa1, 0x58, 0x0b, 0xb1, 0xab, 0x3f, 0x9d, 0x0b, 0x27, 0xc2, 0x50, 0x27, 0xcc,
|
||||||
0x30, 0x23, 0x89, 0x31, 0xf7, 0x4a, 0x89, 0xf1, 0x43, 0x98, 0xf3, 0x7c, 0xc3, 0xc7, 0xa2, 0x8a,
|
0xa0, 0x13, 0x66, 0x24, 0x31, 0xe6, 0x5e, 0x2b, 0x31, 0x7e, 0x08, 0x73, 0x9e, 0x6f, 0xf8, 0x58,
|
||||||
0xda, 0x18, 0x25, 0x4e, 0x8d, 0xc0, 0x1a, 0xe7, 0x47, 0xe7, 0x01, 0x3a, 0x2e, 0x36, 0x7c, 0x6c,
|
0x54, 0x51, 0x1b, 0xa3, 0xc4, 0xa9, 0x11, 0x58, 0xe3, 0xfc, 0xe8, 0x3c, 0x40, 0xc7, 0xc5, 0x86,
|
||||||
0xea, 0x06, 0xcf, 0xe2, 0x79, 0xad, 0x28, 0x28, 0x75, 0x1f, 0x6d, 0x0f, 0x2b, 0xc1, 0x39, 0x66,
|
0x8f, 0x4d, 0xdd, 0xe0, 0x59, 0x3c, 0xaf, 0x15, 0x05, 0xa5, 0xee, 0xa3, 0xed, 0x61, 0x25, 0x38,
|
||||||
0xd8, 0xd5, 0x51, 0x9a, 0x23, 0x53, 0x35, 0xac, 0x09, 0x83, 0xac, 0x32, 0x3f, 0x61, 0x56, 0x11,
|
0xc7, 0x0c, 0xbb, 0x3a, 0x4a, 0x73, 0x64, 0xa8, 0x86, 0x35, 0x61, 0x90, 0x55, 0xe6, 0x27, 0xcc,
|
||||||
0x0a, 0xb8, 0x54, 0x28, 0x67, 0x2e, 0x8c, 0xcf, 0x99, 0x5c, 0x74, 0x92, 0x9c, 0x59, 0x18, 0x9f,
|
0x2a, 0x42, 0x01, 0x97, 0x0a, 0xe5, 0xcc, 0x85, 0xf1, 0x39, 0x93, 0x8b, 0x4e, 0x92, 0x33, 0x0b,
|
||||||
0x33, 0x85, 0xb2, 0x91, 0x39, 0xf3, 0xdb, 0x4c, 0x7a, 0xff, 0xac, 0x40, 0x35, 0xf9, 0x0d, 0x8a,
|
0xe3, 0x73, 0xa6, 0x50, 0x36, 0x3a, 0x67, 0xa6, 0x64, 0x89, 0x62, 0x5a, 0x96, 0xf8, 0x36, 0xb3,
|
||||||
0xdc, 0x73, 0x1b, 0xe6, 0x3d, 0x46, 0x99, 0x24, 0xf3, 0x09, 0x59, 0x21, 0x81, 0x1e, 0xc3, 0xac,
|
0xe3, 0x3f, 0x2b, 0x50, 0x4d, 0x4e, 0x56, 0x91, 0xa4, 0xee, 0xc0, 0xbc, 0xc7, 0x28, 0x93, 0xa4,
|
||||||
0x65, 0x1f, 0x11, 0xb6, 0x89, 0x4b, 0xad, 0x5d, 0xb2, 0x7a, 0xdd, 0x6c, 0xd8, 0x47, 0x84, 0x3b,
|
0x48, 0x21, 0x2b, 0x24, 0xd0, 0x13, 0x98, 0xb5, 0xec, 0x23, 0xc2, 0x76, 0x7b, 0xa9, 0x45, 0x4e,
|
||||||
0x89, 0x69, 0xa8, 0x7d, 0x08, 0xc5, 0x80, 0x34, 0xd5, 0xd8, 0xf6, 0x60, 0x35, 0x16, 0xb2, 0xbc,
|
0x56, 0xab, 0x9b, 0x0d, 0xfb, 0x88, 0x70, 0x6f, 0x32, 0x0d, 0xb5, 0x0f, 0xa1, 0x18, 0x90, 0xa6,
|
||||||
0xd8, 0x0f, 0x22, 0x5d, 0x99, 0x2e, 0xd2, 0xd5, 0x9f, 0xe6, 0xc2, 0x5f, 0xe2, 0x43, 0xab, 0xe7,
|
0xea, 0xdb, 0x1e, 0xac, 0xc6, 0x62, 0x9b, 0xef, 0x0a, 0x82, 0x29, 0xa1, 0x4c, 0x37, 0x25, 0xd4,
|
||||||
0x63, 0x37, 0xf1, 0x25, 0x7e, 0x24, 0xb5, 0xf3, 0xcf, 0xf0, 0xd2, 0x58, 0xed, 0xbc, 0x26, 0x15,
|
0x9f, 0xe4, 0xc2, 0x53, 0xf6, 0x91, 0xd5, 0xf3, 0xb1, 0x9b, 0x98, 0xb2, 0x1f, 0x49, 0xed, 0x7c,
|
||||||
0x1f, 0xd3, 0x17, 0xb0, 0xc4, 0x62, 0x4d, 0xf7, 0x70, 0x8f, 0x15, 0x1c, 0xa2, 0xf8, 0xfb, 0xfe,
|
0xbe, 0x5e, 0x1a, 0xab, 0x9d, 0x17, 0xaf, 0x62, 0xd6, 0x7d, 0x01, 0x4b, 0x2c, 0x28, 0x75, 0x0f,
|
||||||
0x28, 0x35, 0xdc, 0x12, 0x1e, 0xb1, 0x6d, 0x21, 0xc7, 0x3d, 0x58, 0xee, 0x85, 0x69, 0xb5, 0xfb,
|
0xf7, 0x58, 0x65, 0x22, 0xaa, 0xc4, 0xef, 0x8d, 0x52, 0xc3, 0x2d, 0xe1, 0xa1, 0xdd, 0x16, 0x72,
|
||||||
0x80, 0x92, 0x4c, 0x53, 0xf9, 0xb4, 0x4d, 0x53, 0x1c, 0xdd, 0xe9, 0xa6, 0xac, 0x92, 0x47, 0xcc,
|
0xdc, 0x83, 0xe5, 0x5e, 0x98, 0x56, 0x7b, 0x00, 0x28, 0xc9, 0x34, 0x95, 0x4f, 0xdb, 0x34, 0x17,
|
||||||
0x8c, 0x49, 0x62, 0x85, 0x1b, 0xac, 0x09, 0x09, 0xf5, 0x97, 0x79, 0x80, 0xe1, 0xcb, 0xff, 0x47,
|
0xd2, 0x2d, 0x71, 0xca, 0x72, 0x7a, 0xc4, 0xcc, 0x98, 0x24, 0x56, 0xb8, 0xc1, 0x9a, 0x90, 0x50,
|
||||||
0xb9, 0xed, 0x7e, 0x90, 0x57, 0x78, 0x21, 0x77, 0x65, 0x94, 0xe2, 0xd4, 0x8c, 0xb2, 0x17, 0xcd,
|
0xff, 0x2b, 0x0f, 0x30, 0xfc, 0xf8, 0xff, 0x28, 0x09, 0x3e, 0x08, 0x12, 0x10, 0xaf, 0xf8, 0xae,
|
||||||
0x28, 0xbc, 0xa4, 0x7b, 0x6f, 0xa4, 0x9a, 0xef, 0x6c, 0x2e, 0x79, 0x02, 0x67, 0xe2, 0xb1, 0x21,
|
0x8c, 0x52, 0x9c, 0x9a, 0x7a, 0xf6, 0xa2, 0xa9, 0x87, 0xd7, 0x7e, 0xd7, 0x47, 0xaa, 0x99, 0x3a,
|
||||||
0x12, 0xc9, 0x16, 0xcc, 0x59, 0x3e, 0xee, 0x73, 0xb4, 0x27, 0x75, 0x77, 0x16, 0x12, 0xe2, 0xac,
|
0xe9, 0x2c, 0xfc, 0xb6, 0x25, 0x9d, 0xa7, 0x70, 0x26, 0x1e, 0x44, 0x22, 0xe3, 0x6c, 0xc1, 0x9c,
|
||||||
0xea, 0x06, 0x14, 0x1b, 0x7d, 0xa3, 0x8b, 0xdb, 0x0e, 0xee, 0xd0, 0x4e, 0x2d, 0xda, 0x10, 0x86,
|
0xe5, 0xe3, 0x3e, 0xc7, 0x8f, 0x52, 0xf7, 0x7b, 0x21, 0x21, 0xce, 0xaa, 0x6e, 0x40, 0xb1, 0xd1,
|
||||||
0xf0, 0x86, 0xba, 0x05, 0x85, 0x1f, 0xe2, 0x13, 0xfe, 0x51, 0x4f, 0x68, 0xa8, 0xfa, 0xa7, 0x39,
|
0x37, 0xba, 0xb8, 0xed, 0xe0, 0x0e, 0x6d, 0xd4, 0xa2, 0x2f, 0xc2, 0x10, 0xfe, 0xa2, 0x6e, 0x41,
|
||||||
0x58, 0x63, 0x6b, 0xc5, 0xb6, 0xc4, 0x5a, 0x34, 0xec, 0x91, 0x81, 0xdb, 0xc1, 0x1e, 0x9b, 0x6d,
|
0xe1, 0x07, 0xf8, 0x84, 0xcf, 0xfe, 0x09, 0x0d, 0x55, 0xff, 0x24, 0x07, 0x6b, 0x6c, 0xf5, 0xd9,
|
||||||
0x67, 0xa0, 0x3b, 0xd8, 0xb5, 0x88, 0x29, 0xa0, 0x80, 0x62, 0xc7, 0x19, 0xb4, 0x18, 0x01, 0x9d,
|
0x96, 0xe8, 0x8d, 0x86, 0x3d, 0x32, 0x70, 0x3b, 0xd8, 0x63, 0x61, 0xe1, 0x0c, 0x74, 0x07, 0xbb,
|
||||||
0x03, 0xda, 0xd0, 0xbf, 0x1c, 0x10, 0x11, 0x88, 0x79, 0xad, 0xd0, 0x71, 0x06, 0xbf, 0x47, 0xdb,
|
0x16, 0x31, 0x05, 0xb8, 0x50, 0xec, 0x38, 0x83, 0x16, 0x23, 0xa0, 0x73, 0x40, 0x5f, 0xf4, 0x2f,
|
||||||
0x52, 0xd6, 0x3b, 0x36, 0x5c, 0xec, 0xb1, 0x38, 0xe3, 0xb2, 0x6d, 0x46, 0x40, 0x37, 0xe0, 0x74,
|
0x07, 0x44, 0x44, 0x6c, 0x5e, 0x2b, 0x74, 0x9c, 0xc1, 0xef, 0xd1, 0x77, 0x29, 0xeb, 0x1d, 0x1b,
|
||||||
0x1f, 0xf7, 0x89, 0x7b, 0xa2, 0xf7, 0xac, 0xbe, 0xe5, 0xeb, 0x96, 0xad, 0x1f, 0x9e, 0xf8, 0xd8,
|
0x2e, 0xf6, 0x58, 0x40, 0x72, 0xd9, 0x36, 0x23, 0xa0, 0x9b, 0x70, 0xba, 0x8f, 0xfb, 0xc4, 0x3d,
|
||||||
0x13, 0x31, 0x85, 0xf8, 0xcb, 0x27, 0xf4, 0x5d, 0xc3, 0x7e, 0x40, 0xdf, 0x20, 0x15, 0xca, 0x84,
|
0xd1, 0x7b, 0x56, 0xdf, 0xf2, 0x75, 0xcb, 0xd6, 0x0f, 0x4f, 0x7c, 0xec, 0x89, 0xe0, 0x43, 0xfc,
|
||||||
0xf4, 0x75, 0xaf, 0x43, 0x5c, 0xac, 0x1b, 0xe6, 0x4f, 0xd8, 0xf2, 0x99, 0xd7, 0x4a, 0x84, 0xf4,
|
0xe3, 0x53, 0xfa, 0xad, 0x61, 0x3f, 0xa4, 0x5f, 0x90, 0x0a, 0x65, 0x42, 0xfa, 0xba, 0xd7, 0x21,
|
||||||
0xdb, 0x94, 0x56, 0x37, 0x7f, 0x82, 0xde, 0x84, 0x52, 0xc7, 0x19, 0x78, 0xd8, 0xd7, 0xe9, 0x1f,
|
0x2e, 0xd6, 0x0d, 0xf3, 0xc7, 0x6c, 0x41, 0xce, 0x6b, 0x25, 0x42, 0xfa, 0x6d, 0x4a, 0xab, 0x9b,
|
||||||
0xb6, 0x3a, 0x16, 0x35, 0xe0, 0xa4, 0x6d, 0x67, 0xe0, 0x85, 0x18, 0xfa, 0xd4, 0xff, 0x0b, 0x61,
|
0x3f, 0x46, 0x6f, 0x43, 0xa9, 0xe3, 0x0c, 0x3c, 0xec, 0xeb, 0xf4, 0x0f, 0x5b, 0x6f, 0x8b, 0x1a,
|
||||||
0x86, 0xa7, 0xd4, 0xcd, 0x06, 0x94, 0x23, 0x50, 0x02, 0xdd, 0xd5, 0x31, 0xcc, 0x40, 0xec, 0xea,
|
0x70, 0xd2, 0xb6, 0x33, 0xf0, 0x42, 0x0c, 0x7d, 0xea, 0xff, 0x85, 0x30, 0xc3, 0x33, 0xea, 0x66,
|
||||||
0xe8, 0x33, 0xa5, 0xb9, 0xa4, 0x27, 0x3d, 0xc9, 0x9e, 0x29, 0xcd, 0x3f, 0x71, 0xe4, 0x96, 0x8e,
|
0x03, 0xca, 0x11, 0x70, 0x82, 0xee, 0x13, 0x19, 0x0a, 0x21, 0xf6, 0x89, 0xf4, 0x99, 0xd2, 0x5c,
|
||||||
0x3d, 0x53, 0x97, 0xf7, 0xf0, 0x73, 0x01, 0x37, 0x15, 0x35, 0xde, 0x50, 0x4d, 0x80, 0x6d, 0xc3,
|
0xd2, 0x93, 0x9e, 0x64, 0xcf, 0x94, 0xe6, 0x9f, 0x38, 0x72, 0x93, 0xc8, 0x9e, 0xa9, 0xcb, 0x7b,
|
||||||
0x31, 0x0e, 0xad, 0x9e, 0xe5, 0x9f, 0xa0, 0xab, 0x50, 0x31, 0x4c, 0x53, 0xef, 0x48, 0x8a, 0x85,
|
0xf8, 0x85, 0x00, 0xb0, 0x8a, 0x1a, 0x7f, 0x51, 0x4d, 0x80, 0x6d, 0xc3, 0x31, 0x0e, 0xad, 0x9e,
|
||||||
0x25, 0x08, 0xb8, 0x6c, 0x98, 0xe6, 0x76, 0x88, 0x8c, 0xde, 0x81, 0x15, 0xd3, 0x25, 0x4e, 0x94,
|
0xe5, 0x9f, 0xa0, 0xab, 0x50, 0x31, 0x4c, 0x53, 0xef, 0x48, 0x8a, 0x85, 0x25, 0xac, 0xb8, 0x6c,
|
||||||
0x97, 0xa3, 0x82, 0x15, 0xfa, 0x22, 0xcc, 0xac, 0xfe, 0xc7, 0x1c, 0x9c, 0x8f, 0x4e, 0x6c, 0x1c,
|
0x98, 0xe6, 0x76, 0x88, 0x8c, 0xbe, 0x03, 0x2b, 0xa6, 0x4b, 0x9c, 0x28, 0x2f, 0xc7, 0x19, 0x2b,
|
||||||
0xae, 0xb9, 0x0f, 0x8b, 0xb1, 0x5e, 0x33, 0xa0, 0x82, 0xa1, 0xb5, 0x5a, 0x44, 0x22, 0x06, 0x5f,
|
0xf4, 0x43, 0x98, 0x59, 0xfd, 0xf7, 0x39, 0x38, 0x1f, 0x1d, 0xd8, 0x38, 0x00, 0xf4, 0x00, 0x16,
|
||||||
0xe4, 0x12, 0xf0, 0x45, 0x2a, 0x20, 0x94, 0x7f, 0xad, 0x80, 0xd0, 0xec, 0x6b, 0x01, 0x84, 0xe6,
|
0x63, 0xad, 0x66, 0x80, 0x0f, 0x43, 0x6b, 0xb5, 0x88, 0x44, 0x0c, 0x10, 0xc9, 0x25, 0x00, 0x91,
|
||||||
0xa6, 0x03, 0x84, 0x2e, 0xb1, 0x6d, 0x8c, 0x94, 0x66, 0x7b, 0x67, 0x1e, 0x6a, 0xe5, 0x80, 0xc7,
|
0x54, 0x88, 0x29, 0xff, 0x46, 0x21, 0xa6, 0xd9, 0x37, 0x02, 0x31, 0xcd, 0x4d, 0x07, 0x31, 0x5d,
|
||||||
0x96, 0xe8, 0x71, 0x0c, 0x38, 0x5a, 0x98, 0x06, 0x38, 0x2a, 0x64, 0x02, 0x47, 0x34, 0x6a, 0x1c,
|
0x62, 0xd9, 0x47, 0x4a, 0xb3, 0xdd, 0x38, 0x0f, 0xb5, 0x72, 0xc0, 0x63, 0x4b, 0x3c, 0x3a, 0x06,
|
||||||
0xc7, 0x70, 0xfb, 0xc4, 0x95, 0xc8, 0x50, 0xb5, 0xc8, 0x4c, 0x58, 0x96, 0x74, 0x81, 0x0a, 0x65,
|
0x45, 0x2d, 0x4c, 0x03, 0x45, 0x15, 0x32, 0xa1, 0x28, 0x1a, 0x35, 0x8e, 0x63, 0xb8, 0x7d, 0xe2,
|
||||||
0x62, 0x48, 0x90, 0x89, 0x21, 0x5d, 0x80, 0x45, 0x9b, 0xe8, 0x36, 0x7e, 0xa1, 0xd3, 0xb9, 0xf4,
|
0x4a, 0xac, 0x49, 0x54, 0x5d, 0xcb, 0x92, 0x2e, 0x70, 0xa6, 0x4c, 0x54, 0x0a, 0x32, 0x51, 0xa9,
|
||||||
0xaa, 0x25, 0x3e, 0xb1, 0x36, 0x69, 0xe2, 0x17, 0x2d, 0x4a, 0x49, 0xa0, 0x4c, 0x8b, 0xd3, 0xa1,
|
0x0b, 0xb0, 0x68, 0x13, 0xdd, 0xc6, 0x2f, 0x75, 0x3a, 0x96, 0x5e, 0xb5, 0xc4, 0x07, 0xd6, 0x26,
|
||||||
0x4c, 0x68, 0x03, 0x16, 0xfb, 0x86, 0xf7, 0x0c, 0x9b, 0xcc, 0x14, 0xaf, 0x5a, 0x66, 0x41, 0x5c,
|
0x4d, 0xfc, 0xb2, 0x45, 0x29, 0x09, 0xdc, 0x6a, 0x71, 0x3a, 0xdc, 0x0a, 0x6d, 0xc0, 0x62, 0xdf,
|
||||||
0xe2, 0x34, 0x6a, 0x83, 0x87, 0x2e, 0x42, 0xe0, 0x24, 0xc1, 0xb4, 0xc4, 0x98, 0xca, 0x92, 0xca,
|
0xf0, 0x9e, 0x63, 0x93, 0x99, 0xe2, 0x55, 0xcb, 0x2c, 0x88, 0x4b, 0x9c, 0x46, 0x6d, 0xf0, 0xd0,
|
||||||
0xd8, 0xd4, 0xbf, 0x53, 0x60, 0x35, 0x1a, 0xe6, 0x02, 0x5b, 0x78, 0x04, 0x45, 0x57, 0x66, 0x32,
|
0x45, 0x08, 0x9c, 0x24, 0x98, 0x96, 0x18, 0x53, 0x59, 0x52, 0x19, 0x9b, 0xfa, 0xb7, 0x0a, 0xac,
|
||||||
0x11, 0xda, 0x57, 0x33, 0xca, 0xe4, 0x64, 0xea, 0xd3, 0x86, 0xb2, 0xe8, 0x47, 0x99, 0x90, 0xd6,
|
0x46, 0xc3, 0x5c, 0xa0, 0x15, 0x8f, 0xa1, 0xe8, 0xca, 0x4c, 0x26, 0x42, 0xfb, 0x6a, 0x46, 0xe1,
|
||||||
0xf5, 0x71, 0xfa, 0xc6, 0x81, 0x5a, 0x6a, 0x03, 0xde, 0xfc, 0xc4, 0xb2, 0x4d, 0xf2, 0xc2, 0xcb,
|
0x9d, 0x4c, 0x7d, 0xda, 0x50, 0x16, 0xfd, 0x30, 0x13, 0x24, 0xbb, 0x31, 0x4e, 0xdf, 0x38, 0x98,
|
||||||
0xfc, 0x4a, 0x53, 0x62, 0x4d, 0x49, 0x89, 0x35, 0xf5, 0x17, 0x0a, 0x9c, 0x89, 0xeb, 0x12, 0xae,
|
0x4c, 0x6d, 0xc0, 0xdb, 0x9f, 0x58, 0xb6, 0x49, 0x5e, 0x7a, 0x99, 0xb3, 0x34, 0x25, 0xd6, 0x94,
|
||||||
0x68, 0x24, 0x5d, 0xf1, 0x4e, 0xd2, 0xf4, 0xb8, 0x70, 0xaa, 0x33, 0xbe, 0xc8, 0x74, 0xc6, 0x8d,
|
0x94, 0x58, 0x53, 0x7f, 0xa1, 0xc0, 0x99, 0xb8, 0x2e, 0xe1, 0x8a, 0x46, 0xd2, 0x15, 0xdf, 0x49,
|
||||||
0xf1, 0x1a, 0xc7, 0xba, 0xe3, 0xaf, 0x14, 0x38, 0x9b, 0x69, 0x46, 0x6c, 0x49, 0x51, 0xe2, 0x4b,
|
0x9a, 0x1e, 0x17, 0x4e, 0x75, 0xc6, 0x17, 0x99, 0xce, 0xb8, 0x39, 0x5e, 0xe3, 0x58, 0x77, 0xfc,
|
||||||
0x8a, 0x58, 0x8e, 0x3a, 0x64, 0x60, 0xfb, 0xa1, 0xe5, 0x68, 0x9b, 0x1d, 0x31, 0xf0, 0xbc, 0xaf,
|
0xa5, 0x02, 0x67, 0x33, 0xcd, 0x88, 0x2d, 0x29, 0x4a, 0x7c, 0x49, 0x11, 0xcb, 0x51, 0x87, 0x0c,
|
||||||
0xf7, 0x8d, 0x97, 0x56, 0x7f, 0xd0, 0x17, 0xeb, 0x11, 0x55, 0xf7, 0x94, 0x53, 0x5e, 0x61, 0x41,
|
0x6c, 0x3f, 0xb4, 0x1c, 0x6d, 0xb3, 0x43, 0x0b, 0x9e, 0xf7, 0xf5, 0xbe, 0xf1, 0xca, 0xea, 0x0f,
|
||||||
0x52, 0xeb, 0xb0, 0x12, 0x58, 0x39, 0x12, 0x04, 0x0c, 0x81, 0x7a, 0xb9, 0x28, 0xa8, 0x67, 0xc3,
|
0xfa, 0x62, 0x3d, 0xa2, 0xea, 0x9e, 0x71, 0xca, 0x6b, 0x2c, 0x48, 0x6a, 0x1d, 0x56, 0x02, 0x2b,
|
||||||
0xfc, 0x0e, 0x7e, 0x6e, 0x75, 0xf0, 0x6b, 0x39, 0x03, 0xb9, 0x00, 0x25, 0x07, 0xbb, 0x7d, 0xcb,
|
0x47, 0xc2, 0x8a, 0x21, 0x98, 0x30, 0x17, 0x85, 0x09, 0x6d, 0x98, 0xdf, 0xc1, 0x2f, 0xac, 0x0e,
|
||||||
0xf3, 0x82, 0x44, 0x5b, 0xd4, 0xc2, 0x24, 0xf5, 0x3f, 0xe7, 0x61, 0x39, 0x1e, 0x1d, 0xf7, 0x12,
|
0x7e, 0x23, 0xa7, 0x2a, 0x17, 0xa0, 0xe4, 0x60, 0xb7, 0x6f, 0x79, 0x5e, 0x90, 0x68, 0x8b, 0x5a,
|
||||||
0x18, 0xe2, 0x5b, 0x29, 0x4b, 0x40, 0x7c, 0xa0, 0xa1, 0x6a, 0xf2, 0x86, 0x2c, 0x46, 0x72, 0x59,
|
0x98, 0xa4, 0xfe, 0xc7, 0x3c, 0x2c, 0xc7, 0xa3, 0xe3, 0x7e, 0x02, 0x95, 0x7c, 0x27, 0x65, 0x09,
|
||||||
0x1b, 0xf9, 0xa0, 0x70, 0x11, 0x95, 0x0a, 0xf5, 0x48, 0x87, 0xf4, 0xfb, 0x86, 0x6d, 0xca, 0xa3,
|
0x88, 0x77, 0x34, 0x54, 0x76, 0xde, 0x94, 0xc5, 0x48, 0x2e, 0x0b, 0x1a, 0x08, 0x0a, 0x17, 0x51,
|
||||||
0x2b, 0xd1, 0xa4, 0xfe, 0x33, 0xdc, 0x2e, 0x75, 0x3b, 0x25, 0xb3, 0x67, 0x3a, 0x79, 0x74, 0xd7,
|
0xa9, 0x50, 0x8f, 0x74, 0x48, 0xbf, 0x6f, 0xd8, 0xa6, 0x3c, 0x0c, 0x13, 0xaf, 0xd4, 0x7f, 0x86,
|
||||||
0x6b, 0xd9, 0x0c, 0x8b, 0x64, 0xc9, 0xba, 0xa8, 0x81, 0x20, 0xed, 0x58, 0x2e, 0xda, 0x84, 0x59,
|
0xdb, 0xa5, 0x6e, 0xa7, 0x64, 0xf6, 0x4c, 0x07, 0x8f, 0xee, 0xa3, 0x2d, 0x9b, 0xa1, 0x9b, 0x2c,
|
||||||
0x6c, 0x3f, 0x97, 0xe5, 0x62, 0xca, 0xd9, 0x96, 0x2c, 0x8b, 0x34, 0xc6, 0x87, 0xae, 0xc3, 0x7c,
|
0x59, 0x17, 0x35, 0x10, 0xa4, 0x1d, 0xcb, 0x45, 0x9b, 0x30, 0x8b, 0xed, 0x17, 0xb2, 0xae, 0x4c,
|
||||||
0x9f, 0x86, 0x85, 0xdc, 0xff, 0xae, 0x65, 0x1c, 0xf1, 0x68, 0x82, 0x0d, 0x6d, 0xc1, 0x82, 0xc9,
|
0x39, 0x2d, 0x93, 0x65, 0x91, 0xc6, 0xf8, 0xd0, 0x0d, 0x98, 0xef, 0xd3, 0xb0, 0x90, 0x3b, 0xea,
|
||||||
0xe6, 0x49, 0x6e, 0x72, 0xab, 0x29, 0x08, 0x27, 0x63, 0xd0, 0x24, 0x23, 0xda, 0x0d, 0x8a, 0xe1,
|
0xb5, 0x8c, 0x43, 0x23, 0x4d, 0xb0, 0xa1, 0x2d, 0x58, 0x30, 0xd9, 0x38, 0xc9, 0x6d, 0x73, 0x35,
|
||||||
0x62, 0x56, 0x15, 0x1b, 0x9b, 0x8a, 0xd4, 0x8a, 0x78, 0x3f, 0x5a, 0x11, 0x03, 0xd3, 0xb5, 0x35,
|
0x05, 0x33, 0x65, 0x0c, 0x9a, 0x64, 0x44, 0xbb, 0x41, 0xd5, 0x5c, 0xcc, 0x2a, 0x77, 0x63, 0x43,
|
||||||
0x5e, 0xd7, 0x68, 0x58, 0xf2, 0x2c, 0x14, 0x7a, 0xa4, 0xcb, 0xc3, 0xa8, 0xc4, 0x4f, 0x45, 0x7b,
|
0x91, 0x5a, 0x3a, 0xef, 0x47, 0x4b, 0x67, 0x60, 0xba, 0xb6, 0xc6, 0xeb, 0x1a, 0x5d, 0x3f, 0x9f,
|
||||||
0xa4, 0xcb, 0xa2, 0x68, 0x95, 0x6e, 0x0e, 0x4c, 0xcb, 0x66, 0x49, 0xbd, 0xa0, 0xf1, 0x06, 0xfd,
|
0x85, 0x42, 0x8f, 0x74, 0x79, 0x18, 0x95, 0xf8, 0x39, 0x6b, 0x8f, 0x74, 0x59, 0x14, 0xad, 0xd2,
|
||||||
0xf8, 0xd8, 0x83, 0x4e, 0xec, 0x0e, 0xae, 0x96, 0xd9, 0xab, 0x22, 0xa3, 0xec, 0xd9, 0x1d, 0x56,
|
0x5d, 0x84, 0x69, 0xd9, 0x2c, 0xa9, 0x17, 0x34, 0xfe, 0x42, 0x27, 0x1f, 0x7b, 0xd0, 0x89, 0xdd,
|
||||||
0x6e, 0xfa, 0xfe, 0x49, 0x75, 0x89, 0xd1, 0xe9, 0x23, 0xdd, 0xf7, 0x71, 0x88, 0x62, 0x39, 0x6b,
|
0xc1, 0xd5, 0x32, 0xfb, 0x54, 0x64, 0x94, 0x3d, 0xbb, 0xc3, 0xca, 0x4d, 0xdf, 0x3f, 0xa9, 0x2e,
|
||||||
0xdf, 0x97, 0x96, 0xb6, 0x25, 0x42, 0xf1, 0x00, 0x16, 0x5e, 0xf0, 0x44, 0x50, 0xad, 0x30, 0xf9,
|
0x31, 0x3a, 0x7d, 0xa4, 0x1b, 0x44, 0x0e, 0x7a, 0x2c, 0x67, 0x6d, 0x10, 0xd3, 0xd2, 0xb6, 0xc4,
|
||||||
0x2b, 0xe3, 0xd3, 0x8b, 0xd0, 0x20, 0x05, 0xbf, 0xcd, 0xd2, 0xff, 0x97, 0x0a, 0x9c, 0xd9, 0x66,
|
0x3c, 0x1e, 0xc2, 0xc2, 0x4b, 0x9e, 0x08, 0xaa, 0x15, 0x26, 0x7f, 0x65, 0x7c, 0x7a, 0x11, 0x1a,
|
||||||
0xdb, 0xa2, 0x50, 0x1e, 0x9b, 0x06, 0xc9, 0xbb, 0x15, 0x80, 0xac, 0x99, 0xb0, 0x5b, 0x7c, 0xdc,
|
0xa4, 0xe0, 0xb7, 0x59, 0xfa, 0xff, 0xbd, 0x02, 0x67, 0xb6, 0xd9, 0xfe, 0x29, 0x94, 0xc7, 0xa6,
|
||||||
0x12, 0x63, 0x6d, 0xc0, 0x92, 0x54, 0x2e, 0x54, 0xe4, 0x27, 0xc6, 0x69, 0xcb, 0x5e, 0xb8, 0xa9,
|
0xc1, 0x06, 0x6f, 0x07, 0xb0, 0x6d, 0x26, 0x90, 0x17, 0xef, 0xb7, 0x44, 0x6d, 0x1b, 0xb0, 0x24,
|
||||||
0x7e, 0x04, 0x6b, 0x89, 0x51, 0x88, 0x2d, 0xcc, 0x06, 0x2c, 0x0e, 0xf3, 0x55, 0x30, 0x88, 0x52,
|
0x95, 0x0b, 0x15, 0xf9, 0x89, 0x91, 0xdf, 0xb2, 0x17, 0x7e, 0x55, 0x3f, 0x82, 0xb5, 0x44, 0x2f,
|
||||||
0x40, 0x6b, 0x98, 0xea, 0x6d, 0x38, 0xdd, 0xf6, 0x0d, 0xd7, 0x4f, 0xb8, 0x60, 0x02, 0x59, 0x86,
|
0xc4, 0x16, 0x66, 0x03, 0x16, 0x87, 0xf9, 0x2a, 0xe8, 0x44, 0x29, 0xa0, 0x35, 0x4c, 0xf5, 0x0e,
|
||||||
0xc0, 0x46, 0x65, 0x05, 0x48, 0xda, 0x86, 0xd5, 0xb6, 0x4f, 0x9c, 0x57, 0x50, 0x4a, 0xb3, 0x0e,
|
0x9c, 0x6e, 0xfb, 0x86, 0xeb, 0x27, 0x5c, 0x30, 0x81, 0x2c, 0xc3, 0x74, 0xa3, 0xb2, 0x02, 0x76,
|
||||||
0x1d, 0x3f, 0x19, 0xc8, 0xf5, 0x41, 0x36, 0xd5, 0x35, 0x8e, 0x17, 0x27, 0x7b, 0xbb, 0x03, 0x67,
|
0x6d, 0xc3, 0x6a, 0xdb, 0x27, 0xce, 0x6b, 0x28, 0xa5, 0x59, 0x87, 0xf6, 0x9f, 0x0c, 0xe4, 0xfa,
|
||||||
0x38, 0x5c, 0xfb, 0x2a, 0x83, 0x38, 0x2b, 0xc1, 0xe2, 0xa4, 0xde, 0xa7, 0x70, 0x6a, 0xb8, 0x2c,
|
0x20, 0x5f, 0xd5, 0x35, 0x8e, 0x40, 0x27, 0x5b, 0xbb, 0x0b, 0x67, 0x38, 0x00, 0xfc, 0x3a, 0x9d,
|
||||||
0x0e, 0xa1, 0x98, 0x9b, 0x51, 0x28, 0xe6, 0xc2, 0x88, 0x59, 0x8f, 0x20, 0x31, 0x7f, 0x91, 0x0b,
|
0x38, 0x2b, 0xe1, 0xe7, 0xa4, 0xde, 0x67, 0x70, 0x6a, 0xb8, 0x2c, 0x0e, 0x31, 0x9b, 0x5b, 0x51,
|
||||||
0xe5, 0xf5, 0x0c, 0x20, 0xe6, 0x4e, 0x14, 0x88, 0xb9, 0x38, 0x4e, 0x77, 0x04, 0x87, 0x49, 0x46,
|
0xcc, 0xe6, 0xc2, 0x88, 0x51, 0x8f, 0x40, 0x36, 0x7f, 0x9e, 0x0b, 0xe5, 0xf5, 0x0c, 0xc4, 0xe6,
|
||||||
0x6d, 0x3e, 0x25, 0x6a, 0x3f, 0x4f, 0xa0, 0x35, 0xb3, 0x59, 0x70, 0x57, 0xcc, 0xda, 0xdf, 0x0a,
|
0x6e, 0x14, 0xb1, 0xb9, 0x38, 0x4e, 0x77, 0x04, 0xb0, 0x49, 0x46, 0x6d, 0x3e, 0x25, 0x6a, 0x3f,
|
||||||
0x58, 0xa3, 0x71, 0xb0, 0x26, 0xe8, 0x3a, 0x40, 0xd7, 0x6f, 0xc5, 0xc0, 0x9a, 0x8d, 0xb1, 0xf6,
|
0x4f, 0xc0, 0x3a, 0xb3, 0x59, 0xb8, 0x58, 0xcc, 0xda, 0xdf, 0x08, 0xaa, 0xa3, 0x71, 0x54, 0x27,
|
||||||
0x06, 0x58, 0xcd, 0xdf, 0xcc, 0x42, 0x31, 0x78, 0x97, 0xf0, 0x79, 0xd2, 0x6d, 0xb9, 0x14, 0xb7,
|
0x68, 0x3a, 0xc0, 0xeb, 0x6f, 0xc7, 0x50, 0x9d, 0x8d, 0xb1, 0xf6, 0x06, 0xa0, 0xce, 0x5f, 0xcf,
|
||||||
0x85, 0x57, 0xe0, 0xfc, 0x37, 0x5a, 0x81, 0x67, 0x27, 0x5e, 0x81, 0xcf, 0x41, 0x91, 0x3d, 0xe8,
|
0x42, 0x31, 0xf8, 0x96, 0xf0, 0x79, 0xd2, 0x6d, 0xb9, 0x14, 0xb7, 0x85, 0x57, 0xe0, 0xfc, 0x37,
|
||||||
0x2e, 0x3e, 0x12, 0x2b, 0x6a, 0x81, 0x11, 0x34, 0x7c, 0x34, 0x0c, 0xc3, 0xf9, 0xa9, 0xc2, 0x30,
|
0x5a, 0x81, 0x67, 0x27, 0x5e, 0x81, 0xcf, 0x41, 0x91, 0x3d, 0xe8, 0x2e, 0x3e, 0x12, 0x2b, 0x6a,
|
||||||
0x06, 0x0f, 0x2d, 0xc4, 0xe1, 0xa1, 0x7b, 0xc1, 0x8a, 0xc8, 0x17, 0xd1, 0xcb, 0x23, 0xf4, 0xa6,
|
0x81, 0x11, 0x34, 0x7c, 0x34, 0x0c, 0xc3, 0xf9, 0xa9, 0xc2, 0x30, 0x86, 0x23, 0x2d, 0xc4, 0x71,
|
||||||
0xae, 0x85, 0xcd, 0xe8, 0x5a, 0xc8, 0xd7, 0xd5, 0x77, 0x47, 0x69, 0xf9, 0xce, 0x82, 0x43, 0x07,
|
0xa4, 0xfb, 0xc1, 0x8a, 0xc8, 0x17, 0xd1, 0xcb, 0x23, 0xf4, 0xa6, 0xae, 0x85, 0xcd, 0xe8, 0x5a,
|
||||||
0x1c, 0x1c, 0x0a, 0xc7, 0xa2, 0xc8, 0xac, 0x77, 0x00, 0x82, 0x24, 0x22, 0x11, 0xa2, 0x73, 0x23,
|
0xc8, 0xd7, 0xd5, 0xf7, 0x46, 0x69, 0x19, 0xb9, 0x0a, 0x7e, 0x9b, 0x2b, 0xc4, 0x01, 0x07, 0x87,
|
||||||
0xc6, 0xa8, 0x85, 0xd8, 0xa9, 0xda, 0xc8, 0xd4, 0x0c, 0x4f, 0x90, 0x26, 0xcb, 0x8f, 0x19, 0xc7,
|
0xc2, 0xb1, 0x28, 0x32, 0xeb, 0x5d, 0x80, 0x20, 0x89, 0x48, 0x84, 0xe8, 0xdc, 0x88, 0x3e, 0x6a,
|
||||||
0x47, 0xff, 0x3b, 0x17, 0xca, 0x2f, 0x19, 0x47, 0x2e, 0xf7, 0x12, 0xb0, 0xe4, 0x94, 0x51, 0x7c,
|
0x21, 0x76, 0xaa, 0x36, 0x32, 0x34, 0xc3, 0x33, 0xa9, 0xc9, 0xf2, 0x63, 0xc6, 0x81, 0xd4, 0xff,
|
||||||
0x33, 0x8a, 0x4a, 0xbe, 0x62, 0xd4, 0x25, 0x40, 0x49, 0x56, 0xb9, 0x18, 0xae, 0x78, 0xcd, 0x41,
|
0xce, 0x85, 0xf2, 0x4b, 0xc6, 0x21, 0xce, 0xfd, 0x04, 0x7e, 0x39, 0x65, 0x14, 0xdf, 0x8a, 0xc2,
|
||||||
0xa3, 0xa2, 0xa0, 0xd4, 0xd9, 0xce, 0xe0, 0xc8, 0xb2, 0x2d, 0xef, 0x98, 0xbf, 0x9f, 0xe7, 0x3b,
|
0x97, 0xaf, 0x19, 0x75, 0x09, 0xf4, 0x92, 0x55, 0x2e, 0x86, 0x2b, 0x3e, 0x73, 0xd0, 0xa8, 0x28,
|
||||||
0x03, 0x49, 0xaa, 0xb3, 0xdb, 0x4d, 0xf8, 0xa5, 0xe5, 0xeb, 0x1d, 0x62, 0x62, 0x16, 0xd3, 0x73,
|
0x28, 0x75, 0xb6, 0x33, 0x38, 0xb2, 0x6c, 0xcb, 0x3b, 0xe6, 0xdf, 0xe7, 0xf9, 0xce, 0x40, 0x92,
|
||||||
0x5a, 0x81, 0x12, 0xb6, 0x89, 0x89, 0x87, 0x5f, 0x5e, 0xe1, 0xd5, 0xbe, 0xbc, 0x62, 0xec, 0xcb,
|
0xea, 0xec, 0xbe, 0x14, 0x7e, 0x65, 0xf9, 0x7a, 0x87, 0x98, 0x98, 0xc5, 0xf4, 0x9c, 0x56, 0xa0,
|
||||||
0x3b, 0x03, 0xf3, 0x2e, 0x36, 0x3c, 0x62, 0x8b, 0xed, 0xb9, 0x68, 0xd1, 0xa9, 0xe9, 0x63, 0xcf,
|
0x84, 0x6d, 0x62, 0xe2, 0xe1, 0xcc, 0x2b, 0xbc, 0xde, 0xcc, 0x2b, 0xc6, 0x66, 0xde, 0x19, 0x98,
|
||||||
0xa3, 0x3d, 0x89, 0x72, 0x4d, 0x34, 0x43, 0x65, 0xe6, 0xe2, 0xd8, 0x32, 0x73, 0xc4, 0x51, 0x4e,
|
0x77, 0xb1, 0xe1, 0x11, 0x5b, 0x6c, 0xcf, 0xc5, 0x1b, 0x1d, 0x9a, 0x3e, 0xf6, 0x3c, 0xda, 0x92,
|
||||||
0xac, 0xcc, 0x2c, 0x8f, 0x2d, 0x33, 0x27, 0x39, 0xc9, 0x09, 0x15, 0xda, 0x4b, 0x93, 0x15, 0xda,
|
0x28, 0xd7, 0xc4, 0x6b, 0xa8, 0xcc, 0x5c, 0x1c, 0x5b, 0x66, 0x8e, 0x38, 0x1c, 0x8a, 0x95, 0x99,
|
||||||
0xe1, 0xba, 0x74, 0x39, 0x52, 0x97, 0x7e, 0x9b, 0x1f, 0xeb, 0xaf, 0x15, 0x58, 0x4b, 0x7c, 0x56,
|
0xe5, 0xb1, 0x65, 0xe6, 0x44, 0x67, 0x43, 0xc3, 0x42, 0x7b, 0x69, 0xb2, 0x42, 0x3b, 0x5c, 0x97,
|
||||||
0xe2, 0x73, 0xbd, 0x15, 0x3b, 0x14, 0xda, 0x18, 0xeb, 0xb3, 0xe0, 0x4c, 0xe8, 0x51, 0xe4, 0x4c,
|
0x2e, 0x47, 0xea, 0xd2, 0x6f, 0x73, 0xb2, 0xfe, 0x4a, 0x81, 0xb5, 0xc4, 0xb4, 0x12, 0xd3, 0xf5,
|
||||||
0xe8, 0x83, 0xf1, 0x82, 0xaf, 0xfd, 0x48, 0xe8, 0x8f, 0x15, 0x78, 0xf3, 0xc0, 0x31, 0x63, 0x15,
|
0x76, 0xec, 0xf4, 0x68, 0x63, 0xac, 0xcf, 0x82, 0xc3, 0xa3, 0xc7, 0x91, 0xc3, 0xa3, 0x0f, 0xc6,
|
||||||
0x9e, 0xd8, 0xf6, 0x4f, 0x9e, 0x38, 0xee, 0xc9, 0x5a, 0x3f, 0x37, 0x2d, 0xce, 0xc2, 0xe5, 0x54,
|
0x0b, 0xbe, 0xf1, 0xb3, 0xa3, 0x3f, 0x52, 0xe0, 0xed, 0x03, 0xc7, 0x8c, 0x55, 0x78, 0x62, 0xdb,
|
||||||
0x15, 0x2e, 0x64, 0x9b, 0x21, 0x4a, 0xa6, 0x1f, 0xc3, 0xf2, 0xee, 0x4b, 0xdc, 0x69, 0x9f, 0xd8,
|
0x3f, 0x79, 0xe2, 0xb8, 0x2f, 0x6b, 0xfd, 0xdc, 0xb4, 0x38, 0x0b, 0x97, 0x53, 0x55, 0xb8, 0x90,
|
||||||
0x9d, 0x29, 0x4c, 0xab, 0x40, 0xbe, 0xd3, 0x37, 0x05, 0x4a, 0x4a, 0x1f, 0xc3, 0x55, 0x60, 0x3e,
|
0x6d, 0x86, 0x28, 0x99, 0x7e, 0x04, 0xcb, 0xbb, 0xaf, 0x70, 0xa7, 0x7d, 0x62, 0x77, 0xa6, 0x30,
|
||||||
0x5a, 0x05, 0xea, 0x50, 0x19, 0xf6, 0x20, 0xa6, 0xf7, 0x0c, 0x9d, 0x5e, 0x93, 0x32, 0x53, 0xe5,
|
0xad, 0x02, 0xf9, 0x4e, 0xdf, 0x14, 0x28, 0x29, 0x7d, 0x0c, 0x57, 0x81, 0xf9, 0x68, 0x15, 0xa8,
|
||||||
0x8b, 0x9a, 0x68, 0x09, 0x3a, 0x76, 0xf9, 0x05, 0x06, 0x4e, 0xc7, 0xae, 0x1b, 0xcd, 0x16, 0xf9,
|
0x43, 0x65, 0xd8, 0x82, 0x18, 0xde, 0x33, 0x74, 0x78, 0x4d, 0xca, 0x4c, 0x95, 0x2f, 0x6a, 0xe2,
|
||||||
0x68, 0xb6, 0x50, 0xff, 0x5c, 0x81, 0x12, 0xed, 0xe1, 0x1b, 0xd9, 0x2f, 0xb6, 0x5a, 0xf9, 0xe1,
|
0x4d, 0xd0, 0xb1, 0xcb, 0xaf, 0x44, 0x70, 0x3a, 0x76, 0xdd, 0x68, 0xb6, 0xc8, 0x47, 0xb3, 0x85,
|
||||||
0x56, 0x2b, 0xd8, 0xb1, 0xcd, 0x86, 0x77, 0x6c, 0x43, 0xcb, 0xe7, 0x18, 0x39, 0x69, 0xf9, 0x7c,
|
0xfa, 0x67, 0x0a, 0x94, 0x68, 0x0b, 0xdf, 0xc8, 0x7e, 0xb1, 0xd5, 0xca, 0x0f, 0xb7, 0x5a, 0xc1,
|
||||||
0x40, 0xc7, 0xae, 0xab, 0x5e, 0x80, 0x45, 0x6e, 0x9b, 0x18, 0x79, 0x05, 0xf2, 0x03, 0xb7, 0x27,
|
0x8e, 0x6d, 0x36, 0xbc, 0x63, 0x1b, 0x5a, 0x3e, 0xc7, 0xc8, 0x49, 0xcb, 0xe7, 0x03, 0x3a, 0x76,
|
||||||
0xe3, 0x68, 0xe0, 0xf6, 0xd4, 0x3f, 0x51, 0xa0, 0x5c, 0xf7, 0x7d, 0xa3, 0x73, 0x3c, 0xc5, 0x00,
|
0x5d, 0xf5, 0x02, 0x2c, 0x72, 0xdb, 0x44, 0xcf, 0x2b, 0x90, 0x1f, 0xb8, 0x3d, 0x19, 0x47, 0x03,
|
||||||
0x02, 0xe3, 0x72, 0x61, 0xe3, 0x92, 0x83, 0x18, 0x9a, 0x3b, 0x9b, 0x61, 0xee, 0x5c, 0xc4, 0x5c,
|
0xb7, 0xa7, 0xfe, 0xb1, 0x02, 0xe5, 0xba, 0xef, 0x1b, 0x9d, 0xe3, 0x29, 0x3a, 0x10, 0x18, 0x97,
|
||||||
0x15, 0x96, 0xa4, 0x2d, 0x99, 0x06, 0x37, 0x01, 0xb5, 0x88, 0xeb, 0x3f, 0x24, 0xee, 0x0b, 0xc3,
|
0x0b, 0x1b, 0x97, 0xec, 0xc4, 0xd0, 0xdc, 0xd9, 0x0c, 0x73, 0xe7, 0x22, 0xe6, 0xaa, 0xb0, 0x24,
|
||||||
0x35, 0xa7, 0xdb, 0x81, 0x21, 0x98, 0x15, 0x37, 0x5e, 0xf3, 0x57, 0xe6, 0x34, 0xf6, 0xac, 0x5e,
|
0x6d, 0xc9, 0x34, 0xb8, 0x09, 0xa8, 0x45, 0x5c, 0xff, 0x11, 0x71, 0x5f, 0x1a, 0xae, 0x39, 0xdd,
|
||||||
0x86, 0x53, 0x11, 0x7d, 0x99, 0x1d, 0xdf, 0x87, 0x12, 0xcb, 0xfb, 0xa2, 0x14, 0xbf, 0x11, 0x3e,
|
0x0e, 0x0c, 0xc1, 0xac, 0xb8, 0x43, 0x9b, 0xbf, 0x32, 0xa7, 0xb1, 0x67, 0xf5, 0x32, 0x9c, 0x8a,
|
||||||
0xae, 0x99, 0x68, 0x95, 0x50, 0x7f, 0x17, 0x56, 0x68, 0x7d, 0xc0, 0xe8, 0xc1, 0xa7, 0xf8, 0xfd,
|
0xe8, 0xcb, 0x6c, 0xf8, 0x01, 0x94, 0x58, 0xde, 0x17, 0xa5, 0xf8, 0xcd, 0xf0, 0x71, 0xcd, 0x44,
|
||||||
0x58, 0x9d, 0x7a, 0x3e, 0x43, 0x51, 0xac, 0x46, 0xfd, 0x5b, 0x05, 0xe6, 0x18, 0x3d, 0xb1, 0x66,
|
0xab, 0x84, 0xfa, 0xbb, 0xb0, 0x42, 0xeb, 0x03, 0x46, 0x0f, 0xa6, 0xe2, 0xf7, 0x62, 0x75, 0xea,
|
||||||
0x9f, 0x83, 0xa2, 0x8b, 0x1d, 0xa2, 0xfb, 0x46, 0x37, 0xb8, 0x5f, 0x4c, 0x09, 0xfb, 0x46, 0xd7,
|
0xf9, 0x0c, 0x45, 0xb1, 0x1a, 0xf5, 0x6f, 0x14, 0x98, 0x63, 0xf4, 0xc4, 0x9a, 0x7d, 0x0e, 0x8a,
|
||||||
0x63, 0xd7, 0xa3, 0xe9, 0x4b, 0xd3, 0xea, 0x62, 0xcf, 0x97, 0x97, 0x8c, 0x4b, 0x94, 0xb6, 0xc3,
|
0x2e, 0x76, 0x88, 0xee, 0x1b, 0xdd, 0xe0, 0xc6, 0x32, 0x25, 0xec, 0x1b, 0x5d, 0x8f, 0x5d, 0xb8,
|
||||||
0x49, 0xd4, 0x49, 0x9e, 0xf5, 0xfb, 0xbc, 0xee, 0x9c, 0xd5, 0xd8, 0x33, 0xda, 0xe4, 0x57, 0xde,
|
0xa6, 0x1f, 0x4d, 0xab, 0x8b, 0x3d, 0x5f, 0x5e, 0x5b, 0x2e, 0x51, 0xda, 0x0e, 0x27, 0x51, 0x27,
|
||||||
0x26, 0x81, 0xd4, 0xd9, 0x85, 0xb8, 0x1a, 0x14, 0x62, 0x28, 0x7a, 0xd0, 0x56, 0x77, 0x01, 0x85,
|
0x79, 0xd6, 0xef, 0xf3, 0xba, 0x73, 0x56, 0x63, 0xcf, 0x68, 0x93, 0x5f, 0xa2, 0x9b, 0x04, 0x52,
|
||||||
0xbd, 0x20, 0xfc, 0x7d, 0x1d, 0xe6, 0x99, 0x93, 0x64, 0x75, 0xb4, 0x96, 0xe1, 0x06, 0x4d, 0xb0,
|
0x67, 0x57, 0xec, 0x6a, 0x50, 0x88, 0xa1, 0xe8, 0xc1, 0xbb, 0xba, 0x0b, 0x28, 0xec, 0x05, 0xe1,
|
||||||
0xa9, 0x06, 0x20, 0xee, 0xe0, 0x48, 0x45, 0x34, 0xfd, 0xac, 0x8c, 0xa8, 0x90, 0xfe, 0x5e, 0x81,
|
0xef, 0x1b, 0x30, 0xcf, 0x9c, 0x24, 0xab, 0xa3, 0xb5, 0x0c, 0x37, 0x68, 0x82, 0x4d, 0x35, 0x00,
|
||||||
0x53, 0x91, 0x3e, 0x84, 0xad, 0xef, 0x45, 0x3b, 0xc9, 0x34, 0x55, 0x74, 0xb0, 0x1d, 0x59, 0x12,
|
0x71, 0x07, 0x47, 0x2a, 0xa2, 0xe9, 0x47, 0x65, 0x44, 0x85, 0xf4, 0x77, 0x0a, 0x9c, 0x8a, 0xb4,
|
||||||
0xae, 0x67, 0x99, 0xf4, 0x1b, 0x5a, 0x0e, 0xfe, 0x41, 0x01, 0xa8, 0x0f, 0xfc, 0x63, 0x81, 0x0c,
|
0x21, 0x6c, 0xbd, 0x1e, 0x6d, 0x24, 0xd3, 0x54, 0xd1, 0xc0, 0x76, 0x64, 0x49, 0xb8, 0x91, 0x65,
|
||||||
0x86, 0x67, 0x46, 0x89, 0xce, 0x0c, 0x7d, 0xe7, 0x18, 0x9e, 0xf7, 0x82, 0xb8, 0x72, 0x4f, 0x13,
|
0xd2, 0xaf, 0x69, 0x39, 0xf8, 0x07, 0x05, 0xa0, 0x3e, 0xf0, 0x8f, 0x05, 0x32, 0x18, 0x1e, 0x19,
|
||||||
0xb4, 0x19, 0x86, 0x37, 0xf0, 0x8f, 0xe5, 0x51, 0x18, 0x7d, 0x46, 0x17, 0x61, 0x89, 0xdf, 0x69,
|
0x25, 0x3a, 0x32, 0xf4, 0x9b, 0x63, 0x78, 0xde, 0x4b, 0xe2, 0xca, 0x3d, 0x4d, 0xf0, 0xce, 0x30,
|
||||||
0xd7, 0x0d, 0xd3, 0x74, 0xb1, 0xe7, 0x89, 0x33, 0xb1, 0x32, 0xa7, 0xd6, 0x39, 0x91, 0xb2, 0x59,
|
0xbc, 0x81, 0x7f, 0x2c, 0x8f, 0xc2, 0xe8, 0x33, 0xba, 0x08, 0x4b, 0xfc, 0x96, 0xbc, 0x6e, 0x98,
|
||||||
0x26, 0xb6, 0x7d, 0xcb, 0x3f, 0xd1, 0x7d, 0xf2, 0x0c, 0xdb, 0x62, 0x6f, 0x52, 0x96, 0xd4, 0x7d,
|
0xa6, 0x8b, 0x3d, 0x4f, 0x9c, 0x89, 0x95, 0x39, 0xb5, 0xce, 0x89, 0x94, 0xcd, 0x32, 0xb1, 0xed,
|
||||||
0x4a, 0xe4, 0x87, 0x03, 0x5d, 0xcb, 0xf3, 0x5d, 0xc9, 0x26, 0xcf, 0x5f, 0x04, 0x95, 0xb1, 0xd1,
|
0x5b, 0xfe, 0x89, 0xee, 0x93, 0xe7, 0xd8, 0x16, 0x7b, 0x93, 0xb2, 0xa4, 0xee, 0x53, 0x22, 0x3f,
|
||||||
0x49, 0xa9, 0xb4, 0x06, 0xbd, 0x1e, 0x77, 0xf1, 0xab, 0x4f, 0xfb, 0xfb, 0x62, 0x40, 0xb9, 0xac,
|
0x1c, 0xe8, 0x5a, 0x9e, 0xef, 0x4a, 0x36, 0x79, 0xfe, 0x22, 0xa8, 0x8c, 0x8d, 0x0e, 0x4a, 0xa5,
|
||||||
0x98, 0x1e, 0x3a, 0x4d, 0x0c, 0xf7, 0x35, 0x82, 0x30, 0xef, 0xc3, 0x4a, 0x68, 0x0c, 0x22, 0xac,
|
0x35, 0xe8, 0xf5, 0xb8, 0x8b, 0x5f, 0x7f, 0xd8, 0xdf, 0x17, 0x1d, 0xca, 0x65, 0xc5, 0xf4, 0xd0,
|
||||||
0x22, 0x45, 0xa4, 0x12, 0x2d, 0x22, 0xd5, 0x47, 0x80, 0x38, 0xee, 0xf0, 0x0d, 0xc7, 0xad, 0x9e,
|
0x69, 0xa2, 0xbb, 0x6f, 0x10, 0x84, 0x79, 0x1f, 0x56, 0x42, 0x7d, 0x10, 0x61, 0x15, 0x29, 0x22,
|
||||||
0x86, 0x53, 0x11, 0x45, 0x62, 0x25, 0xbe, 0x06, 0x65, 0x71, 0x2f, 0x49, 0x04, 0xca, 0x59, 0x28,
|
0x95, 0x68, 0x11, 0xa9, 0x3e, 0x06, 0xc4, 0x71, 0x87, 0x6f, 0xd8, 0x6f, 0xf5, 0x34, 0x9c, 0x8a,
|
||||||
0xd0, 0x8c, 0xda, 0xb1, 0x4c, 0x79, 0x4e, 0xba, 0xe0, 0x10, 0x73, 0xdb, 0x32, 0x5d, 0xf5, 0x13,
|
0x28, 0x12, 0x2b, 0xf1, 0x35, 0x28, 0x8b, 0x9b, 0x4e, 0x22, 0x50, 0xce, 0x42, 0x81, 0x66, 0xd4,
|
||||||
0x28, 0x6b, 0xbc, 0x1f, 0xc1, 0xfb, 0x10, 0x96, 0xc4, 0x2d, 0x26, 0x3d, 0x72, 0x8d, 0x30, 0xed,
|
0x8e, 0x65, 0xca, 0x73, 0xd2, 0x05, 0x87, 0x98, 0xdb, 0x96, 0xe9, 0xaa, 0x9f, 0x40, 0x59, 0xe3,
|
||||||
0x9a, 0x7a, 0xb8, 0x13, 0xad, 0x6c, 0x87, 0x9b, 0xaa, 0x09, 0x35, 0x5e, 0x32, 0x44, 0xd4, 0xcb,
|
0xed, 0x08, 0xde, 0x47, 0xb0, 0x24, 0xee, 0x45, 0xe9, 0x91, 0x8b, 0x89, 0x69, 0x17, 0xdf, 0xc3,
|
||||||
0xc1, 0x3e, 0x04, 0x79, 0xa3, 0x70, 0x6c, 0x2f, 0x51, 0xf9, 0xb2, 0x1b, 0x6e, 0xaa, 0xe7, 0xe1,
|
0x8d, 0x68, 0x65, 0x3b, 0xfc, 0xaa, 0x9a, 0x50, 0xe3, 0x25, 0x43, 0x44, 0xbd, 0xec, 0xec, 0x23,
|
||||||
0x5c, 0x6a, 0x2f, 0xc2, 0x13, 0x0e, 0x54, 0x86, 0x2f, 0x4c, 0x4b, 0x1e, 0x18, 0xb3, 0x83, 0x60,
|
0x90, 0x17, 0x01, 0xc6, 0xb6, 0x12, 0x95, 0x2f, 0xbb, 0xe1, 0x57, 0xf5, 0x3c, 0x9c, 0x4b, 0x6d,
|
||||||
0x25, 0x74, 0x10, 0x7c, 0x26, 0x28, 0x12, 0x73, 0x72, 0x11, 0x63, 0x15, 0xe0, 0xb0, 0xdc, 0xcf,
|
0x45, 0x78, 0xc2, 0x81, 0xca, 0xf0, 0x83, 0x69, 0xc9, 0x03, 0x63, 0x76, 0x10, 0xac, 0x84, 0x0e,
|
||||||
0x67, 0x95, 0xfb, 0xb3, 0x91, 0x72, 0x5f, 0x6d, 0x07, 0xfe, 0x14, 0xdb, 0xb0, 0x07, 0x6c, 0xbb,
|
0x82, 0xcf, 0x04, 0x45, 0x62, 0x4e, 0x2e, 0x62, 0xac, 0x02, 0x1c, 0x96, 0xfb, 0xf9, 0xac, 0x72,
|
||||||
0xc8, 0xfb, 0x96, 0x09, 0x51, 0x1d, 0x35, 0x4a, 0xce, 0xaa, 0x85, 0xa4, 0xd4, 0xab, 0x50, 0x8e,
|
0x7f, 0x36, 0x52, 0xee, 0xab, 0xed, 0xc0, 0x9f, 0x62, 0x1b, 0xf6, 0x90, 0x6d, 0x17, 0x79, 0xdb,
|
||||||
0xa6, 0xc6, 0x50, 0x9e, 0x53, 0x12, 0x79, 0x6e, 0x29, 0x96, 0xe2, 0x3e, 0x8c, 0x55, 0xc0, 0xd9,
|
0x32, 0x21, 0xaa, 0xa3, 0x7a, 0xc9, 0x59, 0xb5, 0x90, 0x94, 0x7a, 0x15, 0xca, 0xd1, 0xd4, 0x18,
|
||||||
0x3e, 0x8e, 0xd5, 0xbf, 0x77, 0x23, 0xc9, 0xee, 0x5a, 0xca, 0x19, 0xee, 0x6f, 0x28, 0xcf, 0xad,
|
0xca, 0x73, 0x4a, 0x22, 0xcf, 0x2d, 0xc5, 0x52, 0xdc, 0x87, 0xb1, 0x0a, 0x38, 0xdb, 0xc7, 0xb1,
|
||||||
0x8a, 0xf5, 0xe0, 0xa1, 0x47, 0xe5, 0xc5, 0xa0, 0xd5, 0xb7, 0xa0, 0x74, 0x90, 0xf5, 0x1b, 0x88,
|
0xfa, 0xf7, 0x5e, 0x24, 0xd9, 0x5d, 0x4b, 0x39, 0xc3, 0xfd, 0x35, 0xe5, 0xb9, 0x55, 0xb1, 0x1e,
|
||||||
0x59, 0x79, 0x5f, 0xe2, 0x26, 0xac, 0x3e, 0xb4, 0x7a, 0xd8, 0x3b, 0xf1, 0x7c, 0xdc, 0x6f, 0xb0,
|
0x3c, 0xf2, 0xa8, 0xbc, 0xe8, 0xb4, 0xfa, 0x0e, 0x94, 0x0e, 0xb2, 0x7e, 0x55, 0x31, 0x2b, 0xef,
|
||||||
0xa4, 0x74, 0x64, 0x61, 0x17, 0xad, 0x03, 0xb0, 0x2d, 0x8c, 0x43, 0xac, 0xe0, 0x6a, 0x7c, 0x88,
|
0x4b, 0xdc, 0x82, 0xd5, 0x47, 0x56, 0x0f, 0x7b, 0x27, 0x9e, 0x8f, 0xfb, 0x0d, 0x96, 0x94, 0x8e,
|
||||||
0xa2, 0xfe, 0x97, 0x02, 0xcb, 0x43, 0xc1, 0x03, 0xb6, 0x75, 0x7b, 0x03, 0x8a, 0x74, 0xbc, 0x9e,
|
0x2c, 0xec, 0xa2, 0x75, 0x00, 0xb6, 0x85, 0x71, 0x88, 0x15, 0x5c, 0xb6, 0x0f, 0x51, 0xd4, 0xff,
|
||||||
0x6f, 0xf4, 0x1d, 0x79, 0x9e, 0x15, 0x10, 0xd0, 0x1d, 0x98, 0x3b, 0xf2, 0x24, 0x64, 0x94, 0x0a,
|
0x54, 0x60, 0x79, 0x28, 0x78, 0xc0, 0xb6, 0x6e, 0x6f, 0x41, 0x91, 0xf6, 0xd7, 0xf3, 0x8d, 0xbe,
|
||||||
0xa0, 0xa7, 0x19, 0xa2, 0xcd, 0x1e, 0x79, 0x0d, 0x13, 0x7d, 0x04, 0x30, 0xf0, 0xb0, 0x29, 0xce,
|
0x23, 0xcf, 0xb3, 0x02, 0x02, 0xba, 0x0b, 0x73, 0x47, 0x9e, 0x84, 0x8c, 0x52, 0x01, 0xf4, 0x34,
|
||||||
0xb0, 0xf2, 0x59, 0xd5, 0xc2, 0x41, 0xf8, 0x7c, 0x9b, 0x0a, 0xf0, 0xab, 0x16, 0x77, 0xa1, 0x64,
|
0x43, 0xb4, 0xd9, 0x23, 0xaf, 0x61, 0xa2, 0x8f, 0x00, 0x06, 0x1e, 0x36, 0xc5, 0x19, 0x56, 0x3e,
|
||||||
0xd9, 0xc4, 0xc4, 0xec, 0xcc, 0xd1, 0x14, 0xa8, 0xd2, 0x18, 0x71, 0xe0, 0x12, 0x07, 0x1e, 0x36,
|
0xab, 0x5a, 0x38, 0x08, 0x9f, 0x6f, 0x53, 0x01, 0x7e, 0xd5, 0xe2, 0x1e, 0x94, 0x2c, 0x9b, 0x98,
|
||||||
0x55, 0x2c, 0xd6, 0x42, 0xe9, 0x5f, 0x11, 0x28, 0x4d, 0x58, 0xe1, 0x49, 0xeb, 0x28, 0x30, 0x5c,
|
0x98, 0x9d, 0x39, 0x9a, 0x02, 0x55, 0x1a, 0x23, 0x0e, 0x5c, 0xe2, 0xc0, 0xc3, 0xa6, 0x8a, 0xc5,
|
||||||
0x46, 0xec, 0xc6, 0xa8, 0xd1, 0x31, 0x6f, 0x69, 0x15, 0x4b, 0x94, 0x36, 0x52, 0x54, 0xbd, 0x0d,
|
0x5a, 0x28, 0xfd, 0x2b, 0x02, 0xa5, 0x09, 0x2b, 0x3c, 0x69, 0x1d, 0x05, 0x86, 0xcb, 0x88, 0xdd,
|
||||||
0xa7, 0x23, 0x3b, 0xa4, 0x29, 0xb6, 0x2c, 0x6a, 0x2b, 0x06, 0x94, 0x0c, 0xc3, 0x59, 0xc0, 0x10,
|
0x18, 0xd5, 0x3b, 0xe6, 0x2d, 0xad, 0x62, 0x89, 0xd2, 0x46, 0x8a, 0xaa, 0x77, 0xe0, 0x74, 0x64,
|
||||||
0x32, 0x9a, 0xc7, 0xc1, 0x10, 0x1e, 0x87, 0x21, 0x3c, 0xf5, 0x73, 0x38, 0x1b, 0x41, 0x74, 0x22,
|
0x87, 0x34, 0xc5, 0x96, 0x45, 0x6d, 0xc5, 0x80, 0x92, 0x61, 0x38, 0x0b, 0x18, 0x42, 0x46, 0xf3,
|
||||||
0x16, 0xdd, 0x8d, 0x55, 0x6e, 0x97, 0xc6, 0x69, 0x8d, 0x95, 0x70, 0xff, 0xa3, 0xc0, 0x6a, 0x1a,
|
0x38, 0x18, 0xc2, 0xe3, 0x30, 0x84, 0xa7, 0x7e, 0x0e, 0x67, 0x23, 0x88, 0x4e, 0xc4, 0xa2, 0x7b,
|
||||||
0xc3, 0x2b, 0x22, 0x8e, 0x3f, 0xce, 0xb8, 0x56, 0x77, 0x6b, 0x32, 0xb3, 0x7e, 0x2b, 0x68, 0xed,
|
0xb1, 0xca, 0xed, 0xd2, 0x38, 0xad, 0xb1, 0x12, 0xee, 0x7f, 0x14, 0x58, 0x4d, 0x63, 0x78, 0x4d,
|
||||||
0x3e, 0xd4, 0xd2, 0xfc, 0x99, 0x9c, 0xa5, 0xfc, 0x34, 0xb3, 0xf4, 0xb3, 0x7c, 0x08, 0x79, 0xaf,
|
0xc4, 0xf1, 0x47, 0x19, 0xf7, 0xef, 0x6e, 0x4f, 0x66, 0xd6, 0x6f, 0x04, 0xad, 0xdd, 0x87, 0x5a,
|
||||||
0xfb, 0xbe, 0x6b, 0x1d, 0x0e, 0x68, 0xc8, 0xbf, 0x76, 0x34, 0xab, 0x11, 0xe0, 0x32, 0xdc, 0xb5,
|
0x9a, 0x3f, 0x93, 0xa3, 0x94, 0x9f, 0x66, 0x94, 0x7e, 0x96, 0x0f, 0x21, 0xef, 0x75, 0xdf, 0x77,
|
||||||
0x37, 0x46, 0x88, 0x0f, 0xed, 0x48, 0xc5, 0x66, 0x3e, 0x8d, 0x62, 0x33, 0x1c, 0x53, 0xbf, 0x39,
|
0xad, 0xc3, 0x01, 0x0d, 0xf9, 0x37, 0x8e, 0x66, 0x35, 0x02, 0x5c, 0x86, 0xbb, 0xf6, 0xe6, 0x08,
|
||||||
0x99, 0xbe, 0xef, 0x2c, 0x00, 0xfa, 0xb3, 0x1c, 0x2c, 0x45, 0xa7, 0x08, 0xed, 0x02, 0x18, 0x81,
|
0xf1, 0xa1, 0x1d, 0xa9, 0xd8, 0xcc, 0xa7, 0x51, 0x6c, 0x86, 0x63, 0xea, 0xb7, 0x26, 0xd3, 0xf7,
|
||||||
0xe5, 0xe2, 0x43, 0xb9, 0x38, 0xd1, 0x30, 0xb5, 0x90, 0x20, 0x7a, 0x17, 0xf2, 0x1d, 0x67, 0x20,
|
0x5b, 0x0b, 0x80, 0xfe, 0x2c, 0x07, 0x4b, 0xd1, 0x21, 0x42, 0xbb, 0x00, 0x46, 0x60, 0xb9, 0x98,
|
||||||
0x66, 0x2d, 0xe5, 0x30, 0x78, 0xdb, 0x19, 0xf0, 0x8c, 0x42, 0xd9, 0xe8, 0x9e, 0x8a, 0x9f, 0xed,
|
0x28, 0x17, 0x27, 0xea, 0xa6, 0x16, 0x12, 0x44, 0xef, 0x41, 0xbe, 0xe3, 0x0c, 0xc4, 0xa8, 0xa5,
|
||||||
0x67, 0x67, 0xc9, 0xa7, 0xec, 0x3d, 0x97, 0x11, 0xcc, 0xe8, 0x31, 0x2c, 0xbd, 0x70, 0x2d, 0xdf,
|
0x1c, 0x06, 0x6f, 0x3b, 0x03, 0x9e, 0x51, 0x28, 0x1b, 0xdd, 0x53, 0xf1, 0xb3, 0xfd, 0xec, 0x2c,
|
||||||
0x38, 0xec, 0x61, 0xbd, 0x67, 0x9c, 0x60, 0x57, 0x64, 0xc9, 0x09, 0x12, 0x59, 0x59, 0x0a, 0x3e,
|
0xf9, 0x8c, 0x7d, 0xe7, 0x32, 0x82, 0x19, 0x3d, 0x81, 0xa5, 0x97, 0xae, 0xe5, 0x1b, 0x87, 0x3d,
|
||||||
0xa1, 0x72, 0xea, 0x1f, 0x42, 0x41, 0x5a, 0x34, 0x66, 0x45, 0xd8, 0x87, 0xb5, 0x01, 0x65, 0xd3,
|
0xac, 0xf7, 0x8c, 0x13, 0xec, 0x8a, 0x2c, 0x39, 0x41, 0x22, 0x2b, 0x4b, 0xc1, 0xa7, 0x54, 0x4e,
|
||||||
0xd9, 0x15, 0x38, 0xdb, 0xb0, 0x89, 0xee, 0x61, 0xba, 0x8c, 0xcb, 0xcb, 0xf9, 0x63, 0x52, 0xf4,
|
0xfd, 0x43, 0x28, 0x48, 0x8b, 0xc6, 0xac, 0x08, 0xfb, 0xb0, 0x36, 0xa0, 0x6c, 0x3a, 0xbb, 0x02,
|
||||||
0x2a, 0x93, 0xde, 0x26, 0x2e, 0x6e, 0x1a, 0x36, 0x69, 0x73, 0x51, 0xf5, 0x39, 0x94, 0x42, 0x03,
|
0x67, 0x1b, 0x36, 0xd1, 0x3d, 0x4c, 0x97, 0x71, 0x79, 0xdd, 0x7f, 0x4c, 0x8a, 0x5e, 0x65, 0xd2,
|
||||||
0x1c, 0x63, 0x42, 0x03, 0x56, 0xe4, 0x51, 0xbc, 0x87, 0x7d, 0xb1, 0xbc, 0x4c, 0xd4, 0xf9, 0xb2,
|
0xdb, 0xc4, 0xc5, 0x4d, 0xc3, 0x26, 0x6d, 0x2e, 0xaa, 0xbe, 0x80, 0x52, 0xa8, 0x83, 0x63, 0x4c,
|
||||||
0x90, 0x6b, 0x63, 0x9f, 0x5f, 0x9f, 0xb8, 0x0b, 0x67, 0x35, 0x4c, 0x1c, 0x6c, 0x07, 0xf3, 0xf9,
|
0x68, 0xc0, 0x8a, 0x3c, 0x8a, 0xf7, 0xb0, 0x2f, 0x96, 0x97, 0x89, 0x1a, 0x5f, 0x16, 0x72, 0x6d,
|
||||||
0x84, 0x74, 0xa7, 0xc8, 0xe0, 0x6f, 0x40, 0x2d, 0x4d, 0x9e, 0xe7, 0x87, 0x6b, 0x97, 0xa0, 0x20,
|
0xec, 0xf3, 0xeb, 0x13, 0xf7, 0xe0, 0xac, 0x86, 0x89, 0x83, 0xed, 0x60, 0x3c, 0x9f, 0x92, 0xee,
|
||||||
0x7f, 0xd0, 0x8a, 0x16, 0x20, 0xbf, 0xbf, 0xdd, 0xaa, 0xcc, 0xd0, 0x87, 0x83, 0x9d, 0x56, 0x45,
|
0x14, 0x19, 0xfc, 0x2d, 0xa8, 0xa5, 0xc9, 0xf3, 0xfc, 0x70, 0xed, 0x12, 0x14, 0xe4, 0x4f, 0x64,
|
||||||
0x41, 0x05, 0x98, 0x6d, 0x6f, 0xef, 0xb7, 0x2a, 0xb9, 0x6b, 0x7d, 0xa8, 0xc4, 0x7f, 0xcd, 0x89,
|
0xd1, 0x02, 0xe4, 0xf7, 0xb7, 0x5b, 0x95, 0x19, 0xfa, 0x70, 0xb0, 0xd3, 0xaa, 0x28, 0xa8, 0x00,
|
||||||
0xd6, 0xe0, 0x54, 0x4b, 0xdb, 0x6b, 0xd5, 0x1f, 0xd5, 0xf7, 0x1b, 0x7b, 0x4d, 0xbd, 0xa5, 0x35,
|
0xb3, 0xed, 0xed, 0xfd, 0x56, 0x25, 0x77, 0xad, 0x0f, 0x95, 0xf8, 0xef, 0x43, 0xd1, 0x1a, 0x9c,
|
||||||
0x3e, 0xae, 0xef, 0xef, 0x56, 0x66, 0xd0, 0x06, 0x9c, 0x0f, 0xbf, 0x78, 0xbc, 0xd7, 0xde, 0xd7,
|
0x6a, 0x69, 0x7b, 0xad, 0xfa, 0xe3, 0xfa, 0x7e, 0x63, 0xaf, 0xa9, 0xb7, 0xb4, 0xc6, 0xc7, 0xf5,
|
||||||
0xf7, 0xf7, 0xf4, 0xed, 0xbd, 0xe6, 0x7e, 0xbd, 0xd1, 0xdc, 0xd5, 0x2a, 0x0a, 0x3a, 0x0f, 0x67,
|
0xfd, 0xdd, 0xca, 0x0c, 0xda, 0x80, 0xf3, 0xe1, 0x0f, 0x4f, 0xf6, 0xda, 0xfb, 0xfa, 0xfe, 0x9e,
|
||||||
0xc3, 0x2c, 0x0f, 0x1a, 0x3b, 0x0d, 0x6d, 0x77, 0x9b, 0x3e, 0xd7, 0x9f, 0x54, 0x72, 0xd7, 0x6e,
|
0xbe, 0xbd, 0xd7, 0xdc, 0xaf, 0x37, 0x9a, 0xbb, 0x5a, 0x45, 0x41, 0xe7, 0xe1, 0x6c, 0x98, 0xe5,
|
||||||
0x40, 0x39, 0xf2, 0xe3, 0x4b, 0x6a, 0x52, 0x6b, 0x6f, 0xa7, 0x32, 0x83, 0xca, 0x50, 0x0c, 0xeb,
|
0x61, 0x63, 0xa7, 0xa1, 0xed, 0x6e, 0xd3, 0xe7, 0xfa, 0xd3, 0x4a, 0xee, 0xda, 0x4d, 0x28, 0x47,
|
||||||
0x29, 0xc0, 0x6c, 0x73, 0x6f, 0x67, 0xb7, 0x92, 0xbb, 0x76, 0x1b, 0x96, 0x63, 0xb7, 0x71, 0xd1,
|
0x7e, 0xce, 0x49, 0x4d, 0x6a, 0xed, 0xed, 0x54, 0x66, 0x50, 0x19, 0x8a, 0x61, 0x3d, 0x05, 0x98,
|
||||||
0x0a, 0x94, 0xdb, 0xf5, 0xe6, 0xce, 0x83, 0xbd, 0x4f, 0x75, 0x6d, 0xb7, 0xbe, 0xf3, 0x59, 0x65,
|
0x6d, 0xee, 0xed, 0xec, 0x56, 0x72, 0xd7, 0xee, 0xc0, 0x72, 0xec, 0xda, 0x2e, 0x5a, 0x81, 0x72,
|
||||||
0x06, 0xad, 0x42, 0x45, 0x92, 0x9a, 0x7b, 0xfb, 0x9c, 0xaa, 0x5c, 0x7b, 0x16, 0xfb, 0xc6, 0x30,
|
0xbb, 0xde, 0xdc, 0x79, 0xb8, 0xf7, 0xa9, 0xae, 0xed, 0xd6, 0x77, 0x3e, 0xab, 0xcc, 0xa0, 0x55,
|
||||||
0x3a, 0x0d, 0x2b, 0x41, 0x37, 0xfa, 0xb6, 0xb6, 0x5b, 0xdf, 0xdf, 0xa5, 0xbd, 0x47, 0xc8, 0xda,
|
0xa8, 0x48, 0x52, 0x73, 0x6f, 0x9f, 0x53, 0x95, 0x6b, 0xcf, 0x63, 0x73, 0x0c, 0xa3, 0xd3, 0xb0,
|
||||||
0x41, 0xb3, 0xd9, 0x68, 0x3e, 0xaa, 0x28, 0x54, 0xeb, 0x90, 0xbc, 0xfb, 0x69, 0x83, 0x32, 0xe7,
|
0x12, 0x34, 0xa3, 0x6f, 0x6b, 0xbb, 0xf5, 0xfd, 0x5d, 0xda, 0x7a, 0x84, 0xac, 0x1d, 0x34, 0x9b,
|
||||||
0xa2, 0xcc, 0x07, 0xcd, 0x1f, 0x36, 0xf7, 0x3e, 0x69, 0x56, 0xf2, 0x5b, 0xbf, 0x58, 0x81, 0x25,
|
0x8d, 0xe6, 0xe3, 0x8a, 0x42, 0xb5, 0x0e, 0xc9, 0xbb, 0x9f, 0x36, 0x28, 0x73, 0x2e, 0xca, 0x7c,
|
||||||
0x59, 0xe8, 0x61, 0x97, 0xdd, 0x6a, 0x69, 0xc1, 0x82, 0xfc, 0x81, 0x74, 0x4a, 0x86, 0x8e, 0xfe,
|
0xd0, 0xfc, 0x41, 0x73, 0xef, 0x93, 0x66, 0x25, 0xbf, 0xf5, 0x8b, 0x15, 0x58, 0x92, 0x85, 0x1e,
|
||||||
0xac, 0xbb, 0xb6, 0x31, 0x82, 0x43, 0xd4, 0xdb, 0x33, 0xe8, 0x90, 0xd5, 0xbf, 0xa1, 0xdb, 0xd1,
|
0x76, 0xd9, 0xad, 0x96, 0x16, 0x2c, 0xc8, 0x9f, 0x5c, 0xa7, 0x64, 0xe8, 0xe8, 0x0f, 0xc5, 0x6b,
|
||||||
0x97, 0x52, 0xab, 0xcd, 0xc4, 0x85, 0xec, 0xda, 0xe5, 0xb1, 0x7c, 0x41, 0x1f, 0x98, 0x96, 0xb8,
|
0x1b, 0x23, 0x38, 0x44, 0xbd, 0x3d, 0x83, 0x0e, 0x59, 0xfd, 0x1b, 0xba, 0x46, 0x7d, 0x29, 0xb5,
|
||||||
0xe1, 0x9f, 0xff, 0xa0, 0xcb, 0x69, 0xb5, 0x69, 0xca, 0xef, 0x8b, 0x6a, 0x57, 0xc6, 0x33, 0x06,
|
0xda, 0x4c, 0xdc, 0xdc, 0xae, 0x5d, 0x1e, 0xcb, 0x17, 0xb4, 0x81, 0x69, 0x89, 0x1b, 0xfe, 0x41,
|
||||||
0xdd, 0x3c, 0x83, 0x4a, 0xfc, 0xa7, 0x40, 0x28, 0x05, 0x3a, 0xcd, 0xf8, 0xbd, 0x51, 0xed, 0xda,
|
0x11, 0xba, 0x9c, 0x56, 0x9b, 0xa6, 0xfc, 0x62, 0xa9, 0x76, 0x65, 0x3c, 0x63, 0xd0, 0xcc, 0x73,
|
||||||
0x24, 0xac, 0xe1, 0xce, 0x12, 0x3f, 0x9a, 0xb9, 0x3a, 0xc9, 0xaf, 0x10, 0x32, 0x3b, 0xcb, 0xfa,
|
0xa8, 0xc4, 0x7f, 0x5c, 0x84, 0x52, 0xa0, 0xd3, 0x8c, 0x5f, 0x30, 0xd5, 0xae, 0x4d, 0xc2, 0x1a,
|
||||||
0xc1, 0x02, 0x77, 0x60, 0xf4, 0xe6, 0x33, 0x4a, 0xfd, 0x85, 0x4a, 0xca, 0xbd, 0xf9, 0x34, 0x07,
|
0x6e, 0x2c, 0xf1, 0x33, 0x9c, 0xab, 0x93, 0xfc, 0x5c, 0x21, 0xb3, 0xb1, 0xac, 0x5f, 0x36, 0x70,
|
||||||
0xa6, 0x5f, 0xa2, 0x56, 0x67, 0xd0, 0x31, 0x2c, 0xc7, 0xae, 0x27, 0xa0, 0x14, 0xf1, 0xf4, 0x7b,
|
0x07, 0x46, 0x6f, 0x3e, 0xa3, 0xd4, 0xdf, 0xbc, 0xa4, 0x5c, 0xb0, 0x4f, 0x73, 0x60, 0xfa, 0x25,
|
||||||
0x18, 0xb5, 0xab, 0x13, 0x70, 0x46, 0x23, 0x22, 0x7c, 0x1d, 0x21, 0x3d, 0x22, 0x52, 0x2e, 0x3b,
|
0x6a, 0x75, 0x06, 0x1d, 0xc3, 0x72, 0xec, 0x7a, 0x02, 0x4a, 0x11, 0x4f, 0xbf, 0x87, 0x51, 0xbb,
|
||||||
0xa4, 0x47, 0x44, 0xea, 0xcd, 0x06, 0x16, 0xdc, 0x91, 0x6b, 0x08, 0x69, 0xc1, 0x9d, 0x76, 0xf9,
|
0x3a, 0x01, 0x67, 0x34, 0x22, 0xc2, 0xd7, 0x11, 0xd2, 0x23, 0x22, 0xe5, 0xb2, 0x43, 0x7a, 0x44,
|
||||||
0xa1, 0x76, 0x79, 0x2c, 0x5f, 0xd8, 0x69, 0xb1, 0x4b, 0x09, 0x69, 0x4e, 0x4b, 0xbf, 0xf4, 0x50,
|
0xa4, 0xde, 0x6c, 0x60, 0xc1, 0x1d, 0xb9, 0x86, 0x90, 0x16, 0xdc, 0x69, 0x97, 0x1f, 0x6a, 0x97,
|
||||||
0xbb, 0x3a, 0x01, 0x67, 0x3c, 0x0a, 0x86, 0x47, 0x9c, 0x59, 0x51, 0x90, 0x38, 0x90, 0xcf, 0x8a,
|
0xc7, 0xf2, 0x85, 0x9d, 0x16, 0xbb, 0x94, 0x90, 0xe6, 0xb4, 0xf4, 0x4b, 0x0f, 0xb5, 0xab, 0x13,
|
||||||
0x82, 0xe4, 0x69, 0xa9, 0x88, 0x82, 0xd8, 0xd1, 0xe4, 0x95, 0x09, 0x8e, 0x52, 0xb2, 0xa3, 0x20,
|
0x70, 0xc6, 0xa3, 0x60, 0x78, 0xc4, 0x99, 0x15, 0x05, 0x89, 0x03, 0xf9, 0xac, 0x28, 0x48, 0x9e,
|
||||||
0xfd, 0xd0, 0x45, 0x9d, 0x41, 0x7f, 0xa4, 0x40, 0x35, 0xeb, 0x98, 0x02, 0xa5, 0xd4, 0x77, 0x63,
|
0x96, 0x8a, 0x28, 0x88, 0x1d, 0x4d, 0x5e, 0x99, 0xe0, 0x28, 0x25, 0x3b, 0x0a, 0xd2, 0x0f, 0x5d,
|
||||||
0x4e, 0x56, 0x6a, 0x5b, 0xd3, 0x88, 0x04, 0x56, 0x7c, 0x09, 0x28, 0xb9, 0xee, 0xa1, 0x77, 0xd2,
|
0xd4, 0x19, 0xf4, 0x53, 0x05, 0xaa, 0x59, 0xc7, 0x14, 0x28, 0xa5, 0xbe, 0x1b, 0x73, 0xb2, 0x52,
|
||||||
0x66, 0x26, 0x63, 0x75, 0xad, 0xbd, 0x3b, 0x19, 0x73, 0xd0, 0x65, 0x1b, 0x0a, 0xf2, 0x60, 0x04,
|
0xdb, 0x9a, 0x46, 0x24, 0xb0, 0xe2, 0x4b, 0x40, 0xc9, 0x75, 0x0f, 0x7d, 0x27, 0x6d, 0x64, 0x32,
|
||||||
0xa5, 0x64, 0xe9, 0xd8, 0xb1, 0x4c, 0x4d, 0x1d, 0xc5, 0x12, 0x28, 0x7d, 0x04, 0xb3, 0x94, 0x8a,
|
0x56, 0xd7, 0xda, 0x7b, 0x93, 0x31, 0x07, 0x4d, 0xb6, 0xa1, 0x20, 0x0f, 0x46, 0x50, 0x4a, 0x96,
|
||||||
0xce, 0xa7, 0x73, 0x4b, 0x65, 0xeb, 0x59, 0xaf, 0x03, 0x45, 0x4f, 0x61, 0x9e, 0x9f, 0x04, 0xa0,
|
0x8e, 0x1d, 0xcb, 0xd4, 0xd4, 0x51, 0x2c, 0x81, 0xd2, 0xc7, 0x30, 0x4b, 0xa9, 0xe8, 0x7c, 0x3a,
|
||||||
0x14, 0xe4, 0x21, 0x72, 0x5e, 0x51, 0xbb, 0x90, 0xcd, 0x10, 0xa8, 0xfb, 0x82, 0xff, 0xef, 0x0c,
|
0xb7, 0x54, 0xb6, 0x9e, 0xf5, 0x39, 0x50, 0xf4, 0x0c, 0xe6, 0xf9, 0x49, 0x00, 0x4a, 0x41, 0x1e,
|
||||||
0x01, 0xf2, 0xa3, 0xb7, 0xd3, 0x7f, 0x8c, 0x1c, 0x3d, 0x53, 0xa8, 0x5d, 0x1c, 0xc3, 0x15, 0xfe,
|
0x22, 0xe7, 0x15, 0xb5, 0x0b, 0xd9, 0x0c, 0x81, 0xba, 0x2f, 0xf8, 0x7f, 0xe3, 0x10, 0x20, 0x3f,
|
||||||
0x28, 0x62, 0x55, 0xef, 0xe5, 0xb1, 0x5b, 0x97, 0xec, 0x8f, 0x22, 0x7d, 0x73, 0xc4, 0x83, 0x24,
|
0x7a, 0x37, 0xfd, 0xe7, 0xcd, 0xd1, 0x33, 0x85, 0xda, 0xc5, 0x31, 0x5c, 0xe1, 0x49, 0x11, 0xab,
|
||||||
0xb9, 0x79, 0x4a, 0x0b, 0x92, 0xcc, 0x2d, 0x6b, 0x5a, 0x90, 0x64, 0xef, 0xc7, 0xd4, 0x19, 0xe4,
|
0x7a, 0x2f, 0x8f, 0xdd, 0xba, 0x64, 0x4f, 0x8a, 0xf4, 0xcd, 0x11, 0x0f, 0x92, 0xe4, 0xe6, 0x29,
|
||||||
0xc3, 0xa9, 0x14, 0xa8, 0x0c, 0xbd, 0x9b, 0x15, 0xe4, 0x69, 0xb8, 0x5d, 0xed, 0xbd, 0x09, 0xb9,
|
0x2d, 0x48, 0x32, 0xb7, 0xac, 0x69, 0x41, 0x92, 0xbd, 0x1f, 0x53, 0x67, 0x90, 0x0f, 0xa7, 0x52,
|
||||||
0xc3, 0x93, 0x2f, 0x3e, 0xfa, 0x37, 0xb3, 0xf1, 0xa3, 0xcc, 0xc9, 0x8f, 0x7f, 0xe2, 0x5b, 0xff,
|
0xa0, 0x32, 0xf4, 0x5e, 0x56, 0x90, 0xa7, 0xe1, 0x76, 0xb5, 0xeb, 0x13, 0x72, 0x87, 0x07, 0x5f,
|
||||||
0x9a, 0x87, 0x45, 0x0e, 0x83, 0x8a, 0x0a, 0xe6, 0x33, 0x80, 0xe1, 0x09, 0x04, 0x7a, 0x2b, 0xdd,
|
0x4c, 0xfa, 0xb7, 0xb3, 0xf1, 0xa3, 0xcc, 0xc1, 0x8f, 0x4f, 0xf1, 0xad, 0x7f, 0xc9, 0xc3, 0x22,
|
||||||
0x27, 0x91, 0x53, 0x9a, 0xda, 0xdb, 0xa3, 0x99, 0xc2, 0x81, 0x16, 0x42, 0xf3, 0xd3, 0x02, 0x2d,
|
0x87, 0x41, 0x45, 0x05, 0xf3, 0x19, 0xc0, 0xf0, 0x04, 0x02, 0xbd, 0x93, 0xee, 0x93, 0xc8, 0x29,
|
||||||
0x79, 0x68, 0x91, 0x16, 0x68, 0x29, 0x47, 0x02, 0xea, 0x0c, 0xfa, 0x18, 0x8a, 0x01, 0x6c, 0x8c,
|
0x4d, 0xed, 0xdd, 0xd1, 0x4c, 0xe1, 0x40, 0x0b, 0xa1, 0xf9, 0x69, 0x81, 0x96, 0x3c, 0xb4, 0x48,
|
||||||
0xd2, 0x60, 0xe7, 0x18, 0x2e, 0x5e, 0x7b, 0x6b, 0x24, 0x4f, 0xd8, 0xea, 0x10, 0x26, 0x9c, 0x66,
|
0x0b, 0xb4, 0x94, 0x23, 0x01, 0x75, 0x06, 0x7d, 0x0c, 0xc5, 0x00, 0x36, 0x46, 0x69, 0xb0, 0x73,
|
||||||
0x75, 0x12, 0x7b, 0x4e, 0xb3, 0x3a, 0x0d, 0x58, 0x1e, 0xfa, 0x84, 0x23, 0x47, 0x99, 0x3e, 0x89,
|
0x0c, 0x17, 0xaf, 0xbd, 0x33, 0x92, 0x27, 0x6c, 0x75, 0x08, 0x13, 0x4e, 0xb3, 0x3a, 0x89, 0x3d,
|
||||||
0x00, 0x77, 0x99, 0x3e, 0x89, 0xc2, 0x4f, 0xea, 0xcc, 0x83, 0x4b, 0xbf, 0xfa, 0x6a, 0x5d, 0xf9,
|
0xa7, 0x59, 0x9d, 0x06, 0x2c, 0x0f, 0x7d, 0xc2, 0x91, 0xa3, 0x4c, 0x9f, 0x44, 0x80, 0xbb, 0x4c,
|
||||||
0xa7, 0xaf, 0xd6, 0x67, 0x7e, 0xfa, 0xf5, 0xba, 0xf2, 0xab, 0xaf, 0xd7, 0x95, 0x7f, 0xfc, 0x7a,
|
0x9f, 0x44, 0xe1, 0x27, 0x75, 0xe6, 0xe1, 0xa5, 0x5f, 0x7e, 0xb5, 0xae, 0xfc, 0xd3, 0x57, 0xeb,
|
||||||
0x5d, 0xf9, 0xb7, 0xaf, 0xd7, 0x95, 0x3f, 0xfb, 0xf7, 0xf5, 0x99, 0x1f, 0x15, 0xa4, 0xf4, 0xe1,
|
0x33, 0x3f, 0xf9, 0x7a, 0x5d, 0xf9, 0xe5, 0xd7, 0xeb, 0xca, 0x3f, 0x7e, 0xbd, 0xae, 0xfc, 0xeb,
|
||||||
0x3c, 0xfb, 0x0f, 0x38, 0x1f, 0xfc, 0x5f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x15, 0x30, 0x49, 0xcc,
|
0xd7, 0xeb, 0xca, 0x9f, 0xfe, 0xdb, 0xfa, 0xcc, 0x0f, 0x0b, 0x52, 0xfa, 0x70, 0x9e, 0xfd, 0x4f,
|
||||||
0xc7, 0x48, 0x00, 0x00,
|
0x9d, 0x0f, 0xfe, 0x2f, 0x00, 0x00, 0xff, 0xff, 0x11, 0x3f, 0x6e, 0x39, 0x19, 0x49, 0x00, 0x00,
|
||||||
}
|
}
|
||||||
|
27
vendor/k8s.io/kubernetes/pkg/kubelet/apis/cri/runtime/v1alpha2/api.proto
generated
vendored
27
vendor/k8s.io/kubernetes/pkg/kubelet/apis/cri/runtime/v1alpha2/api.proto
generated
vendored
@ -1,3 +1,19 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2018 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.
|
||||||
|
*/
|
||||||
|
|
||||||
// To regenerate api.pb.go run hack/update-generated-runtime.sh
|
// To regenerate api.pb.go run hack/update-generated-runtime.sh
|
||||||
syntax = 'proto3';
|
syntax = 'proto3';
|
||||||
|
|
||||||
@ -297,7 +313,8 @@ message PodSandboxConfig {
|
|||||||
// operation. The runtime may also use this information to improve UX, such
|
// operation. The runtime may also use this information to improve UX, such
|
||||||
// as by constructing a readable name.
|
// as by constructing a readable name.
|
||||||
PodSandboxMetadata metadata = 1;
|
PodSandboxMetadata metadata = 1;
|
||||||
// Hostname of the sandbox.
|
// Hostname of the sandbox. Hostname could only be empty when the pod
|
||||||
|
// network namespace is NODE.
|
||||||
string hostname = 2;
|
string hostname = 2;
|
||||||
// Path to the directory on the host in which container log files are
|
// Path to the directory on the host in which container log files are
|
||||||
// stored.
|
// stored.
|
||||||
@ -349,7 +366,7 @@ message RunPodSandboxRequest {
|
|||||||
// If the runtime handler is unknown, this request should be rejected. An
|
// If the runtime handler is unknown, this request should be rejected. An
|
||||||
// empty string should select the default handler, equivalent to the
|
// empty string should select the default handler, equivalent to the
|
||||||
// behavior before this feature was added.
|
// behavior before this feature was added.
|
||||||
// See https://git.k8s.io/community/keps/sig-node/0014-runtime-class.md
|
// See https://git.k8s.io/enhancements/keps/sig-node/runtime-class.md
|
||||||
string runtime_handler = 2;
|
string runtime_handler = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -423,6 +440,8 @@ message PodSandboxStatus {
|
|||||||
// MUST be identical to that of the corresponding PodSandboxConfig used to
|
// MUST be identical to that of the corresponding PodSandboxConfig used to
|
||||||
// instantiate the pod sandbox this status represents.
|
// instantiate the pod sandbox this status represents.
|
||||||
map<string, string> annotations = 8;
|
map<string, string> annotations = 8;
|
||||||
|
// runtime configuration used for this PodSandbox.
|
||||||
|
string runtime_handler = 9;
|
||||||
}
|
}
|
||||||
|
|
||||||
message PodSandboxStatusResponse {
|
message PodSandboxStatusResponse {
|
||||||
@ -477,6 +496,8 @@ message PodSandbox {
|
|||||||
// MUST be identical to that of the corresponding PodSandboxConfig used to
|
// MUST be identical to that of the corresponding PodSandboxConfig used to
|
||||||
// instantiate this PodSandbox.
|
// instantiate this PodSandbox.
|
||||||
map<string, string> annotations = 6;
|
map<string, string> annotations = 6;
|
||||||
|
// runtime configuration used for this PodSandbox.
|
||||||
|
string runtime_handler = 7;
|
||||||
}
|
}
|
||||||
|
|
||||||
message ListPodSandboxResponse {
|
message ListPodSandboxResponse {
|
||||||
@ -1221,7 +1242,7 @@ message ContainerStats {
|
|||||||
CpuUsage cpu = 2;
|
CpuUsage cpu = 2;
|
||||||
// Memory usage gathered from the container.
|
// Memory usage gathered from the container.
|
||||||
MemoryUsage memory = 3;
|
MemoryUsage memory = 3;
|
||||||
// Usage of the writeable layer.
|
// Usage of the writable layer.
|
||||||
FilesystemUsage writable_layer = 4;
|
FilesystemUsage writable_layer = 4;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
2
vendor/k8s.io/kubernetes/pkg/kubelet/apis/cri/services.go
generated
vendored
2
vendor/k8s.io/kubernetes/pkg/kubelet/apis/cri/services.go
generated
vendored
@ -111,7 +111,7 @@ type ImageManagerService interface {
|
|||||||
// ImageStatus returns the status of the image.
|
// ImageStatus returns the status of the image.
|
||||||
ImageStatus(image *runtimeapi.ImageSpec) (*runtimeapi.Image, error)
|
ImageStatus(image *runtimeapi.ImageSpec) (*runtimeapi.Image, error)
|
||||||
// PullImage pulls an image with the authentication config.
|
// PullImage pulls an image with the authentication config.
|
||||||
PullImage(image *runtimeapi.ImageSpec, auth *runtimeapi.AuthConfig) (string, error)
|
PullImage(image *runtimeapi.ImageSpec, auth *runtimeapi.AuthConfig, podSandboxConfig *runtimeapi.PodSandboxConfig) (string, error)
|
||||||
// RemoveImage removes the image.
|
// RemoveImage removes the image.
|
||||||
RemoveImage(image *runtimeapi.ImageSpec) error
|
RemoveImage(image *runtimeapi.ImageSpec) error
|
||||||
// ImageFsInfo returns information of the filesystem that is used to store images.
|
// ImageFsInfo returns information of the filesystem that is used to store images.
|
||||||
|
7
vendor/k8s.io/kubernetes/pkg/kubelet/remote/remote_image.go
generated
vendored
7
vendor/k8s.io/kubernetes/pkg/kubelet/remote/remote_image.go
generated
vendored
@ -100,13 +100,14 @@ func (r *RemoteImageService) ImageStatus(image *runtimeapi.ImageSpec) (*runtimea
|
|||||||
}
|
}
|
||||||
|
|
||||||
// PullImage pulls an image with authentication config.
|
// PullImage pulls an image with authentication config.
|
||||||
func (r *RemoteImageService) PullImage(image *runtimeapi.ImageSpec, auth *runtimeapi.AuthConfig) (string, error) {
|
func (r *RemoteImageService) PullImage(image *runtimeapi.ImageSpec, auth *runtimeapi.AuthConfig, podSandboxConfig *runtimeapi.PodSandboxConfig) (string, error) {
|
||||||
ctx, cancel := getContextWithCancel()
|
ctx, cancel := getContextWithCancel()
|
||||||
defer cancel()
|
defer cancel()
|
||||||
|
|
||||||
resp, err := r.imageClient.PullImage(ctx, &runtimeapi.PullImageRequest{
|
resp, err := r.imageClient.PullImage(ctx, &runtimeapi.PullImageRequest{
|
||||||
Image: image,
|
Image: image,
|
||||||
Auth: auth,
|
Auth: auth,
|
||||||
|
SandboxConfig: podSandboxConfig,
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
klog.Errorf("PullImage %q from image service failed: %v", image.Image, err)
|
klog.Errorf("PullImage %q from image service failed: %v", image.Image, err)
|
||||||
|
58
vendor/k8s.io/kubernetes/pkg/kubelet/remote/remote_runtime.go
generated
vendored
58
vendor/k8s.io/kubernetes/pkg/kubelet/remote/remote_runtime.go
generated
vendored
@ -21,6 +21,7 @@ import (
|
|||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"strings"
|
"strings"
|
||||||
|
"sync"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"google.golang.org/grpc"
|
"google.golang.org/grpc"
|
||||||
@ -36,8 +37,18 @@ import (
|
|||||||
type RemoteRuntimeService struct {
|
type RemoteRuntimeService struct {
|
||||||
timeout time.Duration
|
timeout time.Duration
|
||||||
runtimeClient runtimeapi.RuntimeServiceClient
|
runtimeClient runtimeapi.RuntimeServiceClient
|
||||||
|
// Cache last per-container error message to reduce log spam
|
||||||
|
lastError map[string]string
|
||||||
|
// Time last per-container error message was printed
|
||||||
|
errorPrinted map[string]time.Time
|
||||||
|
errorMapLock sync.Mutex
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const (
|
||||||
|
// How frequently to report identical errors
|
||||||
|
identicalErrorDelay = 1 * time.Minute
|
||||||
|
)
|
||||||
|
|
||||||
// NewRemoteRuntimeService creates a new internalapi.RuntimeService.
|
// NewRemoteRuntimeService creates a new internalapi.RuntimeService.
|
||||||
func NewRemoteRuntimeService(endpoint string, connectionTimeout time.Duration) (internalapi.RuntimeService, error) {
|
func NewRemoteRuntimeService(endpoint string, connectionTimeout time.Duration) (internalapi.RuntimeService, error) {
|
||||||
klog.V(3).Infof("Connecting to runtime service %s", endpoint)
|
klog.V(3).Infof("Connecting to runtime service %s", endpoint)
|
||||||
@ -57,6 +68,8 @@ func NewRemoteRuntimeService(endpoint string, connectionTimeout time.Duration) (
|
|||||||
return &RemoteRuntimeService{
|
return &RemoteRuntimeService{
|
||||||
timeout: connectionTimeout,
|
timeout: connectionTimeout,
|
||||||
runtimeClient: runtimeapi.NewRuntimeServiceClient(conn),
|
runtimeClient: runtimeapi.NewRuntimeServiceClient(conn),
|
||||||
|
lastError: make(map[string]string),
|
||||||
|
errorPrinted: make(map[string]time.Time),
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -225,6 +238,10 @@ func (r *RemoteRuntimeService) StopContainer(containerID string, timeout int64)
|
|||||||
ctx, cancel := getContextWithTimeout(t)
|
ctx, cancel := getContextWithTimeout(t)
|
||||||
defer cancel()
|
defer cancel()
|
||||||
|
|
||||||
|
r.errorMapLock.Lock()
|
||||||
|
delete(r.lastError, containerID)
|
||||||
|
delete(r.errorPrinted, containerID)
|
||||||
|
r.errorMapLock.Unlock()
|
||||||
_, err := r.runtimeClient.StopContainer(ctx, &runtimeapi.StopContainerRequest{
|
_, err := r.runtimeClient.StopContainer(ctx, &runtimeapi.StopContainerRequest{
|
||||||
ContainerId: containerID,
|
ContainerId: containerID,
|
||||||
Timeout: timeout,
|
Timeout: timeout,
|
||||||
@ -243,6 +260,10 @@ func (r *RemoteRuntimeService) RemoveContainer(containerID string) error {
|
|||||||
ctx, cancel := getContextWithTimeout(r.timeout)
|
ctx, cancel := getContextWithTimeout(r.timeout)
|
||||||
defer cancel()
|
defer cancel()
|
||||||
|
|
||||||
|
r.errorMapLock.Lock()
|
||||||
|
delete(r.lastError, containerID)
|
||||||
|
delete(r.errorPrinted, containerID)
|
||||||
|
r.errorMapLock.Unlock()
|
||||||
_, err := r.runtimeClient.RemoveContainer(ctx, &runtimeapi.RemoveContainerRequest{
|
_, err := r.runtimeClient.RemoveContainer(ctx, &runtimeapi.RemoveContainerRequest{
|
||||||
ContainerId: containerID,
|
ContainerId: containerID,
|
||||||
})
|
})
|
||||||
@ -270,6 +291,18 @@ func (r *RemoteRuntimeService) ListContainers(filter *runtimeapi.ContainerFilter
|
|||||||
return resp.Containers, nil
|
return resp.Containers, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Clean up any expired last-error timers
|
||||||
|
func (r *RemoteRuntimeService) cleanupErrorTimeouts() {
|
||||||
|
r.errorMapLock.Lock()
|
||||||
|
defer r.errorMapLock.Unlock()
|
||||||
|
for ID, timeout := range r.errorPrinted {
|
||||||
|
if time.Now().Sub(timeout) >= identicalErrorDelay {
|
||||||
|
delete(r.lastError, ID)
|
||||||
|
delete(r.errorPrinted, ID)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// ContainerStatus returns the container status.
|
// ContainerStatus returns the container status.
|
||||||
func (r *RemoteRuntimeService) ContainerStatus(containerID string) (*runtimeapi.ContainerStatus, error) {
|
func (r *RemoteRuntimeService) ContainerStatus(containerID string) (*runtimeapi.ContainerStatus, error) {
|
||||||
ctx, cancel := getContextWithTimeout(r.timeout)
|
ctx, cancel := getContextWithTimeout(r.timeout)
|
||||||
@ -278,10 +311,21 @@ func (r *RemoteRuntimeService) ContainerStatus(containerID string) (*runtimeapi.
|
|||||||
resp, err := r.runtimeClient.ContainerStatus(ctx, &runtimeapi.ContainerStatusRequest{
|
resp, err := r.runtimeClient.ContainerStatus(ctx, &runtimeapi.ContainerStatusRequest{
|
||||||
ContainerId: containerID,
|
ContainerId: containerID,
|
||||||
})
|
})
|
||||||
|
r.cleanupErrorTimeouts()
|
||||||
|
r.errorMapLock.Lock()
|
||||||
|
defer r.errorMapLock.Unlock()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
klog.Errorf("ContainerStatus %q from runtime service failed: %v", containerID, err)
|
// Don't spam the log with endless messages about the same failure.
|
||||||
|
lastMsg, ok := r.lastError[containerID]
|
||||||
|
if !ok || err.Error() != lastMsg || time.Now().Sub(r.errorPrinted[containerID]) >= identicalErrorDelay {
|
||||||
|
klog.Errorf("ContainerStatus %q from runtime service failed: %v", containerID, err)
|
||||||
|
r.errorPrinted[containerID] = time.Now()
|
||||||
|
r.lastError[containerID] = err.Error()
|
||||||
|
}
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
delete(r.lastError, containerID)
|
||||||
|
delete(r.errorPrinted, containerID)
|
||||||
|
|
||||||
if resp.Status != nil {
|
if resp.Status != nil {
|
||||||
if err := verifyContainerStatus(resp.Status); err != nil {
|
if err := verifyContainerStatus(resp.Status); err != nil {
|
||||||
@ -456,10 +500,20 @@ func (r *RemoteRuntimeService) ContainerStats(containerID string) (*runtimeapi.C
|
|||||||
resp, err := r.runtimeClient.ContainerStats(ctx, &runtimeapi.ContainerStatsRequest{
|
resp, err := r.runtimeClient.ContainerStats(ctx, &runtimeapi.ContainerStatsRequest{
|
||||||
ContainerId: containerID,
|
ContainerId: containerID,
|
||||||
})
|
})
|
||||||
|
r.cleanupErrorTimeouts()
|
||||||
|
r.errorMapLock.Lock()
|
||||||
|
defer r.errorMapLock.Unlock()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
klog.Errorf("ContainerStatus %q from runtime service failed: %v", containerID, err)
|
lastMsg, ok := r.lastError[containerID]
|
||||||
|
if !ok || err.Error() != lastMsg || time.Now().Sub(r.errorPrinted[containerID]) >= identicalErrorDelay {
|
||||||
|
klog.Errorf("ContainerStatus %q from runtime service failed: %v", containerID, err)
|
||||||
|
r.errorPrinted[containerID] = time.Now()
|
||||||
|
r.lastError[containerID] = err.Error()
|
||||||
|
}
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
delete(r.lastError, containerID)
|
||||||
|
delete(r.errorPrinted, containerID)
|
||||||
|
|
||||||
return resp.GetStats(), nil
|
return resp.GetStats(), nil
|
||||||
}
|
}
|
||||||
|
2
vendor/k8s.io/kubernetes/pkg/kubelet/server/remotecommand/doc.go
generated
vendored
2
vendor/k8s.io/kubernetes/pkg/kubelet/server/remotecommand/doc.go
generated
vendored
@ -14,5 +14,5 @@ See the License for the specific language governing permissions and
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// package remotecommand contains functions related to executing commands in and attaching to pods.
|
// Package remotecommand contains functions related to executing commands in and attaching to pods.
|
||||||
package remotecommand // import "k8s.io/kubernetes/pkg/kubelet/server/remotecommand"
|
package remotecommand // import "k8s.io/kubernetes/pkg/kubelet/server/remotecommand"
|
||||||
|
4
vendor/k8s.io/kubernetes/pkg/kubelet/server/remotecommand/httpstream.go
generated
vendored
4
vendor/k8s.io/kubernetes/pkg/kubelet/server/remotecommand/httpstream.go
generated
vendored
@ -108,7 +108,7 @@ func createStreams(req *http.Request, w http.ResponseWriter, opts *Options, supp
|
|||||||
if wsstream.IsWebSocketRequest(req) {
|
if wsstream.IsWebSocketRequest(req) {
|
||||||
ctx, ok = createWebSocketStreams(req, w, opts, idleTimeout)
|
ctx, ok = createWebSocketStreams(req, w, opts, idleTimeout)
|
||||||
} else {
|
} else {
|
||||||
ctx, ok = createHttpStreamStreams(req, w, opts, supportedStreamProtocols, idleTimeout, streamCreationTimeout)
|
ctx, ok = createHTTPStreamStreams(req, w, opts, supportedStreamProtocols, idleTimeout, streamCreationTimeout)
|
||||||
}
|
}
|
||||||
if !ok {
|
if !ok {
|
||||||
return nil, false
|
return nil, false
|
||||||
@ -122,7 +122,7 @@ func createStreams(req *http.Request, w http.ResponseWriter, opts *Options, supp
|
|||||||
return ctx, true
|
return ctx, true
|
||||||
}
|
}
|
||||||
|
|
||||||
func createHttpStreamStreams(req *http.Request, w http.ResponseWriter, opts *Options, supportedStreamProtocols []string, idleTimeout, streamCreationTimeout time.Duration) (*context, bool) {
|
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)
|
protocol, err := httpstream.Handshake(req, w, supportedStreamProtocols)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
http.Error(w, err.Error(), http.StatusBadRequest)
|
http.Error(w, err.Error(), http.StatusBadRequest)
|
||||||
|
44
vendor/k8s.io/kubernetes/pkg/kubelet/util/boottime_util_darwin.go
generated
vendored
Normal file
44
vendor/k8s.io/kubernetes/pkg/kubelet/util/boottime_util_darwin.go
generated
vendored
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
// +build darwin
|
||||||
|
|
||||||
|
/*
|
||||||
|
Copyright 2018 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 util
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"syscall"
|
||||||
|
"time"
|
||||||
|
"unsafe"
|
||||||
|
|
||||||
|
"golang.org/x/sys/unix"
|
||||||
|
)
|
||||||
|
|
||||||
|
// GetBootTime returns the time at which the machine was started, truncated to the nearest second
|
||||||
|
func GetBootTime() (time.Time, error) {
|
||||||
|
output, err := unix.SysctlRaw("kern.boottime")
|
||||||
|
if err != nil {
|
||||||
|
return time.Time{}, err
|
||||||
|
}
|
||||||
|
var timeval syscall.Timeval
|
||||||
|
if len(output) != int(unsafe.Sizeof(timeval)) {
|
||||||
|
return time.Time{}, fmt.Errorf("unexpected output when calling syscall kern.bootime. Expected len(output) to be %v, but got %v",
|
||||||
|
int(unsafe.Sizeof(timeval)), len(output))
|
||||||
|
}
|
||||||
|
timeval = *(*syscall.Timeval)(unsafe.Pointer(&output[0]))
|
||||||
|
sec, nsec := timeval.Unix()
|
||||||
|
return time.Unix(sec, nsec).Truncate(time.Second), nil
|
||||||
|
}
|
36
vendor/k8s.io/kubernetes/pkg/kubelet/util/boottime_util_linux.go
generated
vendored
Normal file
36
vendor/k8s.io/kubernetes/pkg/kubelet/util/boottime_util_linux.go
generated
vendored
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
// +build freebsd linux
|
||||||
|
|
||||||
|
/*
|
||||||
|
Copyright 2018 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 util
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"golang.org/x/sys/unix"
|
||||||
|
)
|
||||||
|
|
||||||
|
// GetBootTime returns the time at which the machine was started, truncated to the nearest second
|
||||||
|
func GetBootTime() (time.Time, error) {
|
||||||
|
currentTime := time.Now()
|
||||||
|
var info unix.Sysinfo_t
|
||||||
|
if err := unix.Sysinfo(&info); err != nil {
|
||||||
|
return time.Time{}, fmt.Errorf("error getting system uptime: %s", err)
|
||||||
|
}
|
||||||
|
return currentTime.Add(-time.Duration(info.Uptime) * time.Second).Truncate(time.Second), nil
|
||||||
|
}
|
5
vendor/k8s.io/kubernetes/pkg/kubelet/util/util_unsupported.go
generated
vendored
5
vendor/k8s.io/kubernetes/pkg/kubelet/util/util_unsupported.go
generated
vendored
@ -45,3 +45,8 @@ func UnlockPath(fileHandles []uintptr) {
|
|||||||
func LocalEndpoint(path, file string) string {
|
func LocalEndpoint(path, file string) string {
|
||||||
return ""
|
return ""
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetBootTime empty implementation
|
||||||
|
func GetBootTime() (time.Time, error) {
|
||||||
|
return time.Time{}, fmt.Errorf("GetBootTime is unsupported in this build")
|
||||||
|
}
|
||||||
|
13
vendor/k8s.io/kubernetes/pkg/kubelet/util/util_windows.go
generated
vendored
13
vendor/k8s.io/kubernetes/pkg/kubelet/util/util_windows.go
generated
vendored
@ -23,6 +23,7 @@ import (
|
|||||||
"net"
|
"net"
|
||||||
"net/url"
|
"net/url"
|
||||||
"strings"
|
"strings"
|
||||||
|
"syscall"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/Microsoft/go-winio"
|
"github.com/Microsoft/go-winio"
|
||||||
@ -112,3 +113,15 @@ func LocalEndpoint(path, file string) string {
|
|||||||
}
|
}
|
||||||
return u.String() + "//./pipe/" + file
|
return u.String() + "//./pipe/" + file
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var tickCount = syscall.NewLazyDLL("kernel32.dll").NewProc("GetTickCount64")
|
||||||
|
|
||||||
|
// GetBootTime returns the time at which the machine was started, truncated to the nearest second
|
||||||
|
func GetBootTime() (time.Time, error) {
|
||||||
|
currentTime := time.Now()
|
||||||
|
output, _, err := tickCount.Call()
|
||||||
|
if errno, ok := err.(syscall.Errno); !ok || errno != 0 {
|
||||||
|
return time.Time{}, err
|
||||||
|
}
|
||||||
|
return currentTime.Add(-time.Duration(output) * time.Millisecond).Truncate(time.Second), nil
|
||||||
|
}
|
||||||
|
@ -16,6 +16,7 @@ limitations under the License.
|
|||||||
|
|
||||||
package integer
|
package integer
|
||||||
|
|
||||||
|
// IntMax returns the maximum of the params
|
||||||
func IntMax(a, b int) int {
|
func IntMax(a, b int) int {
|
||||||
if b > a {
|
if b > a {
|
||||||
return b
|
return b
|
||||||
@ -23,6 +24,7 @@ func IntMax(a, b int) int {
|
|||||||
return a
|
return a
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// IntMin returns the minimum of the params
|
||||||
func IntMin(a, b int) int {
|
func IntMin(a, b int) int {
|
||||||
if b < a {
|
if b < a {
|
||||||
return b
|
return b
|
||||||
@ -30,6 +32,7 @@ func IntMin(a, b int) int {
|
|||||||
return a
|
return a
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Int32Max returns the maximum of the params
|
||||||
func Int32Max(a, b int32) int32 {
|
func Int32Max(a, b int32) int32 {
|
||||||
if b > a {
|
if b > a {
|
||||||
return b
|
return b
|
||||||
@ -37,6 +40,7 @@ func Int32Max(a, b int32) int32 {
|
|||||||
return a
|
return a
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Int32Min returns the minimum of the params
|
||||||
func Int32Min(a, b int32) int32 {
|
func Int32Min(a, b int32) int32 {
|
||||||
if b < a {
|
if b < a {
|
||||||
return b
|
return b
|
||||||
@ -44,6 +48,7 @@ func Int32Min(a, b int32) int32 {
|
|||||||
return a
|
return a
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Int64Max returns the maximum of the params
|
||||||
func Int64Max(a, b int64) int64 {
|
func Int64Max(a, b int64) int64 {
|
||||||
if b > a {
|
if b > a {
|
||||||
return b
|
return b
|
||||||
@ -51,6 +56,7 @@ func Int64Max(a, b int64) int64 {
|
|||||||
return a
|
return a
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Int64Min returns the minimum of the params
|
||||||
func Int64Min(a, b int64) int64 {
|
func Int64Min(a, b int64) int64 {
|
||||||
if b < a {
|
if b < a {
|
||||||
return b
|
return b
|
Loading…
Reference in New Issue
Block a user