Merge pull request #2345 from yugui/lint/api

Fixes golint errors in pkg/api.
This commit is contained in:
Dawn Chen 2014-11-13 23:21:42 -08:00
commit f47f1da3d6
12 changed files with 71 additions and 55 deletions

View File

@ -52,6 +52,7 @@ const (
ValidationErrorTypeForbidden ValidationErrorType = "FieldValueForbidden" ValidationErrorTypeForbidden ValidationErrorType = "FieldValueForbidden"
) )
// ValueOf converts a ValidationErrorType into its corresponding error message.
func ValueOf(t ValidationErrorType) string { func ValueOf(t ValidationErrorType) string {
switch t { switch t {
case ValidationErrorTypeNotFound: case ValidationErrorTypeNotFound:

View File

@ -52,13 +52,13 @@ var accessor = meta.NewAccessor()
// ResourceVersioner describes a default versioner that can handle all types // ResourceVersioner describes a default versioner that can handle all types
// of versioning. // of versioning.
// TODO: when versioning changes, make this part of each API definition. // TODO: when versioning changes, make this part of each API definition.
var ResourceVersioner runtime.ResourceVersioner = accessor var ResourceVersioner = runtime.ResourceVersioner(accessor)
// SelfLinker can set or get the SelfLink field of all API types. // SelfLinker can set or get the SelfLink field of all API types.
// TODO: when versioning changes, make this part of each API definition. // TODO: when versioning changes, make this part of each API definition.
// TODO(lavalamp): Combine SelfLinker & ResourceVersioner interfaces, force all uses // TODO(lavalamp): Combine SelfLinker & ResourceVersioner interfaces, force all uses
// to go through the InterfacesFor method below. // to go through the InterfacesFor method below.
var SelfLinker runtime.SelfLinker = accessor var SelfLinker = runtime.SelfLinker(accessor)
// RESTMapper provides the default mapping between REST paths and the objects declared in api.Scheme and all known // RESTMapper provides the default mapping between REST paths and the objects declared in api.Scheme and all known
// Kubernetes versions. // Kubernetes versions.

View File

@ -471,7 +471,7 @@ func TestTypeMetaSelfLinker(t *testing.T) {
}, },
} }
var linker runtime.SelfLinker = NewAccessor() linker := runtime.SelfLinker(NewAccessor())
for name, item := range table { for name, item := range table {
got, err := linker.SelfLink(item.obj) got, err := linker.SelfLink(item.obj)
if e, a := item.succeed, err == nil; e != a { if e, a := item.succeed, err == nil; e != a {

View File

@ -30,7 +30,7 @@ type typeMeta struct {
Kind string Kind string
} }
// RESTMapper exposes mappings between the types defined in a // DefaultRESTMapper exposes mappings between the types defined in a
// runtime.Scheme. It assumes that all types defined the provided scheme // runtime.Scheme. It assumes that all types defined the provided scheme
// can be mapped with the provided MetadataAccessor and Codec interfaces. // can be mapped with the provided MetadataAccessor and Codec interfaces.
// //
@ -132,7 +132,7 @@ func (m *DefaultRESTMapper) RESTMapping(version, kind string) (*RESTMapping, err
} }
} }
if len(version) == 0 { if len(version) == 0 {
return nil, fmt.Errorf("no object named %q is registered.", kind) return nil, fmt.Errorf("no object named %q is registered", kind)
} }
} }

View File

@ -25,6 +25,7 @@ import (
"github.com/GoogleCloudPlatform/kubernetes/pkg/runtime" "github.com/GoogleCloudPlatform/kubernetes/pkg/runtime"
) )
// ErrNilObject indicates an error that the obj passed to GetReference is nil.
var ErrNilObject = errors.New("Can't reference a nil object") var ErrNilObject = errors.New("Can't reference a nil object")
var versionFromSelfLink = regexp.MustCompile("/api/([^/]*)/") var versionFromSelfLink = regexp.MustCompile("/api/([^/]*)/")
@ -72,6 +73,6 @@ func GetPartialReference(obj runtime.Object, fieldPath string) (*ObjectReference
return ref, nil return ref, nil
} }
// Allow clients to preemptively get a reference to an API object and pass it to places that // IsAnAPIObject allows clients to preemptively get a reference to an API object and pass it to places that
// intend only to get a reference to that object. This simplifies the event recording interface. // intend only to get a reference to that object. This simplifies the event recording interface.
func (*ObjectReference) IsAnAPIObject() {} func (*ObjectReference) IsAnAPIObject() {}

