mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-31 15:25:57 +00:00
run copy.sh
This commit is contained in:
parent
d3bba2cf8d
commit
ee0922253f
@ -20,6 +20,7 @@ import (
|
|||||||
"sync"
|
"sync"
|
||||||
|
|
||||||
"k8s.io/client-go/1.5/pkg/api"
|
"k8s.io/client-go/1.5/pkg/api"
|
||||||
|
"k8s.io/client-go/1.5/pkg/api/meta"
|
||||||
"k8s.io/client-go/1.5/pkg/api/unversioned"
|
"k8s.io/client-go/1.5/pkg/api/unversioned"
|
||||||
"k8s.io/client-go/1.5/pkg/runtime"
|
"k8s.io/client-go/1.5/pkg/runtime"
|
||||||
"k8s.io/client-go/1.5/pkg/runtime/serializer"
|
"k8s.io/client-go/1.5/pkg/runtime/serializer"
|
||||||
@ -28,46 +29,72 @@ import (
|
|||||||
|
|
||||||
// ClientPool manages a pool of dynamic clients.
|
// ClientPool manages a pool of dynamic clients.
|
||||||
type ClientPool interface {
|
type ClientPool interface {
|
||||||
// ClientForGroupVersion returns a client configured for the specified groupVersion.
|
// ClientForGroupVersionKind returns a client configured for the specified groupVersionResource.
|
||||||
ClientForGroupVersion(groupVersion unversioned.GroupVersion) (*Client, error)
|
// Resource may be empty.
|
||||||
|
ClientForGroupVersionResource(resource unversioned.GroupVersionResource) (*Client, error)
|
||||||
|
// ClientForGroupVersionKind returns a client configured for the specified groupVersionKind.
|
||||||
|
// Kind may be empty.
|
||||||
|
ClientForGroupVersionKind(kind unversioned.GroupVersionKind) (*Client, error)
|
||||||
}
|
}
|
||||||
|
|
||||||
// APIPathResolverFunc knows how to convert a groupVersion to its API path.
|
// APIPathResolverFunc knows how to convert a groupVersion to its API path. The Kind field is
|
||||||
type APIPathResolverFunc func(groupVersion unversioned.GroupVersion) string
|
// optional.
|
||||||
|
type APIPathResolverFunc func(kind unversioned.GroupVersionKind) string
|
||||||
|
|
||||||
// LegacyAPIPathResolverFunc can resolve paths properly with the legacy API.
|
// LegacyAPIPathResolverFunc can resolve paths properly with the legacy API.
|
||||||
func LegacyAPIPathResolverFunc(groupVersion unversioned.GroupVersion) string {
|
func LegacyAPIPathResolverFunc(kind unversioned.GroupVersionKind) string {
|
||||||
if len(groupVersion.Group) == 0 {
|
if len(kind.Group) == 0 {
|
||||||
return "/api"
|
return "/api"
|
||||||
}
|
}
|
||||||
return "/apis"
|
return "/apis"
|
||||||
}
|
}
|
||||||
|
|
||||||
// clientPoolImpl implements Factory
|
// clientPoolImpl implements ClientPool and caches clients for the resource group versions
|
||||||
|
// is asked to retrieve. This type is thread safe.
|
||||||
type clientPoolImpl struct {
|
type clientPoolImpl struct {
|
||||||
lock sync.RWMutex
|
lock sync.RWMutex
|
||||||
config *rest.Config
|
config *rest.Config
|
||||||
clients map[unversioned.GroupVersion]*Client
|
clients map[unversioned.GroupVersion]*Client
|
||||||
apiPathResolverFunc APIPathResolverFunc
|
apiPathResolverFunc APIPathResolverFunc
|
||||||
|
mapper meta.RESTMapper
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewClientPool returns a ClientPool from the specified config
|
// NewClientPool returns a ClientPool from the specified config. It reuses clients for the the same
|
||||||
func NewClientPool(config *rest.Config, apiPathResolverFunc APIPathResolverFunc) ClientPool {
|
// group version. It is expected this type may be wrapped by specific logic that special cases certain
|
||||||
|
// resources or groups.
|
||||||
|
func NewClientPool(config *rest.Config, mapper meta.RESTMapper, apiPathResolverFunc APIPathResolverFunc) ClientPool {
|
||||||
confCopy := *config
|
confCopy := *config
|
||||||
return &clientPoolImpl{
|
return &clientPoolImpl{
|
||||||
config: &confCopy,
|
config: &confCopy,
|
||||||
clients: map[unversioned.GroupVersion]*Client{},
|
clients: map[unversioned.GroupVersion]*Client{},
|
||||||
apiPathResolverFunc: apiPathResolverFunc,
|
apiPathResolverFunc: apiPathResolverFunc,
|
||||||
|
mapper: mapper,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// ClientForGroupVersion returns a client for the specified groupVersion, creates one if none exists
|
// ClientForGroupVersionResource uses the provided RESTMapper to identify the appropriate resource. Resource may
|
||||||
func (c *clientPoolImpl) ClientForGroupVersion(groupVersion unversioned.GroupVersion) (*Client, error) {
|
// be empty. If no matching kind is found the underlying client for that group is still returned.
|
||||||
|
func (c *clientPoolImpl) ClientForGroupVersionResource(resource unversioned.GroupVersionResource) (*Client, error) {
|
||||||
|
kinds, err := c.mapper.KindsFor(resource)
|
||||||
|
if err != nil {
|
||||||
|
if meta.IsNoMatchError(err) {
|
||||||
|
return c.ClientForGroupVersionKind(unversioned.GroupVersionKind{Group: resource.Group, Version: resource.Version})
|
||||||
|
}
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return c.ClientForGroupVersionKind(kinds[0])
|
||||||
|
}
|
||||||
|
|
||||||
|
// ClientForGroupVersion returns a client for the specified groupVersion, creates one if none exists. Kind
|
||||||
|
// in the GroupVersionKind may be empty.
|
||||||
|
func (c *clientPoolImpl) ClientForGroupVersionKind(kind unversioned.GroupVersionKind) (*Client, error) {
|
||||||
c.lock.Lock()
|
c.lock.Lock()
|
||||||
defer c.lock.Unlock()
|
defer c.lock.Unlock()
|
||||||
|
|
||||||
|
gv := kind.GroupVersion()
|
||||||
|
|
||||||
// do we have a client already configured?
|
// do we have a client already configured?
|
||||||
if existingClient, found := c.clients[groupVersion]; found {
|
if existingClient, found := c.clients[gv]; found {
|
||||||
return existingClient, nil
|
return existingClient, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -76,10 +103,10 @@ func (c *clientPoolImpl) ClientForGroupVersion(groupVersion unversioned.GroupVer
|
|||||||
conf := &confCopy
|
conf := &confCopy
|
||||||
|
|
||||||
// we need to set the api path based on group version, if no group, default to legacy path
|
// we need to set the api path based on group version, if no group, default to legacy path
|
||||||
conf.APIPath = c.apiPathResolverFunc(groupVersion)
|
conf.APIPath = c.apiPathResolverFunc(kind)
|
||||||
|
|
||||||
// we need to make a client
|
// we need to make a client
|
||||||
conf.GroupVersion = &groupVersion
|
conf.GroupVersion = &gv
|
||||||
|
|
||||||
if conf.NegotiatedSerializer == nil {
|
if conf.NegotiatedSerializer == nil {
|
||||||
streamingInfo, _ := api.Codecs.StreamingSerializerForMediaType("application/json;stream=watch", nil)
|
streamingInfo, _ := api.Codecs.StreamingSerializerForMediaType("application/json;stream=watch", nil)
|
||||||
@ -90,6 +117,6 @@ func (c *clientPoolImpl) ClientForGroupVersion(groupVersion unversioned.GroupVer
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
c.clients[groupVersion] = dynamicClient
|
c.clients[gv] = dynamicClient
|
||||||
return dynamicClient, nil
|
return dynamicClient, nil
|
||||||
}
|
}
|
||||||
|
@ -160,8 +160,7 @@ type RESTMapping struct {
|
|||||||
// to API groups. In other words, kinds and resources should not be assumed to be
|
// to API groups. In other words, kinds and resources should not be assumed to be
|
||||||
// unique across groups.
|
// unique across groups.
|
||||||
//
|
//
|
||||||
// TODO(caesarxuchao): Add proper multi-group support so that kinds & resources are
|
// TODO: split into sub-interfaces
|
||||||
// scoped to groups. See http://issues.k8s.io/12413 and http://issues.k8s.io/10009.
|
|
||||||
type RESTMapper interface {
|
type RESTMapper interface {
|
||||||
// KindFor takes a partial resource and returns the single match. Returns an error if there are multiple matches
|
// KindFor takes a partial resource and returns the single match. Returns an error if there are multiple matches
|
||||||
KindFor(resource unversioned.GroupVersionResource) (unversioned.GroupVersionKind, error)
|
KindFor(resource unversioned.GroupVersionResource) (unversioned.GroupVersionKind, error)
|
||||||
|
@ -2568,7 +2568,7 @@ type SerializedReference struct {
|
|||||||
type EventSource struct {
|
type EventSource struct {
|
||||||
// Component from which the event is generated.
|
// Component from which the event is generated.
|
||||||
Component string `json:"component,omitempty"`
|
Component string `json:"component,omitempty"`
|
||||||
// Host name on which the event is generated.
|
// Node name on which the event is generated.
|
||||||
Host string `json:"host,omitempty"`
|
Host string `json:"host,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -769,7 +769,7 @@ message EventSource {
|
|||||||
// Component from which the event is generated.
|
// Component from which the event is generated.
|
||||||
optional string component = 1;
|
optional string component = 1;
|
||||||
|
|
||||||
// Host name on which the event is generated.
|
// Node name on which the event is generated.
|
||||||
optional string host = 2;
|
optional string host = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3017,7 +3017,7 @@ type SerializedReference struct {
|
|||||||
type EventSource struct {
|
type EventSource struct {
|
||||||
// Component from which the event is generated.
|
// Component from which the event is generated.
|
||||||
Component string `json:"component,omitempty" protobuf:"bytes,1,opt,name=component"`
|
Component string `json:"component,omitempty" protobuf:"bytes,1,opt,name=component"`
|
||||||
// Host name on which the event is generated.
|
// Node name on which the event is generated.
|
||||||
Host string `json:"host,omitempty" protobuf:"bytes,2,opt,name=host"`
|
Host string `json:"host,omitempty" protobuf:"bytes,2,opt,name=host"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -477,7 +477,7 @@ func (EventList) SwaggerDoc() map[string]string {
|
|||||||
var map_EventSource = map[string]string{
|
var map_EventSource = map[string]string{
|
||||||
"": "EventSource contains information for an event.",
|
"": "EventSource contains information for an event.",
|
||||||
"component": "Component from which the event is generated.",
|
"component": "Component from which the event is generated.",
|
||||||
"host": "Host name on which the event is generated.",
|
"host": "Node name on which the event is generated.",
|
||||||
}
|
}
|
||||||
|
|
||||||
func (EventSource) SwaggerDoc() map[string]string {
|
func (EventSource) SwaggerDoc() map[string]string {
|
||||||
|
@ -4926,6 +4926,9 @@ func autoConvert_v1_PodSecurityContext_To_api_PodSecurityContext(in *PodSecurity
|
|||||||
}
|
}
|
||||||
|
|
||||||
func autoConvert_api_PodSecurityContext_To_v1_PodSecurityContext(in *api.PodSecurityContext, out *PodSecurityContext, s conversion.Scope) error {
|
func autoConvert_api_PodSecurityContext_To_v1_PodSecurityContext(in *api.PodSecurityContext, out *PodSecurityContext, s conversion.Scope) error {
|
||||||
|
// INFO: in.HostNetwork opted out of conversion generation
|
||||||
|
// INFO: in.HostPID opted out of conversion generation
|
||||||
|
// INFO: in.HostIPC opted out of conversion generation
|
||||||
if in.SELinuxOptions != nil {
|
if in.SELinuxOptions != nil {
|
||||||
in, out := &in.SELinuxOptions, &out.SELinuxOptions
|
in, out := &in.SELinuxOptions, &out.SELinuxOptions
|
||||||
*out = new(SELinuxOptions)
|
*out = new(SELinuxOptions)
|
||||||
@ -5017,7 +5020,11 @@ func autoConvert_v1_PodSpec_To_api_PodSpec(in *PodSpec, out *api.PodSpec, s conv
|
|||||||
out.DNSPolicy = api.DNSPolicy(in.DNSPolicy)
|
out.DNSPolicy = api.DNSPolicy(in.DNSPolicy)
|
||||||
out.NodeSelector = in.NodeSelector
|
out.NodeSelector = in.NodeSelector
|
||||||
out.ServiceAccountName = in.ServiceAccountName
|
out.ServiceAccountName = in.ServiceAccountName
|
||||||
|
// INFO: in.DeprecatedServiceAccount opted out of conversion generation
|
||||||
out.NodeName = in.NodeName
|
out.NodeName = in.NodeName
|
||||||
|
// INFO: in.HostNetwork opted out of conversion generation
|
||||||
|
// INFO: in.HostPID opted out of conversion generation
|
||||||
|
// INFO: in.HostIPC opted out of conversion generation
|
||||||
if in.SecurityContext != nil {
|
if in.SecurityContext != nil {
|
||||||
in, out := &in.SecurityContext, &out.SecurityContext
|
in, out := &in.SecurityContext, &out.SecurityContext
|
||||||
*out = new(api.PodSecurityContext)
|
*out = new(api.PodSecurityContext)
|
||||||
@ -5995,6 +6002,7 @@ func autoConvert_v1_Secret_To_api_Secret(in *Secret, out *api.Secret, s conversi
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
out.Data = in.Data
|
out.Data = in.Data
|
||||||
|
// INFO: in.StringData opted out of conversion generation
|
||||||
out.Type = api.SecretType(in.Type)
|
out.Type = api.SecretType(in.Type)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
@ -6503,6 +6511,7 @@ func autoConvert_v1_ServiceSpec_To_api_ServiceSpec(in *ServiceSpec, out *api.Ser
|
|||||||
out.ClusterIP = in.ClusterIP
|
out.ClusterIP = in.ClusterIP
|
||||||
out.Type = api.ServiceType(in.Type)
|
out.Type = api.ServiceType(in.Type)
|
||||||
out.ExternalIPs = in.ExternalIPs
|
out.ExternalIPs = in.ExternalIPs
|
||||||
|
// INFO: in.DeprecatedPublicIPs opted out of conversion generation
|
||||||
out.SessionAffinity = api.ServiceAffinity(in.SessionAffinity)
|
out.SessionAffinity = api.ServiceAffinity(in.SessionAffinity)
|
||||||
out.LoadBalancerIP = in.LoadBalancerIP
|
out.LoadBalancerIP = in.LoadBalancerIP
|
||||||
out.LoadBalancerSourceRanges = in.LoadBalancerSourceRanges
|
out.LoadBalancerSourceRanges = in.LoadBalancerSourceRanges
|
||||||
|
@ -22,6 +22,7 @@ package v1alpha1
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
api "k8s.io/client-go/1.5/pkg/api"
|
api "k8s.io/client-go/1.5/pkg/api"
|
||||||
|
v1 "k8s.io/client-go/1.5/pkg/api/v1"
|
||||||
apps "k8s.io/client-go/1.5/pkg/apis/apps"
|
apps "k8s.io/client-go/1.5/pkg/apis/apps"
|
||||||
conversion "k8s.io/client-go/1.5/pkg/conversion"
|
conversion "k8s.io/client-go/1.5/pkg/conversion"
|
||||||
runtime "k8s.io/client-go/1.5/pkg/runtime"
|
runtime "k8s.io/client-go/1.5/pkg/runtime"
|
||||||
@ -139,6 +140,50 @@ func Convert_apps_PetSetList_To_v1alpha1_PetSetList(in *apps.PetSetList, out *Pe
|
|||||||
return autoConvert_apps_PetSetList_To_v1alpha1_PetSetList(in, out, s)
|
return autoConvert_apps_PetSetList_To_v1alpha1_PetSetList(in, out, s)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func autoConvert_v1alpha1_PetSetSpec_To_apps_PetSetSpec(in *PetSetSpec, out *apps.PetSetSpec, s conversion.Scope) error {
|
||||||
|
// WARNING: in.Replicas requires manual conversion: inconvertible types (*int32 vs int)
|
||||||
|
out.Selector = in.Selector
|
||||||
|
if err := v1.Convert_v1_PodTemplateSpec_To_api_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if in.VolumeClaimTemplates != nil {
|
||||||
|
in, out := &in.VolumeClaimTemplates, &out.VolumeClaimTemplates
|
||||||
|
*out = make([]api.PersistentVolumeClaim, len(*in))
|
||||||
|
for i := range *in {
|
||||||
|
// TODO: Inefficient conversion - can we improve it?
|
||||||
|
if err := s.Convert(&(*in)[i], &(*out)[i], 0); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
out.VolumeClaimTemplates = nil
|
||||||
|
}
|
||||||
|
out.ServiceName = in.ServiceName
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func autoConvert_apps_PetSetSpec_To_v1alpha1_PetSetSpec(in *apps.PetSetSpec, out *PetSetSpec, s conversion.Scope) error {
|
||||||
|
// WARNING: in.Replicas requires manual conversion: inconvertible types (int vs *int32)
|
||||||
|
out.Selector = in.Selector
|
||||||
|
if err := v1.Convert_api_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if in.VolumeClaimTemplates != nil {
|
||||||
|
in, out := &in.VolumeClaimTemplates, &out.VolumeClaimTemplates
|
||||||
|
*out = make([]v1.PersistentVolumeClaim, len(*in))
|
||||||
|
for i := range *in {
|
||||||
|
// TODO: Inefficient conversion - can we improve it?
|
||||||
|
if err := s.Convert(&(*in)[i], &(*out)[i], 0); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
out.VolumeClaimTemplates = nil
|
||||||
|
}
|
||||||
|
out.ServiceName = in.ServiceName
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func autoConvert_v1alpha1_PetSetStatus_To_apps_PetSetStatus(in *PetSetStatus, out *apps.PetSetStatus, s conversion.Scope) error {
|
func autoConvert_v1alpha1_PetSetStatus_To_apps_PetSetStatus(in *PetSetStatus, out *apps.PetSetStatus, s conversion.Scope) error {
|
||||||
out.ObservedGeneration = in.ObservedGeneration
|
out.ObservedGeneration = in.ObservedGeneration
|
||||||
out.Replicas = int(in.Replicas)
|
out.Replicas = int(in.Replicas)
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -66,12 +66,14 @@ type KubeProxyConfiguration struct {
|
|||||||
// Must be greater than 0. Only applicable for proxyMode=userspace.
|
// Must be greater than 0. Only applicable for proxyMode=userspace.
|
||||||
UDPIdleTimeout unversioned.Duration `json:"udpTimeoutMilliseconds"`
|
UDPIdleTimeout unversioned.Duration `json:"udpTimeoutMilliseconds"`
|
||||||
// conntrackMax is the maximum number of NAT connections to track (0 to
|
// conntrackMax is the maximum number of NAT connections to track (0 to
|
||||||
// leave as-is). This takes precedence over conntrackMaxPerCore.
|
// leave as-is). This takes precedence over conntrackMaxPerCore and conntrackMin.
|
||||||
ConntrackMax int32 `json:"conntrackMax"`
|
ConntrackMax int32 `json:"conntrackMax"`
|
||||||
// conntrackMaxPerCore is the maximum number of NAT connections to track
|
// conntrackMaxPerCore is the maximum number of NAT connections to track
|
||||||
// per CPU core (0 to leave as-is). This value is only considered if
|
// per CPU core (0 to leave the limit as-is and ignore conntrackMin).
|
||||||
// conntrackMax == 0.
|
|
||||||
ConntrackMaxPerCore int32 `json:"conntrackMaxPerCore"`
|
ConntrackMaxPerCore int32 `json:"conntrackMaxPerCore"`
|
||||||
|
// conntrackMin is the minimum value of connect-tracking records to allocate,
|
||||||
|
// regardless of conntrackMaxPerCore (set conntrackMaxPerCore=0 to leave the limit as-is).
|
||||||
|
ConntrackMin int32 `json:"conntrackMin"`
|
||||||
// conntrackTCPEstablishedTimeout is how long an idle TCP connection will be kept open
|
// conntrackTCPEstablishedTimeout is how long an idle TCP connection will be kept open
|
||||||
// (e.g. '250ms', '2s'). Must be greater than 0.
|
// (e.g. '250ms', '2s'). Must be greater than 0.
|
||||||
ConntrackTCPEstablishedTimeout unversioned.Duration `json:"conntrackTCPEstablishedTimeout"`
|
ConntrackTCPEstablishedTimeout unversioned.Duration `json:"conntrackTCPEstablishedTimeout"`
|
||||||
|
@ -89,6 +89,9 @@ func SetDefaults_KubeProxyConfiguration(obj *KubeProxyConfiguration) {
|
|||||||
if obj.ConntrackMaxPerCore == 0 {
|
if obj.ConntrackMaxPerCore == 0 {
|
||||||
obj.ConntrackMaxPerCore = 32 * 1024
|
obj.ConntrackMaxPerCore = 32 * 1024
|
||||||
}
|
}
|
||||||
|
if obj.ConntrackMin == 0 {
|
||||||
|
obj.ConntrackMin = 128 * 1024
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if obj.IPTablesMasqueradeBit == nil {
|
if obj.IPTablesMasqueradeBit == nil {
|
||||||
temp := int32(14)
|
temp := int32(14)
|
||||||
|
@ -63,12 +63,14 @@ type KubeProxyConfiguration struct {
|
|||||||
// Must be greater than 0. Only applicable for proxyMode=userspace.
|
// Must be greater than 0. Only applicable for proxyMode=userspace.
|
||||||
UDPIdleTimeout unversioned.Duration `json:"udpTimeoutMilliseconds"`
|
UDPIdleTimeout unversioned.Duration `json:"udpTimeoutMilliseconds"`
|
||||||
// conntrackMax is the maximum number of NAT connections to track (0 to
|
// conntrackMax is the maximum number of NAT connections to track (0 to
|
||||||
// leave as-is). This takes precedence over conntrackMaxPerCore.
|
// leave as-is). This takes precedence over conntrackMaxPerCore and conntrackMin.
|
||||||
ConntrackMax int32 `json:"conntrackMax"`
|
ConntrackMax int32 `json:"conntrackMax"`
|
||||||
// conntrackMaxPerCore is the maximum number of NAT connections to track
|
// conntrackMaxPerCore is the maximum number of NAT connections to track
|
||||||
// per CPU core (0 to leave as-is). This value is only considered if
|
// per CPU core (0 to leave the limit as-is and ignore conntrackMin).
|
||||||
// conntrackMax == 0.
|
|
||||||
ConntrackMaxPerCore int32 `json:"conntrackMaxPerCore"`
|
ConntrackMaxPerCore int32 `json:"conntrackMaxPerCore"`
|
||||||
|
// conntrackMin is the minimum value of connect-tracking records to allocate,
|
||||||
|
// regardless of conntrackMaxPerCore (set conntrackMaxPerCore=0 to leave the limit as-is).
|
||||||
|
ConntrackMin int32 `json:"conntrackMin"`
|
||||||
// conntrackTCPEstablishedTimeout is how long an idle TCP connection will be kept open
|
// conntrackTCPEstablishedTimeout is how long an idle TCP connection will be kept open
|
||||||
// (e.g. '250ms', '2s'). Must be greater than 0.
|
// (e.g. '250ms', '2s'). Must be greater than 0.
|
||||||
ConntrackTCPEstablishedTimeout unversioned.Duration `json:"conntrackTCPEstablishedTimeout"`
|
ConntrackTCPEstablishedTimeout unversioned.Duration `json:"conntrackTCPEstablishedTimeout"`
|
||||||
|
@ -69,6 +69,7 @@ func autoConvert_v1alpha1_KubeProxyConfiguration_To_componentconfig_KubeProxyCon
|
|||||||
out.UDPIdleTimeout = in.UDPIdleTimeout
|
out.UDPIdleTimeout = in.UDPIdleTimeout
|
||||||
out.ConntrackMax = in.ConntrackMax
|
out.ConntrackMax = in.ConntrackMax
|
||||||
out.ConntrackMaxPerCore = in.ConntrackMaxPerCore
|
out.ConntrackMaxPerCore = in.ConntrackMaxPerCore
|
||||||
|
out.ConntrackMin = in.ConntrackMin
|
||||||
out.ConntrackTCPEstablishedTimeout = in.ConntrackTCPEstablishedTimeout
|
out.ConntrackTCPEstablishedTimeout = in.ConntrackTCPEstablishedTimeout
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
@ -98,6 +99,7 @@ func autoConvert_componentconfig_KubeProxyConfiguration_To_v1alpha1_KubeProxyCon
|
|||||||
out.UDPIdleTimeout = in.UDPIdleTimeout
|
out.UDPIdleTimeout = in.UDPIdleTimeout
|
||||||
out.ConntrackMax = in.ConntrackMax
|
out.ConntrackMax = in.ConntrackMax
|
||||||
out.ConntrackMaxPerCore = in.ConntrackMaxPerCore
|
out.ConntrackMaxPerCore = in.ConntrackMaxPerCore
|
||||||
|
out.ConntrackMin = in.ConntrackMin
|
||||||
out.ConntrackTCPEstablishedTimeout = in.ConntrackTCPEstablishedTimeout
|
out.ConntrackTCPEstablishedTimeout = in.ConntrackTCPEstablishedTimeout
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
@ -75,6 +75,7 @@ func DeepCopy_v1alpha1_KubeProxyConfiguration(in interface{}, out interface{}, c
|
|||||||
out.UDPIdleTimeout = in.UDPIdleTimeout
|
out.UDPIdleTimeout = in.UDPIdleTimeout
|
||||||
out.ConntrackMax = in.ConntrackMax
|
out.ConntrackMax = in.ConntrackMax
|
||||||
out.ConntrackMaxPerCore = in.ConntrackMaxPerCore
|
out.ConntrackMaxPerCore = in.ConntrackMaxPerCore
|
||||||
|
out.ConntrackMin = in.ConntrackMin
|
||||||
out.ConntrackTCPEstablishedTimeout = in.ConntrackTCPEstablishedTimeout
|
out.ConntrackTCPEstablishedTimeout = in.ConntrackTCPEstablishedTimeout
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
@ -163,6 +163,7 @@ func DeepCopy_componentconfig_KubeProxyConfiguration(in interface{}, out interfa
|
|||||||
out.UDPIdleTimeout = in.UDPIdleTimeout
|
out.UDPIdleTimeout = in.UDPIdleTimeout
|
||||||
out.ConntrackMax = in.ConntrackMax
|
out.ConntrackMax = in.ConntrackMax
|
||||||
out.ConntrackMaxPerCore = in.ConntrackMaxPerCore
|
out.ConntrackMaxPerCore = in.ConntrackMaxPerCore
|
||||||
|
out.ConntrackMin = in.ConntrackMin
|
||||||
out.ConntrackTCPEstablishedTimeout = in.ConntrackTCPEstablishedTimeout
|
out.ConntrackTCPEstablishedTimeout = in.ConntrackTCPEstablishedTimeout
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
@ -941,6 +941,22 @@ func Convert_autoscaling_HorizontalPodAutoscalerList_To_v1beta1_HorizontalPodAut
|
|||||||
return autoConvert_autoscaling_HorizontalPodAutoscalerList_To_v1beta1_HorizontalPodAutoscalerList(in, out, s)
|
return autoConvert_autoscaling_HorizontalPodAutoscalerList_To_v1beta1_HorizontalPodAutoscalerList(in, out, s)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func autoConvert_v1beta1_HorizontalPodAutoscalerSpec_To_autoscaling_HorizontalPodAutoscalerSpec(in *HorizontalPodAutoscalerSpec, out *autoscaling.HorizontalPodAutoscalerSpec, s conversion.Scope) error {
|
||||||
|
// WARNING: in.ScaleRef requires manual conversion: does not exist in peer-type
|
||||||
|
out.MinReplicas = in.MinReplicas
|
||||||
|
out.MaxReplicas = in.MaxReplicas
|
||||||
|
// WARNING: in.CPUUtilization requires manual conversion: does not exist in peer-type
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func autoConvert_autoscaling_HorizontalPodAutoscalerSpec_To_v1beta1_HorizontalPodAutoscalerSpec(in *autoscaling.HorizontalPodAutoscalerSpec, out *HorizontalPodAutoscalerSpec, s conversion.Scope) error {
|
||||||
|
// WARNING: in.ScaleTargetRef requires manual conversion: does not exist in peer-type
|
||||||
|
out.MinReplicas = in.MinReplicas
|
||||||
|
out.MaxReplicas = in.MaxReplicas
|
||||||
|
// WARNING: in.TargetCPUUtilizationPercentage requires manual conversion: does not exist in peer-type
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func autoConvert_v1beta1_HorizontalPodAutoscalerStatus_To_autoscaling_HorizontalPodAutoscalerStatus(in *HorizontalPodAutoscalerStatus, out *autoscaling.HorizontalPodAutoscalerStatus, s conversion.Scope) error {
|
func autoConvert_v1beta1_HorizontalPodAutoscalerStatus_To_autoscaling_HorizontalPodAutoscalerStatus(in *HorizontalPodAutoscalerStatus, out *autoscaling.HorizontalPodAutoscalerStatus, s conversion.Scope) error {
|
||||||
out.ObservedGeneration = in.ObservedGeneration
|
out.ObservedGeneration = in.ObservedGeneration
|
||||||
out.LastScaleTime = in.LastScaleTime
|
out.LastScaleTime = in.LastScaleTime
|
||||||
@ -1432,6 +1448,46 @@ func Convert_batch_JobList_To_v1beta1_JobList(in *batch.JobList, out *JobList, s
|
|||||||
return autoConvert_batch_JobList_To_v1beta1_JobList(in, out, s)
|
return autoConvert_batch_JobList_To_v1beta1_JobList(in, out, s)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func autoConvert_v1beta1_JobSpec_To_batch_JobSpec(in *JobSpec, out *batch.JobSpec, s conversion.Scope) error {
|
||||||
|
out.Parallelism = in.Parallelism
|
||||||
|
out.Completions = in.Completions
|
||||||
|
out.ActiveDeadlineSeconds = in.ActiveDeadlineSeconds
|
||||||
|
if in.Selector != nil {
|
||||||
|
in, out := &in.Selector, &out.Selector
|
||||||
|
*out = new(unversioned.LabelSelector)
|
||||||
|
if err := Convert_v1beta1_LabelSelector_To_unversioned_LabelSelector(*in, *out, s); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
out.Selector = nil
|
||||||
|
}
|
||||||
|
// WARNING: in.AutoSelector requires manual conversion: does not exist in peer-type
|
||||||
|
if err := v1.Convert_v1_PodTemplateSpec_To_api_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func autoConvert_batch_JobSpec_To_v1beta1_JobSpec(in *batch.JobSpec, out *JobSpec, s conversion.Scope) error {
|
||||||
|
out.Parallelism = in.Parallelism
|
||||||
|
out.Completions = in.Completions
|
||||||
|
out.ActiveDeadlineSeconds = in.ActiveDeadlineSeconds
|
||||||
|
if in.Selector != nil {
|
||||||
|
in, out := &in.Selector, &out.Selector
|
||||||
|
*out = new(LabelSelector)
|
||||||
|
if err := Convert_unversioned_LabelSelector_To_v1beta1_LabelSelector(*in, *out, s); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
out.Selector = nil
|
||||||
|
}
|
||||||
|
// WARNING: in.ManualSelector requires manual conversion: does not exist in peer-type
|
||||||
|
if err := v1.Convert_api_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func autoConvert_v1beta1_JobStatus_To_batch_JobStatus(in *JobStatus, out *batch.JobStatus, s conversion.Scope) error {
|
func autoConvert_v1beta1_JobStatus_To_batch_JobStatus(in *JobStatus, out *batch.JobStatus, s conversion.Scope) error {
|
||||||
if in.Conditions != nil {
|
if in.Conditions != nil {
|
||||||
in, out := &in.Conditions, &out.Conditions
|
in, out := &in.Conditions, &out.Conditions
|
||||||
@ -2282,6 +2338,18 @@ func Convert_extensions_RollbackConfig_To_v1beta1_RollbackConfig(in *extensions.
|
|||||||
return autoConvert_extensions_RollbackConfig_To_v1beta1_RollbackConfig(in, out, s)
|
return autoConvert_extensions_RollbackConfig_To_v1beta1_RollbackConfig(in, out, s)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func autoConvert_v1beta1_RollingUpdateDeployment_To_extensions_RollingUpdateDeployment(in *RollingUpdateDeployment, out *extensions.RollingUpdateDeployment, s conversion.Scope) error {
|
||||||
|
// WARNING: in.MaxUnavailable requires manual conversion: inconvertible types (*k8s.io/kubernetes/pkg/util/intstr.IntOrString vs k8s.io/kubernetes/pkg/util/intstr.IntOrString)
|
||||||
|
// WARNING: in.MaxSurge requires manual conversion: inconvertible types (*k8s.io/kubernetes/pkg/util/intstr.IntOrString vs k8s.io/kubernetes/pkg/util/intstr.IntOrString)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func autoConvert_extensions_RollingUpdateDeployment_To_v1beta1_RollingUpdateDeployment(in *extensions.RollingUpdateDeployment, out *RollingUpdateDeployment, s conversion.Scope) error {
|
||||||
|
// WARNING: in.MaxUnavailable requires manual conversion: inconvertible types (k8s.io/kubernetes/pkg/util/intstr.IntOrString vs *k8s.io/kubernetes/pkg/util/intstr.IntOrString)
|
||||||
|
// WARNING: in.MaxSurge requires manual conversion: inconvertible types (k8s.io/kubernetes/pkg/util/intstr.IntOrString vs *k8s.io/kubernetes/pkg/util/intstr.IntOrString)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func autoConvert_v1beta1_RunAsUserStrategyOptions_To_extensions_RunAsUserStrategyOptions(in *RunAsUserStrategyOptions, out *extensions.RunAsUserStrategyOptions, s conversion.Scope) error {
|
func autoConvert_v1beta1_RunAsUserStrategyOptions_To_extensions_RunAsUserStrategyOptions(in *RunAsUserStrategyOptions, out *extensions.RunAsUserStrategyOptions, s conversion.Scope) error {
|
||||||
out.Rule = extensions.RunAsUserStrategy(in.Rule)
|
out.Rule = extensions.RunAsUserStrategy(in.Rule)
|
||||||
if in.Ranges != nil {
|
if in.Ranges != nil {
|
||||||
@ -2420,6 +2488,19 @@ func Convert_extensions_ScaleSpec_To_v1beta1_ScaleSpec(in *extensions.ScaleSpec,
|
|||||||
return autoConvert_extensions_ScaleSpec_To_v1beta1_ScaleSpec(in, out, s)
|
return autoConvert_extensions_ScaleSpec_To_v1beta1_ScaleSpec(in, out, s)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func autoConvert_v1beta1_ScaleStatus_To_extensions_ScaleStatus(in *ScaleStatus, out *extensions.ScaleStatus, s conversion.Scope) error {
|
||||||
|
out.Replicas = in.Replicas
|
||||||
|
// WARNING: in.Selector requires manual conversion: inconvertible types (map[string]string vs *k8s.io/kubernetes/pkg/api/unversioned.LabelSelector)
|
||||||
|
// WARNING: in.TargetSelector requires manual conversion: does not exist in peer-type
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func autoConvert_extensions_ScaleStatus_To_v1beta1_ScaleStatus(in *extensions.ScaleStatus, out *ScaleStatus, s conversion.Scope) error {
|
||||||
|
out.Replicas = in.Replicas
|
||||||
|
// WARNING: in.Selector requires manual conversion: inconvertible types (*k8s.io/kubernetes/pkg/api/unversioned.LabelSelector vs map[string]string)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func autoConvert_v1beta1_SupplementalGroupsStrategyOptions_To_extensions_SupplementalGroupsStrategyOptions(in *SupplementalGroupsStrategyOptions, out *extensions.SupplementalGroupsStrategyOptions, s conversion.Scope) error {
|
func autoConvert_v1beta1_SupplementalGroupsStrategyOptions_To_extensions_SupplementalGroupsStrategyOptions(in *SupplementalGroupsStrategyOptions, out *extensions.SupplementalGroupsStrategyOptions, s conversion.Scope) error {
|
||||||
out.Rule = extensions.SupplementalGroupsStrategyType(in.Rule)
|
out.Rule = extensions.SupplementalGroupsStrategyType(in.Rule)
|
||||||
if in.Ranges != nil {
|
if in.Ranges != nil {
|
||||||
|
@ -17,6 +17,7 @@ limitations under the License.
|
|||||||
package rbac
|
package rbac
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"fmt"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"k8s.io/client-go/1.5/pkg/api/unversioned"
|
"k8s.io/client-go/1.5/pkg/api/unversioned"
|
||||||
@ -94,3 +95,70 @@ func NonResourceURLMatches(rule PolicyRule, requestedURL string) bool {
|
|||||||
|
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// +k8s:deepcopy-gen=false
|
||||||
|
// PolicyRuleBuilder let's us attach methods. A no-no for API types.
|
||||||
|
// We use it to construct rules in code. It's more compact than trying to write them
|
||||||
|
// out in a literal and allows us to perform some basic checking during construction
|
||||||
|
type PolicyRuleBuilder struct {
|
||||||
|
PolicyRule PolicyRule
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewRule(verbs ...string) *PolicyRuleBuilder {
|
||||||
|
return &PolicyRuleBuilder{
|
||||||
|
PolicyRule: PolicyRule{Verbs: verbs},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *PolicyRuleBuilder) Groups(groups ...string) *PolicyRuleBuilder {
|
||||||
|
r.PolicyRule.APIGroups = append(r.PolicyRule.APIGroups, groups...)
|
||||||
|
return r
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *PolicyRuleBuilder) Resources(resources ...string) *PolicyRuleBuilder {
|
||||||
|
r.PolicyRule.Resources = append(r.PolicyRule.Resources, resources...)
|
||||||
|
return r
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *PolicyRuleBuilder) Names(names ...string) *PolicyRuleBuilder {
|
||||||
|
r.PolicyRule.ResourceNames = append(r.PolicyRule.ResourceNames, names...)
|
||||||
|
return r
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *PolicyRuleBuilder) URLs(urls ...string) *PolicyRuleBuilder {
|
||||||
|
r.PolicyRule.NonResourceURLs = append(r.PolicyRule.NonResourceURLs, urls...)
|
||||||
|
return r
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *PolicyRuleBuilder) RuleOrDie() PolicyRule {
|
||||||
|
ret, err := r.Rule()
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
return ret
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *PolicyRuleBuilder) Rule() (PolicyRule, error) {
|
||||||
|
if len(r.PolicyRule.Verbs) == 0 {
|
||||||
|
return PolicyRule{}, fmt.Errorf("verbs are required: %#v", r.PolicyRule)
|
||||||
|
}
|
||||||
|
|
||||||
|
switch {
|
||||||
|
case len(r.PolicyRule.NonResourceURLs) > 0:
|
||||||
|
if len(r.PolicyRule.APIGroups) != 0 || len(r.PolicyRule.Resources) != 0 || len(r.PolicyRule.ResourceNames) != 0 {
|
||||||
|
return PolicyRule{}, fmt.Errorf("non-resource rule may not have apiGroups, resources, or resourceNames: %#v", r.PolicyRule)
|
||||||
|
}
|
||||||
|
case len(r.PolicyRule.Resources) > 0:
|
||||||
|
if len(r.PolicyRule.NonResourceURLs) != 0 {
|
||||||
|
return PolicyRule{}, fmt.Errorf("resource rule may not have nonResourceURLs: %#v", r.PolicyRule)
|
||||||
|
}
|
||||||
|
if len(r.PolicyRule.APIGroups) == 0 {
|
||||||
|
// this a common bug
|
||||||
|
return PolicyRule{}, fmt.Errorf("resource rule must have apiGroups: %#v", r.PolicyRule)
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
return PolicyRule{}, fmt.Errorf("a rule must have either nonResourceURLs or resources: %#v", r.PolicyRule)
|
||||||
|
}
|
||||||
|
|
||||||
|
return r.PolicyRule, nil
|
||||||
|
}
|
||||||
|
@ -21,6 +21,10 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
// PodInfraOOMAdj is very docker specific. For arbitrary runtime, it may not make
|
||||||
|
// sense to set sandbox level oom score, e.g. a sandbox could only be a namespace
|
||||||
|
// without a process.
|
||||||
|
// TODO: Handle infra container oom score adj in a runtime agnostic way.
|
||||||
PodInfraOOMAdj int = -998
|
PodInfraOOMAdj int = -998
|
||||||
KubeletOOMScoreAdj int = -999
|
KubeletOOMScoreAdj int = -999
|
||||||
DockerOOMScoreAdj int = -999
|
DockerOOMScoreAdj int = -999
|
||||||
|
43
staging/src/k8s.io/client-go/1.5/pkg/types/nodename.go
Normal file
43
staging/src/k8s.io/client-go/1.5/pkg/types/nodename.go
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2015 The Kubernetes Authors.
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package types
|
||||||
|
|
||||||
|
// NodeName is a type that holds a api.Node's Name identifier.
|
||||||
|
// Being a type captures intent and helps make sure that the node name
|
||||||
|
// is not confused with similar concepts (the hostname, the cloud provider id,
|
||||||
|
// the cloud provider name etc)
|
||||||
|
//
|
||||||
|
// To clarify the various types:
|
||||||
|
//
|
||||||
|
// * Node.Name is the Name field of the Node in the API. This should be stored in a NodeName.
|
||||||
|
// Unfortunately, because Name is part of ObjectMeta, we can't store it as a NodeName at the API level.
|
||||||
|
//
|
||||||
|
// * Hostname is the hostname of the local machine (from uname -n).
|
||||||
|
// However, some components allow the user to pass in a --hostname-override flag,
|
||||||
|
// which will override this in most places. In the absence of anything more meaningful,
|
||||||
|
// kubelet will use Hostname as the Node.Name when it creates the Node.
|
||||||
|
//
|
||||||
|
// * The cloudproviders have the own names: GCE has InstanceName, AWS has InstanceId.
|
||||||
|
//
|
||||||
|
// For GCE, InstanceName is the Name of an Instance object in the GCE API. On GCE, Instance.Name becomes the
|
||||||
|
// Hostname, and thus it makes sense also to use it as the Node.Name. But that is GCE specific, and it is up
|
||||||
|
// to the cloudprovider how to do this mapping.
|
||||||
|
//
|
||||||
|
// For AWS, the InstanceID is not yet suitable for use as a Node.Name, so we actually use the
|
||||||
|
// PrivateDnsName for the Node.Name. And this is _not_ always the same as the hostname: if
|
||||||
|
// we are using a custom DHCP domain it won't be.
|
||||||
|
type NodeName string
|
@ -147,6 +147,20 @@ func Flatten(agg Aggregate) Aggregate {
|
|||||||
return NewAggregate(result)
|
return NewAggregate(result)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Reduce will return err or, if err is an Aggregate and only has one item,
|
||||||
|
// the first item in the aggregate.
|
||||||
|
func Reduce(err error) error {
|
||||||
|
if agg, ok := err.(Aggregate); ok && err != nil {
|
||||||
|
switch len(agg.Errors()) {
|
||||||
|
case 1:
|
||||||
|
return agg.Errors()[0]
|
||||||
|
case 0:
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
// AggregateGoroutines runs the provided functions in parallel, stuffing all
|
// AggregateGoroutines runs the provided functions in parallel, stuffing all
|
||||||
// non-nil errors into the returned Aggregate.
|
// non-nil errors into the returned Aggregate.
|
||||||
// Returns nil if all the functions complete successfully.
|
// Returns nil if all the functions complete successfully.
|
||||||
|
@ -77,8 +77,10 @@ func SetOldTransportDefaults(t *http.Transport) *http.Transport {
|
|||||||
// for the Proxy, Dial, and TLSHandshakeTimeout fields if unset
|
// for the Proxy, Dial, and TLSHandshakeTimeout fields if unset
|
||||||
func SetTransportDefaults(t *http.Transport) *http.Transport {
|
func SetTransportDefaults(t *http.Transport) *http.Transport {
|
||||||
t = SetOldTransportDefaults(t)
|
t = SetOldTransportDefaults(t)
|
||||||
// Allow HTTP2 clients but default off for now
|
// Allow clients to disable http2 if needed.
|
||||||
if s := os.Getenv("ENABLE_HTTP2"); len(s) > 0 {
|
if s := os.Getenv("DISABLE_HTTP2"); len(s) > 0 {
|
||||||
|
glog.Infof("HTTP2 has been explicitly disabled")
|
||||||
|
} else {
|
||||||
if err := http2.ConfigureTransport(t); err != nil {
|
if err := http2.ConfigureTransport(t); err != nil {
|
||||||
glog.Warningf("Transport failed http2 configuration: %v", err)
|
glog.Warningf("Transport failed http2 configuration: %v", err)
|
||||||
}
|
}
|
||||||
|
@ -1209,6 +1209,7 @@ func TestDoRequestNewWayFile(t *testing.T) {
|
|||||||
t.Errorf("unexpected error: %v", err)
|
t.Errorf("unexpected error: %v", err)
|
||||||
}
|
}
|
||||||
defer file.Close()
|
defer file.Close()
|
||||||
|
defer os.Remove(file.Name())
|
||||||
|
|
||||||
_, err = file.Write(reqBodyExpected)
|
_, err = file.Write(reqBodyExpected)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -1402,6 +1403,7 @@ func TestBody(t *testing.T) {
|
|||||||
t.Fatalf("TempFile.WriteString error: %v", err)
|
t.Fatalf("TempFile.WriteString error: %v", err)
|
||||||
}
|
}
|
||||||
f.Close()
|
f.Close()
|
||||||
|
defer os.Remove(f.Name())
|
||||||
|
|
||||||
var nilObject *api.DeleteOptions
|
var nilObject *api.DeleteOptions
|
||||||
typedObject := interface{}(nilObject)
|
typedObject := interface{}(nilObject)
|
||||||
|
@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package testing
|
package cache
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"sync"
|
"sync"
|
||||||
|
@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package testing
|
package cache
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package testing
|
package cache
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
|
@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package testing
|
package cache
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
@ -21,4 +21,4 @@ limitations under the License.
|
|||||||
// list currently available nodes), and one that additionally acts as
|
// list currently available nodes), and one that additionally acts as
|
||||||
// a FIFO queue (for example, to allow a scheduler to process incoming
|
// a FIFO queue (for example, to allow a scheduler to process incoming
|
||||||
// pods).
|
// pods).
|
||||||
package testing // import "k8s.io/client-go/1.5/tools/cache"
|
package cache // import "k8s.io/client-go/1.5/tools/cache"
|
||||||
|
@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package testing
|
package cache
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"sync"
|
"sync"
|
||||||
|
@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package testing
|
package cache
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"k8s.io/client-go/1.5/pkg/util/clock"
|
"k8s.io/client-go/1.5/pkg/util/clock"
|
||||||
|
@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package testing
|
package cache
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"reflect"
|
"reflect"
|
||||||
|
@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package testing
|
package cache
|
||||||
|
|
||||||
// FakeStore lets you define custom functions for store operations
|
// FakeStore lets you define custom functions for store operations
|
||||||
type FakeCustomStore struct {
|
type FakeCustomStore struct {
|
||||||
|
@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package testing
|
package cache
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"sync"
|
"sync"
|
||||||
|
@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package testing
|
package cache
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package testing
|
package cache
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package testing
|
package cache
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"strings"
|
"strings"
|
||||||
|
@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package testing
|
package cache
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
@ -32,6 +32,7 @@ import (
|
|||||||
"k8s.io/client-go/1.5/pkg/labels"
|
"k8s.io/client-go/1.5/pkg/labels"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// AppendFunc is used to add a matching item to whatever list the caller is using
|
||||||
type AppendFunc func(interface{})
|
type AppendFunc func(interface{})
|
||||||
|
|
||||||
func ListAll(store Store, selector labels.Selector, appendFn AppendFunc) error {
|
func ListAll(store Store, selector labels.Selector, appendFn AppendFunc) error {
|
||||||
@ -136,116 +137,6 @@ func (s storeToNodeConditionLister) List() (nodes []*api.Node, err error) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// StoreToReplicationControllerLister gives a store List and Exists methods. The store must contain only ReplicationControllers.
|
|
||||||
type StoreToReplicationControllerLister struct {
|
|
||||||
Indexer
|
|
||||||
}
|
|
||||||
|
|
||||||
// Exists checks if the given rc exists in the store.
|
|
||||||
func (s *StoreToReplicationControllerLister) Exists(controller *api.ReplicationController) (bool, error) {
|
|
||||||
_, exists, err := s.Indexer.Get(controller)
|
|
||||||
if err != nil {
|
|
||||||
return false, err
|
|
||||||
}
|
|
||||||
return exists, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// StoreToReplicationControllerLister lists all controllers in the store.
|
|
||||||
// TODO: converge on the interface in pkg/client
|
|
||||||
func (s *StoreToReplicationControllerLister) List() (controllers []api.ReplicationController, err error) {
|
|
||||||
for _, c := range s.Indexer.List() {
|
|
||||||
controllers = append(controllers, *(c.(*api.ReplicationController)))
|
|
||||||
}
|
|
||||||
return controllers, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (s *StoreToReplicationControllerLister) ReplicationControllers(namespace string) storeReplicationControllersNamespacer {
|
|
||||||
return storeReplicationControllersNamespacer{s.Indexer, namespace}
|
|
||||||
}
|
|
||||||
|
|
||||||
type storeReplicationControllersNamespacer struct {
|
|
||||||
indexer Indexer
|
|
||||||
namespace string
|
|
||||||
}
|
|
||||||
|
|
||||||
func (s storeReplicationControllersNamespacer) List(selector labels.Selector) ([]api.ReplicationController, error) {
|
|
||||||
controllers := []api.ReplicationController{}
|
|
||||||
|
|
||||||
if s.namespace == api.NamespaceAll {
|
|
||||||
for _, m := range s.indexer.List() {
|
|
||||||
rc := *(m.(*api.ReplicationController))
|
|
||||||
if selector.Matches(labels.Set(rc.Labels)) {
|
|
||||||
controllers = append(controllers, rc)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return controllers, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
key := &api.ReplicationController{ObjectMeta: api.ObjectMeta{Namespace: s.namespace}}
|
|
||||||
items, err := s.indexer.Index(NamespaceIndex, key)
|
|
||||||
if err != nil {
|
|
||||||
// Ignore error; do slow search without index.
|
|
||||||
glog.Warningf("can not retrieve list of objects using index : %v", err)
|
|
||||||
for _, m := range s.indexer.List() {
|
|
||||||
rc := *(m.(*api.ReplicationController))
|
|
||||||
if s.namespace == rc.Namespace && selector.Matches(labels.Set(rc.Labels)) {
|
|
||||||
controllers = append(controllers, rc)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return controllers, nil
|
|
||||||
}
|
|
||||||
for _, m := range items {
|
|
||||||
rc := *(m.(*api.ReplicationController))
|
|
||||||
if selector.Matches(labels.Set(rc.Labels)) {
|
|
||||||
controllers = append(controllers, rc)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return controllers, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (s storeReplicationControllersNamespacer) Get(name string) (*api.ReplicationController, error) {
|
|
||||||
obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
if !exists {
|
|
||||||
return nil, errors.NewNotFound(api.Resource("replicationcontroller"), name)
|
|
||||||
}
|
|
||||||
return obj.(*api.ReplicationController), nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetPodControllers returns a list of replication controllers managing a pod. Returns an error only if no matching controllers are found.
|
|
||||||
func (s *StoreToReplicationControllerLister) GetPodControllers(pod *api.Pod) (controllers []api.ReplicationController, err error) {
|
|
||||||
var selector labels.Selector
|
|
||||||
var rc api.ReplicationController
|
|
||||||
|
|
||||||
if len(pod.Labels) == 0 {
|
|
||||||
err = fmt.Errorf("no controllers found for pod %v because it has no labels", pod.Name)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
key := &api.ReplicationController{ObjectMeta: api.ObjectMeta{Namespace: pod.Namespace}}
|
|
||||||
items, err := s.Indexer.Index(NamespaceIndex, key)
|
|
||||||
if err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
for _, m := range items {
|
|
||||||
rc = *m.(*api.ReplicationController)
|
|
||||||
selector = labels.Set(rc.Spec.Selector).AsSelectorPreValidated()
|
|
||||||
|
|
||||||
// If an rc with a nil or empty selector creeps in, it should match nothing, not everything.
|
|
||||||
if selector.Empty() || !selector.Matches(labels.Set(pod.Labels)) {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
controllers = append(controllers, rc)
|
|
||||||
}
|
|
||||||
if len(controllers) == 0 {
|
|
||||||
err = fmt.Errorf("could not find controller for pod %s in namespace %s with labels: %v", pod.Name, pod.Namespace, pod.Labels)
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// StoreToDeploymentLister gives a store List and Exists methods. The store must contain only Deployments.
|
// StoreToDeploymentLister gives a store List and Exists methods. The store must contain only Deployments.
|
||||||
type StoreToDeploymentLister struct {
|
type StoreToDeploymentLister struct {
|
||||||
Indexer
|
Indexer
|
||||||
|
@ -14,9 +14,11 @@ See the License for the specific language governing permissions and
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package testing
|
package cache
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"fmt"
|
||||||
|
|
||||||
"k8s.io/client-go/1.5/pkg/api"
|
"k8s.io/client-go/1.5/pkg/api"
|
||||||
"k8s.io/client-go/1.5/pkg/api/errors"
|
"k8s.io/client-go/1.5/pkg/api/errors"
|
||||||
"k8s.io/client-go/1.5/pkg/labels"
|
"k8s.io/client-go/1.5/pkg/labels"
|
||||||
@ -25,24 +27,24 @@ import (
|
|||||||
// TODO: generate these classes and methods for all resources of interest using
|
// TODO: generate these classes and methods for all resources of interest using
|
||||||
// a script. Can use "go generate" once 1.4 is supported by all users.
|
// a script. Can use "go generate" once 1.4 is supported by all users.
|
||||||
|
|
||||||
// StoreToPodLister makes a Store have the List method of the client.PodInterface
|
// Lister makes an Index have the List method. The Stores must contain only the expected type
|
||||||
// The Store must contain (only) Pods.
|
|
||||||
//
|
|
||||||
// Example:
|
// Example:
|
||||||
// s := cache.NewStore()
|
// s := cache.NewStore()
|
||||||
// lw := cache.ListWatch{Client: c, FieldSelector: sel, Resource: "pods"}
|
// lw := cache.ListWatch{Client: c, FieldSelector: sel, Resource: "pods"}
|
||||||
// r := cache.NewReflector(lw, &api.Pod{}, s).Run()
|
// r := cache.NewReflector(lw, &api.Pod{}, s).Run()
|
||||||
// l := StoreToPodLister{s}
|
// l := StoreToPodLister{s}
|
||||||
// l.List()
|
// l.List()
|
||||||
|
|
||||||
|
// StoreToPodLister helps list pods
|
||||||
type StoreToPodLister struct {
|
type StoreToPodLister struct {
|
||||||
Indexer Indexer
|
Indexer Indexer
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *StoreToPodLister) List(selector labels.Selector) (pods []*api.Pod, err error) {
|
func (s *StoreToPodLister) List(selector labels.Selector) (ret []*api.Pod, err error) {
|
||||||
err = ListAll(s.Indexer, selector, func(m interface{}) {
|
err = ListAll(s.Indexer, selector, func(m interface{}) {
|
||||||
pods = append(pods, m.(*api.Pod))
|
ret = append(ret, m.(*api.Pod))
|
||||||
})
|
})
|
||||||
return pods, err
|
return ret, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *StoreToPodLister) Pods(namespace string) storePodsNamespacer {
|
func (s *StoreToPodLister) Pods(namespace string) storePodsNamespacer {
|
||||||
@ -54,11 +56,11 @@ type storePodsNamespacer struct {
|
|||||||
namespace string
|
namespace string
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s storePodsNamespacer) List(selector labels.Selector) (pods []*api.Pod, err error) {
|
func (s storePodsNamespacer) List(selector labels.Selector) (ret []*api.Pod, err error) {
|
||||||
err = ListAllByNamespace(s.Indexer, s.namespace, selector, func(m interface{}) {
|
err = ListAllByNamespace(s.Indexer, s.namespace, selector, func(m interface{}) {
|
||||||
pods = append(pods, m.(*api.Pod))
|
ret = append(ret, m.(*api.Pod))
|
||||||
})
|
})
|
||||||
return pods, err
|
return ret, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s storePodsNamespacer) Get(name string) (*api.Pod, error) {
|
func (s storePodsNamespacer) Get(name string) (*api.Pod, error) {
|
||||||
@ -133,3 +135,71 @@ func (s *StoreToServiceLister) GetPodServices(pod *api.Pod) (services []*api.Ser
|
|||||||
|
|
||||||
return services, nil
|
return services, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// StoreToReplicationControllerLister helps list rcs
|
||||||
|
type StoreToReplicationControllerLister struct {
|
||||||
|
Indexer Indexer
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *StoreToReplicationControllerLister) List(selector labels.Selector) (ret []*api.ReplicationController, err error) {
|
||||||
|
err = ListAll(s.Indexer, selector, func(m interface{}) {
|
||||||
|
ret = append(ret, m.(*api.ReplicationController))
|
||||||
|
})
|
||||||
|
return ret, err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *StoreToReplicationControllerLister) ReplicationControllers(namespace string) storeReplicationControllersNamespacer {
|
||||||
|
return storeReplicationControllersNamespacer{s.Indexer, namespace}
|
||||||
|
}
|
||||||
|
|
||||||
|
type storeReplicationControllersNamespacer struct {
|
||||||
|
indexer Indexer
|
||||||
|
namespace string
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s storeReplicationControllersNamespacer) List(selector labels.Selector) (ret []*api.ReplicationController, err error) {
|
||||||
|
err = ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) {
|
||||||
|
ret = append(ret, m.(*api.ReplicationController))
|
||||||
|
})
|
||||||
|
return ret, err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s storeReplicationControllersNamespacer) Get(name string) (*api.ReplicationController, error) {
|
||||||
|
obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
if !exists {
|
||||||
|
return nil, errors.NewNotFound(api.Resource("replicationcontroller"), name)
|
||||||
|
}
|
||||||
|
return obj.(*api.ReplicationController), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetPodControllers returns a list of replication controllers managing a pod. Returns an error only if no matching controllers are found.
|
||||||
|
func (s *StoreToReplicationControllerLister) GetPodControllers(pod *api.Pod) (controllers []*api.ReplicationController, err error) {
|
||||||
|
if len(pod.Labels) == 0 {
|
||||||
|
err = fmt.Errorf("no controllers found for pod %v because it has no labels", pod.Name)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
key := &api.ReplicationController{ObjectMeta: api.ObjectMeta{Namespace: pod.Namespace}}
|
||||||
|
items, err := s.Indexer.Index(NamespaceIndex, key)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, m := range items {
|
||||||
|
rc := m.(*api.ReplicationController)
|
||||||
|
selector := labels.Set(rc.Spec.Selector).AsSelectorPreValidated()
|
||||||
|
|
||||||
|
// If an rc with a nil or empty selector creeps in, it should match nothing, not everything.
|
||||||
|
if selector.Empty() || !selector.Matches(labels.Set(pod.Labels)) {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
controllers = append(controllers, rc)
|
||||||
|
}
|
||||||
|
if len(controllers) == 0 {
|
||||||
|
err = fmt.Errorf("could not find controller for pod %s in namespace %s with labels: %v", pod.Name, pod.Namespace, pod.Labels)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package testing
|
package cache
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"testing"
|
"testing"
|
||||||
@ -128,7 +128,7 @@ func TestStoreToReplicationControllerLister(t *testing.T) {
|
|||||||
testCases := []struct {
|
testCases := []struct {
|
||||||
description string
|
description string
|
||||||
inRCs []*api.ReplicationController
|
inRCs []*api.ReplicationController
|
||||||
list func(StoreToReplicationControllerLister) ([]api.ReplicationController, error)
|
list func(StoreToReplicationControllerLister) ([]*api.ReplicationController, error)
|
||||||
outRCNames sets.String
|
outRCNames sets.String
|
||||||
expectErr bool
|
expectErr bool
|
||||||
onlyIfIndexedByNamespace bool
|
onlyIfIndexedByNamespace bool
|
||||||
@ -143,7 +143,7 @@ func TestStoreToReplicationControllerLister(t *testing.T) {
|
|||||||
ObjectMeta: api.ObjectMeta{Name: "hmm", Namespace: "hmm"},
|
ObjectMeta: api.ObjectMeta{Name: "hmm", Namespace: "hmm"},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
list: func(lister StoreToReplicationControllerLister) ([]api.ReplicationController, error) {
|
list: func(lister StoreToReplicationControllerLister) ([]*api.ReplicationController, error) {
|
||||||
return lister.ReplicationControllers(api.NamespaceAll).List(labels.Set{}.AsSelectorPreValidated())
|
return lister.ReplicationControllers(api.NamespaceAll).List(labels.Set{}.AsSelectorPreValidated())
|
||||||
},
|
},
|
||||||
outRCNames: sets.NewString("hmm", "foo"),
|
outRCNames: sets.NewString("hmm", "foo"),
|
||||||
@ -158,7 +158,7 @@ func TestStoreToReplicationControllerLister(t *testing.T) {
|
|||||||
ObjectMeta: api.ObjectMeta{Name: "hmm", Namespace: "hmm"},
|
ObjectMeta: api.ObjectMeta{Name: "hmm", Namespace: "hmm"},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
list: func(lister StoreToReplicationControllerLister) ([]api.ReplicationController, error) {
|
list: func(lister StoreToReplicationControllerLister) ([]*api.ReplicationController, error) {
|
||||||
return lister.ReplicationControllers("hmm").List(labels.Set{}.AsSelectorPreValidated())
|
return lister.ReplicationControllers("hmm").List(labels.Set{}.AsSelectorPreValidated())
|
||||||
},
|
},
|
||||||
outRCNames: sets.NewString("hmm"),
|
outRCNames: sets.NewString("hmm"),
|
||||||
@ -168,8 +168,8 @@ func TestStoreToReplicationControllerLister(t *testing.T) {
|
|||||||
inRCs: []*api.ReplicationController{
|
inRCs: []*api.ReplicationController{
|
||||||
{ObjectMeta: api.ObjectMeta{Name: "basic"}},
|
{ObjectMeta: api.ObjectMeta{Name: "basic"}},
|
||||||
},
|
},
|
||||||
list: func(lister StoreToReplicationControllerLister) ([]api.ReplicationController, error) {
|
list: func(lister StoreToReplicationControllerLister) ([]*api.ReplicationController, error) {
|
||||||
return lister.List()
|
return lister.List(labels.Everything())
|
||||||
},
|
},
|
||||||
outRCNames: sets.NewString("basic"),
|
outRCNames: sets.NewString("basic"),
|
||||||
},
|
},
|
||||||
@ -183,7 +183,7 @@ func TestStoreToReplicationControllerLister(t *testing.T) {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
list: func(lister StoreToReplicationControllerLister) ([]api.ReplicationController, error) {
|
list: func(lister StoreToReplicationControllerLister) ([]*api.ReplicationController, error) {
|
||||||
pod := &api.Pod{
|
pod := &api.Pod{
|
||||||
ObjectMeta: api.ObjectMeta{Name: "pod1", Namespace: "ns"},
|
ObjectMeta: api.ObjectMeta{Name: "pod1", Namespace: "ns"},
|
||||||
}
|
}
|
||||||
@ -199,7 +199,7 @@ func TestStoreToReplicationControllerLister(t *testing.T) {
|
|||||||
ObjectMeta: api.ObjectMeta{Name: "basic", Namespace: "ns"},
|
ObjectMeta: api.ObjectMeta{Name: "basic", Namespace: "ns"},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
list: func(lister StoreToReplicationControllerLister) ([]api.ReplicationController, error) {
|
list: func(lister StoreToReplicationControllerLister) ([]*api.ReplicationController, error) {
|
||||||
pod := &api.Pod{
|
pod := &api.Pod{
|
||||||
ObjectMeta: api.ObjectMeta{
|
ObjectMeta: api.ObjectMeta{
|
||||||
Name: "pod1",
|
Name: "pod1",
|
||||||
@ -228,7 +228,7 @@ func TestStoreToReplicationControllerLister(t *testing.T) {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
list: func(lister StoreToReplicationControllerLister) ([]api.ReplicationController, error) {
|
list: func(lister StoreToReplicationControllerLister) ([]*api.ReplicationController, error) {
|
||||||
pod := &api.Pod{
|
pod := &api.Pod{
|
||||||
ObjectMeta: api.ObjectMeta{
|
ObjectMeta: api.ObjectMeta{
|
||||||
Name: "pod1",
|
Name: "pod1",
|
||||||
|
@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package testing
|
package cache
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"time"
|
"time"
|
||||||
|
@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package testing
|
package cache
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"testing"
|
"testing"
|
||||||
|
@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package testing
|
package cache
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
|
@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package testing
|
package cache
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
|
@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package testing
|
package cache
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package testing
|
package cache
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package testing
|
package cache
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"testing"
|
"testing"
|
||||||
|
@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package testing
|
package cache
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package testing
|
package cache
|
||||||
|
|
||||||
// UndeltaStore listens to incremental updates and sends complete state on every change.
|
// UndeltaStore listens to incremental updates and sends complete state on every change.
|
||||||
// It implements the Store interface so that it can receive a stream of mirrored objects
|
// It implements the Store interface so that it can receive a stream of mirrored objects
|
||||||
|
@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package testing
|
package cache
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"reflect"
|
"reflect"
|
||||||
|
Loading…
Reference in New Issue
Block a user