katello-foreman-engine 0.0.3 → 0.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,12 +1,15 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = "katello-foreman-engine"
3
- s.version = "0.0.3"
3
+ s.version = "0.0.6"
4
4
 
5
5
  s.authors = ["Katello"]
6
6
  s.date = "2013-04-19"
7
7
  s.description = "Foreman specific parts in Katello"
8
8
  s.email = "katello-devel@redhat.com"
9
- s.files = `git ls-files`.split("\n")
9
+ s.files = %w(Gemfile katello-foreman-engine.gemspec LICENSE Rakefile)
10
+ s.files += Dir["lib/**/*.rb"]
11
+ s.files += Dir["test/test_helper.rb"]
12
+ s.files += Dir["test/lib/**/*.rb"]
10
13
  s.homepage = "http://github.com/katello/katello-foreman-engine"
11
14
  s.licenses = ["GPL-2"]
12
15
  s.require_paths = ["lib"]
@@ -1,3 +1,15 @@
1
+ #
2
+ # Copyright 2013 Red Hat, Inc.
3
+ #
4
+ # This software is licensed to you under the GNU General Public
5
+ # License as published by the Free Software Foundation; either version
6
+ # 2 of the License (GPLv2) or (at your option) any later version.
7
+ # There is NO WARRANTY for this software, express or implied,
8
+ # including the implied warranties of MERCHANTABILITY,
9
+ # NON-INFRINGEMENT, or FITNESS FOR A PARTICULAR PURPOSE. You should
10
+ # have received a copy of GPLv2 along with this software; if not, see
11
+ # http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
12
+
1
13
  module KatelloForemanEngine
2
14
  module Actions
3
15
  class ContentViewDemote < Dynflow::Action
@@ -1,3 +1,15 @@
1
+ #
2
+ # Copyright 2013 Red Hat, Inc.
3
+ #
4
+ # This software is licensed to you under the GNU General Public
5
+ # License as published by the Free Software Foundation; either version
6
+ # 2 of the License (GPLv2) or (at your option) any later version.
7
+ # There is NO WARRANTY for this software, express or implied,
8
+ # including the implied warranties of MERCHANTABILITY,
9
+ # NON-INFRINGEMENT, or FITNESS FOR A PARTICULAR PURPOSE. You should
10
+ # have received a copy of GPLv2 along with this software; if not, see
11
+ # http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
12
+
1
13
  module KatelloForemanEngine
2
14
  module Actions
3
15
  class ContentViewPromote < Dynflow::Action
@@ -10,7 +22,7 @@ module KatelloForemanEngine
10
22
  unless Bindings.environment_find(input['organization_label'], input['to_env_label'], input['label'])
11
23
  plan_self input
12
24
  end
13
- content_view.repos(to_env) do |repo|
25
+ content_view.repos(to_env).each do |repo|
14
26
  plan_action(RepositoryChange, repo)
15
27
  end
16
28
  end
@@ -0,0 +1,42 @@
1
+ #
2
+ # Copyright 2013 Red Hat, Inc.
3
+ #
4
+ # This software is licensed to you under the GNU General Public
5
+ # License as published by the Free Software Foundation; either version
6
+ # 2 of the License (GPLv2) or (at your option) any later version.
7
+ # There is NO WARRANTY for this software, express or implied,
8
+ # including the implied warranties of MERCHANTABILITY,
9
+ # NON-INFRINGEMENT, or FITNESS FOR A PARTICULAR PURPOSE. You should
10
+ # have received a copy of GPLv2 along with this software; if not, see
11
+ # http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
12
+
13
+ module KatelloForemanEngine
14
+ module Actions
15
+ class ContentViewPublish < Dynflow::Action
16
+
17
+ def self.subscribe
18
+ [Katello::Actions::ContentViewPublish,
19
+ Katello::Actions::ContentViewRefresh]
20
+ end
21
+
22
+ def plan(content_view)
23
+ unless Bindings.environment_find(input['organization_label'], 'Library', input['label'])
24
+ plan_self input
25
+ end
26
+ content_view.repos(content_view.organization.library).each do |repo|
27
+ plan_action(RepositoryChange, repo)
28
+ end
29
+ end
30
+
31
+ input_format do
32
+ param :id, Integer
33
+ param :label, String
34
+ param :organization_label, String
35
+ end
36
+
37
+ def run
38
+ Bindings.environment_create(input['id'], input['organization_label'], 'Library', input['label'])
39
+ end
40
+ end
41
+ end
42
+ end
@@ -1,3 +1,15 @@
1
+ #
2
+ # Copyright 2013 Red Hat, Inc.
3
+ #
4
+ # This software is licensed to you under the GNU General Public
5
+ # License as published by the Free Software Foundation; either version
6
+ # 2 of the License (GPLv2) or (at your option) any later version.
7
+ # There is NO WARRANTY for this software, express or implied,
8
+ # including the implied warranties of MERCHANTABILITY,
9
+ # NON-INFRINGEMENT, or FITNESS FOR A PARTICULAR PURPOSE. You should
10
+ # have received a copy of GPLv2 along with this software; if not, see
11
+ # http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
12
+
1
13
  module KatelloForemanEngine
