Skip to content

Commit

Permalink
Address PR Comments
Browse files Browse the repository at this point in the history
Signed-off-by: Andre Kurait <[email protected]>
  • Loading branch information
AndreKurait committed Oct 14, 2024
1 parent 7bc258a commit b76a164
Show file tree
Hide file tree
Showing 4 changed files with 69 additions and 82 deletions.
99 changes: 44 additions & 55 deletions TrafficCapture/dockerSolution/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,6 @@ dockerFilesForExternalServices.each { projectName, dockerImageName ->
def escapedProjectName = projectName;
task("buildDockerImage_${escapedProjectName}", type: DockerBuildImage) {
if (escapedProjectName == "migrationConsole") {
// Define lists of libraries and applications
def libraries = [
project(":libraries:kafkaCommandLineFormatter")
]
Expand All @@ -41,68 +40,58 @@ dockerFilesForExternalServices.each { projectName, dockerImageName ->
project(":CreateSnapshot"),
project(":MetadataMigration")
]

// Create a single sync task to copy the required files
def destDir = "build/docker/${dockerImageName}_${escapedProjectName}"
def syncTask = project.tasks.create("syncArtifact_${dockerImageName}_${escapedProjectName}", Sync) {
into destDir
duplicatesStrategy = DuplicatesStrategy.EXCLUDE

// Copy libraries
libraries.each { libProject ->
def applicationDestDir = "staging/${libProject.name}/"
from (libProject.configurations.findByName("runtimeClasspath").files) {
into "${applicationDestDir}/lib"
}
from (libProject.tasks.getByName('jar')) {
into "${applicationDestDir}/lib"
}
}

// Copy applications
applications.each { appProject ->
def applicationDestDir = "staging/${appProject.name}/"
from (appProject.configurations.findByName("runtimeClasspath").files) {
into "${applicationDestDir}/lib"
}
from (appProject.tasks.getByName('jar')) {
into "${applicationDestDir}/lib"
}
from (appProject.tasks.getByName('startScripts').outputs.files) {
into "${applicationDestDir}/bin"
}
}

from "src/main/docker/${projectName}"
}

// Collect assemble tasks from libraries and applications
def assembleTasks = (libraries + applications).collect { it.tasks.named("assemble") }
// Ensure the sync task depends on the assemble tasks
syncTask.dependsOn(assembleTasks)

def syncTask = getMigrationConsoleSyncTask(project, dockerImageName, escapedProjectName, libraries, applications)
dependsOn syncTask
dependsOn assembleTasks
// Migration Console base image is the test console
dependsOn "buildDockerImage_elasticsearchTestConsole"
inputDir = syncTask.destinationDir
} else {
// Sync the src into the build folder
def syncTask = project.tasks.create("syncArtifact_${dockerImageName}_${escapedProjectName}", Sync) {
from "src/main/docker/${projectName}"
into "build/docker/${dockerImageName}_${escapedProjectName}"
duplicatesStrategy = DuplicatesStrategy.FAIL
}

// Ensure the sync task depends on the build task
dependsOn syncTask
inputDir = project.file("src/main/docker/${escapedProjectName}")
}
def hash = calculateDockerHash(projectName)
def hash = calculateDockerHash(inputDir)
images.add("migrations/${dockerImageName}:$hash")
images.add("migrations/${dockerImageName}:latest")
inputDir = project.file("build/docker/${dockerImageName}_${projectName}")
}
}

static def Sync getMigrationConsoleSyncTask(Project project, String dockerImageName, String escapedProjectName, List<Project> libraries, List<Project> applications) {
// Create a single sync task to copy the required files
def destDir = "build/docker/${dockerImageName}_${escapedProjectName}"
def syncTask = project.tasks.create("syncArtifact_${dockerImageName}_${escapedProjectName}", Sync) {
into destDir
duplicatesStrategy = DuplicatesStrategy.EXCLUDE

// Copy libraries
(libraries + applications).each { libProject ->
def applicationDestDir = "staging/${libProject.name}/"
from (libProject.configurations.findByName("runtimeClasspath").files) {
into "${applicationDestDir}/lib"
}
from (libProject.tasks.getByName('jar')) {
into "${applicationDestDir}/lib"
}
}

// Copy applications
applications.each { appProject ->
def applicationDestDir = "staging/${appProject.name}/"
from (appProject.tasks.getByName('startScripts').outputs.files) {
into "${applicationDestDir}/bin"
}
}

from "src/main/docker/${escapedProjectName}"
}

// Collect assemble tasks from libraries and applications
def assembleTasks = (libraries + applications).collect { it.tasks.named("assemble") }
// Ensure the sync task depends on the assemble tasks
syncTask.dependsOn assembleTasks

// Migration Console base image is the test console
syncTask.dependsOn "buildDockerImage_elasticsearchTestConsole"

return syncTask
}

