mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-24 20:24:09 +00:00
Add a NamespacePhase to Namespace
This commit is contained in:
parent
4dc1826ab8
commit
7de138a9bb
@ -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
|
c.FuzzNoCustom(s) // fuzz self without calling this function again
|
||||||
s.Type = api.SecretTypeOpaque
|
s.Type = api.SecretTypeOpaque
|
||||||
},
|
},
|
||||||
|
func(s *api.NamespaceStatus, c fuzz.Continue) {
|
||||||
|
s.Phase = api.NamespaceActive
|
||||||
|
},
|
||||||
func(ep *api.Endpoint, c fuzz.Continue) {
|
func(ep *api.Endpoint, c fuzz.Continue) {
|
||||||
// TODO: If our API used a particular type for IP fields we could just catch that here.
|
// 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))
|
ep.IP = fmt.Sprintf("%d.%d.%d.%d", c.Rand.Intn(256), c.Rand.Intn(256), c.Rand.Intn(256), c.Rand.Intn(256))
|
||||||
|
@ -895,8 +895,20 @@ type NamespaceSpec struct {
|
|||||||
|
|
||||||
// NamespaceStatus is information about the current status of a Namespace.
|
// NamespaceStatus is information about the current status of a Namespace.
|
||||||
type NamespaceStatus struct {
|
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.
|
// A namespace provides a scope for Names.
|
||||||
// Use of multiple namespaces is optional
|
// Use of multiple namespaces is optional
|
||||||
type Namespace struct {
|
type Namespace struct {
|
||||||
|
@ -773,6 +773,9 @@ func init() {
|
|||||||
if err := s.Convert(&in.Spec, &out.Spec, 0); err != nil {
|
if err := s.Convert(&in.Spec, &out.Spec, 0); err != nil {
|
||||||
return err
|
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 {
|
if err := s.Convert(&in.Labels, &out.ObjectMeta.Labels, 0); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -95,5 +95,10 @@ func init() {
|
|||||||
obj.Path = "/"
|
obj.Path = "/"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
func(obj *NamespaceStatus) {
|
||||||
|
if obj.Phase == "" {
|
||||||
|
obj.Phase = NamespaceActive
|
||||||
|
}
|
||||||
|
},
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
@ -112,3 +112,13 @@ func TestSetDefaulEndpointsProtocol(t *testing.T) {
|
|||||||
t.Errorf("Expected protocol %s, got %s", current.ProtocolTCP, out.Protocol)
|
t.Errorf("Expected protocol %s, got %s", current.ProtocolTCP, out.Protocol)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestSetDefaultNamespace(t *testing.T) {
|
||||||
|
s := ¤t.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)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -727,8 +727,20 @@ type NamespaceSpec struct {
|
|||||||
|
|
||||||
// NamespaceStatus is information about the current status of a Namespace.
|
// NamespaceStatus is information about the current status of a Namespace.
|
||||||
type NamespaceStatus struct {
|
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.
|
// A namespace provides a scope for Names.
|
||||||
// Use of multiple namespaces is optional
|
// Use of multiple namespaces is optional
|
||||||
type Namespace struct {
|
type Namespace struct {
|
||||||
|
@ -693,6 +693,9 @@ func init() {
|
|||||||
if err := s.Convert(&in.Spec, &out.Spec, 0); err != nil {
|
if err := s.Convert(&in.Spec, &out.Spec, 0); err != nil {
|
||||||
return err
|
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 {
|
if err := s.Convert(&in.Labels, &out.ObjectMeta.Labels, 0); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -97,5 +97,10 @@ func init() {
|
|||||||
obj.Path = "/"
|
obj.Path = "/"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
func(obj *NamespaceStatus) {
|
||||||
|
if obj.Phase == "" {
|
||||||
|
obj.Phase = NamespaceActive
|
||||||
|
}
|
||||||
|
},
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
@ -112,3 +112,13 @@ func TestSetDefaulEndpointsProtocol(t *testing.T) {
|
|||||||
t.Errorf("Expected protocol %s, got %s", current.ProtocolTCP, out.Protocol)
|
t.Errorf("Expected protocol %s, got %s", current.ProtocolTCP, out.Protocol)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestSetDefaultNamespace(t *testing.T) {
|
||||||
|
s := ¤t.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)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -743,8 +743,20 @@ type NamespaceSpec struct {
|
|||||||
|
|
||||||
// NamespaceStatus is information about the current status of a Namespace.
|
// NamespaceStatus is information about the current status of a Namespace.
|
||||||
type NamespaceStatus struct {
|
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.
|
// A namespace provides a scope for Names.
|
||||||
// Use of multiple namespaces is optional.
|
// Use of multiple namespaces is optional.
|
||||||
//
|
//
|
||||||
|
@ -96,5 +96,10 @@ func init() {
|
|||||||
obj.ContainerPort = util.NewIntOrStringFromInt(obj.Port)
|
obj.ContainerPort = util.NewIntOrStringFromInt(obj.Port)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
func(obj *NamespaceStatus) {
|
||||||
|
if obj.Phase == "" {
|
||||||
|
obj.Phase = NamespaceActive
|
||||||
|
}
|
||||||
|
},
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
@ -129,3 +129,13 @@ func TestSetDefaulServiceDestinationPort(t *testing.T) {
|
|||||||
t.Errorf("Expected ContainerPort to be unchanged, got %s", out.Spec.ContainerPort)
|
t.Errorf("Expected ContainerPort to be unchanged, got %s", out.Spec.ContainerPort)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestSetDefaultNamespace(t *testing.T) {
|
||||||
|
s := ¤t.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)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -916,8 +916,20 @@ type NamespaceSpec struct {
|
|||||||
|
|
||||||
// NamespaceStatus is information about the current status of a Namespace.
|
// NamespaceStatus is information about the current status of a Namespace.
|
||||||
type NamespaceStatus struct {
|
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.
|
// A namespace provides a scope for Names.
|
||||||
// Use of multiple namespaces is optional
|
// Use of multiple namespaces is optional
|
||||||
type Namespace struct {
|
type Namespace struct {
|
||||||
|
@ -237,7 +237,7 @@ var statusColumns = []string{"STATUS"}
|
|||||||
var eventColumns = []string{"FIRSTSEEN", "LASTSEEN", "COUNT", "NAME", "KIND", "SUBOBJECT", "REASON", "SOURCE", "MESSAGE"}
|
var eventColumns = []string{"FIRSTSEEN", "LASTSEEN", "COUNT", "NAME", "KIND", "SUBOBJECT", "REASON", "SOURCE", "MESSAGE"}
|
||||||
var limitRangeColumns = []string{"NAME"}
|
var limitRangeColumns = []string{"NAME"}
|
||||||
var resourceQuotaColumns = []string{"NAME"}
|
var resourceQuotaColumns = []string{"NAME"}
|
||||||
var namespaceColumns = []string{"NAME", "LABELS"}
|
var namespaceColumns = []string{"NAME", "LABELS", "STATUS"}
|
||||||
var secretColumns = []string{"NAME", "DATA"}
|
var secretColumns = []string{"NAME", "DATA"}
|
||||||
|
|
||||||
// addDefaultHandlers adds print handlers for default Kubernetes types.
|
// 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 {
|
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
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user