Search in sources :

Example 1 with Build

use of com.walmartlabs.concord.plugins.packer.commands.Build in project concord-plugins by walmartlabs.

the class PackerTaskTest method valiatePackerBuildCommandConstruction.

@Test
public void valiatePackerBuildCommandConstruction() throws Exception {
    ToolInitializer toolInitializer = new ToolInitializer(new OKHttpDownloadManager("packer"));
    Map<String, ToolCommand> commands = ImmutableMap.of("packer/build", new Build());
    PackerTask task = new PackerTask(commands, toolInitializer);
    Map<String, Object> args = Maps.newHashMap(mapBuilder().put("dryRun", true).put("command", "build").put("saveOutput", true).put("debug", true).put("force", true).put("except", ImmutableList.of("foo", "bar", "baz")).put("extraVars", mapBuilder().put("aws_access_key", "foo").put("aws_secret_key", "bar").build()).put("template", "packer.json").build());
    Context context = context(args);
    task.execute(context);
    // the extraVars are going to get serialized to a packer variables json file
    String expectedCommandLine = "packer build -debug -color=false -force -except=foo,bar,baz packer.json -var-file=.*\\.variables\\.json";
    assertThat(normalizedCommandLineArguments(context)).matches(expectedCommandLine);
}
Also used : Context(com.walmartlabs.concord.sdk.Context) OKHttpDownloadManager(com.walmartlabs.concord.plugins.OKHttpDownloadManager) Build(com.walmartlabs.concord.plugins.packer.commands.Build) ToolInitializer(ca.vanzyl.concord.plugins.tool.ToolInitializer) ToolCommand(ca.vanzyl.concord.plugins.tool.ToolCommand) Test(org.junit.Test)

Example 2 with Build

use of com.walmartlabs.concord.plugins.packer.commands.Build in project concord-plugins by walmartlabs.

the class PackerTaskExecutionTest method validateExecutingPacker.

@Test
public void validateExecutingPacker() throws Exception {
    ToolInitializer toolInitializer = new ToolInitializer(new OKHttpDownloadManager("packer"));
    Map<String, ToolCommand> commands = ImmutableMap.of("packer/build", new Build());
    PackerTask task = new PackerTask(commands, toolInitializer);
    Map<String, Object> args = Maps.newHashMap(mapBuilder().put("command", "build").put("saveOutput", true).put("template", packerTestFile().toString()).build());
    Context context = context(args);
    task.execute(context);
    /*

        Debug mode enabled. Builds will not be parallelized.
        ==> amazon-ebs: Prevalidating any provided VPC information
        ==> amazon-ebs: Prevalidating AMI Name: packer-example 1585436207
            amazon-ebs: Found Image ID: ami-04ac550b78324f651
        ==> amazon-ebs: Creating temporary keypair: packer_5e7fd62f-8128-badf-da32-4f8356ed603a
            amazon-ebs: Saving key for debug purposes: ec2_amazon-ebs.pem
        ==> amazon-ebs: Creating temporary security group for this instance: packer_5e7fd632-c20b-002b-ccb6-ea9e2adac21e
        ==> amazon-ebs: Authorizing access to port 22 from [0.0.0.0/0] in the temporary security groups...
        ==> amazon-ebs: Launching a source AWS instance...
        ==> amazon-ebs: Adding tags to source instance
            amazon-ebs: Adding tag: "Name": "Packer Builder"
            amazon-ebs: Instance ID: i-0d5e29779b4f2406d
        ==> amazon-ebs: Waiting for instance (i-0d5e29779b4f2406d) to become ready...
            amazon-ebs: Public DNS: ec2-34-238-135-221.compute-1.amazonaws.com
            amazon-ebs: Public IP: 34.238.135.221
            amazon-ebs: Private IP: 172.31.91.204
        ==> amazon-ebs: Using ssh communicator to connect: 34.238.135.221
        ==> amazon-ebs: Waiting for SSH to become available...
        ==> amazon-ebs: Connected to SSH!
        ==> amazon-ebs: Stopping the source instance...
            amazon-ebs: Stopping instance
        ==> amazon-ebs: Waiting for the instance to stop...
        ==> amazon-ebs: Creating AMI packer-example 1585436207 from instance i-0d5e29779b4f2406d
            amazon-ebs: AMI: ami-083dfd9b6f66d45b5
        ==> amazon-ebs: Waiting for AMI to become ready...
        ==> amazon-ebs: Terminating the source AWS instance...
        ==> amazon-ebs: Cleaning up any extra volumes...
        ==> amazon-ebs: No volumes to clean up, skipping
        ==> amazon-ebs: Deleting temporary security group...
        ==> amazon-ebs: Deleting temporary keypair...
        Build 'amazon-ebs' finished.

        ==> Builds finished. The artifacts of successful builds are:
        --> amazon-ebs: AMIs were created:
        us-east-1: ami-083dfd9b6f66d45b5

        */
    // Retrieve the logs from the context
    String logs = varAsString(context, "logs");
    assertThat(logs).contains("==> Builds finished. The artifacts of successful builds are:");
    assertThat(logs).contains("--> amazon-ebs: AMIs were created:");
}
Also used : Context(com.walmartlabs.concord.sdk.Context) OKHttpDownloadManager(com.walmartlabs.concord.plugins.OKHttpDownloadManager) Build(com.walmartlabs.concord.plugins.packer.commands.Build) ToolInitializer(ca.vanzyl.concord.plugins.tool.ToolInitializer) ToolCommand(ca.vanzyl.concord.plugins.tool.ToolCommand) Test(org.junit.Test)

Aggregations

ToolCommand (ca.vanzyl.concord.plugins.tool.ToolCommand)2 ToolInitializer (ca.vanzyl.concord.plugins.tool.ToolInitializer)2 OKHttpDownloadManager (com.walmartlabs.concord.plugins.OKHttpDownloadManager)2 Build (com.walmartlabs.concord.plugins.packer.commands.Build)2 Context (com.walmartlabs.concord.sdk.Context)2 Test (org.junit.Test)2