2
14
  module Actions
3
15
  class DistributionPublish < Dynflow::Action
@@ -21,12 +33,13 @@ module KatelloForemanEngine
21
33
  def run
22
34
  medium_name = construct_medium_name
23
35
  medium_path = Helpers.installation_media_path(input['repo']['uri'])
36
+ org_label = input['repo']['organization_label']
24
37
  return if Bindings.medium_find(medium_path)
25
38
 
26
39
  arch = find_or_create_arch
27
40
  os = find_or_create_operating_system
28
41
  assign_arch_to_os(os, arch)
29
- medium = Bindings.medium_create(medium_name, medium_path)
42
+ medium = Bindings.medium_create(medium_name, medium_path, org_label)
30
43
  assign_medium_to_os(os, medium)
31
44
  end
32
45
 
@@ -88,15 +101,21 @@ module KatelloForemanEngine
88
101
  parts << input['variant']
89
102
  parts << input['version']
90
103
  parts << input['arch']
91
- name = parts.join(' ')
92
- # we need to make the name a bit shorter to get under 50
93
- # charatcers for medium name
94
- name.sub!('Red Hat Enterprise Linux','RHEL')
95
- return name
104
+ name = parts.reject(&:blank?).join(' ')
105
+ return normalize_name(name)
96
106
  end
97
107
 
98
108
  def construct_operating_system_name
99
- [input['family'], input['variant']].join(' ').gsub(' ', '_')
109
+ if input['family'].include? 'Red Hat'
110
+ return 'RedHat'
111
+ else
112
+ return input['family'].gsub(' ', '_')
113
+ end
114
+ end
115
+
116
+ # Foreman and Puppet uses RedHat name for Red Hat Enterprise Linux
117
+ def normalize_name(name)
118
+ name.sub('Red Hat Enterprise Linux','RedHat')
100
119
  end
101
120
 
102
121
  end
@@ -1,3 +1,15 @@
1
+ #
2
+ # Copyright 2013 Red Hat, Inc.
3
+ #
4
+ # This software is licensed to you under the GNU General Public
5
+ # License as published by the Free Software Foundation; either version
6
+ # 2 of the License (GPLv2) or (at your option) any later version.
7
+ # There is NO WARRANTY for this software, express or implied,
8
+ # including the implied warranties of MERCHANTABILITY,
9
+ # NON-INFRINGEMENT, or FITNESS FOR A PARTICULAR PURPOSE. You should
10
+ # have received a copy of GPLv2 along with this software; if not, see
11
+ # http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
12
+
1
13
  module KatelloForemanEngine
2
14
  module Actions
3
15
  class DistributionUnpublish < Dynflow::Action
@@ -1,3 +1,15 @@
1
+ #
2
+ # Copyright 2013 Red Hat, Inc.
3
+ #
4
+ # This software is licensed to you under the GNU General Public
5
+ # License as published by the Free Software Foundation; either version
6
+ # 2 of the License (GPLv2) or (at your option) any later version.
7
+ # There is NO WARRANTY for this software, express or implied,
8
+ # including the implied warranties of MERCHANTABILITY,
9
+ # NON-INFRINGEMENT, or FITNESS FOR A PARTICULAR PURPOSE. You should
10
+ # have received a copy of GPLv2 along with this software; if not, see
11
+ # http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
12
+
1
13
  module KatelloForemanEngine
2
14
  module Actions
3
15
  class EnvironmentCreate < Dynflow::Action
@@ -7,9 +19,7 @@ module KatelloForemanEngine
7
19
  end
8
20
 
9
21
  def plan(env)
