diff --git a/cloudpg/build.gradle.kts b/cloudpg/build.gradle.kts index 1aab640..7594a96 100644 --- a/cloudpg/build.gradle.kts +++ b/cloudpg/build.gradle.kts @@ -78,7 +78,7 @@ dependencies { implementation("de.fraunhofer.aisec:cpg-language-go:$version") implementation("de.fraunhofer.aisec:cpg-language-python:$version") - implementation("com.fasterxml.jackson.module:jackson-module-kotlin:2.13.+") + implementation("com.fasterxml.jackson.module:jackson-module-kotlin:2.15.0") implementation ("org.xmlunit:xmlunit-core:2.9.0") implementation("org.xmlunit:xmlunit-matchers:2.9.0") @@ -97,7 +97,7 @@ dependencies { implementation("com.azure.resourcemanager:azure-resourcemanager-loganalytics:1.0.0-beta.2") implementation("com.azure:azure-identity:1.2.0") - implementation("io.kubernetes:client-java:10.0.0") + implementation("io.kubernetes:client-java:17.0.2") implementation("com.microsoft.azure:adal4j:1.6.6") implementation("com.fasterxml.jackson.core:jackson-databind:2.11.2") diff --git a/cloudpg/src/main/java/io/clouditor/graph/github/WorkflowHandler.kt b/cloudpg/src/main/java/io/clouditor/graph/github/WorkflowHandler.kt index a1848c9..bf8ea29 100644 --- a/cloudpg/src/main/java/io/clouditor/graph/github/WorkflowHandler.kt +++ b/cloudpg/src/main/java/io/clouditor/graph/github/WorkflowHandler.kt @@ -71,7 +71,7 @@ class WorkflowHandler(private val result: TranslationResult, val rootPath: Path) result += compute val mapper = ObjectMapper(YAMLFactory()) - mapper.registerModule(KotlinModule()) + mapper.registerModule(KotlinModule.Builder().build()) Files.newBufferedReader(rootPath.resolve(composePath)).use { reader -> val compose = mapper.readValue(reader, DockerCompose::class.java) diff --git a/cloudpg/src/main/java/io/clouditor/graph/passes/Azure.kt b/cloudpg/src/main/java/io/clouditor/graph/passes/Azure.kt index 1c6c663..1c1aa57 100644 --- a/cloudpg/src/main/java/io/clouditor/graph/passes/Azure.kt +++ b/cloudpg/src/main/java/io/clouditor/graph/passes/Azure.kt @@ -291,7 +291,7 @@ class AzurePass : CloudResourceDiscoveryPass() { } // model data export as ObjectStorageRequest - val request = ObjectStorageRequest(log, listOf(storage), "append") + val request = ObjectStorageRequest(log, listOfNotNull(storage), "append") storage?.let { request.addNextDFG(it) } // add DFG from the source to the sink diff --git a/cloudpg/src/main/java/io/clouditor/graph/passes/GitHubWorkflowPass.kt b/cloudpg/src/main/java/io/clouditor/graph/passes/GitHubWorkflowPass.kt index 3645a2a..46aff33 100644 --- a/cloudpg/src/main/java/io/clouditor/graph/passes/GitHubWorkflowPass.kt +++ b/cloudpg/src/main/java/io/clouditor/graph/passes/GitHubWorkflowPass.kt @@ -22,7 +22,7 @@ class GitHubWorkflowPass : Pass() { workflowPath.toFile().walkTopDown().iterator().forEach { file -> if (file.extension == "yml") { val mapper = ObjectMapper(YAMLFactory()) - mapper.registerModule(KotlinModule()) + mapper.registerModule(KotlinModule.Builder().build()) Files.newBufferedReader(file.toPath()).use { val workflow = mapper.readValue(it, Workflow::class.java) diff --git a/cloudpg/src/main/java/io/clouditor/graph/passes/KubernetesPass.kt b/cloudpg/src/main/java/io/clouditor/graph/passes/KubernetesPass.kt index 7d96f40..5a66791 100644 --- a/cloudpg/src/main/java/io/clouditor/graph/passes/KubernetesPass.kt +++ b/cloudpg/src/main/java/io/clouditor/graph/passes/KubernetesPass.kt @@ -6,14 +6,13 @@ import io.clouditor.graph.nodes.isInSelector import io.kubernetes.client.openapi.ApiClient import io.kubernetes.client.openapi.Configuration import io.kubernetes.client.openapi.apis.CoreV1Api -import io.kubernetes.client.openapi.apis.ExtensionsV1beta1Api -import io.kubernetes.client.openapi.models.ExtensionsV1beta1Ingress +import io.kubernetes.client.openapi.apis.NetworkingV1Api +import io.kubernetes.client.openapi.models.V1Ingress import io.kubernetes.client.openapi.models.V1Pod import io.kubernetes.client.openapi.models.V1Service import io.kubernetes.client.util.ClientBuilder import io.kubernetes.client.util.KubeConfig import java.io.FileReader -import java.util.* import kotlin.collections.ArrayList import kotlin.collections.HashMap import kotlin.collections.List @@ -49,7 +48,8 @@ class KubernetesPass : CloudResourceDiscoveryPass() { // the CoreV1Api loads default api-client from global configuration. val api = CoreV1Api() - val extensionsApi = ExtensionsV1beta1Api() + // val extensionsApi = ExtensionsV1beta1Api() + val extensionsApi = NetworkingV1Api() val namespace = App.kubernetesNamespace @@ -61,7 +61,19 @@ class KubernetesPass : CloudResourceDiscoveryPass() { // invokes the CoreV1Api client val pods = - api.listNamespacedPod(namespace, null, null, null, null, null, null, null, null, null) + api.listNamespacedPod( + namespace, + null, + null, + null, + null, + null, + null, + null, + null, + null, + false + ) for (pod in pods.items) { val container = handlePod(t, pod, cluster) @@ -82,6 +94,7 @@ class KubernetesPass : CloudResourceDiscoveryPass() { null, null, null, + null, false ) for (item in services.items) { @@ -101,6 +114,7 @@ class KubernetesPass : CloudResourceDiscoveryPass() { null, null, null, + null, false ) for (item in endpoints.items) { @@ -138,6 +152,7 @@ class KubernetesPass : CloudResourceDiscoveryPass() { null, null, null, + null, false ) for (item in list.items) { @@ -262,7 +277,7 @@ class KubernetesPass : CloudResourceDiscoveryPass() { private fun handleIngress( t: TranslationResult, - ingress: ExtensionsV1beta1Ingress, + ingress: V1Ingress, cluster: ContainerOrchestration? ): List { val list = mutableListOf() @@ -274,7 +289,7 @@ class KubernetesPass : CloudResourceDiscoveryPass() { // look for the service (TODO: add namespace to filter) val service = t.additionalNodes.filterIsInstance(NetworkService::class.java).firstOrNull { - it.name == path.backend?.serviceName + it.name == path.backend?.service?.name } val hasTLS = ingress.spec?.tls?.isEmpty() ?: false @@ -298,7 +313,7 @@ class KubernetesPass : CloudResourceDiscoveryPass() { null, ArrayList(), ArrayList(), - null, + ArrayList(), null, cluster?.geoLocation ?: GeoLocation("Europe"), mapOf()