katello-foreman-engine 0.0.11 → 0.0.12

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = "katello-foreman-engine"
3
- s.version = "0.0.11"
3
+ s.version = "0.0.12"
4
4
 
5
5
  s.authors = ["Katello"]
6
6
  s.date = "2013-04-19"
@@ -20,6 +20,8 @@ module KatelloForemanEngine
20
20
  end
21
21
 
22
22
  def plan(changeset)
23
+ # demotion is handed by DistributionUnpublish action
24
+ return unless changeset.is_a? PromotionChangeset
23
25
  changeset.affected_repos.each do |repo|
24
26
  repo = repo.get_clone(changeset.environment)
25
27
  plan_action(RepositoryChange, repo)
@@ -20,10 +20,7 @@ module KatelloForemanEngine
20
20
  end
21
21
 
22
22
  def plan(repo)
23
- if repo.distributions.empty?
24
- # no distributions, no instalation media
25
- plan_action(DistributionUnpublish, repo)
26
- elsif(repo.unprotected)
23
+ if distribution = bootable_distribution(repo)
27
24
  repo_info = {
28
25
  'pulp_id' => repo.pulp_id,
29
26
  'uri' => repo.uri,
@@ -37,15 +34,26 @@ module KatelloForemanEngine
37
34
  repo_info['content_view_label'] = repo.content_view.label
38
35
  end
39
36
 
40
- # Foreman's installation media don't distinguish between
41
- # different variants. Using just a first one.
42
- distribution = repo.distributions.first
43
37
  plan_action(DistributionPublish,
44
38
  { 'repo' => repo_info,
45
39
  'family' => distribution.family,
46
40
  'variant' => distribution.variant,
47
41
  'arch' => distribution.arch,
48
42
  'version' => distribution.version })
43
+ else
44
+ plan_action(DistributionUnpublish, repo)
45
+ end
46
+ end
47
+
48
+ def bootable_distribution(repo)
49
+ return unless repo.unprotected
50
+ # not every distribution from Pulp represents a bottable
51
+ # repo. Determine based on the files in there.
52
+ return repo.distributions.find do |distribution|
53
+ distribution.files.any? do |file|
54
+ file[:relativepath].include?("vmlinuz") ||
55
+ file[:relativepath].include?("pxeboot")
56
+ end
49
57
  end
50
58
  end
51
59
 
@@ -9,7 +9,8 @@ module KatelloForemanEngine
9
9
  :distributions => [stub('family' => 'Family',
10
10
  'variant' => 'Variant',
11
11
  'arch' => 'Arch',
12
- 'version' => 'Version')],
12
+ 'version' => 'Version',
13
+ 'files' => [{:relativepath => 'images/pxeboot/vmlinuz'}])],
13
14
  :pulp_id => 'pulp_id',
14
15
  :uri => 'https://example.com/repo/uri',
15
16
  :label => 'label',
@@ -36,7 +37,7 @@ module KatelloForemanEngine
36
37
  end
37
38
 
38
39
  test "plans repository unpublish if no distros found for the repo" do
39
- repo = stub(:distributions => [])
40
+ repo = stub(:unprotected => true, :distributions => [])
40
41
  action_class, arg = planned_actions(RepositoryChange, {}, repo).first
41
42
  assert_equal DistributionUnpublish, action_class
42
43
  assert_equal repo, arg
metadata CHANGED
@@ -1,54 +1,60 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: katello-foreman-engine
3
- version: !ruby/object:Gem::Version
4
- version: 0.0.11
3
+ version: !ruby/object:Gem::Version
4
+ hash: 7
5
5
  prerelease:
6
+ segments:
7
+ - 0
8
+ - 0
9
+ - 12
10
+ version: 0.0.12
6
11
  platform: ruby
7
- authors:
12
+ authors:
8
13
  - Katello
9
14
  autorequire:
10
15
  bindir: bin
