Add a NamespacePhase to Namespace

This commit is contained in:
derekwaynecarr 2015-03-10 11:21:09 -04:00
parent 4dc1826ab8
commit 7de138a9bb
14 changed files with 104 additions and 2 deletions

View File

@ -198,6 +198,9 @@ func FuzzerFor(t *testing.T, version string, src rand.Source) *fuzz.Fuzzer {
c.FuzzNoCustom(s) // fuzz self without calling this function again
s.Type = api.SecretTypeOpaque
},
func(s *api.NamespaceStatus, c fuzz.Continue) {
s.Phase = api.NamespaceActive
},
func(ep *api.Endpoint, c fuzz.Continue) {
// TODO: If our API used a particular type for IP fields we could just catch that here.
ep.IP = fmt.Sprintf("%d.%d.%d.%d", c.Rand.Intn(256), c.Rand.Intn(256), c.Rand.Intn(256), c.Rand.Intn(256))

View File

@ -895,8 +895,20 @@ type NamespaceSpec struct {
// NamespaceStatus is information about the current status of a Namespace.
type NamespaceStatus struct {
// Phase is the current lifecycle phase of the namespace.
Phase NamespacePhase `json:"phase,omitempty"`
}
type NamespacePhase string
// These are the valid phases of a namespace.
const (
// NamespaceActive means the namespace is available for use in the system
NamespaceActive NamespacePhase = "Active"
// NamespaceTerminating means the namespace is undergoing graceful termination
NamespaceTerminating NamespacePhase = "Terminating"
)
// A namespace provides a scope for Names.
// Use of multiple namespaces is optional
type Namespace struct {

View File

@ -773,6 +773,9 @@ func init() {
if err := s.Convert(&in.Spec, &out.Spec, 0); err != nil {
return err
}
if err := s.Convert(&in.Status, &out.Status, 0); err != nil {
return err
}
if err := s.Convert(&in.Labels, &out.ObjectMeta.Labels, 0); err != nil {
return err
}

View File

@ -95,5 +95,10 @@ func init() {
obj.Path = "/"
}
},
func(obj *NamespaceStatus) {
if obj.Phase == "" {
obj.Phase = NamespaceActive
}
},
)
}

View File

@ -112,3 +112,13 @@ func TestSetDefaulEndpointsProtocol(t *testing.T) {
t.Errorf("Expected protocol %s, got %s", current.ProtocolTCP, out.Protocol)
}
}
func TestSetDefaultNamespace(t *testing.T) {
s := &current.Namespace{}
obj2 := roundTrip(t, runtime.Object(s))
s2 := obj2.(*current.Namespace)
if s2.Status.Phase != current.NamespaceActive {
t.Errorf("Expected phase %v, got %v", current.NamespaceActive, s2.Status.Phase)
}
}

View File

@ -727,8 +727,20 @@ type NamespaceSpec struct {
// NamespaceStatus is information about the current status of a Namespace.
type NamespaceStatus struct {
// Phase is the current lifecycle phase of the namespace.
Phase NamespacePhase `json:"phase,omitempty" description:"phase is the current lifecycle phase of the namespace"`
}
type NamespacePhase string
// These are the valid phases of a namespace.
const (
// NamespaceActive means the namespace is available for use in the system
NamespaceActive NamespacePhase = "Active"
// NamespaceTerminating means the namespace is undergoing graceful termination
NamespaceTerminating NamespacePhase = "Terminating"
)
// A namespace provides a scope for Names.
// Use of multiple namespaces is optional
type Namespace struct {

View File

@ -693,6 +693,9 @@ func init() {
if err := s.Convert(&in.Spec, &out.Spec, 0); err != nil {
return err
}
if err := s.Convert(&in.Status, &out.Status, 0); err != nil {
return err
}
if err := s.Convert(&in.Labels, &out.ObjectMeta.Labels, 0); err != nil {
return err
}

View File

@ -97,5 +97,10 @@ func init() {
obj.Path = "/"
}
},
func(obj *NamespaceStatus) {
if obj.Phase == "" {
obj.Phase = NamespaceActive
}
},
)
}

