diff --git a/pkg/api/types.go b/pkg/api/types.go index 88827128df4..149c30cfbc2 100644 --- a/pkg/api/types.go +++ b/pkg/api/types.go @@ -324,6 +324,7 @@ func (*ReplicationControllerList) IsAnAPIObject() {} type ReplicationController struct { JSONBase `json:",inline" yaml:",inline"` DesiredState ReplicationControllerState `json:"desiredState,omitempty" yaml:"desiredState,omitempty"` + CurrentState ReplicationControllerState `json:"currentState,omitempty" yaml:"currentState,omitempty"` Labels map[string]string `json:"labels,omitempty" yaml:"labels,omitempty"` } diff --git a/pkg/api/v1beta1/types.go b/pkg/api/v1beta1/types.go index bc2a9c34fe7..3f58d1e12ef 100644 --- a/pkg/api/v1beta1/types.go +++ b/pkg/api/v1beta1/types.go @@ -17,10 +17,10 @@ limitations under the License. package v1beta1 import ( - "github.com/fsouza/go-dockerclient" "github.com/GoogleCloudPlatform/kubernetes/pkg/runtime" "github.com/GoogleCloudPlatform/kubernetes/pkg/util" "github.com/GoogleCloudPlatform/kubernetes/pkg/watch" + "github.com/fsouza/go-dockerclient" ) // Common string formats @@ -337,6 +337,7 @@ func (*ReplicationControllerList) IsAnAPIObject() {} type ReplicationController struct { JSONBase `json:",inline" yaml:",inline"` DesiredState ReplicationControllerState `json:"desiredState,omitempty" yaml:"desiredState,omitempty"` + CurrentState ReplicationControllerState `json:"currentState,omitempty" yaml:"currentState,omitempty"` Labels map[string]string `json:"labels,omitempty" yaml:"labels,omitempty"` } diff --git a/pkg/registry/controller/rest.go b/pkg/registry/controller/rest.go index d7e6f19f3db..703d8f0a99e 100644 --- a/pkg/registry/controller/rest.go +++ b/pkg/registry/controller/rest.go @@ -92,6 +92,7 @@ func (rs *REST) Get(id string) (runtime.Object, error) { if err != nil { return nil, err } + rs.fillCurrentState(&controller) return controller, err } @@ -104,6 +105,7 @@ func (rs *REST) List(selector labels.Selector) (runtime.Object, error) { filtered := []api.ReplicationController{} for _, controller := range controllers.Items { if selector.Matches(labels.Set(controller.Labels)) { + rs.fillCurrentState(&controller) filtered = append(filtered, controller) } } @@ -164,3 +166,11 @@ func (rs *REST) waitForController(ctrl *api.ReplicationController) (runtime.Obje } return ctrl, nil } + +func (rs *REST) fillCurrentState(ctrl *api.ReplicationController) error { + list, err := rs.podLister.ListPods(ctrl.DesiredState.ReplicaSelector) + if err != nil { + return err + } + ctrl.CurrentState.Replicas = len(list.Items) +}