11
16
  cert_chain: []
12
- date: 2013-04-19 00:00:00.000000000 Z
13
- dependencies:
14
- - !ruby/object:Gem::Dependency
17
+
18
+ date: 2013-04-19 00:00:00 +02:00
19
+ default_executable:
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
15
22
  name: foreman_api
16
- requirement: !ruby/object:Gem::Requirement
17
- none: false
18
- requirements:
19
- - - ! '>='
20
- - !ruby/object:Gem::Version
21
- version: '0'
22
- type: :runtime
23
23
  prerelease: false
24
- version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
- requirements:
27
- - - ! '>='
28
- - !ruby/object:Gem::Version
29
- version: '0'
30
- - !ruby/object:Gem::Dependency
31
- name: dynflow
32
- requirement: !ruby/object:Gem::Requirement
24
+ requirement: &id001 !ruby/object:Gem::Requirement
33
25
  none: false
34
- requirements:
35
- - - ! '>='
36
- - !ruby/object:Gem::Version
37
- version: '0'
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ hash: 3
30
+ segments:
31
+ - 0
32
+ version: "0"
38
33
  type: :runtime
34
+ version_requirements: *id001
35
+ - !ruby/object:Gem::Dependency
36
+ name: dynflow
39
37
  prerelease: false
40
- version_requirements: !ruby/object:Gem::Requirement
38
+ requirement: &id002 !ruby/object:Gem::Requirement
41
39
  none: false
42
- requirements:
43
- - - ! '>='
44
- - !ruby/object:Gem::Version
45
- version: '0'
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ hash: 3
44
+ segments:
45
+ - 0
46
+ version: "0"
47
+ type: :runtime
48
+ version_requirements: *id002
46
49
  description: Foreman specific parts in Katello
47
50
  email: katello-devel@redhat.com
48
51
  executables: []
52
+
49
53
  extensions: []
54
+
50
55
  extra_rdoc_files: []
51
- files:
56
+
57
+ files:
52
58
  - Gemfile
53
59
  - katello-foreman-engine.gemspec
54
60
  - LICENSE
@@ -82,30 +88,39 @@ files:
82
88
  - test/lib/actions/env_destroy_test.rb
83
89
  - test/lib/actions/distribution_publish_test.rb
84
90
  - test/lib/bindings_test.rb
91
+ has_rdoc: true
85
92
  homepage: http://github.com/katello/katello-foreman-engine
86
- licenses:
93
+ licenses:
87
94
  - GPL-2
88
95
  post_install_message:
89
96
  rdoc_options: []
90
- require_paths:
97
+
98
+ require_paths:
91
99
  - lib
92
- required_ruby_version: !ruby/object:Gem::Requirement
100
+ required_ruby_version: !ruby/object:Gem::Requirement
93
101
  none: false
94
- requirements:
95
- - - ! '>='
96
- - !ruby/object:Gem::Version
97
- version: '0'
98
- required_rubygems_version: !ruby/object:Gem::Requirement
102
+ requirements:
103
+ - - ">="
104
+ - !ruby/object:Gem::Version
105
+ hash: 3
106
+ segments:
107
+ - 0
108
+ version: "0"
109
+ required_rubygems_version: !ruby/object:Gem::Requirement
99
110
  none: false
100
- requirements:
101
- - - ! '>='
102
- - !ruby/object:Gem::Version
103
- version: '0'
111
+ requirements:
112
+ - - ">="
113
+ - !ruby/object:Gem::Version
114
+ hash: 3
115
+ segments:
116
+ - 0
117
+ version: "0"
104
118
  requirements: []
119
+
105
120
  rubyforge_project:
106
- rubygems_version: 1.8.23
121
+ rubygems_version: 1.6.2
107
122
  signing_key:
108
123
  specification_version: 3
109
124
  summary: Foreman specific parts of Katello
110
125
  test_files: []
111
- has_rdoc:
126
+