10
- unless env.library?
11
- plan_self 'org_label' => env.organization.label, 'label' => env.label, 'content_view_id' => 'env'
12
- end
22
+ plan_self 'org_label' => env.organization.label, 'label' => env.label, 'content_view_id' => 'env'
13
23
  end
14
24
 
15
25
  input_format do
@@ -1,3 +1,15 @@
1
+ #
2
+ # Copyright 2013 Red Hat, Inc.
3
+ #
4
+ # This software is licensed to you under the GNU General Public
5
+ # License as published by the Free Software Foundation; either version
6
+ # 2 of the License (GPLv2) or (at your option) any later version.
7
+ # There is NO WARRANTY for this software, express or implied,
8
+ # including the implied warranties of MERCHANTABILITY,
9
+ # NON-INFRINGEMENT, or FITNESS FOR A PARTICULAR PURPOSE. You should
10
+ # have received a copy of GPLv2 along with this software; if not, see
11
+ # http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
12
+
1
13
  module KatelloForemanEngine
2
14
  module Actions
3
15
  class EnvironmentDestroy < Dynflow::Action
@@ -11,7 +23,7 @@ module KatelloForemanEngine
11
23
  end
12
24
 
13
25
  def plan(env)
14
- if !env.library? && foreman_env = Bindings.environment_find(env.organization.label, env.label)
26
+ if foreman_env = Bindings.environment_find(env.organization.label, env.label)
15
27
  env.content_views.each do |content_view|
16
28
  plan_action(ContentViewDemote, content_view, env)
17
29
  end
@@ -1,3 +1,15 @@
1
+ #
2
+ # Copyright 2013 Red Hat, Inc.
3
+ #
4
+ # This software is licensed to you under the GNU General Public
5
+ # License as published by the Free Software Foundation; either version
6
+ # 2 of the License (GPLv2) or (at your option) any later version.
7
+ # There is NO WARRANTY for this software, express or implied,
8
+ # including the implied warranties of MERCHANTABILITY,
9
+ # NON-INFRINGEMENT, or FITNESS FOR A PARTICULAR PURPOSE. You should
10
+ # have received a copy of GPLv2 along with this software; if not, see
11
+ # http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
12
+
1
13
  module KatelloForemanEngine
2
14
  module Actions
3
15
  class OrgCreate < Dynflow::Action
@@ -1,3 +1,15 @@
1
+ #
2
+ # Copyright 2013 Red Hat, Inc.
3
+ #
4
+ # This software is licensed to you under the GNU General Public
5
+ # License as published by the Free Software Foundation; either version
6
+ # 2 of the License (GPLv2) or (at your option) any later version.
7
+ # There is NO WARRANTY for this software, express or implied,
8
+ # including the implied warranties of MERCHANTABILITY,
9
+ # NON-INFRINGEMENT, or FITNESS FOR A PARTICULAR PURPOSE. You should
10
+ # have received a copy of GPLv2 along with this software; if not, see
11
+ # http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
12
+
1
13
  module KatelloForemanEngine
2
14
  module Actions
3
15
  class OrgDestroy < Dynflow::Action
@@ -11,7 +23,7 @@ module KatelloForemanEngine
11
23
  end
12
24
 
13
25
  def plan(org)
14
- if foreman_org = Bindings.organization_find("KT-[#{input['label']}]")
26
+ if foreman_org = Bindings.organization_find(input['label'])
15
27
  plan_self('foreman_id' => foreman_org['organization']['id'])
16
28
  end
17
29
  end
@@ -15,6 +15,10 @@ module KatelloForemanEngine
15
15
 
16
16
  class RepositoryChange < Dynflow::Action
17
17
 
18
+ def self.subscribe
19
+ [Katello::Actions::RepositorySync]
20
+ end
21
+
18
22
  def plan(repo)
19
23
  if repo.distributions.empty?
20
24
  # no distributions, no instalation media
@@ -1,3 +1,15 @@
1
+ #
2
+ # Copyright 2013 Red Hat, Inc.
3
+ #
4
+ # This software is licensed to you under the GNU General Public
5
+ # License as published by the Free Software Foundation; either version
6
+ # 2 of the License (GPLv2) or (at your option) any later version.
7
+ # There is NO WARRANTY for this software, express or implied,
8
+ # including the implied warranties of MERCHANTABILITY,
9
+ # NON-INFRINGEMENT, or FITNESS FOR A PARTICULAR PURPOSE. You should
10
+ # have received a copy of GPLv2 along with this software; if not, see
11
+ # http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
12
+
1
13
  module KatelloForemanEngine
