Skip to content
This repository was archived by the owner on Jun 2, 2021. It is now read-only.

Commit 0bde5d1

Browse files
matt-royaltcdowney
andcommitted
Fix issues deleting packages via registry buddy
- JSONClient does not json-encode the body for DELETE requests, so we have to do it - The image reference we're deleting should not include the digest (this breaks on GCR) [#175080280] Co-authored-by: Matt Royal <mroyal@pivotal.io> Co-authored-by: Tim Downey <tdowney@vmware.com>
1 parent 61f61ef commit 0bde5d1

7 files changed

Lines changed: 18 additions & 10 deletions

File tree

app/models/runtime/package_model.rb

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,14 +40,17 @@ def image
4040
docker_image
4141
end
4242

43-
def bits_image_reference
43+
def bits_image_reference(digest: false)
4444
config = VCAP::CloudController::Config.config
4545
raise 'Package Registry is not configured' unless config.package_image_registry_configured?
4646
raise 'Package type must be bits' unless bits?
4747

4848
package_registry_base_path = config.get(:packages, :image_registry, :base_path)
4949

50-
"#{package_registry_base_path}/#{guid}@sha256:#{sha256_checksum}"
50+
reference = "#{package_registry_base_path}/#{guid}"
51+
reference += "@sha256:#{sha256_checksum}" if digest
52+
53+
reference
5154
end
5255

5356
def bits?

lib/cloud_controller/kpack/stager.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ def image_resource(staging_details, builder_spec)
9494
def configure_source(staging_details)
9595
if config.package_image_registry_configured?
9696
{ registry: {
97-
image: staging_details.package.bits_image_reference
97+
image: staging_details.package.bits_image_reference(digest: true)
9898
} }
9999
else
100100
{ blob: { url: blobstore_url_generator.package_download_url(staging_details.package) } }

lib/registry_buddy/client.rb

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,7 @@ def post_package(package_guid, zip_file_path, registry)
2222
def delete_image(image_reference)
2323
with_request_error_handling 202 do
2424
client.delete('/images',
25-
body: {
26-
image_reference: image_reference
27-
}
25+
body: JSON.dump(image_reference: image_reference)
2826
)
2927
end
3028

spec/unit/actions/package_delete_spec.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ module VCAP::CloudController
3333

3434
job = Delayed::Job.last
3535
expect(job.handler).to include('VCAP::CloudController::Jobs::Kubernetes::RegistryDelete')
36-
expect(job.handler).to include(package.bits_image_reference)
36+
expect(job.handler).to include(package.bits_image_reference(digest: false))
3737
expect(job.queue).to eq(Jobs::Queues.generic)
3838
expect(job.guid).not_to be_nil
3939
end

spec/unit/jobs/runtime/delete_expired_package_blob_spec.rb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,8 @@ module Jobs::Runtime
2020
it 'delegates to registry delete job' do
2121
job.perform
2222

23-
expect(VCAP::CloudController::Jobs::Kubernetes::RegistryDelete).to have_received(:new).with(package.bits_image_reference)
23+
expect(VCAP::CloudController::Jobs::Kubernetes::RegistryDelete).to have_received(:new).
24+
with(package.bits_image_reference(digest: false))
2425
expect(registry_delete).to have_received(:perform)
2526
end
2627

spec/unit/lib/registry_buddy/client_spec.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ module RegistryBuddy
7878

7979
expect(WebMock).to have_requested(:delete,
8080
"http://#{registry_buddy_host}:#{registry_buddy_port}/images"
81-
).with(body: { 'image_reference' => image_reference })
81+
).with(body: JSON.dump('image_reference' => image_reference))
8282
end
8383

8484
context 'when the request succeeds' do

spec/unit/models/runtime/package_model_spec.rb

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,13 @@ module VCAP::CloudController
3232
end
3333

3434
it 'returns the image reference for the package' do
35-
expect(package.bits_image_reference).to eq("hub.example.com/user/#{package.guid}@sha256:#{package_sha256_checksum}")
35+
expect(package.bits_image_reference).to eq("hub.example.com/user/#{package.guid}")
36+
end
37+
38+
context 'when digest: true is given' do
39+
it 'returns the image reference for the package, including the digest' do
40+
expect(package.bits_image_reference(digest: true)).to eq("hub.example.com/user/#{package.guid}@sha256:#{package_sha256_checksum}")
41+
end
3642
end
3743

3844
context 'when the package is type DOCKER' do

0 commit comments

Comments
 (0)