foreman_setup 3.0.2 → 3.1.0

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.
Files changed (43) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGES.md +5 -0
  3. data/app/controllers/foreman_setup/provisioners_controller.rb +1 -1
  4. data/app/models/foreman_setup/provisioner.rb +2 -0
  5. data/app/views/foreman_setup/provisioners/_step2.html.erb +1 -1
  6. data/app/views/foreman_setup/provisioners/_step4.html.erb +1 -1
  7. data/lib/foreman_setup.rb +1 -1
  8. data/lib/foreman_setup/engine.rb +3 -1
  9. data/lib/foreman_setup/version.rb +1 -1
  10. data/lib/tasks/foreman_setup_tasks.rake +49 -0
  11. data/locale/ca/LC_MESSAGES/foreman_setup.mo +0 -0
  12. data/locale/ca/foreman_setup.po +223 -0
  13. data/locale/de/LC_MESSAGES/foreman_setup.mo +0 -0
  14. data/locale/de/foreman_setup.po +39 -38
  15. data/locale/en/LC_MESSAGES/foreman_setup.mo +0 -0
  16. data/locale/en/foreman_setup.po +1 -1
  17. data/locale/en_GB/LC_MESSAGES/foreman_setup.mo +0 -0
  18. data/locale/en_GB/foreman_setup.po +63 -62
  19. data/locale/es/LC_MESSAGES/foreman_setup.mo +0 -0
  20. data/locale/es/foreman_setup.po +3 -3
  21. data/locale/fr/LC_MESSAGES/foreman_setup.mo +0 -0
  22. data/locale/fr/foreman_setup.po +21 -21
  23. data/locale/it/LC_MESSAGES/foreman_setup.mo +0 -0
  24. data/locale/it/foreman_setup.po +2 -2
  25. data/locale/ja/LC_MESSAGES/foreman_setup.mo +0 -0
  26. data/locale/ja/foreman_setup.po +49 -48
  27. data/locale/ko/LC_MESSAGES/foreman_setup.mo +0 -0
  28. data/locale/ko/foreman_setup.po +4 -4
  29. data/locale/pt_BR/LC_MESSAGES/foreman_setup.mo +0 -0
  30. data/locale/pt_BR/foreman_setup.po +31 -29
  31. data/locale/ru/LC_MESSAGES/foreman_setup.mo +0 -0
  32. data/locale/ru/foreman_setup.po +56 -55
  33. data/locale/sv_SE/LC_MESSAGES/foreman_setup.mo +0 -0
  34. data/locale/sv_SE/foreman_setup.po +3 -3
  35. data/locale/zh_CN/LC_MESSAGES/foreman_setup.mo +0 -0
  36. data/locale/zh_CN/foreman_setup.po +2 -2
  37. data/locale/zh_TW/LC_MESSAGES/foreman_setup.mo +0 -0
  38. data/locale/zh_TW/foreman_setup.po +2 -2
  39. data/test/factories/provisioners.rb +37 -0
  40. data/test/functional/foreman_setup/provisioners_controller_test.rb +150 -0
  41. data/test/test_plugin_helper.rb +6 -0
  42. data/test/unit/foreman_setup/provisioner_test.rb +13 -0
  43. metadata +13 -7
@@ -6,12 +6,12 @@
6
6
  # johnny.westerlund <johnny.westerlund@gmail.com>, 2014
7
7
  msgid ""
8
8
  msgstr ""
9
- "Project-Id-Version: foreman_setup 2.1.0\n"
9
+ "Project-Id-Version: foreman_setup 3.0.2\n"
10
10
  "Report-Msgid-Bugs-To: \n"
11
11
  "POT-Creation-Date: 2014-08-20 09:25+0100\n"
12
- "PO-Revision-Date: 2014-09-16 13:31+0000\n"
12
+ "PO-Revision-Date: 2015-01-21 10:56+0000\n"
13
13
  "Last-Translator: johnny.westerlund <johnny.westerlund@gmail.com>\n"
14
- "Language-Team: Swedish (Sweden) (http://www.transifex.com/projects/p/foreman/language/sv_SE/)\n"
14
+ "Language-Team: Swedish (Sweden) (http://www.transifex.com/foreman/foreman/language/sv_SE/)\n"
15
15
  "MIME-Version: 1.0\n"
16
16
  "Content-Type: text/plain; charset=UTF-8\n"
17
17
  "Content-Transfer-Encoding: 8bit\n"
@@ -5,12 +5,12 @@
5
5
  # Translators:
6
6
  msgid ""
7
7
  msgstr ""
8
- "Project-Id-Version: foreman_setup 2.1.0\n"
8
+ "Project-Id-Version: foreman_setup 3.0.2\n"
9
9
  "Report-Msgid-Bugs-To: \n"
