Skip to content

Commit

Permalink
Merge pull request #13263 from zeari/fix_nil_dockerManifest
Browse files Browse the repository at this point in the history
Handle nil dockerImageManifest and nil dockerImageMetadata in openshift images
(cherry picked from commit 5ea1153)

https://bugzilla.redhat.com/show_bug.cgi?id=1412312
  • Loading branch information
Fryguy authored and simaishi committed Jan 11, 2017
1 parent 548b54f commit 9dbe63c
Show file tree
Hide file tree
Showing 2 changed files with 45 additions and 19 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -172,29 +172,37 @@ def parse_env_variables(env_variables)
end

def parse_openshift_image(openshift_image)
id = openshift_image[:dockerImageReference]
ref = ContainerImage::DOCKER_PULLABLE_PREFIX + id
id = openshift_image[:dockerImageReference] || openshift_image[:metadata][:name]
ref = "#{ContainerImage::DOCKER_PULLABLE_PREFIX}#{id}"
new_result = parse_container_image(id, ref)

json = JSON.parse(openshift_image[:dockerImageManifest])
new_result[:tag] ||= json["tag"] if json.keys.include?("tag")
if openshift_image[:dockerImageManifest].present?
begin
json = JSON.parse(openshift_image[:dockerImageManifest])
new_result[:tag] ||= json["tag"] if json.keys.include?("tag")
rescue => err
_log.warn("Docker manifest for - #{ref} was in bad format - #{err}")
end
end

docker_metadata = openshift_image[:dockerImageMetadata]
new_result.merge!(
:architecture => docker_metadata[:Architecture],
:author => docker_metadata[:Author],
:command => docker_metadata[:Config][:Cmd],
:entrypoint => docker_metadata[:Config][:Entrypoint],
:docker_version => docker_metadata[:DockerVersion],
:exposed_ports => parse_exposed_ports(
docker_metadata[:Config][:ExposedPorts]),
:environment_variables => parse_env_variables(
docker_metadata[:Config][:Env]),
:size => docker_metadata[:Size],
:labels => parse_labels(openshift_image),
:docker_labels => parse_identifying_attributes(docker_metadata[:Config][:Labels],
'docker_labels', "openshift"),
)
if docker_metadata.present?
new_result.merge!(
:architecture => docker_metadata[:Architecture],
:author => docker_metadata[:Author],
:command => docker_metadata[:Config][:Cmd],
:entrypoint => docker_metadata[:Config][:Entrypoint],
:docker_version => docker_metadata[:DockerVersion],
:exposed_ports => parse_exposed_ports(
docker_metadata[:Config][:ExposedPorts]),
:environment_variables => parse_env_variables(
docker_metadata[:Config][:Env]),
:size => docker_metadata[:Size],
:labels => parse_labels(openshift_image),
:docker_labels => parse_identifying_attributes(docker_metadata[:Config][:Labels],
'docker_labels', "openshift"),
)
end
new_result
end
end
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,13 @@
}
)
end
let(:image_without_dockerImage_fields) do
RecursiveOpenStruct.new(
:metadata => {
:name => image_digest
}
)
end

it "collects data from openshift images correctly" do
expect(parser.send(:parse_openshift_image,
Expand Down Expand Up @@ -66,6 +73,17 @@
)
end

it "handles openshift images without dockerImageManifest and dockerImageMetadata" do
expect(parser.send(:parse_openshift_image,
image_without_dockerImage_fields).except(:registered_on)).to eq(
:container_image_registry => nil,
:digest => nil,
:image_ref => "docker-pullable://sha256:abcdefg",
:name => "sha256",
:tag => "abcdefg"
)
end

it "doesn't add duplicated images" do
parser.instance_variable_get('@data')[:container_images] = [{
:name => image_name,
Expand Down

0 comments on commit 9dbe63c

Please sign in to comment.