2
14
  module Actions
3
15
  class UserCreate < Dynflow::Action
@@ -1,3 +1,15 @@
1
+ #
2
+ # Copyright 2013 Red Hat, Inc.
3
+ #
4
+ # This software is licensed to you under the GNU General Public
5
+ # License as published by the Free Software Foundation; either version
6
+ # 2 of the License (GPLv2) or (at your option) any later version.
7
+ # There is NO WARRANTY for this software, express or implied,
8
+ # including the implied warranties of MERCHANTABILITY,
9
+ # NON-INFRINGEMENT, or FITNESS FOR A PARTICULAR PURPOSE. You should
10
+ # have received a copy of GPLv2 along with this software; if not, see
11
+ # http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
12
+
1
13
  module KatelloForemanEngine
2
14
  module Actions
3
15
  class UserDestroy < Dynflow::Action
@@ -54,7 +54,8 @@ module KatelloForemanEngine
54
54
  return user_resource
55
55
  end
56
56
 
57
- def organization_find(name)
57
+ def organization_find(kt_label)
58
+ name = "KT-[#{kt_label}]"
58
59
  orgs, _ = base.http_call('get', '/api/organizations', 'search' => "name = #{name}")
59
60
  return orgs.first
60
61
  end
@@ -62,7 +63,7 @@ module KatelloForemanEngine
62
63
  def organization_create(name)
63
64
  base.http_call('post', '/api/organizations',
64
65
  :organization => {:name => name,
65
- :ignore_types => %w[User SmartProxy Subnet ComputeResource Medium ConfigTemplate Domain Environment] })
66
+ :ignore_types => %w[User SmartProxy Subnet ComputeResource ConfigTemplate Domain] })
66
67
  end
67
68
 
68
69
  def organization_destroy(id)
@@ -80,7 +81,7 @@ module KatelloForemanEngine
80
81
 
81
82
  def environment_create(content_view_id, org_label, env_label, content_view_label = nil)
82
83
  params = {:org => org_label, :env => env_label, :content_view => content_view_label, :content_view_id => content_view_id}
83
- if foreman_org = organization_find("KT-[#{org_label}]")
84
+ if foreman_org = organization_find(org_label)
84
85
  params[:org_id] = foreman_org['organization']['id']
85
86
  end
86
87
  base.http_call('post', '/foreman_katello_engine/api/environments', params)
@@ -116,7 +117,7 @@ module KatelloForemanEngine
116
117
  end
117
118
 
118
119
  def operating_system_find(name, major, minor)
119
- find_resource(operating_system, "name = #{name} AND major = #{major} AND minor = #{minor}")
120
+ find_resource(operating_system, %{name = "#{name}" AND major = "#{major}" AND minor = "#{minor}"})
120
121
  end
121
122
 
122
123
  def operating_system_create(name, major, minor)
@@ -126,7 +127,12 @@ module KatelloForemanEngine
126
127
  'minor' => minor.to_s,
127
128
  'family' => Settings['foreman_os_family']
128
129
  }