View File

@ -112,3 +112,13 @@ func TestSetDefaulEndpointsProtocol(t *testing.T) {
t.Errorf("Expected protocol %s, got %s", current.ProtocolTCP, out.Protocol)
}
}
func TestSetDefaultNamespace(t *testing.T) {
s := &current.Namespace{}
obj2 := roundTrip(t, runtime.Object(s))
s2 := obj2.(*current.Namespace)
if s2.Status.Phase != current.NamespaceActive {
t.Errorf("Expected phase %v, got %v", current.NamespaceActive, s2.Status.Phase)
}
}

View File

@ -743,8 +743,20 @@ type NamespaceSpec struct {
// NamespaceStatus is information about the current status of a Namespace.
type NamespaceStatus struct {
// Phase is the current lifecycle phase of the namespace.
Phase NamespacePhase `json:"phase,omitempty" description:"phase is the current lifecycle phase of the namespace"`
}
type NamespacePhase string
// These are the valid phases of a namespace.
const (
// NamespaceActive means the namespace is available for use in the system
NamespaceActive NamespacePhase = "Active"
// NamespaceTerminating means the namespace is undergoing graceful termination
NamespaceTerminating NamespacePhase = "Terminating"
)
// A namespace provides a scope for Names.
// Use of multiple namespaces is optional.
//

View File

@ -96,5 +96,10 @@ func init() {
obj.ContainerPort = util.NewIntOrStringFromInt(obj.Port)
}
},
func(obj *NamespaceStatus) {
if obj.Phase == "" {
obj.Phase = NamespaceActive
}
},
)
}

View File

@ -129,3 +129,13 @@ func TestSetDefaulServiceDestinationPort(t *testing.T) {
t.Errorf("Expected ContainerPort to be unchanged, got %s", out.Spec.ContainerPort)
}
}
func TestSetDefaultNamespace(t *testing.T) {
s := &current.Namespace{}
obj2 := roundTrip(t, runtime.Object(s))
s2 := obj2.(*current.Namespace)
if s2.Status.Phase != current.NamespaceActive {
t.Errorf("Expected phase %v, got %v", current.NamespaceActive, s2.Status.Phase)
}
}

View File

@ -916,8 +916,20 @@ type NamespaceSpec struct {
// NamespaceStatus is information about the current status of a Namespace.
type NamespaceStatus struct {
// Phase is the current lifecycle phase of the namespace.
Phase NamespacePhase `json:"phase,omitempty" description:"phase is the current lifecycle phase of the namespace"`
}
type NamespacePhase string
// These are the valid phases of a namespace.
const (
// NamespaceActive means the namespace is available for use in the system
NamespaceActive NamespacePhase = "Active"
// NamespaceTerminating means the namespace is undergoing graceful termination
NamespaceTerminating NamespacePhase = "Terminating"
)
// A namespace provides a scope for Names.
// Use of multiple namespaces is optional
type Namespace struct {

View File

@ -237,7 +237,7 @@ var statusColumns = []string{"STATUS"}
var eventColumns = []string{"FIRSTSEEN", "LASTSEEN", "COUNT", "NAME", "KIND", "SUBOBJECT", "REASON", "SOURCE", "MESSAGE"}
var limitRangeColumns = []string{"NAME"}
var resourceQuotaColumns = []string{"NAME"}
var namespaceColumns = []string{"NAME", "LABELS"}
var namespaceColumns = []string{"NAME", "LABELS", "STATUS"}
var secretColumns = []string{"NAME", "DATA"}
// addDefaultHandlers adds print handlers for default Kubernetes types.
@ -402,7 +402,7 @@ func printEndpointsList(list *api.EndpointsList, w io.Writer) error {
}
func printNamespace(item *api.Namespace, w io.Writer) error {
_, err := fmt.Fprintf(w, "%s\t%s\n", item.Name, formatLabels(item.Labels))
_, err := fmt.Fprintf(w, "%s\t%s\t%s\n", item.Name, formatLabels(item.Labels), item.Status.Phase)
return err
}