Search in sources :

Example 1 with ManifestTemplate

use of com.google.cloud.tools.jib.image.json.ManifestTemplate in project jib by google.

the class ManifestPullerTest method testHandleResponse_v21.

@Test
public void testHandleResponse_v21() throws URISyntaxException, IOException, UnknownManifestFormatException {
    Path v21ManifestFile = Paths.get(Resources.getResource("json/v21manifest.json").toURI());
    Mockito.when(mockResponse.getBody()).thenReturn(Blobs.from(v21ManifestFile));
    ManifestTemplate manifestTemplate = new ManifestPuller<>(fakeRegistryEndpointProperties, "test-image-tag", V21ManifestTemplate.class).handleResponse(mockResponse);
    Assert.assertThat(manifestTemplate, CoreMatchers.instanceOf(V21ManifestTemplate.class));
}
Also used : Path(java.nio.file.Path) V21ManifestTemplate(com.google.cloud.tools.jib.image.json.V21ManifestTemplate) OCIManifestTemplate(com.google.cloud.tools.jib.image.json.OCIManifestTemplate) V22ManifestTemplate(com.google.cloud.tools.jib.image.json.V22ManifestTemplate) ManifestTemplate(com.google.cloud.tools.jib.image.json.ManifestTemplate) V21ManifestTemplate(com.google.cloud.tools.jib.image.json.V21ManifestTemplate) Test(org.junit.Test)

Example 2 with ManifestTemplate

use of com.google.cloud.tools.jib.image.json.ManifestTemplate in project jib by google.

the class ManifestPullerIntegrationTest method testPull_v22.

@Test
public void testPull_v22() throws IOException, RegistryException {
    RegistryClient registryClient = new RegistryClient(null, "gcr.io", "distroless/java");
    ManifestTemplate manifestTemplate = registryClient.pullManifest("latest");
    Assert.assertEquals(2, manifestTemplate.getSchemaVersion());
    V22ManifestTemplate v22ManifestTemplate = (V22ManifestTemplate) manifestTemplate;
    Assert.assertTrue(v22ManifestTemplate.getLayers().size() > 0);
}
Also used : V22ManifestTemplate(com.google.cloud.tools.jib.image.json.V22ManifestTemplate) V22ManifestTemplate(com.google.cloud.tools.jib.image.json.V22ManifestTemplate) V21ManifestTemplate(com.google.cloud.tools.jib.image.json.V21ManifestTemplate) ManifestTemplate(com.google.cloud.tools.jib.image.json.ManifestTemplate) Test(org.junit.Test)

Example 3 with ManifestTemplate

use of com.google.cloud.tools.jib.image.json.ManifestTemplate in project jib by google.

the class ManifestPusherIntegrationTest method testPush_missingBlobs.

@Test
public void testPush_missingBlobs() throws IOException, RegistryException {
    RegistryClient registryClient = new RegistryClient(null, "gcr.io", "distroless/java");
    ManifestTemplate manifestTemplate = registryClient.pullManifest("latest");
    registryClient = new RegistryClient(null, "localhost:5000", "busybox");
    try {
        registryClient.pushManifest((V22ManifestTemplate) manifestTemplate, "latest");
        Assert.fail("Pushing manifest without its BLOBs should fail");
    } catch (RegistryErrorException ex) {
        HttpResponseException httpResponseException = (HttpResponseException) ex.getCause();
        Assert.assertEquals(HttpStatusCodes.STATUS_CODE_BAD_REQUEST, httpResponseException.getStatusCode());
    }
}
Also used : HttpResponseException(com.google.api.client.http.HttpResponseException) V22ManifestTemplate(com.google.cloud.tools.jib.image.json.V22ManifestTemplate) ManifestTemplate(com.google.cloud.tools.jib.image.json.ManifestTemplate) Test(org.junit.Test)

Example 4 with ManifestTemplate

use of com.google.cloud.tools.jib.image.json.ManifestTemplate in project jib by google.

the class PullBaseImageStep method call.

/**
 * Depends on {@code pullAuthorizationFuture}.
 */
