diff --git a/glide.lock b/glide.lock index 2b53ade97780..192c3881bff4 100644 --- a/glide.lock +++ b/glide.lock @@ -1,42 +1,20 @@ -hash: ae3af36af2cb274fe6cf9a1f5df39536776f25558e091d0fccf54a4016e8a230 -updated: 2017-05-31T17:42:47.316653881-04:00 +hash: 6635cddf9fb1d6c99778eaeafcd76f173a8cb10777d939d289b81e3be129f539 +updated: 2017-06-10T17:55:13.533890769-04:00 imports: -- name: cloud.google.com/go - version: 3b1ae45394a234c385be014e9a488f2bb6eef821 - subpackages: - - compute/metadata - - internal - name: github.com/beevik/ntp version: cb3dae3a7588ae35829eb5724df611cd75152fba -- name: github.com/blang/semver - version: 31b736133b98f26d5e078ec9eb591666edfd091f - name: github.com/cihub/seelog version: d2c6e5aa9fbfdd1c624e140287063c7730654115 - name: github.com/coreos/etcd - version: d267ca9c184e953554257d0acdd1dc9c47d38229 + version: 0f4a535c2fb7a2920e13e2e19b9eaf6b2e9285e5 subpackages: - client - pkg/pathutil - pkg/types -- name: github.com/coreos/go-oidc - version: 5644a2f50e2d2d5ba0b474bc5bc55fea1925936d - subpackages: - - http - - jose - - key - - oauth2 - - oidc -- name: github.com/coreos/pkg - version: 3ac0863d7acf3bc44daf49afef8919af12f704ef - subpackages: - - capnslog - - health - - httputil - - timeutil - name: github.com/DataDog/agent-payload version: 091e000da55ab18aca225f8338abe8338b959aea subpackages: - - go + - gogen - name: github.com/DataDog/datadog-go version: a9c7a9896c1847c9cc2b068a2ae68e9d74540a5d subpackages: @@ -89,11 +67,38 @@ imports: - tlsconfig - name: github.com/docker/go-units version: 0dadbb0345b35ec7ef35e228dabb8de89a65bf52 -- name: github.com/emicklei/go-restful - version: 89ef8af493ab468a45a42bb0d89a06fccdd2fb22 - subpackages: - - log - - swagger +- name: github.com/ericchiang/k8s + version: 860d64039a0d98e149452f9687f26eb3636d5038 + subpackages: + - api/resource + - api/unversioned + - api/v1 + - apis/apps/v1alpha1 + - apis/apps/v1beta1 + - apis/authentication/v1 + - apis/authentication/v1beta1 + - apis/authorization/v1 + - apis/authorization/v1beta1 + - apis/autoscaling/v1 + - apis/autoscaling/v2alpha1 + - apis/batch/v1 + - apis/batch/v2alpha1 + - apis/certificates/v1alpha1 + - apis/certificates/v1beta1 + - apis/extensions/v1beta1 + - apis/imagepolicy/v1alpha1 + - apis/meta/v1 + - apis/policy/v1alpha1 + - apis/policy/v1beta1 + - apis/rbac/v1alpha1 + - apis/rbac/v1beta1 + - apis/settings/v1alpha1 + - apis/storage/v1 + - apis/storage/v1beta1 + - runtime + - runtime/schema + - util/intstr + - watch/versioned - name: github.com/fsnotify/fsnotify version: 629574ca2a5df945712d3079857300b5e4da0236 - name: github.com/geoffgarside/ber @@ -104,27 +109,14 @@ imports: version: de8695c8edbf8236f30d6e1376e20b198a028d42 subpackages: - oleutil -- name: github.com/go-openapi/jsonpointer - version: 46af16f9f7b149af66e5d1bd010e3574dc06de98 -- name: github.com/go-openapi/jsonreference - version: 13c6e3589ad90f49bd3e3bbe2c2cb3d7a4142272 -- name: github.com/go-openapi/spec - version: 6aced65f8501fe1217321abf0749d354824ba2ff -- name: github.com/go-openapi/swag - version: 1d0bd113de87027671077d3c71eb3ac5d7dbba72 - name: github.com/gogo/protobuf version: 909568be09de550ed094403c2bf8a261b5bb730a subpackages: - proto - - sortkeys -- name: github.com/golang/glog - version: 44145f04b68cf362d9c4df2182967c2275eaefed - name: github.com/golang/protobuf - version: 18c9bb3261723cd5401db4d0c9fbc5c3b6c70fe8 + version: 4bd1920723d7b7c925de087aa32e2187708897f7 subpackages: - proto -- name: github.com/google/gofuzz - version: bbcb9da2d746f8bdbd6a936686a0a6067ada0ec5 - name: github.com/gorilla/context version: 1ea25387ff6f684839d82767c1733ff4d4d15d0a - name: github.com/gorilla/mux @@ -142,22 +134,12 @@ imports: - json/token - name: github.com/inconshreveable/mousetrap version: 76626ae9c91c4f2a10f34cad8ce83ea42c93bb75 -- name: github.com/jonboulle/clockwork - version: 2eee05ed794112d45db504eb05aa693efd2b8b09 -- name: github.com/juju/ratelimit - version: 77ed1c8a01217656d2080ad51981f6e99adaa177 - name: github.com/k-sone/snmpgo version: de09377ff34857b08afdc16ea8c7c2929eb1fc6e - name: github.com/kardianos/osext version: 9d302b58e975387d0b4d9be876622c86cefe64be - name: github.com/magiconair/properties version: 51463bfca2576e06c62a8504b5c0f06d61312647 -- name: github.com/mailru/easyjson - version: d5b7844b561a7bc640052f1b935f7b800330d7e0 - subpackages: - - buffer - - jlexer - - jwriter - name: github.com/Microsoft/go-winio version: fff283ad5116362ca252298cfc9b95828956d85d - name: github.com/mitchellh/mapstructure @@ -166,8 +148,6 @@ imports: version: 417edcfd99a4d472c262e58f22b4bfe97580f03e - name: github.com/patrickmn/go-cache version: 1881a9bccb818787f68c52bfba648c6cf34c34fa -- name: github.com/pborman/uuid - version: ca53cad383cad2479bbba7f7a1a05797ec1386e4 - name: github.com/pelletier/go-buffruneio version: c37440a7cf42ac63b919c752ca73a85067e05992 - name: github.com/pelletier/go-toml @@ -178,14 +158,10 @@ imports: version: d8ed2627bdf02c080bf22230dbb337003b7aba2d subpackages: - difflib -- name: github.com/PuerkitoBio/purell - version: 8a290539e2e8629dbc4e6bad948158f790ec31f4 -- name: github.com/PuerkitoBio/urlesc - version: 5bd2802263f21d8788851d5305584c82a5c75d7e - name: github.com/sbinet/go-python version: ba7e58341058bdefb92b359870caf2dc0a05cfcf - name: github.com/shirou/gopsutil - version: 9af92986dda65a8c367157a82b484553e1ec1c55 + version: e30b7839cd6161b2fbef5f187377a345157abe04 subpackages: - cpu - host @@ -240,13 +216,6 @@ imports: - idna - lex/httplex - proxy -- name: golang.org/x/oauth2 - version: 3c3a985cb79f52a3190fbc056984415ca6763d01 - subpackages: - - google - - internal - - jws - - jwt - name: golang.org/x/sys version: 8f0908ab3b2457e2e15403d3697c9ef5cb4b57a9 subpackages: @@ -260,137 +229,8 @@ imports: - name: golang.org/x/text version: 2910a502d2bf9e43193af9d68ca516529614eed3 subpackages: - - cases - - internal/tag - - language - - runes - - secure/bidirule - - secure/precis - transform - - unicode/bidi - unicode/norm - - width -- name: google.golang.org/appengine - version: 4f7eeb5305a4ba1966344836ba4af9996b7b4e05 - subpackages: - - internal - - internal/app_identity - - internal/base - - internal/datastore - - internal/log - - internal/modules - - internal/remote_api - - internal/urlfetch - - urlfetch -- name: gopkg.in/inf.v0 - version: 3887ee99ecf07df5b447e9b00d9c0b2adaa9f3e4 - name: gopkg.in/yaml.v2 version: cd8b52f8269e0feb286dfeef29f8fe4d5b397e0b -- name: k8s.io/client-go - version: e121606b0d09b2e1c467183ee46217fa85a6b672 - subpackages: - - discovery - - kubernetes - - kubernetes/typed/apps/v1beta1 - - kubernetes/typed/authentication/v1beta1 - - kubernetes/typed/authorization/v1beta1 - - kubernetes/typed/autoscaling/v1 - - kubernetes/typed/batch/v1 - - kubernetes/typed/batch/v2alpha1 - - kubernetes/typed/certificates/v1alpha1 - - kubernetes/typed/core/v1 - - kubernetes/typed/extensions/v1beta1 - - kubernetes/typed/policy/v1beta1 - - kubernetes/typed/rbac/v1alpha1 - - kubernetes/typed/storage/v1beta1 - - pkg/api - - pkg/api/errors - - pkg/api/install - - pkg/api/meta - - pkg/api/meta/metatypes - - pkg/api/resource - - pkg/api/unversioned - - pkg/api/v1 - - pkg/api/validation/path - - pkg/apimachinery - - pkg/apimachinery/announced - - pkg/apimachinery/registered - - pkg/apis/apps - - pkg/apis/apps/install - - pkg/apis/apps/v1beta1 - - pkg/apis/authentication - - pkg/apis/authentication/install - - pkg/apis/authentication/v1beta1 - - pkg/apis/authorization - - pkg/apis/authorization/install - - pkg/apis/authorization/v1beta1 - - pkg/apis/autoscaling - - pkg/apis/autoscaling/install - - pkg/apis/autoscaling/v1 - - pkg/apis/batch - - pkg/apis/batch/install - - pkg/apis/batch/v1 - - pkg/apis/batch/v2alpha1 - - pkg/apis/certificates - - pkg/apis/certificates/install - - pkg/apis/certificates/v1alpha1 - - pkg/apis/extensions - - pkg/apis/extensions/install - - pkg/apis/extensions/v1beta1 - - pkg/apis/policy - - pkg/apis/policy/install - - pkg/apis/policy/v1beta1 - - pkg/apis/rbac - - pkg/apis/rbac/install - - pkg/apis/rbac/v1alpha1 - - pkg/apis/storage - - pkg/apis/storage/install - - pkg/apis/storage/v1beta1 - - pkg/auth/user - - pkg/conversion - - pkg/conversion/queryparams - - pkg/fields - - pkg/genericapiserver/openapi/common - - pkg/labels - - pkg/runtime - - pkg/runtime/serializer - - pkg/runtime/serializer/json - - pkg/runtime/serializer/protobuf - - pkg/runtime/serializer/recognizer - - pkg/runtime/serializer/streaming - - pkg/runtime/serializer/versioning - - pkg/selection - - pkg/third_party/forked/golang/reflect - - pkg/third_party/forked/golang/template - - pkg/types - - pkg/util - - pkg/util/cert - - pkg/util/clock - - pkg/util/errors - - pkg/util/flowcontrol - - pkg/util/framer - - pkg/util/integer - - pkg/util/intstr - - pkg/util/json - - pkg/util/jsonpath - - pkg/util/labels - - pkg/util/net - - pkg/util/parsers - - pkg/util/rand - - pkg/util/runtime - - pkg/util/sets - - pkg/util/uuid - - pkg/util/validation - - pkg/util/validation/field - - pkg/util/wait - - pkg/util/yaml - - pkg/version - - pkg/watch - - pkg/watch/versioned - - plugin/pkg/client/auth - - plugin/pkg/client/auth/gcp - - plugin/pkg/client/auth/oidc - - rest - - tools/clientcmd/api - - tools/metrics - - transport +testImports: [] diff --git a/glide.yaml b/glide.yaml index ef23722c4e1b..a6decddc3fe6 100644 --- a/glide.yaml +++ b/glide.yaml @@ -34,7 +34,7 @@ import: subpackages: - proto - package: github.com/DataDog/agent-payload - version: ^1.0 + version: ^4.0 - package: github.com/patrickmn/go-cache version: ^2.0.0 - package: github.com/k-sone/snmpgo @@ -48,5 +48,4 @@ import: - client - package: golang.org/x/net - package: github.com/DataDog/gohai -- package: k8s.io/client-go - version: v2.0.0 +- package: github.com/ericchiang/k8s diff --git a/pkg/metadata/kubernetes/kubernetes.go b/pkg/metadata/kubernetes/kubernetes.go index 0f94d46e1736..befe3d03e58d 100644 --- a/pkg/metadata/kubernetes/kubernetes.go +++ b/pkg/metadata/kubernetes/kubernetes.go @@ -1,13 +1,15 @@ package kubernetes import ( + "context" "fmt" - "k8s.io/client-go/kubernetes" - "k8s.io/client-go/pkg/api/v1" - batchv1 "k8s.io/client-go/pkg/apis/batch/v1" - "k8s.io/client-go/pkg/apis/extensions/v1beta1" - "k8s.io/client-go/rest" + "github.com/ericchiang/k8s" + "github.com/ericchiang/k8s/api/v1" + appsv1beta1 "github.com/ericchiang/k8s/apis/apps/v1beta1" + batchv1 "github.com/ericchiang/k8s/apis/batch/v1" + "github.com/ericchiang/k8s/apis/extensions/v1beta1" + metav1 "github.com/ericchiang/k8s/apis/meta/v1" payload "github.com/DataDog/agent-payload/gogen" "github.com/DataDog/datadog-agent/pkg/metadata" @@ -28,35 +30,32 @@ const ( // the state of a Kubernetes cluster. We will use this metadata for tagging // metrics and other services in the backend. func GetPayload() (metadata.Payload, error) { - config, err := rest.InClusterConfig() + ctx := context.Background() + client, err := k8s.NewInClusterClient() if err != nil { return nil, fmt.Errorf("failed to retrieve config: %s", err) } - clientset, err := kubernetes.NewForConfig(config) - if err != nil { - return nil, fmt.Errorf("failed to get clientset: %s", err) - } - dr, err := clientset.Deployments("").List(v1.ListOptions{}) + dr, err := client.AppsV1Beta1().ListDeployments(ctx, "") if err != nil { return nil, fmt.Errorf("failed to get deployments: %s", err) } - rr, err := clientset.ReplicaSets("").List(v1.ListOptions{}) + rr, err := client.ExtensionsV1Beta1().ListReplicaSets(ctx, "") if err != nil { return nil, fmt.Errorf("failed to get replicasets: %s", err) } - sr, err := clientset.Services("").List(v1.ListOptions{}) + sr, err := client.CoreV1().ListServices(ctx, "") if err != nil { return nil, fmt.Errorf("failed to get services: %s", err) } - dsr, err := clientset.DaemonSets("").List(v1.ListOptions{}) + dsr, err := client.ExtensionsV1Beta1().ListDaemonSets(ctx, "") if err != nil { return nil, fmt.Errorf("failed to get daemonsets: %s", err) } - jr, err := clientset.BatchV1Client.Jobs("").List(v1.ListOptions{}) + jr, err := client.BatchV1().ListJobs(ctx, "") if err != nil { return nil, fmt.Errorf("failed to get jobs: %s", err) } - pr, err := clientset.Pods("").List(v1.ListOptions{}) + pr, err := client.CoreV1().ListPods(ctx, "") if err != nil { return nil, fmt.Errorf("failed to get pods: %s", err) } @@ -78,78 +77,78 @@ func GetPayload() (metadata.Payload, error) { }, nil } -func parseDeployments(apiDeployments []v1beta1.Deployment) []*payload.KubeMetadataPayload_Deployment { - dss := make([]*payload.KubeMetadataPayload_Deployment, len(apiDeployments)) +func parseDeployments(apiDeployments []*appsv1beta1.Deployment) []*payload.KubeMetadataPayload_Deployment { + dss := make([]*payload.KubeMetadataPayload_Deployment, 0, len(apiDeployments)) for _, d := range apiDeployments { dss = append(dss, &payload.KubeMetadataPayload_Deployment{ - Uid: string(d.UID), - Name: d.Name, - Namespace: d.Namespace, + Uid: d.Metadata.GetUid(), + Name: d.Metadata.GetName(), + Namespace: d.Metadata.GetNamespace(), }) } return dss } -func parseReplicaSets(apiRs []v1beta1.ReplicaSet) []*payload.KubeMetadataPayload_ReplicaSet { +func parseReplicaSets(apiRs []*v1beta1.ReplicaSet) []*payload.KubeMetadataPayload_ReplicaSet { rss := make([]*payload.KubeMetadataPayload_ReplicaSet, 0, len(apiRs)) for _, ar := range apiRs { // Assumes only a single deployment per ReplicaSet var deployment string - for _, o := range ar.OwnerReferences { - if o.Kind == kindDeployment { - deployment = o.Name + for _, o := range ar.Metadata.OwnerReferences { + if o.GetKind() == kindDeployment { + deployment = o.GetName() } } rss = append(rss, &payload.KubeMetadataPayload_ReplicaSet{ - Uid: string(ar.UID), - Name: ar.Name, - Namespace: ar.Namespace, + Uid: ar.Metadata.GetUid(), + Name: ar.Metadata.GetName(), + Namespace: ar.Metadata.GetNamespace(), Deployment: deployment, }) } return rss } -func parseServices(apiServices []v1.Service) []*payload.KubeMetadataPayload_Service { +func parseServices(apiServices []*v1.Service) []*payload.KubeMetadataPayload_Service { services := make([]*payload.KubeMetadataPayload_Service, 0, len(apiServices)) for _, s := range apiServices { services = append(services, &payload.KubeMetadataPayload_Service{ - Uid: string(s.UID), - Name: s.Name, - Namespace: s.Namespace, - Selector: s.Spec.Selector, - Type: string(s.Spec.Type), + Uid: s.Metadata.GetUid(), + Name: s.Metadata.GetName(), + Namespace: s.Metadata.GetNamespace(), + Selector: s.Spec.GetSelector(), + Type: s.Spec.GetType(), }) } return services } -func parseJobs(apiJobs []batchv1.Job) []*payload.KubeMetadataPayload_Job { +func parseJobs(apiJobs []*batchv1.Job) []*payload.KubeMetadataPayload_Job { jobs := make([]*payload.KubeMetadataPayload_Job, 0, len(apiJobs)) for _, j := range apiJobs { jobs = append(jobs, &payload.KubeMetadataPayload_Job{ - Uid: string(j.UID), - Name: j.Name, - Namespace: j.Namespace, + Uid: j.Metadata.GetUid(), + Name: j.Metadata.GetName(), + Namespace: j.Metadata.GetNamespace(), }) } return jobs } -func parseDaemonSets(apiDs []v1beta1.DaemonSet) []*payload.KubeMetadataPayload_DaemonSet { +func parseDaemonSets(apiDs []*v1beta1.DaemonSet) []*payload.KubeMetadataPayload_DaemonSet { daemonSets := make([]*payload.KubeMetadataPayload_DaemonSet, 0, len(apiDs)) for _, ds := range apiDs { daemonSets = append(daemonSets, &payload.KubeMetadataPayload_DaemonSet{ - Uid: string(ds.UID), - Name: ds.Name, - Namespace: ds.Namespace, + Uid: ds.Metadata.GetUid(), + Name: ds.Metadata.GetName(), + Namespace: ds.Metadata.GetNamespace(), }) } return daemonSets } func parsePods( - apiPods []v1.Pod, + apiPods []*v1.Pod, services []*payload.KubeMetadataPayload_Service, ) ([]*payload.KubeMetadataPayload_Pod, []*payload.KubeMetadataPayload_Container) { pods := make([]*payload.KubeMetadataPayload_Pod, 0, len(apiPods)) @@ -158,25 +157,26 @@ func parsePods( cids := make([]string, 0, len(ap.Status.ContainerStatuses)) for _, c := range ap.Status.ContainerStatuses { containers = append(containers, &payload.KubeMetadataPayload_Container{ - Name: c.Name, - Id: c.ContainerID, - Image: c.Image, - ImageId: c.ImageID, + Name: c.GetName(), + Id: c.GetContainerID(), + Image: c.GetImage(), + ImageId: c.GetImageID(), }) - cids = append(cids, c.ContainerID) + cids = append(cids, c.GetContainerID()) } + pm := ap.GetMetadata() pod := &payload.KubeMetadataPayload_Pod{ - Uid: string(ap.UID), - Name: ap.Name, - Namespace: ap.Namespace, - HostIp: ap.Status.HostIP, - PodIp: ap.Status.PodIP, - Labels: ap.Labels, - ServiceUids: findPodServices(ap.Namespace, ap.Labels, services), + Uid: pm.GetUid(), + Name: pm.GetName(), + Namespace: pm.GetNamespace(), + HostIp: ap.Status.GetHostIP(), + PodIp: ap.Status.GetPodIP(), + Labels: ap.Metadata.GetLabels(), + ServiceUids: findPodServices(pm.GetNamespace(), pm.GetLabels(), services), ContainerIds: cids, } - setPodCreator(pod, ap.OwnerReferences) + setPodCreator(pod, ap.Metadata.GetOwnerReferences()) pods = append(pods, pod) } return pods, containers @@ -207,17 +207,17 @@ func findPodServices( return uids } -func setPodCreator(pod *payload.KubeMetadataPayload_Pod, ownerRefs []v1.OwnerReference) { +func setPodCreator(pod *payload.KubeMetadataPayload_Pod, ownerRefs []*metav1.OwnerReference) { for _, o := range ownerRefs { - switch o.Kind { + switch o.GetKind() { case kindDaemonSet: - pod.DaemonSet = o.Name + pod.DaemonSet = o.GetName() case kindReplicaSet: - pod.ReplicaSet = o.Name + pod.ReplicaSet = o.GetName() case kindReplicationController: - pod.ReplicationController = o.Name + pod.ReplicationController = o.GetName() case kindJob: - pod.Job = o.Name + pod.Job = o.GetName() } } } diff --git a/pkg/metadata/kubernetes/kubernetes_test.go b/pkg/metadata/kubernetes/kubernetes_test.go index 8ff8f617c47a..d32f4aae6124 100644 --- a/pkg/metadata/kubernetes/kubernetes_test.go +++ b/pkg/metadata/kubernetes/kubernetes_test.go @@ -4,65 +4,70 @@ import ( "testing" payload "github.com/DataDog/agent-payload/gogen" + "github.com/ericchiang/k8s/api/v1" + metav1 "github.com/ericchiang/k8s/apis/meta/v1" "github.com/stretchr/testify/assert" - "k8s.io/client-go/pkg/api/v1" ) +func ps(s string) *string { + return &s +} + func TestParsePods(t *testing.T) { - inPods := []v1.Pod{ - v1.Pod{ - ObjectMeta: v1.ObjectMeta{ - Name: "test-pod-1", - Namespace: "default", + inPods := []*v1.Pod{ + &v1.Pod{ + Metadata: &metav1.ObjectMeta{ + Name: ps("test-pod-1"), + Namespace: ps("default"), Labels: map[string]string{ "test": "abcd", "role": "intake", }, - OwnerReferences: []v1.OwnerReference{v1.OwnerReference{ - Kind: "ReplicationController", - Name: "kubernetes-dashboard", + OwnerReferences: []*metav1.OwnerReference{&metav1.OwnerReference{ + Kind: ps("ReplicationController"), + Name: ps("kubernetes-dashboard"), }}, }, - Status: v1.PodStatus{ - ContainerStatuses: []v1.ContainerStatus{ - v1.ContainerStatus{ - ContainerID: "e468b96ca4fcc9687cc3", - Image: "datadog/docker-dd-agent", - ImageID: "docker://sha256:7c4034e4", + Status: &v1.PodStatus{ + ContainerStatuses: []*v1.ContainerStatus{ + &v1.ContainerStatus{ + ContainerID: ps("e468b96ca4fcc9687cc3"), + Image: ps("datadog/docker-dd-agent"), + ImageID: ps("docker://sha256:7c4034e4"), }, - v1.ContainerStatus{ - ContainerID: "3dbeb56a5545f17c1af2", - Image: "redis", - ImageID: "docker://sha256:7c4034e4", + &v1.ContainerStatus{ + ContainerID: ps("3dbeb56a5545f17c1af2"), + Image: ps("redis"), + ImageID: ps("docker://sha256:7c4034e4"), }, }, }, }, - v1.Pod{ - ObjectMeta: v1.ObjectMeta{ - Name: "test-pod-2", - Namespace: "default", + &v1.Pod{ + Metadata: &metav1.ObjectMeta{ + Name: ps("test-pod-2"), + Namespace: ps("default"), Labels: map[string]string{ "role": "web", "another": "label", "bim": "bop", }, - OwnerReferences: []v1.OwnerReference{v1.OwnerReference{ - Kind: "ReplicaSet", - Name: "kube-dns-196007617", + OwnerReferences: []*metav1.OwnerReference{&metav1.OwnerReference{ + Kind: ps("ReplicaSet"), + Name: ps("kube-dns-196007617"), }}, }, - Status: v1.PodStatus{ - ContainerStatuses: []v1.ContainerStatus{ - v1.ContainerStatus{ - ContainerID: "ce749d07a5645291f2f", - Image: "dd/web-app", - ImageID: "docker://sha256:7c4034e4", + Status: &v1.PodStatus{ + ContainerStatuses: []*v1.ContainerStatus{ + &v1.ContainerStatus{ + ContainerID: ps("ce749d07a5645291f2f"), + Image: ps("dd/web-app"), + ImageID: ps("docker://sha256:7c4034e4"), }, - v1.ContainerStatus{ - ContainerID: "57bb7bcd0c5b1e58daa0", - Image: "dd/redis-cache", - ImageID: "docker://sha256:7c4034e4", + &v1.ContainerStatus{ + ContainerID: ps("57bb7bcd0c5b1e58daa0"), + Image: ps("dd/redis-cache"), + ImageID: ps("docker://sha256:7c4034e4"), }, }, }, @@ -73,9 +78,9 @@ func TestParsePods(t *testing.T) { pods, _ := parsePods(inPods, []*payload.KubeMetadataPayload_Service{}) assert := assert.New(t) for i, p := range pods { - assert.Equal(inPods[i].Name, p.Name) - assert.Equal(inPods[i].Namespace, p.Namespace) - assert.Equal(inPods[i].Labels, p.Labels) + assert.Equal(inPods[i].Metadata.GetName(), p.Name) + assert.Equal(inPods[i].Metadata.GetNamespace(), p.Namespace) + assert.Equal(inPods[i].Metadata.GetLabels(), p.Labels) assert.Len(inPods[i].Status.ContainerStatuses, len(p.ContainerIds)) assert.Empty(p.ServiceUids) } @@ -86,37 +91,37 @@ func TestParsePods(t *testing.T) { func TestSetPodCreator(t *testing.T) { for _, tc := range []struct { - ownerRefs []v1.OwnerReference + ownerRefs []*metav1.OwnerReference annotations map[string]string expected *payload.KubeMetadataPayload_Pod }{ { // No refs - ownerRefs: []v1.OwnerReference{}, + ownerRefs: []*metav1.OwnerReference{}, expected: &payload.KubeMetadataPayload_Pod{}, }, { - ownerRefs: []v1.OwnerReference{v1.OwnerReference{ - Kind: "ReplicationController", - Name: "kubernetes-dashboard", + ownerRefs: []*metav1.OwnerReference{&metav1.OwnerReference{ + Kind: ps("ReplicationController"), + Name: ps("kubernetes-dashboard"), }}, expected: &payload.KubeMetadataPayload_Pod{ ReplicationController: "kubernetes-dashboard", }, }, { - ownerRefs: []v1.OwnerReference{v1.OwnerReference{ - Kind: "ReplicaSet", - Name: "apptastic-app", + ownerRefs: []*metav1.OwnerReference{&metav1.OwnerReference{ + Kind: ps("ReplicaSet"), + Name: ps("apptastic-app"), }}, expected: &payload.KubeMetadataPayload_Pod{ ReplicaSet: "apptastic-app", }, }, { - ownerRefs: []v1.OwnerReference{v1.OwnerReference{ - Kind: "Job", - Name: "hello", + ownerRefs: []*metav1.OwnerReference{&metav1.OwnerReference{ + Kind: ps("Job"), + Name: ps("hello"), }}, expected: &payload.KubeMetadataPayload_Pod{ Job: "hello",