10
10
  "POT-Creation-Date: 2014-08-20 09:25+0100\n"
11
11
  "PO-Revision-Date: 2014-08-20 08:30+0000\n"
12
12
  "Last-Translator: Dominic Cleal <dcleal@redhat.com>\n"
13
- "Language-Team: Chinese (China) (http://www.transifex.com/projects/p/foreman/language/zh_CN/)\n"
13
+ "Language-Team: Chinese (China) (http://www.transifex.com/foreman/foreman/language/zh_CN/)\n"
14
14
  "MIME-Version: 1.0\n"
15
15
  "Content-Type: text/plain; charset=UTF-8\n"
16
16
  "Content-Transfer-Encoding: 8bit\n"
@@ -5,12 +5,12 @@
5
5
  # Translators:
6
6
  msgid ""
7
7
  msgstr ""
8
- "Project-Id-Version: foreman_setup 2.1.0\n"
8
+ "Project-Id-Version: foreman_setup 3.0.2\n"
9
9
  "Report-Msgid-Bugs-To: \n"
10
10
  "POT-Creation-Date: 2014-08-20 09:25+0100\n"
11
11
  "PO-Revision-Date: 2014-08-20 08:30+0000\n"
12
12
  "Last-Translator: Dominic Cleal <dcleal@redhat.com>\n"
13
- "Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/foreman/language/zh_TW/)\n"
13
+ "Language-Team: Chinese (Taiwan) (http://www.transifex.com/foreman/foreman/language/zh_TW/)\n"
14
14
  "MIME-Version: 1.0\n"
15
15
  "Content-Type: text/plain; charset=UTF-8\n"
16
16
  "Content-Transfer-Encoding: 8bit\n"