129
- templates_to_add = [template_find(Settings['foreman_os_provisioning_template']),
130
+ provisioning_template_name = if name == 'RedHat'
131
+ Settings['foreman_os_rhel_provisioning_template']
132
+ else
133
+ Settings['foreman_os_provisioning_template']
134
+ end
135
+ templates_to_add = [template_find(provisioning_template_name),
130
136
  template_find(Settings['foreman_os_pxe_template'])].compact
131
137
  data['os_default_templates_attributes'] = templates_to_add.map do |template|
132
138
  {
@@ -169,12 +175,17 @@ module KatelloForemanEngine
169
175
  find_resource(medium, %{path = "#{path}"})
170
176
  end
171
177
 
172
- def medium_create(name, path)
178
+ def medium_create(name, path, org_label)
179
+ params = {
180
+ 'name' => name,
181
+ 'path' => path,
182
+ 'os_family' => Settings['foreman_os_family']
183
+ }
184
+ if foreman_org = organization_find(org_label)
185
+ params['organization_ids'] = [foreman_org['organization']['id']]
186
+ end
173
187
  without_root_key do
174
- self.medium.create('medium' => {
175
- 'name' => name,
176
- 'path' => path,
177
- 'os_family' => Settings['foreman_os_family']})
188
+ self.medium.create('medium' => params)
178
189
  end
179
190
  end
180
191
 
@@ -8,6 +8,7 @@ module KatelloForemanEngine
8
8
  'oauth_consumer_secret' => Katello.config.foreman.oauth_secret,
9
9
  # TODO: make the following options configurable:
10
10
  'foreman_os_family' => 'Redhat',
11
+ 'foreman_os_rhel_provisioning_template' => 'Katello Kickstart Default for RHEL',
11
12
  'foreman_os_provisioning_template' => 'Katello Kickstart Default',
12
13
  'foreman_os_pxe_template' => 'Kickstart default PXElinux',
13
14
  'foreman_os_ptable' => 'RedHat default',
@@ -0,0 +1,45 @@
1
+ require 'test_helper'
2
+
3
+ module KatelloForemanEngine
4
+ module Actions
5
+ class ContentViewPublishTest < ActiveSupport::TestCase
6
+
7
+ def setup
8
+ @org = Organization.new(:label => 'org')
9
+ @content_view = ContentView.new { |cv| cv.organization = @org }
10
+ @content_view.stubs(:repos).returns([])
11
+
12
+ @input = { 'organization_label' => 'ACME',
13
+ 'id' => '123',
14
+ 'label' => 'cv' }
15
+ end
16
+
17
+ test "runs unless the environment in foreman is already created " do
18
+ Bindings.stubs(:environment_find).with('ACME', 'Library', 'cv').returns(nil)
19
+
20
+ step = run_steps(ContentViewPublish, @input, @content_view).first
21
+ assert_equal ContentViewPublish, step.action_class
22
+ assert_equal step.input, @input
23
+
24
+ Bindings.stubs(:environment_find).with('ACME', 'Library', 'cv').returns({'id' => '123'})
25
+ assert_equal [], run_steps(ContentViewPublish, @input, @content_view)
26
+ end
27
+
28
+ test "plans repository change action for every repo involved" do
29
+ Bindings.stubs(:environment_find).with('ACME', 'Library', 'cv').returns({'id' => '123'})
30
+ repo = Repository.new
31
+ @content_view.stubs(:repos).returns([repo])
32
+
33
+ action_class, arg = planned_actions(ContentViewPublish, @input, @content_view).first
34
+ assert_equal RepositoryChange, action_class
35
+ assert_equal arg, repo
36
+ end
37
+
38
+ test 'calls bindings to create environment' do
39
+ Bindings.expects(:environment_create).with('123', 'org', 'Library', 'cv')
40
+ ContentViewPublish.new('organization_label' => 'org', 'label' => 'cv', 'id' => '123').run
41
+ end
42
+
43
+ end
44
+ end
45
+ end
@@ -21,15 +21,18 @@ module KatelloForemanEngine
21
21
  }
22
22
 
23
23
  @arch = 'x86_64'
24
- @os_name = 'Red_Hat_Enterprise_Linux_Server'
24
+ @os_name = 'RedHat'
25
25
  @os_major = '6'
26
26
  @os_minor = '3'
27
27
 
28
- @medium_name = 'Org/Env Red Hat Enterprise Linux Server 6.3 x86_64'
28
+ @medium_name = 'Org/Env RedHat Server 6.3 x86_64'
29
29
  @medium_path = 'http://example.com/pulp/repos/os/'
30
30
 
31
31
  @arch_output = {'architecture' => { 'id' => 1, 'name' => @arch }}
32
32
  @ptable_output = {'ptable' => { 'id' => 1, 'name' => 'RedHat default' }}
33
+ @organization_output = {
34
+ 'organization' => { 'id' => 1 }
35
+ }
33
36
  @os_output = {
34
37
  'operatingsystem' => {
35
38
  'id' => 1,
@@ -50,6 +53,7 @@ module KatelloForemanEngine
50
53
  }
51
54
  }
52
55
 
56
+ Bindings.stubs(:organization_find).with('Org').returns(@organization_output)
53
57
  stub_foreman_search(:architecture, "name = #{@arch}", @arch_output)
54
58
  stub_foreman_search(:ptable, %{name = "RedHat default"}, @ptable_output)
55
59
  stub_foreman_call(:medium, :index, nil, [])
@@ -57,7 +61,7 @@ module KatelloForemanEngine
57
61
  stub_foreman_call(:operating_system, :index, nil, [])
58
62
  stub_foreman_call(:operating_system, :create, nil, @os_output)
59
63
  stub_foreman_call(:operating_system, :update)
60
- stub_foreman_search(:config_template, %{name = "Katello Kickstart Default"}, nil)
64
+ stub_foreman_search(:config_template, %{name = "Katello Kickstart Default for RHEL"}, nil)
61
65
  stub_foreman_search(:config_template, %{name = "Kickstart default PXElinux"}, nil)
62
66
  stub_foreman_search(:ptable, %{name = "RedHat default"}, nil)
63
67
  stub_foreman_call(:operating_system, :index, nil, [])
@@ -113,12 +117,27 @@ module KatelloForemanEngine
113
117
  end
114
118
 
115
119
  test "creates medium and assigns it to the os in not created yet" do
116
- expect_foreman_call(:medium, :create, {'name' => @medium_name, 'path' => @medium_path, 'os_family' => 'Redhat'}, @medium_output)
120
+ medium_params = {
121
+ 'name' => @medium_name,
122
+ 'path' => @medium_path,
123
+ 'os_family' => 'Redhat',
124
+ 'organization_ids' => [1],
125
+ }
126
+ expect_foreman_call(:medium, :create, medium_params, @medium_output)
117
127
  expected_data = {'id' => 1, 'medium_ids' => [@medium_output['medium']['id']]}
118
128
  expect_foreman_call(:operating_system, :update, expected_data)
119
129
  run_action
120
130
  end
121
131
 
132
+ test "it constructs medium name that foreman accepts" do
133
+ action = DistributionPublish.new(@input)
134
+ assert_equal 'Org/Env RedHat Server 6.3 x86_64', action.send(:construct_medium_name)
135
+
136
+ @input['variant'] = ''
137
+ @input['arch'] = nil
138
+ assert_equal 'Org/Env RedHat 6.3', action.send(:construct_medium_name)
139
+ end
140
+
122
141
  end
123
142
  end
124
143
  end
@@ -4,7 +4,7 @@ module KatelloForemanEngine
4
4
  module Actions
5
5
  class EnvCreateTest < ActiveSupport::TestCase
6
6
 
7
- test "doesn't run for library" do
7
+ test "runs both for library and non-library envs " do
8
8
  org = Organization.new(:label => 'org')
9
9
  env = KTEnvironment.new(:label => 'dev')
10
10
  env.organization = org
@@ -17,7 +17,11 @@ module KatelloForemanEngine
17
17
  assert_equal 'env', step.input['content_view_id']
18
18
 
19
19
  env.library = true
20
- assert_equal [], run_steps(EnvironmentCreate, {}, env)
20
+ step = run_steps(EnvironmentCreate, {}, env).first
21
+ assert_equal EnvironmentCreate, step.action_class
22
+ assert_equal 'org', step.input['org_label']
23
+ assert_equal 'dev', step.input['label']
24
+ assert_equal 'env', step.input['content_view_id']
21
25
  end
22
26
 
23
27
  test 'calls bindings to create environment' do
@@ -10,7 +10,8 @@ module KatelloForemanEngine
10
10
  env.organization = org
11
11
 
12
12
  foreman_env = { 'environment' => { 'id' => '123' } }
13
- Bindings.expects(:environment_find).with('org', 'dev').returns(foreman_env)
13
+ Bindings.expects(:environment_find).with('org', 'dev').
14
+ times(2).returns(foreman_env)
14
15
 
15
16
  env.library = false
16
17
  step = run_steps(EnvironmentDestroy,{}, env).first
@@ -18,7 +19,9 @@ module KatelloForemanEngine
18
19
  assert_equal step.input['foreman_id'], '123'
19
20
 
20
21
  env.library = true
21
- assert_equal [], run_steps(EnvironmentDestroy,{}, env)
22
+ step = run_steps(EnvironmentDestroy,{}, env).first
23
+ assert_equal EnvironmentDestroy, step.action_class
24
+ assert_equal step.input['foreman_id'], '123'
22
25
 
23
26
  env.library = false
24
27
  Bindings.expects(:environment_find).returns(nil)
@@ -6,7 +6,7 @@ module KatelloForemanEngine
6
6
 
7
7
  test "runs only when the org is present in Foreman" do
8
8
  foreman_org = { 'organization' => { 'id' => '123' } }
9
- Bindings.expects(:organization_find).with('KT-[test]').returns(foreman_org)
9
+ Bindings.expects(:organization_find).with('test').returns(foreman_org)
10
10
  step = run_steps(OrgDestroy, {'label' => 'test'}, nil).first
11
11
  assert_equal OrgDestroy, step.action_class
12
12
  assert_equal step.input['foreman_id'], '123'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: katello-foreman-engine
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.6
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -49,44 +49,40 @@ executables: []
49
49
  extensions: []
50
50
  extra_rdoc_files: []
51
51
  files:
52
- - .gitignore
53
52
  - Gemfile
53
+ - katello-foreman-engine.gemspec
54
54
  - LICENSE
55
55
  - Rakefile
56
- - katello-foreman-engine.gemspec
57
- - lib/katello-foreman-engine.rb
58
56
  - lib/katello_foreman_engine.rb
59
57
  - lib/katello_foreman_engine/actions/changeset_promote.rb
60
- - lib/katello_foreman_engine/actions/content_view_demote.rb
61
58
  - lib/katello_foreman_engine/actions/content_view_promote.rb
62
- - lib/katello_foreman_engine/actions/distribution_publish.rb
59
+ - lib/katello_foreman_engine/actions/content_view_publish.rb
60
+ - lib/katello_foreman_engine/actions/repository_change.rb
61
+ - lib/katello_foreman_engine/actions/content_view_demote.rb
62
+ - lib/katello_foreman_engine/actions/user_destroy.rb
63
63
  - lib/katello_foreman_engine/actions/distribution_unpublish.rb
64
- - lib/katello_foreman_engine/actions/environment_create.rb
65
- - lib/katello_foreman_engine/actions/environment_destroy.rb
66
- - lib/katello_foreman_engine/actions/org_create.rb
64
+ - lib/katello_foreman_engine/actions/distribution_publish.rb
67
65
  - lib/katello_foreman_engine/actions/org_destroy.rb
68
- - lib/katello_foreman_engine/actions/repository_change.rb
69
66
  - lib/katello_foreman_engine/actions/user_create.rb
70
- - lib/katello_foreman_engine/actions/user_destroy.rb
71
- - lib/katello_foreman_engine/bindings.rb
67
+ - lib/katello_foreman_engine/actions/org_create.rb
68
+ - lib/katello_foreman_engine/actions/environment_create.rb
69
+ - lib/katello_foreman_engine/actions/environment_destroy.rb
70
+ - lib/katello_foreman_engine/settings.rb
72
71
  - lib/katello_foreman_engine/engine.rb
73
72
  - lib/katello_foreman_engine/helpers.rb
74
- - lib/katello_foreman_engine/settings.rb
75
- - rel-eng/packages/.readme
76
- - rel-eng/packages/rubygem-katello-foreman-engine
77
- - rel-eng/tito.props
78
- - rubygem-katello-foreman-engine.spec
79
- - script/rails
80
- - test/lib/actions/distribution_publish_test.rb
73
+ - lib/katello_foreman_engine/bindings.rb
74
+ - lib/katello-foreman-engine.rb
75
+ - test/test_helper.rb
76
+ - test/lib/settings_test.rb
77
+ - test/lib/actions/env_destroy_test.rb
81
78
  - test/lib/actions/distribution_unpublish_test.rb
79
+ - test/lib/actions/org_destroy_test.rb
82
80
  - test/lib/actions/env_create_test.rb
83
- - test/lib/actions/env_destroy_test.rb
84
81
  - test/lib/actions/org_create_test.rb
85
- - test/lib/actions/org_destroy_test.rb
86
82
  - test/lib/actions/repository_change_test.rb
83
+ - test/lib/actions/distribution_publish_test.rb
84
+ - test/lib/actions/content_view_publish_test.rb
87
85
  - test/lib/bindings_test.rb
88
- - test/lib/settings_test.rb
89
- - test/test_helper.rb
90
86
  homepage: http://github.com/katello/katello-foreman-engine
91
87
  licenses:
92
88
  - GPL-2
data/.gitignore DELETED
@@ -1,3 +0,0 @@
1
- Gemfile.lock
2
- test/katello_app
3
- .bundle
@@ -1,3 +0,0 @@
1
- the rel-eng/packages directory contains metadata files
2
- named after their packages. Each file has the latest tagged
3
- version and the project's relative directory.
@@ -1,8 +0,0 @@
1
- [globalconfig]
2
- default_builder = tito.builder.GemBuilder
3
- default_tagger = tito.tagger.VersionTagger
4
- changelog_do_not_remove_cherrypick = 0
5
- changelog_format = %s (%ae)
6
-
7
- [tagconfig]
8
- require_package = ruby193-build
@@ -1,92 +0,0 @@
1
- %{?scl:%scl_package rubygem-%{gem_name}}
2
- %{!?scl:%global pkg_name %{name}}
3
-
4
- %global gem_name katello-foreman-engine
5
-
6
- %define rubyabi 1.9.1
7
- %global katello_bundlerd_dir /usr/share/katello/bundler.d
8
-
9
- Summary: Foreman specific parts of Katello
10
- Name: %{?scl_prefix}rubygem-%{gem_name}
11
- Version: 0.0.3
12
- Release: 1%{?dist}
13
- Group: Development/Libraries
14
- License: GPLv2
15
- URL: http://github.com/Katello/katello-foreman-engine
16
- Source0: http://rubygems.org/downloads/%{gem_name}-%{version}.gem
17
- Requires: katello
18
- Requires: %{?scl_prefix}ruby(abi) >= %{rubyabi}
19
- Requires: %{?scl_prefix}rubygem(foreman_api)
20
- Requires: %{?scl_prefix}rubygems
21
- BuildRequires: %{?scl_prefix}rubygems-devel
22
- BuildRequires: %{?scl_prefix}ruby(abi) >= %{rubyabi}
23
- BuildRequires: %{?scl_prefix}rubygems
24
- BuildArch: noarch
25
- Provides: %{?scl_prefix}rubygem(%{gem_name}) = %{version}
26
-
27
- %description
28
- Foreman specific parts of Katello.
29
-
30
- %package doc
31
- BuildArch: noarch
32
- Requires: %{?scl_prefix}%{pkg_name} = %{version}-%{release}
33
- Summary: Documentation for rubygem-%{gem_name}
34
-
35
- %description doc
36
- This package contains documentation for rubygem-%{gem_name}.
37
-
38
- %prep
39
- %setup -n %{pkg_name}-%{version} -q -c -T
40
- mkdir -p .%{gem_dir}
41
- %{?scl:scl enable %{scl} "}
42
- gem install --local --install-dir .%{gem_dir} \
43
- --force %{SOURCE0} --no-rdoc --no-ri
44
- %{?scl:"}
45
-
46
- %build
47
-
48
- %install
49
- mkdir -p %{buildroot}%{gem_dir}
50
- cp -a .%{gem_dir}/* \
51
- %{buildroot}%{gem_dir}/
52
-
53
- mkdir -p %{buildroot}%{katello_bundlerd_dir}
54
- cat <<GEMFILE > %{buildroot}%{katello_bundlerd_dir}/foreman.rb
55
- gem 'katello-foreman-engine'
56
- GEMFILE
57
-
58
-
59
- %files
60
- %dir %{gem_instdir}
61
- %{gem_instdir}/lib
62
- %{gem_instdir}/script
63
- %exclude %{gem_cache}
64
- %{gem_spec}
65
- %{katello_bundlerd_dir}/foreman.rb
66
- %doc %{gem_instdir}/LICENSE
67
-
68
- %exclude %{gem_instdir}/.gitignore
69
- %exclude %{gem_instdir}/test
70
- #%exclude %{gem_instdir}/.travis.yml
71
- %exclude %{gem_dir}/cache/%{gem_name}-%{version}.gem
72
-
73
- %files doc
74
- %doc %{gem_instdir}/LICENSE
75
- #%doc %{gem_instdir}/README.md
76
- %{gem_instdir}/Rakefile
77
- %{gem_instdir}/Gemfile
78
- %{gem_instdir}/%{gem_name}.gemspec
79
-
80
- %changelog
81
- * Thu May 30 2013 Ivan Necas <inecas@redhat.com> 0.0.3-1
82
- - Katello admins are admins in foreman too (mhulan@redhat.com)
83
-
84
- * Fri May 17 2013 Ivan Necas <inecas@redhat.com> 0.0.2-1
85
- - Installation media integration (inecas@redhat.com)
86
-
87
- * Wed May 08 2013 Ivan Necas <inecas@redhat.com> 0.0.1-1
88
- - new package built with tito
89
-
90
-
91
-
92
-
@@ -1,8 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application.
3
-
4
- ENGINE_ROOT = File.expand_path('../..', __FILE__)
5
- ENGINE_PATH = File.expand_path('../../lib/os_preference/engine', __FILE__)
6
-
7
- require 'rails/all'
8
- require 'rails/engine/commands'