diff --git a/src/main/java/com/navi/infra/portal/v2/diagnostic/DiagnosticServiceImpl.java b/src/main/java/com/navi/infra/portal/v2/diagnostic/DiagnosticServiceImpl.java index 70ea0bce..c246754c 100644 --- a/src/main/java/com/navi/infra/portal/v2/diagnostic/DiagnosticServiceImpl.java +++ b/src/main/java/com/navi/infra/portal/v2/diagnostic/DiagnosticServiceImpl.java @@ -11,7 +11,8 @@ import static com.navi.infra.portal.v2.diagnostic.DiagnosticServiceUtilities.get import static com.navi.infra.portal.v2.diagnostic.DiagnosticServiceUtilities.getEnvironment; import static com.navi.infra.portal.v2.diagnostic.DiagnosticServiceUtilities.getLanguage; import static com.navi.infra.portal.v2.diagnostic.DiagnosticServiceUtilities.getNamespace; -import static com.navi.infra.portal.v2.diagnostic.DiagnosticServiceUtilities.getPort; +import static com.navi.infra.portal.v2.diagnostic.DiagnosticServiceUtilities.getPortForDiagnostics; +import static com.navi.infra.portal.v2.diagnostic.DiagnosticServiceUtilities.getRunnerImage; import static java.util.stream.Collectors.toList; import com.navi.infra.portal.client.AwsS3Client; @@ -42,6 +43,8 @@ class DiagnosticServiceImpl implements DiagnosticService { private final String dagId; private final String vertical; private final String runnerImage; + + private final String golangRunnerImage; private final String airflowUrl; public DiagnosticServiceImpl( @@ -52,12 +55,14 @@ class DiagnosticServiceImpl implements DiagnosticService { @Value("${service-dump.dag.id}") String dagId, @Value("${portal.vertical}") String vertical, @Value("${service-dump.image.name}") String runnerImage, + @Value("${golang-service-dump.image.name}") String golangRunnerImage, @Value("${airflow.url}") String airflowUrl ) { this.airflowClient = airflowClient; this.manifestService = manifestService; this.diagnosticRepository = diagnosticRepository; this.awsS3Client = awsS3Client; + this.golangRunnerImage = golangRunnerImage; this.dagId = dagId; this.vertical = vertical; this.runnerImage = runnerImage; @@ -72,7 +77,7 @@ class DiagnosticServiceImpl implements DiagnosticService { final var environment = getEnvironment(manifest); final var manifestName = manifest.getName(); final var language = getLanguage(manifest); - final var port = getPort(manifest); + final var port = getPortForDiagnostics(manifest); return createDiagnostic( triggerDiagnosticRequest, cluster, namespace, environment, manifestName, language, port ) @@ -144,6 +149,8 @@ class DiagnosticServiceImpl implements DiagnosticService { final var diagnosticPath = getDiagnosticPath(environment, manifestName); final var diagnosticType = triggerDiagnosticRequest.getDiagnosticType(); + final var image = getRunnerImage(language, runnerImage, golangRunnerImage); + DiagnosticTriggerRequestBuilder requestBuilder = new DiagnosticTriggerRequestBuilder() .cluster(cluster) .namespace(namespace) @@ -153,7 +160,7 @@ class DiagnosticServiceImpl implements DiagnosticService { .dagId(dagId) .runId(createRunId(podName, instant)) .containerName(getContainerFromPod(podName)) - .runnerImage(runnerImage) + .runnerImage(image) .diagnosticResultName(diagnosticResultName) .diagnosticType(diagnosticType.getName()) .isFullDump(triggerDiagnosticRequest.isFullDump()) diff --git a/src/main/java/com/navi/infra/portal/v2/diagnostic/DiagnosticServiceUtilities.java b/src/main/java/com/navi/infra/portal/v2/diagnostic/DiagnosticServiceUtilities.java index fd8e830e..04374c93 100644 --- a/src/main/java/com/navi/infra/portal/v2/diagnostic/DiagnosticServiceUtilities.java +++ b/src/main/java/com/navi/infra/portal/v2/diagnostic/DiagnosticServiceUtilities.java @@ -63,9 +63,12 @@ public class DiagnosticServiceUtilities { "Language is not present in manifest " + manifest.fullName()); } - static Integer getPort(Manifest manifest) { - return requireNonNull(manifest.getDeployment().getMetricsPort(), - "Metrics port is not present in manifest " + manifest.fullName()); + static Integer getPortForDiagnostics(Manifest manifest) { + if (manifest.getMetadata().getLanguage().equals("Golang")) { + return requireNonNull(manifest.getDeployment().getMetricsPort(), + "Metrics port is not present in manifest " + manifest.fullName()); + } + return null; } static String getNamespace(Manifest manifest) { @@ -85,4 +88,19 @@ public class DiagnosticServiceUtilities { static String getDiagnosticTaskLogUrl(String airflowUrl, String logUrl) { return airflowUrl + "/" + logUrl; } + + static String getRunnerImage( + String language, + String javaRunnerImage, + String golangRunnerImage + ) { + switch (language) { + case "Golang": + return golangRunnerImage; + case "Java": + case "Kotlin": + return javaRunnerImage; + } + throw new RuntimeException("Could not find runnner image for language " + language); + } } diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 39e2d97c..275b5187 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -70,6 +70,7 @@ airflow.url=${AIRFLOW_URL} airflow.token=${AIRFLOW_AUTH_TOKEN} service-dump.dag.id=${SERVICE_DUMP_DAG_ID} service-dump.image.name=${SERVICE_DUMP_IMAGE_NAME:193044292705.dkr.ecr.ap-south-1.amazonaws.com/common/jdk11-diagnostic:v101e0a93f95d3989fe6484cd5c0dae05cfe0ce3b} +golang-service-dump.image.name=${GOLANG_SERVICE_DUMP_IMAGE_NAME:193044292705.dkr.ecr.ap-south-1.amazonaws.com/common/golang-diagnostic:v3db848072fbfb602c1c17c2b5f733dc58005f099} aws.profile=${AWS_PROFILE:default} spring.mvc.async.request-timeout=1800000 jit.number_of_prod_approvals=2 diff --git a/src/test/resources/application.properties b/src/test/resources/application.properties index 33d60418..4d4e79f8 100644 --- a/src/test/resources/application.properties +++ b/src/test/resources/application.properties @@ -72,6 +72,7 @@ jit.slack.policy.upload.channel.id=C0000000000 jit.max-grant-window=24 slackbot.token=xoxb-676123123123-123123123123-123123123123-123123123123 service-dump.image.name=${SERVICE_DUMP_IMAGE_NAME:193044292705.dkr.ecr.ap-south-1.amazonaws.com/common/jdk11-diagnostic:va39edbc8ebfbe68aedb776566e11b88cb4920d75} +golang-service-dump.image.name=${GOLANG_SERVICE_DUMP_IMAGE_NAME:193044292705.dkr.ecr.ap-south-1.amazonaws.com/common/golang-diagnostic:v3db848072fbfb602c1c17c2b5f733dc58005f099} github.token=${GITHUB_CLOUD_OAUTH_TOKEN:token} gocd.pipelines.config="{\"navi-data-science\":{\"gocdServerUrl\":\"https://datascience-pipelines.cmd.navi-tech.in\",\"gocdAdminAccessToken\":\"datascience-token\"},\"navi-infra\":{\"gocdServerUrl\":\"https://infra-pipelines.cmd.navi-tech.in\",\"gocdAdminAccessToken\":\"infra-token\"},\"default\":{\"gocdServerUrl\":\"https://pipelines.cmd.navi-tech.in\",\"gocdAdminAccessToken\":\"pipelines-token\"}}" vertical.owner.map={'lending':{'navi-data-science':'navi-data-science','default':'navi-medici'},'insurance':{'default':'navi-gi'},'sa':{'default':'navi-sa'},'amc':{'default':'navi-amc'},'navi-pay':{'default':'navi-pay'},'navi-ppl':{'default':'navi-ppl'}}