View File

@ -20,6 +20,7 @@ import (
"github.com/GoogleCloudPlatform/kubernetes/pkg/runtime" "github.com/GoogleCloudPlatform/kubernetes/pkg/runtime"
) )
// Scheme is the default instance of runtime.Scheme to which types in the Kubernetes API are already registered.
var Scheme = runtime.NewScheme() var Scheme = runtime.NewScheme()
func init() { func init() {

View File

@ -160,22 +160,21 @@ func runTest(t *testing.T, codec runtime.Codec, source runtime.Object) {
if err != nil { if err != nil {
t.Errorf("%v: %v", name, err) t.Errorf("%v: %v", name, err)
return return
} else {
if !reflect.DeepEqual(source, obj2) {
t.Errorf("1: %v: diff: %v\nCodec: %v\nData: %s\nSource: %#v", name, util.ObjectDiff(source, obj2), codec, string(data), source)
return
}
} }
if !reflect.DeepEqual(source, obj2) {
t.Errorf("1: %v: diff: %v\nCodec: %v\nData: %s\nSource: %#v", name, util.ObjectDiff(source, obj2), codec, string(data), source)
return
}
obj3 := reflect.New(reflect.TypeOf(source).Elem()).Interface().(runtime.Object) obj3 := reflect.New(reflect.TypeOf(source).Elem()).Interface().(runtime.Object)
err = codec.DecodeInto(data, obj3) err = codec.DecodeInto(data, obj3)
if err != nil { if err != nil {
t.Errorf("2: %v: %v", name, err) t.Errorf("2: %v: %v", name, err)
return return
} else { }
if !reflect.DeepEqual(source, obj3) { if !reflect.DeepEqual(source, obj3) {
t.Errorf("3: %v: diff: %v\nCodec: %v", name, util.ObjectDiff(source, obj3), codec) t.Errorf("3: %v: diff: %v\nCodec: %v", name, util.ObjectDiff(source, obj3), codec)
return return
}
} }
} }

View File

@ -136,8 +136,9 @@ type Volume struct {
Source *VolumeSource `json:"source" yaml:"source"` Source *VolumeSource `json:"source" yaml:"source"`
} }
// VolumeSource represents the source location of a valume to mount.
// Only one of its members may be specified.
type VolumeSource struct { type VolumeSource struct {
// Only one of the following sources may be specified
// HostDir represents a pre-existing directory on the host machine that is directly // HostDir represents a pre-existing directory on the host machine that is directly
// exposed to the container. This is generally used for system agents or other privileged // exposed to the container. This is generally used for system agents or other privileged
// things that are allowed to see the host machine. Most containers will NOT need this. // things that are allowed to see the host machine. Most containers will NOT need this.
@ -170,7 +171,8 @@ const (
ProtocolUDP Protocol = "UDP" ProtocolUDP Protocol = "UDP"
) )
// GCEPersistent Disk resource. // GCEPersistentDisk represents a Persistent Disk resource in Google Compute Engine.
//
// A GCE PD must exist and be formatted before mounting to a container. // A GCE PD must exist and be formatted before mounting to a container.
// The disk must also be in the same GCE project and zone as the kubelet. // The disk must also be in the same GCE project and zone as the kubelet.
// A GCE PD can only be mounted as read/write once. // A GCE PD can only be mounted as read/write once.
@ -275,11 +277,11 @@ type LivenessProbe struct {
type PullPolicy string type PullPolicy string
const ( const (
// Always attempt to pull the latest image. Container will fail If the pull fails. // PullAlways means that kubelet always attempts to pull the latest image. Container will fail If the pull fails.
PullAlways PullPolicy = "PullAlways" PullAlways PullPolicy = "PullAlways"
// Never pull an image, only use a local image. Container will fail if the image isn't present // PullNever means that kubelet never pulls an image, but only uses a local image. Container will fail if the image isn't present
PullNever PullPolicy = "PullNever" PullNever PullPolicy = "PullNever"
// Pull if the image isn't present on disk. Container will fail if the image isn't present and the pull fails. // PullIfNotPresent means that kubelet pulls if the image isn't present on disk. Container will fail if the image isn't present and the pull fails.
PullIfNotPresent PullPolicy = "PullIfNotPresent" PullIfNotPresent PullPolicy = "PullIfNotPresent"
) )
@ -373,9 +375,10 @@ type ContainerStateTerminated struct {
FinishedAt time.Time `json:"finishedAt,omitempty" yaml:"finishedAt,omitempty"` FinishedAt time.Time `json:"finishedAt,omitempty" yaml:"finishedAt,omitempty"`
} }
// ContainerState holds a possible state of container.
// Only one of its members may be specified.
// If none of them is specified, the default one is ContainerStateWaiting.
type ContainerState struct { type ContainerState struct {
// Only one of the following ContainerState may be specified.
// If none of them is specified, the default one is ContainerStateWaiting.
Waiting *ContainerStateWaiting `json:"waiting,omitempty" yaml:"waiting,omitempty"` Waiting *ContainerStateWaiting `json:"waiting,omitempty" yaml:"waiting,omitempty"`
Running *ContainerStateRunning `json:"running,omitempty" yaml:"running,omitempty"` Running *ContainerStateRunning `json:"running,omitempty" yaml:"running,omitempty"`
Termination *ContainerStateTerminated `json:"termination,omitempty" yaml:"termination,omitempty"` Termination *ContainerStateTerminated `json:"termination,omitempty" yaml:"termination,omitempty"`
@ -406,10 +409,11 @@ type RestartPolicyOnFailure struct{}
type RestartPolicyNever struct{} type RestartPolicyNever struct{}
// RestartPolicy describes how the container should be restarted.
// Only one of the following restart policies may be specified.
// If none of the following policies is specified, the default one
// is RestartPolicyAlways.
type RestartPolicy struct { type RestartPolicy struct {
// Only one of the following restart policies may be specified.
// If none of the following policies is specified, the default one
// is RestartPolicyAlways.
Always *RestartPolicyAlways `json:"always,omitempty" yaml:"always,omitempty"` Always *RestartPolicyAlways `json:"always,omitempty" yaml:"always,omitempty"`
OnFailure *RestartPolicyOnFailure `json:"onFailure,omitempty" yaml:"onFailure,omitempty"` OnFailure *RestartPolicyOnFailure `json:"onFailure,omitempty" yaml:"onFailure,omitempty"`
Never *RestartPolicyNever `json:"never,omitempty" yaml:"never,omitempty"` Never *RestartPolicyNever `json:"never,omitempty" yaml:"never,omitempty"`
@ -808,7 +812,7 @@ const (
// CauseTypeFieldValueNotFound is used to report failure to find a requested value // CauseTypeFieldValueNotFound is used to report failure to find a requested value
// (e.g. looking up an ID). // (e.g. looking up an ID).
CauseTypeFieldValueNotFound CauseType = "FieldValueNotFound" CauseTypeFieldValueNotFound CauseType = "FieldValueNotFound"
// CauseTypeFieldValueInvalid is used to report required values that are not // CauseTypeFieldValueRequired is used to report required values that are not
// provided (e.g. empty strings, null values, or empty arrays). // provided (e.g. empty strings, null values, or empty arrays).
CauseTypeFieldValueRequired CauseType = "FieldValueRequired" CauseTypeFieldValueRequired CauseType = "FieldValueRequired"
// CauseTypeFieldValueDuplicate is used to report collisions of values that must be // CauseTypeFieldValueDuplicate is used to report collisions of values that must be

View File

@ -80,8 +80,9 @@ type Volume struct {
Source *VolumeSource `yaml:"source" json:"source"` Source *VolumeSource `yaml:"source" json:"source"`
} }
// VolumeSource represents the source location of a valume to mount.
// Only one of its members may be specified.
type VolumeSource struct { type VolumeSource struct {
// Only one of the following sources may be specified
// HostDir represents a pre-existing directory on the host machine that is directly // HostDir represents a pre-existing directory on the host machine that is directly
// exposed to the container. This is generally used for system agents or other privileged // exposed to the container. This is generally used for system agents or other privileged
// things that are allowed to see the host machine. Most containers will NOT need this. // things that are allowed to see the host machine. Most containers will NOT need this.
@ -114,9 +115,10 @@ const (
ProtocolUDP Protocol = "UDP" ProtocolUDP Protocol = "UDP"
) )
// GCEPersistent Disk resource. // GCEPersistentDisk represents a Persistent Disk resource in Google Compute Engine.
// A GCE PD must exist before mounting to a container. The disk must //
// also be in the same GCE project and zone as the kubelet. // A GCE PD must exist and be formatted before mounting to a container.
// The disk must also be in the same GCE project and zone as the kubelet.
// A GCE PD can only be mounted as read/write once. // A GCE PD can only be mounted as read/write once.
type GCEPersistentDisk struct { type GCEPersistentDisk struct {
// Unique name of the PD resource. Used to identify the disk in GCE // Unique name of the PD resource. Used to identify the disk in GCE
@ -228,11 +230,11 @@ type LivenessProbe struct {
type PullPolicy string type PullPolicy string
const ( const (
// Always attempt to pull the latest image. Container will fail If the pull fails. // PullAlways means that kubelet always attempts to pull the latest image. Container will fail If the pull fails.
PullAlways PullPolicy = "PullAlways" PullAlways PullPolicy = "PullAlways"
// Never pull an image, only use a local image. Container will fail if the image isn't present // PullNever means that kubelet never pulls an image, but only uses a local image. Container will fail if the image isn't present
PullNever PullPolicy = "PullNever" PullNever PullPolicy = "PullNever"
// Pull if the image isn't present on disk. Container will fail if the image isn't present and the pull fails. // PullIfNotPresent means that kubelet pulls if the image isn't present on disk. Container will fail if the image isn't present and the pull fails.
PullIfNotPresent PullPolicy = "PullIfNotPresent" PullIfNotPresent PullPolicy = "PullIfNotPresent"
) )
@ -337,9 +339,10 @@ type ContainerStateTerminated struct {
FinishedAt time.Time `json:"finishedAt,omitempty" yaml:"finishedAt,omitempty"` FinishedAt time.Time `json:"finishedAt,omitempty" yaml:"finishedAt,omitempty"`
} }
// ContainerState holds a possible state of container.
// Only one of its members may be specified.
// If none of them is specified, the default one is ContainerStateWaiting.
type ContainerState struct { type ContainerState struct {
// Only one of the following ContainerState may be specified.
// If none of them is specified, the default one is ContainerStateWaiting.
Waiting *ContainerStateWaiting `json:"waiting,omitempty" yaml:"waiting,omitempty"` Waiting *ContainerStateWaiting `json:"waiting,omitempty" yaml:"waiting,omitempty"`
Running *ContainerStateRunning `json:"running,omitempty" yaml:"running,omitempty"` Running *ContainerStateRunning `json:"running,omitempty" yaml:"running,omitempty"`
Termination *ContainerStateTerminated `json:"termination,omitempty" yaml:"termination,omitempty"` Termination *ContainerStateTerminated `json:"termination,omitempty" yaml:"termination,omitempty"`
@ -657,7 +660,7 @@ const (
// CauseTypeFieldValueNotFound is used to report failure to find a requested value // CauseTypeFieldValueNotFound is used to report failure to find a requested value
// (e.g. looking up an ID). // (e.g. looking up an ID).
CauseTypeFieldValueNotFound CauseType = "FieldValueNotFound" CauseTypeFieldValueNotFound CauseType = "FieldValueNotFound"
// CauseTypeFieldValueInvalid is used to report required values that are not // CauseTypeFieldValueRequired is used to report required values that are not
// provided (e.g. empty strings, null values, or empty arrays). // provided (e.g. empty strings, null values, or empty arrays).
CauseTypeFieldValueRequired CauseType = "FieldValueRequired" CauseTypeFieldValueRequired CauseType = "FieldValueRequired"
// CauseTypeFieldValueDuplicate is used to report collisions of values that must be // CauseTypeFieldValueDuplicate is used to report collisions of values that must be

View File

@ -56,8 +56,9 @@ type Volume struct {
Source *VolumeSource `yaml:"source" json:"source"` Source *VolumeSource `yaml:"source" json:"source"`
} }
// VolumeSource represents the source location of a valume to mount.
// Only one of its members may be specified.
type VolumeSource struct { type VolumeSource struct {
// Only one of the following sources may be specified
// HostDir represents a pre-existing directory on the host machine that is directly // HostDir represents a pre-existing directory on the host machine that is directly
// exposed to the container. This is generally used for system agents or other privileged // exposed to the container. This is generally used for system agents or other privileged
// things that are allowed to see the host machine. Most containers will NOT need this. // things that are allowed to see the host machine. Most containers will NOT need this.
@ -105,9 +106,10 @@ type Port struct {
HostIP string `yaml:"hostIP,omitempty" json:"hostIP,omitempty"` HostIP string `yaml:"hostIP,omitempty" json:"hostIP,omitempty"`
} }
// GCEPersistent Disk resource. // GCEPersistentDisk represents a Persistent Disk resource in Google Compute Engine.
// A GCE PD must exist before mounting to a container. The disk must //
// also be in the same GCE project and zone as the kubelet. // A GCE PD must exist and be formatted before mounting to a container.
// The disk must also be in the same GCE project and zone as the kubelet.
// A GCE PD can only be mounted as read/write once. // A GCE PD can only be mounted as read/write once.
type GCEPersistentDisk struct { type GCEPersistentDisk struct {
// Unique name of the PD resource. Used to identify the disk in GCE // Unique name of the PD resource. Used to identify the disk in GCE
@ -194,11 +196,11 @@ type LivenessProbe struct {
type PullPolicy string type PullPolicy string
const ( const (
// Always attempt to pull the latest image. Container will fail If the pull fails. // PullAlways means that kubelet always attempts to pull the latest image. Container will fail If the pull fails.
PullAlways PullPolicy = "PullAlways" PullAlways PullPolicy = "PullAlways"
// Never pull an image, only use a local image. Container will fail if the image isn't present // PullNever means that kubelet never pulls an image, but only uses a local image. Container will fail if the image isn't present
PullNever PullPolicy = "PullNever" PullNever PullPolicy = "PullNever"
// Pull if the image isn't present on disk. Container will fail if the image isn't present and the pull fails. // PullIfNotPresent means that kubelet pulls if the image isn't present on disk. Container will fail if the image isn't present and the pull fails.
PullIfNotPresent PullPolicy = "PullIfNotPresent" PullIfNotPresent PullPolicy = "PullIfNotPresent"
) )
@ -302,9 +304,10 @@ type ContainerStateTerminated struct {
FinishedAt time.Time `json:"finishedAt,omitempty" yaml:"finishedAt,omitempty"` FinishedAt time.Time `json:"finishedAt,omitempty" yaml:"finishedAt,omitempty"`
} }
// ContainerState holds a possible state of container.
// Only one of its members may be specified.
// If none of them is specified, the default one is ContainerStateWaiting.
type ContainerState struct { type ContainerState struct {
// Only one of the following ContainerState may be specified.
// If none of them is specified, the default one is ContainerStateWaiting.
Waiting *ContainerStateWaiting `json:"waiting,omitempty" yaml:"waiting,omitempty"` Waiting *ContainerStateWaiting `json:"waiting,omitempty" yaml:"waiting,omitempty"`
Running *ContainerStateRunning `json:"running,omitempty" yaml:"running,omitempty"` Running *ContainerStateRunning `json:"running,omitempty" yaml:"running,omitempty"`
Termination *ContainerStateTerminated `json:"termination,omitempty" yaml:"termination,omitempty"` Termination *ContainerStateTerminated `json:"termination,omitempty" yaml:"termination,omitempty"`
@ -632,7 +635,7 @@ const (
// CauseTypeFieldValueNotFound is used to report failure to find a requested value // CauseTypeFieldValueNotFound is used to report failure to find a requested value
// (e.g. looking up an ID). // (e.g. looking up an ID).
CauseTypeFieldValueNotFound CauseType = "FieldValueNotFound" CauseTypeFieldValueNotFound CauseType = "FieldValueNotFound"
// CauseTypeFieldValueInvalid is used to report required values that are not // CauseTypeFieldValueRequired is used to report required values that are not
// provided (e.g. empty strings, null values, or empty arrays). // provided (e.g. empty strings, null values, or empty arrays).
CauseTypeFieldValueRequired CauseType = "FieldValueRequired" CauseTypeFieldValueRequired CauseType = "FieldValueRequired"
// CauseTypeFieldValueDuplicate is used to report collisions of values that must be // CauseTypeFieldValueDuplicate is used to report collisions of values that must be

View File

@ -166,8 +166,9 @@ type Volume struct {
Source *VolumeSource `json:"source" yaml:"source"` Source *VolumeSource `json:"source" yaml:"source"`
} }
// VolumeSource represents the source location of a valume to mount.
// Only one of its members may be specified.
type VolumeSource struct { type VolumeSource struct {
// Only one of the following sources may be specified
// HostDir represents a pre-existing directory on the host machine that is directly // HostDir represents a pre-existing directory on the host machine that is directly
// exposed to the container. This is generally used for system agents or other privileged // exposed to the container. This is generally used for system agents or other privileged
// things that are allowed to see the host machine. Most containers will NOT need this. // things that are allowed to see the host machine. Most containers will NOT need this.
@ -200,7 +201,8 @@ const (
ProtocolUDP Protocol = "UDP" ProtocolUDP Protocol = "UDP"
) )
// GCEPersistent Disk resource. // GCEPersistentDisk represents a Persistent Disk resource in Google Compute Engine.
//
// A GCE PD must exist and be formatted before mounting to a container. // A GCE PD must exist and be formatted before mounting to a container.
// The disk must also be in the same GCE project and zone as the kubelet. // The disk must also be in the same GCE project and zone as the kubelet.
// A GCE PD can only be mounted as read/write once. // A GCE PD can only be mounted as read/write once.
@ -306,11 +308,11 @@ type LivenessProbe struct {
type PullPolicy string type PullPolicy string
const ( const (
// Always attempt to pull the latest image. Container will fail If the pull fails. // PullAlways means that kubelet always attempts to pull the latest image. Container will fail If the pull fails.
PullAlways PullPolicy = "PullAlways" PullAlways PullPolicy = "PullAlways"
// Never pull an image, only use a local image. Container will fail if the image isn't present // PullNever means that kubelet never pulls an image, but only uses a local image. Container will fail if the image isn't present
PullNever PullPolicy = "PullNever" PullNever PullPolicy = "PullNever"
// Pull if the image isn't present on disk. Container will fail if the image isn't present and the pull fails. // PullIfNotPresent means that kubelet pulls if the image isn't present on disk. Container will fail if the image isn't present and the pull fails.
PullIfNotPresent PullPolicy = "PullIfNotPresent" PullIfNotPresent PullPolicy = "PullIfNotPresent"
) )
@ -402,9 +404,10 @@ type ContainerStateTerminated struct {
FinishedAt time.Time `json:"finishedAt,omitempty" yaml:"finishedAt,omitempty"` FinishedAt time.Time `json:"finishedAt,omitempty" yaml:"finishedAt,omitempty"`
} }
// ContainerState holds a possible state of container.
// Only one of its members may be specified.
// If none of them is specified, the default one is ContainerStateWaiting.
type ContainerState struct { type ContainerState struct {
// Only one of the following ContainerState may be specified.
// If none of them is specified, the default one is ContainerStateWaiting.
Waiting *ContainerStateWaiting `json:"waiting,omitempty" yaml:"waiting,omitempty"` Waiting *ContainerStateWaiting `json:"waiting,omitempty" yaml:"waiting,omitempty"`
Running *ContainerStateRunning `json:"running,omitempty" yaml:"running,omitempty"` Running *ContainerStateRunning `json:"running,omitempty" yaml:"running,omitempty"`
Termination *ContainerStateTerminated `json:"termination,omitempty" yaml:"termination,omitempty"` Termination *ContainerStateTerminated `json:"termination,omitempty" yaml:"termination,omitempty"`
@ -852,7 +855,7 @@ const (
// CauseTypeFieldValueNotFound is used to report failure to find a requested value // CauseTypeFieldValueNotFound is used to report failure to find a requested value
// (e.g. looking up an ID). // (e.g. looking up an ID).
CauseTypeFieldValueNotFound CauseType = "FieldValueNotFound" CauseTypeFieldValueNotFound CauseType = "FieldValueNotFound"
// CauseTypeFieldValueInvalid is used to report required values that are not // CauseTypeFieldValueRequired is used to report required values that are not
// provided (e.g. empty strings, null values, or empty arrays). // provided (e.g. empty strings, null values, or empty arrays).
CauseTypeFieldValueRequired CauseType = "FieldValueRequired" CauseTypeFieldValueRequired CauseType = "FieldValueRequired"
// CauseTypeFieldValueDuplicate is used to report collisions of values that must be // CauseTypeFieldValueDuplicate is used to report collisions of values that must be

View File

@ -28,6 +28,7 @@ import (
"github.com/GoogleCloudPlatform/kubernetes/pkg/util" "github.com/GoogleCloudPlatform/kubernetes/pkg/util"
) )
// ServiceLister is an abstract interface for testing.
type ServiceLister interface { type ServiceLister interface {
ListServices(api.Context) (*api.ServiceList, error) ListServices(api.Context) (*api.ServiceList, error)
} }