@@ -0,0 +1,37 @@
1
+ FactoryGirl.define do
2
+ factory :setup_provisioner, :class => ForemanSetup::Provisioner do
3
+ host do
4
+ association :host, :with_puppet_orchestration, :domain => FactoryGirl.create(:domain)
5
+ end
6
+ smart_proxy { association :smart_proxy, :url => "https://#{host.name}:8443" }
7
+
8
+ # After step1, interface selection
9
+ trait :step1 do
10
+ provision_interface 'eth0'
11
+ after(:create) do |prov, evaluator|
12
+ fact = FactoryGirl.create(:fact_name, :name => "ipaddress_#{prov.provision_interface}")
13
+ FactoryGirl.create(:fact_value, :fact_name => fact, :host => prov.host, :value => '192.168.1.20')
14
+
15
+ fact = FactoryGirl.create(:fact_name, :name => "network_#{prov.provision_interface}")
16
+ FactoryGirl.create(:fact_value, :fact_name => fact, :host => prov.host, :value => '192.168.1.0')
17
+
18
+ fact = FactoryGirl.create(:fact_name, :name => "netmask_#{prov.provision_interface}")
19
+ FactoryGirl.create(:fact_value, :fact_name => fact, :host => prov.host, :value => '255.255.255.0')
20
+
21
+ fact = FactoryGirl.create(:fact_name, :name => 'interfaces')
22
+ FactoryGirl.create(:fact_value, :fact_name => fact, :host => prov.host, :value => 'lo,eth0,eth1')
23
+ end
24
+ end
25
+
26
+ # After step2_update, update with nested subnet data
27
+ trait :step2 do
28
+ step1
29
+ hostgroup
30
+ domain
31
+ subnet
32
+ after(:create) do |prov, evaluator|
33
+ prov.subnet.domains << prov.domain
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,150 @@
1
+ require 'test_plugin_helper'
2
+
3
+ class ForemanSetup::ProvisionersControllerTest < ActionController::TestCase
4
+ test '#index without provisioner' do
5
+ get :index, {}, set_session_user
6
+ assert_redirected_to new_foreman_setup_provisioner_path
7
+ end
8
+
9
+ test '#index with provisioner' do
10
+ FactoryGirl.create :setup_provisioner
11
+ get :index, {}, set_session_user
12
+ assert_response :success
13
+ assert_template 'foreman_setup/provisioners/index'
14
+ end
15
+
16
+ context 'pre-creation' do
17
+ setup do
18
+ @host = FactoryGirl.create(:host, :domain => FactoryGirl.create(:domain))
19
+ Facter.expects(:value).with(:fqdn).returns(@host.name).at_least_once
20
+ @proxy = FactoryGirl.create(:smart_proxy, :url => "https://#{@host.name}:8443")
21
+ end
22
+
23
+ test '#new' do
24
+ get :new, {}, set_session_user
25
+ assert_response :success
26
+ assert_equal @host, assigns(:host)
27
+ assert_equal @proxy, assigns(:proxy)
28
+ assert_template 'foreman_setup/provisioners/_step1'
29
+ end
30
+
31
+ test '#create success' do
32
+ post :create, {'foreman_setup_provisioner' => {:host_id => @host.id, :smart_proxy_id => @proxy.id, :provision_interface => 'eth0'}}, set_session_user
33
+
34
+ prov = ForemanSetup::Provisioner.find_by_host_id(@host.id)
35
+ assert prov
36
+ assert_equal @host, prov.host
37
+ assert_equal @proxy, prov.smart_proxy
38
+ assert_equal 'eth0', prov.provision_interface
39
+
40
+ assert_redirected_to step2_foreman_setup_provisioner_path(prov)
41
+ end
42
+
43
+ test '#create failure' do
44
+ post :create, {}, set_session_user
45
+ assert_equal @host, assigns(:host)
46
+ assert_equal @proxy, assigns(:proxy)
47
+ assert_template 'foreman_setup/provisioners/_step1'
48
+ end
49
+ end
50
+
51
+ test '#step2 with new subnet' do
52
+ prov = FactoryGirl.create(:setup_provisioner, :step1)
53
+ get :step2, {:id => prov.id}, set_session_user
54
+ assert_response :success
55
+ assert_template 'foreman_setup/provisioners/_step2'
56
+
57
+ assert assigns(:provisioner).subnet.new_record?
58
+ assert_equal '192.168.1.0', assigns(:provisioner).subnet.network
59
+ assert_equal '255.255.255.0', assigns(:provisioner).subnet.mask
60
+ assert_equal '192.168.1.20', assigns(:provisioner).subnet.dns_primary
61
+
62
+ assert_equal prov.host.domain, assigns(:provisioner).domain
63
+ end
64
+
65
+ test '#step2_update' do
66
+ prov = FactoryGirl.create(:setup_provisioner, :step1)
67
+ Facter.expects(:value).with(:fqdn).returns(prov.host.name).at_least_once
68
+
69
+ put :step2_update, {:id => prov.id, 'foreman_setup_provisioner' => {:subnet_attributes => {'name' => 'test', :network => '192.168.1.0', :mask => '255.255.255.0'}, :domain_name => prov.host.domain.name}}, set_session_user
70
+ assert_redirected_to step3_foreman_setup_provisioner_path(prov)
71
+
72
+ prov.reload
73
+
74
+ # Check new hg was created
75
+ assert Hostgroup.find_by_name("Provision from #{prov.host.name}")
76
+ assert prov.hostgroup
77
+
78
+ # Check nested subnet was created and saved
79
+ subnet = Subnet.find_by_network('192.168.1.0')
80
+ assert subnet
81
+ assert_equal 'test', subnet.name
82
+ assert prov.subnet
83
+
84
+ # Check domain was saved
85
+ assert_equal prov.host.domain, prov.domain
86
+
87
+ # Check domain/subnet association
88
+ assert_includes prov.domain.subnets, subnet
89
+ end
90
+
91
+ test '#step3' do
92
+ prov = FactoryGirl.create(:setup_provisioner, :step2)
93
+ get :step3, {:id => prov.id}, set_session_user
94
+ assert_response :success
95
+ assert_template 'foreman_setup/provisioners/_step3'
96
+ end
97
+
98
+ test '#step4' do
99
+ prov = FactoryGirl.create(:setup_provisioner, :step2)
100
+
101
+ SmartProxy.any_instance.expects(:refresh)
102
+ prov.smart_proxy.features = Feature.where(:name => ['DNS', 'DHCP', 'TFTP'])
103
+ prov.smart_proxy.save!
104
+
105
+ ProvisioningTemplate.expects(:build_pxe_default).returns(200, 'Sucess')
106
+
107
+ get :step4, {:id => prov.id}, set_session_user
108
+ assert_response :success
109
+ assert_template 'foreman_setup/provisioners/_step4'
110
+ assert assigns(:medium)
111
+
112
+ prov.reload
113
+
114
+ # Check proxy feature-based assignments worked
115
+ assert_equal prov.smart_proxy.id, prov.subnet.dns_id
116
+ # assert_equal prov.smart_proxy.id, prov.domain.dns_id # BUG, not saved
117
+ assert_equal prov.smart_proxy.id, prov.subnet.dhcp_id
118
+ assert_equal prov.smart_proxy.id, prov.subnet.tftp_id
119
+ end
120
+
121
+ test '#step4_update' do
122
+ prov = FactoryGirl.create(:setup_provisioner, :step2)
123
+
124
+ attrs = {
125
+ :hostgroup_attributes => {},
126
+ :create_medium => {:name => 'test', :path => 'http://mirror.example.com'},
127
+ :activation_key => {},
128
+ :satellite_type => {},
129
+ }
130
+ put :step4_update, {:id => prov.id, 'foreman_setup_provisioner' => attrs}, set_session_user
131
+ assert_redirected_to step5_foreman_setup_provisioner_path(prov)
132
+
133
+ prov.reload
134
+
135
+ assert prov.hostgroup.medium
136
+ assert_equal 'test', prov.hostgroup.medium.name
137
+ assert_equal 'http://mirror.example.com', prov.hostgroup.medium.path
138
+
139
+ assert prov.hostgroup.ptable
140
+
141
+ # TODO: assert that the OS and templates are all correctly associated
142
+ end
143
+
144
+ test '#step5' do
145
+ prov = FactoryGirl.create(:setup_provisioner, :step2)
146
+ get :step5, {:id => prov.id}, set_session_user
147
+ assert_response :success
148
+ assert_template 'foreman_setup/provisioners/_step5'
149
+ end
150
+ end
@@ -0,0 +1,6 @@
1
+ # This calls the main test_helper in Foreman core
2
+ require 'test_helper'
3
+
4
+ # Add plugin to FactoryGirl's paths
5
+ FactoryGirl.definition_file_paths << File.join(File.dirname(__FILE__), 'factories')
6
+ FactoryGirl.reload
@@ -0,0 +1,13 @@
1
+ require 'test_helper'
2
+
3
+ class ForemanSetupProvisionerTest < ActiveSupport::TestCase
4
+ test '#interfaces returns hash' do
5
+ prov = FactoryGirl.create(:setup_provisioner, :step1)
6
+ assert_equal({'eth0' => {:ip => '192.168.1.20', :mask => '255.255.255.0', :network => '192.168.1.0', :cidr => '192.168.1.0/24'}}, prov.interfaces)
7
+ end
8
+
9
+ test '#provision_interface_data returns hash' do
10
+ prov = FactoryGirl.create(:setup_provisioner, :step1)
11
+ assert_equal({:ip => '192.168.1.20', :mask => '255.255.255.0', :network => '192.168.1.0', :cidr => '192.168.1.0/24'}, prov.provision_interface_data)
12
+ end
13
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: foreman_setup
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.2
4
+ version: 3.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dominic Cleal
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-08-27 00:00:00.000000000 Z
11
+ date: 2016-01-06 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Plugin for Foreman that helps set up provisioning.
14
14
  email: dcleal@redhat.com