@Override
public Image call() throws IOException, RegistryException, LayerPropertyNotFoundException, LayerCountMismatchException, ExecutionException, InterruptedException {
    try (Timer ignored = new Timer(buildConfiguration.getBuildLogger(), DESCRIPTION)) {
        RegistryClient registryClient = new RegistryClient(NonBlockingFutures.get(pullAuthorizationFuture), buildConfiguration.getBaseImageRegistry(), buildConfiguration.getBaseImageRepository());
        ManifestTemplate manifestTemplate = registryClient.pullManifest(buildConfiguration.getBaseImageTag());
        // TODO: Make schema version be enum.
        switch(manifestTemplate.getSchemaVersion()) {
            case 1:
                V21ManifestTemplate v21ManifestTemplate = (V21ManifestTemplate) manifestTemplate;
                return JsonToImageTranslator.toImage(v21ManifestTemplate);
            case 2:
                V22ManifestTemplate v22ManifestTemplate = (V22ManifestTemplate) manifestTemplate;
                if (v22ManifestTemplate.getContainerConfiguration() == null || v22ManifestTemplate.getContainerConfiguration().getDigest() == null) {
                    throw new UnknownManifestFormatException("Invalid container configuration in Docker V2.2 manifest: \n" + Blobs.writeToString(JsonTemplateMapper.toBlob(v22ManifestTemplate)));
                }
                ByteArrayOutputStream containerConfigurationOutputStream = new ByteArrayOutputStream();
                registryClient.pullBlob(v22ManifestTemplate.getContainerConfiguration().getDigest(), containerConfigurationOutputStream);
                String containerConfigurationString = new String(containerConfigurationOutputStream.toByteArray(), StandardCharsets.UTF_8);
                ContainerConfigurationTemplate containerConfigurationTemplate = JsonTemplateMapper.readJson(containerConfigurationString, ContainerConfigurationTemplate.class);
                return JsonToImageTranslator.toImage(v22ManifestTemplate, containerConfigurationTemplate);
        }
        throw new IllegalStateException("Unknown manifest schema version");
    }
}
Also used : V22ManifestTemplate(com.google.cloud.tools.jib.image.json.V22ManifestTemplate) ContainerConfigurationTemplate(com.google.cloud.tools.jib.image.json.ContainerConfigurationTemplate) Timer(com.google.cloud.tools.jib.Timer) UnknownManifestFormatException(com.google.cloud.tools.jib.image.json.UnknownManifestFormatException) RegistryClient(com.google.cloud.tools.jib.registry.RegistryClient) ByteArrayOutputStream(java.io.ByteArrayOutputStream) V21ManifestTemplate(com.google.cloud.tools.jib.image.json.V21ManifestTemplate) V22ManifestTemplate(com.google.cloud.tools.jib.image.json.V22ManifestTemplate) ManifestTemplate(com.google.cloud.tools.jib.image.json.ManifestTemplate) V21ManifestTemplate(com.google.cloud.tools.jib.image.json.V21ManifestTemplate)

Example 5 with ManifestTemplate

use of com.google.cloud.tools.jib.image.json.ManifestTemplate in project jib by google.

the class ManifestPullerTest method testHandleResponse_v22.

@Test
public void testHandleResponse_v22() throws URISyntaxException, IOException, UnknownManifestFormatException {
    Path v22ManifestFile = Paths.get(Resources.getResource("json/v22manifest.json").toURI());
    Mockito.when(mockResponse.getBody()).thenReturn(Blobs.from(v22ManifestFile));
    ManifestTemplate manifestTemplate = new ManifestPuller<>(fakeRegistryEndpointProperties, "test-image-tag", V22ManifestTemplate.class).handleResponse(mockResponse);
    Assert.assertThat(manifestTemplate, CoreMatchers.instanceOf(V22ManifestTemplate.class));
}
Also used : Path(java.nio.file.Path) V22ManifestTemplate(com.google.cloud.tools.jib.image.json.V22ManifestTemplate) V21ManifestTemplate(com.google.cloud.tools.jib.image.json.V21ManifestTemplate) OCIManifestTemplate(com.google.cloud.tools.jib.image.json.OCIManifestTemplate) V22ManifestTemplate(com.google.cloud.tools.jib.image.json.V22ManifestTemplate) ManifestTemplate(com.google.cloud.tools.jib.image.json.ManifestTemplate) Test(org.junit.Test)

Aggregations

ManifestTemplate (com.google.cloud.tools.jib.image.json.ManifestTemplate)6 V22ManifestTemplate (com.google.cloud.tools.jib.image.json.V22ManifestTemplate)6 V21ManifestTemplate (com.google.cloud.tools.jib.image.json.V21ManifestTemplate)5 Test (org.junit.Test)4 OCIManifestTemplate (com.google.cloud.tools.jib.image.json.OCIManifestTemplate)3 UnknownManifestFormatException (com.google.cloud.tools.jib.image.json.UnknownManifestFormatException)2 Path (java.nio.file.Path)2 ObjectMapper (com.fasterxml.jackson.databind.ObjectMapper)1 ObjectNode (com.fasterxml.jackson.databind.node.ObjectNode)1 HttpResponseException (com.google.api.client.http.HttpResponseException)1 Timer (com.google.cloud.tools.jib.Timer)1 ContainerConfigurationTemplate (com.google.cloud.tools.jib.image.json.ContainerConfigurationTemplate)1 RegistryClient (com.google.cloud.tools.jib.registry.RegistryClient)1 ByteArrayOutputStream (java.io.ByteArrayOutputStream)1