From e5fb425e93b980f9bd95e39df89ff4b983f95cc1 Mon Sep 17 00:00:00 2001 From: Pavel Busko Date: Thu, 18 Jul 2024 09:36:32 +0200 Subject: [PATCH] Move @sha256 part to the image path for Docker LRP rootfs (#3889) Co-authored-by: Nicolas Bender --- lib/cloud_controller/diego/docker/docker_uri_converter.rb | 6 ++++++ .../diego/docker/docker_uri_converter_spec.rb | 8 ++++++++ 2 files changed, 14 insertions(+) diff --git a/lib/cloud_controller/diego/docker/docker_uri_converter.rb b/lib/cloud_controller/diego/docker/docker_uri_converter.rb index 9f7e5bfa3e2..881ed008a57 100644 --- a/lib/cloud_controller/diego/docker/docker_uri_converter.rb +++ b/lib/cloud_controller/diego/docker/docker_uri_converter.rb @@ -6,6 +6,12 @@ def convert(docker_uri) raise UriUtils::InvalidDockerURI.new "Docker URI [#{docker_uri}] should not contain scheme" if docker_uri.include? '://' host, path, tag = UriUtils.parse_docker_uri(docker_uri) + + if !tag.nil? && tag.start_with?('@sha256:') + path = "#{path}@sha256" + tag.slice!('@sha256:') + end + Addressable::URI.new(scheme: 'docker', host: host, path: path, fragment: tag).to_s end end diff --git a/spec/unit/lib/cloud_controller/diego/docker/docker_uri_converter_spec.rb b/spec/unit/lib/cloud_controller/diego/docker/docker_uri_converter_spec.rb index 96b76fa75af..9b963dc1a46 100644 --- a/spec/unit/lib/cloud_controller/diego/docker/docker_uri_converter_spec.rb +++ b/spec/unit/lib/cloud_controller/diego/docker/docker_uri_converter_spec.rb @@ -38,6 +38,14 @@ module VCAP::CloudController expect(converter.convert(image_url)).to eq('docker:///user/image#tag') end end + + context('and a user/image@sha256:9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08') do + let(:image_url) { 'user/image@sha256:9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08' } + + it 'builds the correct rootFS path' do + expect(converter.convert(image_url)).to eq('docker:///user/image@sha256#9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08') + end + end end context('and the docker image url has host:port') do