def javaContainerServices = [
"capture_proxy": ":TrafficCapture:trafficCaptureProxyServer",
"capture_proxy_es": ":TrafficCapture:trafficCaptureProxyServer",
Expand Down
2 changes: 1 addition & 1 deletion TrafficCapture/trafficCaptureProxyServerTest/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ def createContainerTasks = { dockerImageName, projectName ->
javaContainerServices.each(createContainerTasks)

(javaContainerServices).forEach { dockerImageName, projectName ->
def escapedProjectName = project(projectName).name;
def escapedProjectName = project(projectName).name;
def dockerBuildDir = "build/docker/${dockerImageName}_${escapedProjectName}"
task "buildDockerImage_${dockerImageName}"(type: DockerBuildImage) {
dependsOn "createDockerfile_${dockerImageName}"
Expand Down
38 changes: 18 additions & 20 deletions deployment/cdk/opensearch-service-migration/cdk.context.json
Original file line number Diff line number Diff line change
@@ -1,33 +1,31 @@
{
"default": {
"stage": "<STAGE>",
"stage": "test-stage",
"targetCluster": {
"endpoint": "<TARGET_CLUSTER_ENDPOINT>",
"endpoint": "https://target-cluster.com:443",
"auth": {
"type": "none | basic | sigv4",
"// basic auth documentation": "The next two lines are releavant for basic auth only",
"username": "<USERNAME>",
"passwordFromSecretArn": "<ARN_OF_SECRET_CONTAINING_PASSWORD>",
"// sigv4 documentation": "The next two lines are releavant for sigv4 only",
"region": "<REGION>",
"serviceSigningName": "es | aoss"
"type": "none"
}
},
"sourceCluster": {
"endpoint": "<SOURCE_CLUSTER_ENDPOINT>",
"endpoint": "https://source-cluster.com:443",
"auth": {
"type": "none | basic | sigv4",
"// basic auth documentation": "The next two lines are releavant for basic auth only",
"username": "<USERNAME>",
"passwordFromSecretArn": "<ARN_OF_SECRET_CONTAINING_PASSWORD>",
"// sigv4 documentation": "The next two lines are releavant for sigv4 only",
"region": "<REGION>",
"serviceSigningName": "es | aoss"
"type": "none"
}
},
"vpcId": "<VPC_ID>",
"reindexFromSnapshotServiceEnabled": true,
"reindexFromSnapshotMaxShardSizeGiB": 80,
"trafficReplayerServiceEnabled": true
}
"migrationAssistanceEnabled": true,
"migrationConsoleServiceEnabled": true,
"otelCollectorEnabled": true,
"targetClusterProxyServiceEnabled": true
},
"availability-zones:account=767398060394:region=us-east-1": [
"us-east-1a",
"us-east-1b",
"us-east-1c",
"us-east-1d",
"us-east-1e",
"us-east-1f"
]
}
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,9 @@ export function getSecretAccessPolicy(secretArn: string): PolicyStatement {
]
})
}
import * as fs from 'fs';
import * as path from 'path';
import * as os from 'os';
import { mkdtempSync, writeFileSync } from 'fs';
import { join } from 'path';
import { tmpdir } from 'os';
import { DockerImageAsset } from "aws-cdk-lib/aws-ecr-assets";

export function appendArgIfNotInExtraArgs(
Expand Down Expand Up @@ -451,12 +451,12 @@ export function isRegionGovCloud(region: string): boolean {
*/
export function makeDockerImageAsset(scope: Construct, serviceName: string, imageName: string): ContainerImage {
const sanitizedImageName = imageName.replace(/[^a-zA-Z0-9-_]/g, '_');
const tempDir = fs.mkdtempSync(path.join(os.tmpdir(), 'docker-build-' + sanitizedImageName));
const dockerfilePath = path.join(tempDir, 'Dockerfile');
const tempDir = mkdtempSync(join(tmpdir(), 'docker-build-' + sanitizedImageName));
const dockerfilePath = join(tempDir, 'Dockerfile');
const dockerfileContent = `
FROM ${imageName}
`;
fs.writeFileSync(dockerfilePath, dockerfileContent);
writeFileSync(dockerfilePath, dockerfileContent);
const asset = new DockerImageAsset(scope, serviceName + 'Image', {
directory: tempDir,
});
Expand Down

0 comments on commit b76a164

Please sign in to comment.