Merge pull request #1058 from olivierlemasle/fix-1055
Add kube_replicationcontroller_owner
This commit is contained in:
commit
3573269a32
|
|
@ -10,3 +10,4 @@
|
|||
| kube_replicationcontroller_spec_replicas | Gauge | `replicationcontroller`=<replicationcontroller-name> <br> `namespace`=<replicationcontroller-namespace> | STABLE |
|
||||
| kube_replicationcontroller_metadata_generation | Gauge | `replicationcontroller`=<replicationcontroller-name> <br> `namespace`=<replicationcontroller-namespace> | STABLE |
|
||||
| kube_replicationcontroller_created | Gauge | `replicationcontroller`=<replicationcontroller-name> <br> `namespace`=<replicationcontroller-namespace> | STABLE |
|
||||
| kube_replicationcontroller_owner | Gauge | `replicationcontroller`=<replicationcontroller-name> <br> `namespace`=<replicationcontroller-namespace> <br> `owner_kind`=<owner kind> <br> `owner_name`=<owner name> <br> `owner_is_controller`=<whether owner is controller> | EXPERIMENTAL |
|
||||
|
|
|
|||
|
|
@ -17,6 +17,8 @@ limitations under the License.
|
|||
package store
|
||||
|
||||
import (
|
||||
"strconv"
|
||||
|
||||
v1 "k8s.io/api/core/v1"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/apimachinery/pkg/runtime"
|
||||
|
|
@ -152,6 +154,41 @@ var (
|
|||
}
|
||||
}),
|
||||
},
|
||||
{
|
||||
Name: "kube_replicationcontroller_owner",
|
||||
Type: metric.Gauge,
|
||||
Help: "Information about the ReplicationController's owner.",
|
||||
GenerateFunc: wrapReplicationControllerFunc(func(r *v1.ReplicationController) *metric.Family {
|
||||
labelKeys := []string{"owner_kind", "owner_name", "owner_is_controller"}
|
||||
ms := []*metric.Metric{}
|
||||
|
||||
owners := r.GetOwnerReferences()
|
||||
if len(owners) == 0 {
|
||||
ms = append(ms, &metric.Metric{
|
||||
LabelKeys: labelKeys,
|
||||
LabelValues: []string{"<none>", "<none>", "<none>"},
|
||||
Value: 1,
|
||||
})
|
||||
} else {
|
||||
for _, owner := range owners {
|
||||
ownerIsController := "false"
|
||||
if owner.Controller != nil {
|
||||
ownerIsController = strconv.FormatBool(*owner.Controller)
|
||||
}
|
||||
|
||||
ms = append(ms, &metric.Metric{
|
||||
LabelKeys: labelKeys,
|
||||
LabelValues: []string{owner.Kind, owner.Name, ownerIsController},
|
||||
Value: 1,
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
return &metric.Family{
|
||||
Metrics: ms,
|
||||
}
|
||||
}),
|
||||
},
|
||||
}
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -29,9 +29,12 @@ import (
|
|||
var (
|
||||
rc1Replicas int32 = 5
|
||||
rc2Replicas int32
|
||||
rc3Replicas int32
|
||||
)
|
||||
|
||||
func TestReplicationControllerStore(t *testing.T) {
|
||||
var trueValue = true
|
||||
|
||||
// Fixed metadata on type and help text. We prepend this to every expected
|
||||
// output so we only have to modify a single place when doing adjustments.
|
||||
const metadata = `
|
||||
|
|
@ -39,6 +42,8 @@ func TestReplicationControllerStore(t *testing.T) {
|
|||
# TYPE kube_replicationcontroller_created gauge
|
||||
# HELP kube_replicationcontroller_metadata_generation Sequence number representing a specific generation of the desired state.
|
||||
# TYPE kube_replicationcontroller_metadata_generation gauge
|
||||
# HELP kube_replicationcontroller_owner Information about the ReplicationController's owner.
|
||||
# TYPE kube_replicationcontroller_owner gauge
|
||||
# HELP kube_replicationcontroller_status_replicas The number of replicas per ReplicationController.
|
||||
# TYPE kube_replicationcontroller_status_replicas gauge
|
||||
# HELP kube_replicationcontroller_status_fully_labeled_replicas The number of fully labeled replicas per ReplicationController.
|
||||
|
|
@ -60,6 +65,13 @@ func TestReplicationControllerStore(t *testing.T) {
|
|||
CreationTimestamp: metav1.Time{Time: time.Unix(1500000000, 0)},
|
||||
Namespace: "ns1",
|
||||
Generation: 21,
|
||||
OwnerReferences: []metav1.OwnerReference{
|
||||
{
|
||||
Kind: "DeploymentConfig",
|
||||
Name: "dc-name",
|
||||
Controller: &trueValue,
|
||||
},
|
||||
},
|
||||
},
|
||||
Status: v1.ReplicationControllerStatus{
|
||||
Replicas: 5,
|
||||
|
|
@ -75,6 +87,7 @@ func TestReplicationControllerStore(t *testing.T) {
|
|||
Want: metadata + `
|
||||
kube_replicationcontroller_created{namespace="ns1",replicationcontroller="rc1"} 1.5e+09
|
||||
kube_replicationcontroller_metadata_generation{namespace="ns1",replicationcontroller="rc1"} 21
|
||||
kube_replicationcontroller_owner{namespace="ns1",owner_is_controller="true",owner_kind="DeploymentConfig",owner_name="dc-name",replicationcontroller="rc1"} 1
|
||||
kube_replicationcontroller_status_replicas{namespace="ns1",replicationcontroller="rc1"} 5
|
||||
kube_replicationcontroller_status_observed_generation{namespace="ns1",replicationcontroller="rc1"} 1
|
||||
kube_replicationcontroller_status_fully_labeled_replicas{namespace="ns1",replicationcontroller="rc1"} 10
|
||||
|
|
@ -103,12 +116,49 @@ func TestReplicationControllerStore(t *testing.T) {
|
|||
},
|
||||
Want: metadata + `
|
||||
kube_replicationcontroller_metadata_generation{namespace="ns2",replicationcontroller="rc2"} 14
|
||||
kube_replicationcontroller_owner{namespace="ns2",owner_is_controller="<none>",owner_kind="<none>",owner_name="<none>",replicationcontroller="rc2"} 1
|
||||
kube_replicationcontroller_status_replicas{namespace="ns2",replicationcontroller="rc2"} 0
|
||||
kube_replicationcontroller_status_observed_generation{namespace="ns2",replicationcontroller="rc2"} 5
|
||||
kube_replicationcontroller_status_fully_labeled_replicas{namespace="ns2",replicationcontroller="rc2"} 5
|
||||
kube_replicationcontroller_status_ready_replicas{namespace="ns2",replicationcontroller="rc2"} 0
|
||||
kube_replicationcontroller_status_available_replicas{namespace="ns2",replicationcontroller="rc2"} 0
|
||||
kube_replicationcontroller_spec_replicas{namespace="ns2",replicationcontroller="rc2"} 0
|
||||
`,
|
||||
},
|
||||
{
|
||||
Obj: &v1.ReplicationController{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
Name: "rc3",
|
||||
Namespace: "ns3",
|
||||
Generation: 5,
|
||||
OwnerReferences: []metav1.OwnerReference{
|
||||
{
|
||||
Kind: "DeploymentConfig",
|
||||
Name: "dc-test",
|
||||
Controller: nil,
|
||||
},
|
||||
},
|
||||
},
|
||||
Status: v1.ReplicationControllerStatus{
|
||||
Replicas: 1,
|
||||
FullyLabeledReplicas: 5,
|
||||
ReadyReplicas: 2,
|
||||
AvailableReplicas: 1,
|
||||
ObservedGeneration: 1,
|
||||
},
|
||||
Spec: v1.ReplicationControllerSpec{
|
||||
Replicas: &rc3Replicas,
|
||||
},
|
||||
},
|
||||
Want: metadata + `
|
||||
kube_replicationcontroller_metadata_generation{namespace="ns3",replicationcontroller="rc3"} 5
|
||||
kube_replicationcontroller_owner{namespace="ns3",owner_is_controller="false",owner_kind="DeploymentConfig",owner_name="dc-test",replicationcontroller="rc3"} 1
|
||||
kube_replicationcontroller_status_replicas{namespace="ns3",replicationcontroller="rc3"} 1
|
||||
kube_replicationcontroller_status_observed_generation{namespace="ns3",replicationcontroller="rc3"} 1
|
||||
kube_replicationcontroller_status_fully_labeled_replicas{namespace="ns3",replicationcontroller="rc3"} 5
|
||||
kube_replicationcontroller_status_ready_replicas{namespace="ns3",replicationcontroller="rc3"} 2
|
||||
kube_replicationcontroller_status_available_replicas{namespace="ns3",replicationcontroller="rc3"} 1
|
||||
kube_replicationcontroller_spec_replicas{namespace="ns3",replicationcontroller="rc3"} 0
|
||||
`,
|
||||
},
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue