diff --git a/clouddriver-kubernetes/src/main/groovy/com/netflix/spinnaker/clouddriver/kubernetes/v2/caching/agent/KubernetesCacheDataConverter.java b/clouddriver-kubernetes/src/main/groovy/com/netflix/spinnaker/clouddriver/kubernetes/v2/caching/agent/KubernetesCacheDataConverter.java index 60550a97cee..997f5251a49 100644 --- a/clouddriver-kubernetes/src/main/groovy/com/netflix/spinnaker/clouddriver/kubernetes/v2/caching/agent/KubernetesCacheDataConverter.java +++ b/clouddriver-kubernetes/src/main/groovy/com/netflix/spinnaker/clouddriver/kubernetes/v2/caching/agent/KubernetesCacheDataConverter.java @@ -199,12 +199,7 @@ public static CacheData convertAsResource( logMalformedManifest(() -> "Converting " + manifest + " to a cached resource", manifest); KubernetesKind kind = manifest.getKind(); - boolean hasClusterRelationship = false; - boolean isNamespaced = true; - if (kind != null) { - hasClusterRelationship = kind.hasClusterRelationship(); - isNamespaced = kind.isNamespaced(); - } + boolean hasClusterRelationship = kind != null && kind.hasClusterRelationship(); KubernetesApiVersion apiVersion = manifest.getApiVersion(); String name = manifest.getName(); @@ -274,7 +269,7 @@ public static KubernetesManifest convertToManifest(Object o) { return mapper.convertValue(o, KubernetesManifest.class); } - public static T getResource(KubernetesManifest manifest, Class clazz) { + public static T getResource(Object manifest, Class clazz) { // A little hacky, but the only way to deserialize any timestamps using string constructors return json.deserialize(json.serialize(manifest), clazz); } diff --git a/clouddriver-kubernetes/src/main/groovy/com/netflix/spinnaker/clouddriver/kubernetes/v2/caching/view/model/KubernetesV2Instance.java b/clouddriver-kubernetes/src/main/groovy/com/netflix/spinnaker/clouddriver/kubernetes/v2/caching/view/model/KubernetesV2Instance.java index adb60c09281..86e4f2a634e 100644 --- a/clouddriver-kubernetes/src/main/groovy/com/netflix/spinnaker/clouddriver/kubernetes/v2/caching/view/model/KubernetesV2Instance.java +++ b/clouddriver-kubernetes/src/main/groovy/com/netflix/spinnaker/clouddriver/kubernetes/v2/caching/view/model/KubernetesV2Instance.java @@ -25,7 +25,6 @@ import com.netflix.spinnaker.clouddriver.model.HealthState; import com.netflix.spinnaker.clouddriver.model.Instance; import com.netflix.spinnaker.clouddriver.model.LoadBalancerInstance; -import io.kubernetes.client.models.V1Pod; import io.kubernetes.client.models.V1PodStatus; import java.util.ArrayList; import java.util.HashMap; @@ -51,8 +50,8 @@ private KubernetesV2Instance(KubernetesManifest manifest, String key) { this.manifest = manifest; this.key = (Keys.InfrastructureCacheKey) Keys.parseKey(key).get(); - V1Pod pod = KubernetesCacheDataConverter.getResource(this.manifest, V1Pod.class); - V1PodStatus status = pod.getStatus(); + V1PodStatus status = + KubernetesCacheDataConverter.getResource(this.manifest.getStatus(), V1PodStatus.class); if (status != null) { health.add(new KubernetesV2Health(status).toMap()); if (status.getContainerStatuses() != null) { diff --git a/clouddriver-kubernetes/src/main/groovy/com/netflix/spinnaker/clouddriver/kubernetes/v2/caching/view/provider/KubernetesV2ClusterProvider.java b/clouddriver-kubernetes/src/main/groovy/com/netflix/spinnaker/clouddriver/kubernetes/v2/caching/view/provider/KubernetesV2ClusterProvider.java index c46bd4f3fbc..263ae9ce98b 100644 --- a/clouddriver-kubernetes/src/main/groovy/com/netflix/spinnaker/clouddriver/kubernetes/v2/caching/view/provider/KubernetesV2ClusterProvider.java +++ b/clouddriver-kubernetes/src/main/groovy/com/netflix/spinnaker/clouddriver/kubernetes/v2/caching/view/provider/KubernetesV2ClusterProvider.java @@ -279,6 +279,7 @@ private Set translateClustersWithRelationships( for (CacheData clusterDatum : clusterData) { List clusterServerGroups = clusterToServerGroups.getOrDefault(clusterDatum.getId(), new ArrayList<>()); + List clusterLoadBalancers = clusterServerGroups.stream() .map(CacheData::getId) @@ -286,15 +287,18 @@ private Set translateClustersWithRelationships( .flatMap(Collection::stream) .collect(Collectors.toList()); - result.add( - translateCluster( - clusterDatum, + List serverGroups = + getServerGroups( clusterServerGroups, - clusterLoadBalancers, serverGroupToInstances, - loadBalancerToServerGroups, serverGroupToLoadBalancers, - serverGroupToServerGroupManagerKeys)); + serverGroupToServerGroupManagerKeys); + + List loadBalancers = + getLoadBalancers( + clusterLoadBalancers, serverGroupToInstances, loadBalancerToServerGroups); + + result.add(new KubernetesV2Cluster(clusterDatum.getId(), serverGroups, loadBalancers)); } return result.stream().filter(Objects::nonNull).collect(Collectors.toSet()); @@ -308,49 +312,42 @@ private KubernetesV2Cluster translateCluster(CacheData clusterDatum) { return new KubernetesV2Cluster(clusterDatum.getId()); } - private KubernetesV2Cluster translateCluster( - CacheData clusterDatum, + private List getServerGroups( List serverGroupData, - List loadBalancerData, Map> instanceDataByServerGroup, - Map> serverGroupDataByLoadBalancer, Map> loadBalancerDataByServerGroup, Map> serverGroupToServerGroupManagerKeys) { - if (clusterDatum == null) { - return null; - } - - List serverGroups = - serverGroupData.stream() - .map( - cd -> - cacheUtils.resourceModelFromCacheData( - KubernetesV2ServerGroupCacheData.builder() - .serverGroupData(cd) - .instanceData( - instanceDataByServerGroup.getOrDefault( - cd.getId(), new ArrayList<>())) - .loadBalancerData( - loadBalancerDataByServerGroup.getOrDefault( - cd.getId(), new ArrayList<>())) - .serverGroupManagerKeys( - serverGroupToServerGroupManagerKeys.getOrDefault( - cd.getId(), new ArrayList<>())) - .build())) - .filter(Objects::nonNull) - .collect(Collectors.toList()); - - List loadBalancers = - loadBalancerData.stream() - .map( - cd -> - KubernetesV2LoadBalancer.fromCacheData( - cd, - serverGroupDataByLoadBalancer.getOrDefault(cd.getId(), new ArrayList<>()), - instanceDataByServerGroup)) - .filter(Objects::nonNull) - .collect(Collectors.toList()); + return serverGroupData.stream() + .map( + cd -> + cacheUtils.resourceModelFromCacheData( + KubernetesV2ServerGroupCacheData.builder() + .serverGroupData(cd) + .instanceData( + instanceDataByServerGroup.getOrDefault(cd.getId(), new ArrayList<>())) + .loadBalancerData( + loadBalancerDataByServerGroup.getOrDefault( + cd.getId(), new ArrayList<>())) + .serverGroupManagerKeys( + serverGroupToServerGroupManagerKeys.getOrDefault( + cd.getId(), new ArrayList<>())) + .build())) + .filter(Objects::nonNull) + .collect(Collectors.toList()); + } - return new KubernetesV2Cluster(clusterDatum.getId(), serverGroups, loadBalancers); + private List getLoadBalancers( + List loadBalancerData, + Map> instanceDataByServerGroup, + Map> serverGroupDataByLoadBalancer) { + return loadBalancerData.stream() + .map( + cd -> + KubernetesV2LoadBalancer.fromCacheData( + cd, + serverGroupDataByLoadBalancer.getOrDefault(cd.getId(), new ArrayList<>()), + instanceDataByServerGroup)) + .filter(Objects::nonNull) + .collect(Collectors.toList()); } }