@@ -19,7 +19,7 @@ extra_rdoc_files:
19
19
  - LICENSE
20
20
  - README.md
21
21
  files:
22
- - ".tx/config"
22
+ - .tx/config
23
23
  - CHANGES.md
24
24
  - LICENSE
25
25
  - README.md
@@ -46,7 +46,10 @@ files:
46
46
  - lib/foreman_setup.rb
47
47
  - lib/foreman_setup/engine.rb
48
48
  - lib/foreman_setup/version.rb
49
+ - lib/tasks/foreman_setup_tasks.rake
49
50
  - locale/Makefile
51
+ - locale/ca/LC_MESSAGES/foreman_setup.mo
52
+ - locale/ca/foreman_setup.po
50
53
  - locale/de/LC_MESSAGES/foreman_setup.mo
51
54
  - locale/de/foreman_setup.po
52
55
  - locale/en/LC_MESSAGES/foreman_setup.mo
@@ -75,6 +78,10 @@ files:
75
78
  - locale/zh_CN/foreman_setup.po
76
79
  - locale/zh_TW/LC_MESSAGES/foreman_setup.mo
77
80
  - locale/zh_TW/foreman_setup.po
81
+ - test/factories/provisioners.rb
82
+ - test/functional/foreman_setup/provisioners_controller_test.rb
83
+ - test/test_plugin_helper.rb
84
+ - test/unit/foreman_setup/provisioner_test.rb
78
85
  homepage: http://github.com/theforeman/foreman_setup
79
86
  licenses:
80
87
  - GPL-3
@@ -85,19 +92,18 @@ require_paths:
85
92
  - lib
86
93
  required_ruby_version: !ruby/object:Gem::Requirement
87
94
  requirements:
88
- - - ">="
95
+ - - '>='
89
96
  - !ruby/object:Gem::Version
90
97
  version: '0'
91
98
  required_rubygems_version: !ruby/object:Gem::Requirement
92
99
  requirements:
93
- - - ">="
100
+ - - '>='
94
101
  - !ruby/object:Gem::Version
95
102
  version: '0'
96
103
  requirements: []
97
104
  rubyforge_project:
98
- rubygems_version: 2.4.8
105
+ rubygems_version: 2.4.4
99
106
  signing_key:
100
107
  specification_version: 4
101
108
  summary: Helps set up Foreman for provisioning
102
109
  test_files: []
103
- has_rdoc: