Skip to content

Commit

Permalink
Add modulemd applicability type
Browse files Browse the repository at this point in the history
  • Loading branch information
parthaa committed Nov 21, 2018
1 parent 3de8a95 commit f6f75fb
Show file tree
Hide file tree
Showing 21 changed files with 6,376 additions and 918 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

Exposing Pulp's juiciest parts. http://www.pulpproject.org/

Latest Live Tested Version: **pulp-server-2.17.0-0.1.beta.el7.noarch**
Latest Live Tested Version: **pulp-server-2.19.0-0.1.alpha.201811111308gitcaafaee.el7.noarch**

Current stable Runcible: https://github.com/Katello/runcible/tree/0.3

Expand Down
8 changes: 8 additions & 0 deletions lib/runcible/extensions/consumer.rb
Original file line number Diff line number Diff line change
Expand Up @@ -154,6 +154,14 @@ def applicable_rpms(ids)
applicable_for_type(ids, Runcible::Extensions::Rpm.content_type)
end

# Retrieve the set of modules that are applicable to a consumer(s)
#
# @param [String, Array] ids string containing a single consumer id or an array of ids
# @return [RestClient::Response] content applicability hash with details of modules available to consumer(s)
def applicable_module_streams(ids)
applicable_for_type(ids, Runcible::Extensions::Module.content_type)
end

private

def applicable_for_type(ids, type)
Expand Down
48 changes: 48 additions & 0 deletions test/extensions/consumer_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -117,6 +117,12 @@ def test_applicable_rpms

assert_equal 200, response.code
end

def test_applicable_module_streams
response = @extension.applicable_module_streams([@consumer_id])

assert_equal 200, response.code
end
end

class TestConsumerApplicabilityScenario < MiniTest::Unit::TestCase
Expand Down Expand Up @@ -151,6 +157,48 @@ def test_applicability
refute_empty applicability[0]['applicability']['erratum']
end

def test_non_modular_applicability
# given kangaroo rpm is part of kangaroo module
# and that kangaroo module is not enabled
# make sure no rpms are determined as applicable

@extension.upload_profile(@consumer_id, 'rpm', [{'name' => 'kangaroo', 'version' => '0.2', 'release' => '1',
'epoch' => 0, 'arch' => 'noarch', 'vendor' => 'Fedora'}])
task = @extension.regenerate_applicability_by_ids([@consumer_id])
RepositorySupport.new.wait_on_response(task)
assert_empty @extension.applicable_rpms([@consumer_id])[0]["applicability"]["rpm"]
assert_empty @extension.applicable_module_streams([@consumer_id])[0]["applicability"]["modulemd"]
assert_empty @extension.applicable_errata([@consumer_id])[0]["applicability"]["erratum"]
end

def test_modular_applicability
# given kangaroo rpm is part of kangaroo module
# and that kangaroo module is enabled
# make sure rpms are determined as applicable
# now enable the kangaroo module on the consumer and retry
@extension.upload_profile(@consumer_id, 'modulemd', [{'name' => 'kangaroo', 'stream' => '0',
'version' => '20180730223407',
'context' => "deadbeef", 'arch' => 'noarch'}])

@extension.upload_profile(@consumer_id, 'rpm', [{'name' => 'kangaroo', 'version' => '0.2', 'release' => '1',
'epoch' => 0, 'arch' => 'noarch', 'vendor' => 'Fedora'}])

task = @extension.regenerate_applicability_by_ids([@consumer_id])
RepositorySupport.new.wait_on_response(task)
applicable_rpms = @extension.applicable_rpms([@consumer_id])
applicable_module_streams = @extension.applicable_module_streams([@consumer_id])
refute_empty applicable_rpms[0]["applicability"]["rpm"]
refute_empty applicable_module_streams[0]["applicability"]["modulemd"]

# # note: kangaroo 0.3 rpm is part of kangaroo:0 stream,
# # and Duck_Kangaro_Erratum
# # so we would expect to see an errata also
applicability = @extension.applicable_errata([@consumer_id])
refute_empty applicability
assert applicability[0]['consumers'].include?(@consumer_id)
refute_empty applicability[0]['applicability']['erratum']
end

def bind_repo
tasks = @extension.bind_all(@consumer_id, RepositorySupport.repo_id,
Runcible::Models::YumDistributor.type_id, :notify_agent => false)
Expand Down
112 changes: 56 additions & 56 deletions test/fixtures/vcr_cassettes/extensions/consumer/activate_node.yml

Large diffs are not rendered by default.

110 changes: 55 additions & 55 deletions test/fixtures/vcr_cassettes/extensions/consumer/applicable_errata.yml

Large diffs are not rendered by default.

Loading

0 comments on commit f6f75fb

Please sign in to comment.