foreman_setup 3.0.2 → 3.1.0

Sign up to get free protection for your applications and to get access to all the features.
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: