foreman_discovery 1.4.1 → 2.0.0.rc1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (84) hide show
  1. checksums.yaml +5 -13
  2. data/README.md +52 -96
  3. data/app/controllers/api/v2/discovered_hosts_controller.rb +104 -3
  4. data/app/controllers/api/v2/discovery_rules_controller.rb +79 -0
  5. data/app/controllers/concerns/foreman/controller/discovered_extensions.rb +55 -0
  6. data/app/controllers/discovered_hosts_controller.rb +82 -19
  7. data/app/controllers/discovery_rules_controller.rb +73 -0
  8. data/app/helpers/discovered_hosts_helper.rb +18 -6
  9. data/app/helpers/discovery_rules_helper.rb +36 -0
  10. data/app/lib/puppet_fact_parser_extensions.rb +9 -3
  11. data/app/models/concerns/discovery_subnet.rb +7 -0
  12. data/app/models/discovery_attribute_set.rb +8 -0
  13. data/app/models/discovery_rule.rb +24 -0
  14. data/app/models/host/discovered.rb +64 -7
  15. data/app/models/host/managed_extensions.rb +3 -8
  16. data/app/models/hostgroup_extensions.rb +7 -0
  17. data/app/models/setting/discovered.rb +14 -0
  18. data/app/overrides/subnet_form_with_discovery_proxy.rb +9 -0
  19. data/app/views/api/v2/discovered_hosts/auto_provision.json.rabl +3 -0
  20. data/app/views/api/v2/discovered_hosts/auto_provision_all.json.rabl +3 -0
  21. data/app/views/api/v2/discovered_hosts/main.json.rabl +1 -1
  22. data/app/views/api/v2/discovery_rules/base.json.rabl +3 -0
  23. data/app/views/api/v2/discovery_rules/index.json.rabl +3 -0
  24. data/app/views/api/v2/discovery_rules/main.json.rabl +5 -0
  25. data/app/views/api/v2/discovery_rules/show.json.rabl +3 -0
  26. data/app/views/dashboard/_discovery_widget.html.erb +5 -11
  27. data/app/views/dashboard/_discovery_widget_host_list.html.erb +17 -0
  28. data/app/views/discovered_hosts/_discovered_host.html.erb +12 -0
  29. data/app/views/discovered_hosts/_discovered_hosts_list.html.erb +11 -2
  30. data/app/views/discovered_hosts/index.html.erb +1 -0
  31. data/app/views/discovery_rules/_form.html.erb +14 -0
  32. data/app/views/discovery_rules/edit.html.erb +3 -0
  33. data/app/views/discovery_rules/index.html.erb +26 -0
  34. data/app/views/discovery_rules/new.html.erb +3 -0
  35. data/config/routes.rb +19 -0
  36. data/db/migrate/20141107091416_create_discovery_rules.rb +15 -0
  37. data/db/migrate/20141107091417_add_discovery_rule_to_host.rb +9 -0
  38. data/db/migrate/20141126165451_add_discovery_id_to_subnet.rb +9 -0
  39. data/db/migrate/20141223101707_create_discovery_attribute_sets.rb +14 -0
  40. data/db/migrate/20141223142759_fill_discovery_attribute_sets_for_existing_hosts.rb +8 -0
  41. data/db/seeds.d/60_discovery_proxy_feature.rb +2 -0
  42. data/lib/discovery.rake +0 -82
  43. data/lib/foreman_discovery/engine.rb +81 -14
  44. data/lib/foreman_discovery/proxy_operations.rb +18 -0
  45. data/lib/foreman_discovery/version.rb +1 -1
  46. data/locale/de/LC_MESSAGES/foreman_discovery.mo +0 -0
  47. data/locale/de/foreman_discovery.po +1 -1
  48. data/locale/en_GB/LC_MESSAGES/foreman_discovery.mo +0 -0
  49. data/locale/en_GB/foreman_discovery.po +1 -1
  50. data/locale/es/LC_MESSAGES/foreman_discovery.mo +0 -0
  51. data/locale/es/foreman_discovery.po +3 -3
  52. data/locale/fr/LC_MESSAGES/foreman_discovery.mo +0 -0
  53. data/locale/fr/foreman_discovery.po +1 -1
  54. data/locale/gl/LC_MESSAGES/foreman_discovery.mo +0 -0
  55. data/locale/gl/foreman_discovery.po +1 -1
  56. data/locale/it/LC_MESSAGES/foreman_discovery.mo +0 -0
  57. data/locale/it/foreman_discovery.po +1 -1
  58. data/locale/ja/LC_MESSAGES/foreman_discovery.mo +0 -0
  59. data/locale/ja/foreman_discovery.po +1 -1
  60. data/locale/ko/LC_MESSAGES/foreman_discovery.mo +0 -0
  61. data/locale/ko/foreman_discovery.po +1 -1
  62. data/locale/pt_BR/LC_MESSAGES/foreman_discovery.mo +0 -0
  63. data/locale/pt_BR/foreman_discovery.po +1 -1
  64. data/locale/ru/LC_MESSAGES/foreman_discovery.mo +0 -0
  65. data/locale/ru/foreman_discovery.po +1 -1
  66. data/locale/sv_SE/LC_MESSAGES/foreman_discovery.mo +0 -0
  67. data/locale/sv_SE/foreman_discovery.po +1 -1
  68. data/locale/zh_CN/LC_MESSAGES/foreman_discovery.mo +0 -0
  69. data/locale/zh_CN/foreman_discovery.po +1 -1
  70. data/locale/zh_TW/LC_MESSAGES/foreman_discovery.mo +0 -0
  71. data/locale/zh_TW/foreman_discovery.po +1 -1
  72. data/test/factories/discovery_rule_related.rb +20 -0
  73. data/test/functional/api/v2/discovered_hosts_controller_test.rb +81 -0
  74. data/test/functional/api/v2/discovery_rules_controller_test.rb +51 -0
  75. data/test/functional/discovered_hosts_controller_test.rb +96 -3
  76. data/test/functional/discovery_rules_controller_test.rb +62 -0
  77. data/test/test_helper.rb +0 -1
  78. data/test/unit/discovered_extensions_test.rb +106 -0
  79. data/test/unit/discovery_attribute_set_test.rb +43 -0
  80. data/test/unit/facts.json +4 -1
  81. data/test/unit/host_discovered_test.rb +44 -4
  82. metadata +100 -75
  83. data/Rakefile +0 -110
  84. data/lib/foreman_discovery/facts.rb +0 -12
@@ -0,0 +1,9 @@
1
+ class AddDiscoveryIdToSubnet < ActiveRecord::Migration
2
+ def self.up
3
+ add_column :subnets, :discovery_id, :integer
4
+ end
5
+
6
+ def self.down
7
+ remove_column :subnets, :discovery_id
8
+ end
9
+ end
@@ -0,0 +1,14 @@
1
+ class CreateDiscoveryAttributeSets < ActiveRecord::Migration
2
+ def change
3
+ create_table :discovery_attribute_sets do |t|
4
+ t.references :host
5
+ t.integer :memory, :limit => 8, :default => 0
6
+ t.integer :cpu_count, :default => 0
7
+ t.integer :disk_count, :default => 0
8
+ t.integer :disks_size, :limit => 8, :default => 0
9
+ t.timestamps
10
+ end
11
+ add_index :discovery_attribute_sets, :host_id
12
+ add_foreign_key "discovery_attribute_sets", "hosts", name: "discovery_attribute_sets_host_id_fk"
13
+ end
14
+ end
@@ -0,0 +1,8 @@
1
+ class FillDiscoveryAttributeSetsForExistingHosts < ActiveRecord::Migration
2
+ def up
3
+ Host::Discovered.scoped.each { |host| host.populate_fields_from_facts}
4
+ end
5
+
6
+ def down
7
+ end
8
+ end
@@ -0,0 +1,2 @@
1
+ f = Feature.find_or_create_by_name('Discovery')
2
+ raise "Unable to create proxy feature: #{format_errors f}" if f.nil? || f.errors.any?
@@ -1,85 +1,3 @@
1
- require 'open4'
2
- require 'ftools'
3
-
4
- desc <<-END_DESC
5
- A task to (re)build the discovery TCL image using the latest code from
6
- github for the smart proxy. Outputs to ./discovery_image/*
7
-
8
- Available conditions:
9
- * build_verbose - print all the STDOUT and STDERR of the buildscript
10
- END_DESC
11
- namespace :discovery do
12
- task :build_image => :environment do
13
-
14
- verbose = ( ENV['build_verbose'] and ENV['build_verbose'] != 'false' ) ? true : false
15
- mode = case ENV['mode']
16
- when /prod/
17
- "prod"
18
- else
19
- "debug"
20
- end
21
-
22
- # This requires a lot of root-level actions, lets ensure we have root access
23
- if Process.uid == 0 && Process.euid == 0
24
- prefix = ''
25
- else
26
- puts 'not running as root, testing sudo access'
27
- `sudo true`
28
- unless $?.success?
29
- puts "Please run this task with root/sudo priviledges"
30
- exit 1
31
- end
32
- puts 'sudo access confirmed'
33
- prefix = 'sudo'
34
- end
35
-
36
- # dep check
37
- unless system("echo -n 'testing dependency: ' ; which unsquashfs")
38
- puts "please install unsquashfs"
39
- exit 1
40
- end
41
- unless system("echo -n 'testing dependency: ' ; which advdef")
42
- puts "please install advdef"
43
- exit 1
44
- end
45
- unless system("echo -n 'testing dependency: ' ; which git")
46
- puts "please install git"
47
- exit 1
48
- end
49
-
50
- script = File.join(File.dirname(__FILE__), '..', 'extra', 'build_iso.sh')
51
- builddir=''
52
- begin
53
- status = Open4::popen4("#{prefix} #{script} #{mode}") do |pid, stdin, stdout, stderr|
54
- puts "pid : #{ pid }" if verbose
55
- stdrout=stdout.read.strip
56
- builddir = stdrout.split("\n").delete_if {|x| x !~ /#TMPDIR#/}.to_s.split(' ').last.sub(/[\]\"]+/,"")
57
- puts "stdout : #{ stdrout }" if verbose
58
- puts "stderr : #{ stderr.read.strip }" if verbose
59
- end
60
- rescue Exception => e
61
- e.message
62
- e.backtrace
63
- end
64
-
65
- if status.exitstatus == 0
66
- Dir.mkdir 'discovery_image' unless File.directory?('discovery_image')
67
- #File.copy "#{builddir}/initrd.gz", './discovery_image/' # this seems to give
68
- #File.copy "#{builddir}/vmlinuz", './discovery_image/' # some weird errors...
69
- `cp #{builddir}/initrd.gz ./discovery_image/`
70
- `cp #{builddir}/vmlinuz ./discovery_image/`
71
- puts "Your Discovery Image is in ./discovery_image - please copy these files"
72
- puts "to your TFTP server and configure the default boot to use them"
73
- else
74
- puts "status : #{ status.inspect }"
75
- puts "exitstatus : #{ status.exitstatus }"
76
- puts "builddir : #{ builddir.inspect }"
77
- puts 'Run with build_verbose=true for more detail' unless verbose
78
- end
79
-
80
- end
81
- end
82
-
83
1
  # Setup Tests
84
2
  namespace :test do
85
3
  desc "Test Discovery plugin"
@@ -1,11 +1,17 @@
1
1
  require 'fast_gettext'
2
2
  require 'gettext_i18n_rails'
3
+ require 'deface'
3
4
 
4
5
  module ForemanDiscovery
5
6
  #Inherit from the Rails module of the parent app (Foreman), not the plugin.
6
7
  #Thus, inherits from ::Rails::Engine and not from Rails::Engine
7
8
  class Engine < ::Rails::Engine
8
9
 
10
+ # support for concerns for pre-4 Rails versions
11
+ config.autoload_paths += Dir["#{config.root}/app/controllers/concerns"]
12
+ config.autoload_paths += Dir["#{config.root}/app/helpers/concerns"]
13
+ config.autoload_paths += Dir["#{config.root}/app/models/concerns"]
14
+
9
15
  # Load this before the Foreman config initializers, so that the Setting.descendants
10
16
  # list includes the plugin STI setting class
11
17
  initializer 'foreman_discovery.load_default_settings', :before => :load_config_initializers do |app|
@@ -23,26 +29,31 @@ module ForemanDiscovery
23
29
  Foreman::Gettext::Support.add_text_domain locale_domain, locale_dir
24
30
  end
25
31
 
32
+ # Add any db migrations
33
+ initializer "foreman_discovery.load_app_instance_data" do |app|
34
+ app.config.paths['db/migrate'] += ForemanDiscovery::Engine.paths['db/migrate'].existent
35
+ end
36
+
26
37
  initializer 'foreman_discovery.register_plugin', :after=> :finisher_hook do |app|
27
38
  Foreman::Plugin.register :foreman_discovery do
28
- requires_foreman '> 1.5'
39
+ requires_foreman '>= 1.6'
29
40
 
30
- # Add permissions
41
+ # discovered hosts permissions
31
42
  security_block :discovery do
32
43
  permission :view_discovered_hosts, {
33
44
  :discovered_hosts => [:index, :show, :auto_complete_search],
34
45
  :"api/v2/discovered_hosts" => [:index, :show]
35
46
  }, :resource_type => 'Host'
36
47
  permission :provision_discovered_hosts, {
37
- :discovered_hosts => [:new, :create],
38
- :"api/v2/discovered_hosts" => [:create]
48
+ :discovered_hosts => [:new, :create, :auto_provision, :auto_provision_all],
49
+ :"api/v2/discovered_hosts" => [:create, :auto_provision, :auto_provision_all]
39
50
  }, :resource_type => 'Host'
40
51
  permission :edit_discovered_hosts, {
41
52
  :discovered_hosts => [:edit, :update, :update_multiple_location,
42
53
  :select_multiple_organization,
43
54
  :update_multiple_organization,
44
- :select_multiple_location, :refresh_facts],
45
- :"api/v2/discovered_hosts" => [:update, :facts]
55
+ :select_multiple_location, :refresh_facts, :reboot],
56
+ :"api/v2/discovered_hosts" => [:update, :facts, :refresh_facts, :reboot]
46
57
  }, :resource_type => 'Host'
47
58
  permission :destroy_discovered_hosts, {
48
59
  :discovered_hosts => [:destroy, :submit_multiple_destroy, :multiple_destroy],
@@ -50,27 +61,76 @@ module ForemanDiscovery
50
61
  }, :resource_type => 'Host'
51
62
  end
52
63
 
53
- # Add a new role called 'Discovery' if it doesn't exist
54
- role "Discovery", [:view_discovered_hosts, :provision_discovered_hosts, :edit_discovered_hosts, :destroy_discovered_hosts]
64
+ # discovery rules permissions
65
+ security_block :discovery_rules do
66
+ permission :view_discovery_rules, {
67
+ :discovery_rules => [:index, :show, :auto_complete_search],
68
+ :"api/v2/discovery_rules" => [:index, :show]
69
+ }
70
+ permission :new_discovery_rules, {
71
+ :discovery_rules => [:new, :create],
72
+ :"api/v2/discovery_rules" => [:create]
73
+ }
74
+ permission :edit_discovery_rules, {
75
+ :discovery_rules => [:edit, :update, :enable, :disable],
76
+ :"api/v2/discovery_rules" => [:create, :update]
77
+ }
78
+ permission :execute_discovery_rules, {
79
+ :discovery_rules => [:auto_provision, :auto_provision_all],
80
+ :"api/v2/discovery_rules" => [:auto_provision, :auto_provision_all]
81
+ }
82
+ permission :delete_discovery_rules, {
83
+ :discovery_rules => [:destroy],
84
+ :"api/v2/discovery_rules" => [:destroy]
85
+ }
86
+ end
87
+
88
+ # roles (only added if they don't exist)
89
+ role "Discovery Manager", [:view_discovered_hosts, :provision_discovered_hosts, :edit_discovered_hosts, :destroy_discovered_hosts, :view_discovery_rules, :new_discovery_rules, :edit_discovery_rules, :execute_discovery_rules, :delete_discovery_rules]
90
+ role "Discovery Reader", [:view_discovered_hosts, :view_discovery_rules]
55
91
 
56
- #add menu entry
57
- menu :top_menu, :discovery, :url_hash => {:controller=> :discovered_hosts, :action=>:index},
92
+ # menu entries
93
+ menu :top_menu, :discovered_hosts, :url_hash => {:controller => :discovered_hosts, :action => :index},
58
94
  :caption=> N_('Discovered hosts'),
59
95
  :parent => :hosts_menu,
60
96
  :after=>:hosts
61
97
 
98
+ menu :top_menu, :discovery_rules, :url_hash => {:controller => :discovery_rules, :action => :index},
99
+ :caption => N_('Discovery rules'),
100
+ :parent => :configure_menu,
101
+ :after=> :hostgroups
102
+
62
103
  # add dashboard widget
63
- widget 'discovery_widget', :name=>N_('Discovery widget'), :sizex => 4, :sizey =>1
104
+ widget 'discovery_widget', :name=>N_('Discovery widget'), :sizex => 7, :sizey =>1
64
105
 
106
+ # add template helpers
107
+ allowed_template_helpers :rand, :facts_hash
108
+
109
+ # apipie API documentation
110
+ # Only available in 1.8, otherwise it has to be in the initializer below
111
+ if (SETTINGS[:version].to_s.include?('develop') or Gem::Version.new(SETTINGS[:version]) >= Gem::Version.new('1.8'))
112
+ apipie_documented_controllers ["#{ForemanDiscovery::Engine.root}/app/controllers/api/v2/*.rb"]
113
+ end
65
114
  end
66
115
  end
116
+
117
+ initializer "foreman_discovery.load_app_instance_data" do |app|
118
+ app.config.paths['db/migrate'] += ForemanDiscovery::Engine.paths['db/migrate'].existent
119
+ end
120
+
67
121
  initializer "foreman_discovery.apipie" do
68
122
  # this condition is here for compatibility reason to work with Foreman 1.4.x
69
- if Apipie.configuration.api_controllers_matcher.is_a?(Array) && Apipie.configuration.respond_to?(:checksum_path)
70
- Apipie.configuration.api_controllers_matcher << "#{ForemanDiscovery::Engine.root}/app/controllers/api/v2/*.rb"
123
+ # Also need to handle the reverse of the 1.8 method above
124
+ unless (SETTINGS[:version].to_s.include?('develop') or Gem::Version.new(SETTINGS[:version]) >= Gem::Version.new('1.8'))
125
+ if Apipie.configuration.api_controllers_matcher.is_a?(Array)
126
+ Apipie.configuration.api_controllers_matcher << "#{ForemanDiscovery::Engine.root}/app/controllers/api/v2/*.rb"
127
+ end
128
+ end
129
+ if Apipie.configuration.respond_to?(:checksum_path)
71
130
  Apipie.configuration.checksum_path += ['/discovered_hosts/']
72
131
  end
73
132
  end
133
+
74
134
  # Include extensions to models in this config.to_prepare block
75
135
  config.to_prepare do
76
136
 
@@ -81,12 +141,19 @@ module ForemanDiscovery
81
141
  Rails.logger.warn 'PuppetFactParser not found, not loading Parser extensions'
82
142
  end
83
143
 
84
- # Include host extensions
144
+ # Model extensions
85
145
  ::Host::Managed.send :include, Host::ManagedExtensions
146
+ ::Hostgroup.send :include, HostgroupExtensions
147
+
148
+ # Include subnet extensions
149
+ ::Subnet.send :include, DiscoverySubnet
86
150
  end
87
151
 
88
152
  rake_tasks do
89
153
  load "discovery.rake"
154
+ Rake::Task['db:seed'].enhance do
155
+ ForemanDiscovery::Engine.load_seed
156
+ end
90
157
  end
91
158
 
92
159
  end
@@ -0,0 +1,18 @@
1
+ module ForemanDiscovery
2
+ class ProxyOperations < ::ProxyAPI::Resource
3
+ def initialize args
4
+ @url = args[:url]
5
+ @operation = args[:operation]
6
+ super args
7
+ end
8
+
9
+ def parse_put_operation
10
+ parse put({}, "/#{@operation}")
11
+ end
12
+
13
+ def parse_get_operation
14
+ @url += "/#{@operation}"
15
+ parse get
16
+ end
17
+ end
18
+ end
@@ -1,3 +1,3 @@
1
1
  module ForemanDiscovery
2
- VERSION = "1.4.1"
2
+ VERSION = "2.0.0.rc1"
3
3
  end
@@ -9,7 +9,7 @@
9
9
  # simon11 <simon.stieger.98@live.de>, 2014
10
10
  msgid ""
11
11
  msgstr ""
12
- "Project-Id-Version: foreman_discovery 1.4.1\n"
12
+ "Project-Id-Version: foreman_discovery 1.4.0.rc2\n"
13
13
  "Report-Msgid-Bugs-To: \n"
14
14
  "POT-Creation-Date: 2014-08-20 08:33+0100\n"
15
15
  "PO-Revision-Date: 2014-09-16 16:47+0000\n"
@@ -7,7 +7,7 @@
7
7
  # Dominic Cleal <dcleal@redhat.com>, 2013-2014
8
8
  msgid ""
9
9
  msgstr ""
10
- "Project-Id-Version: foreman_discovery 1.4.1\n"
10
+ "Project-Id-Version: foreman_discovery 1.4.0.rc2\n"
11
11
  "Report-Msgid-Bugs-To: \n"
12
12
  "POT-Creation-Date: 2014-08-20 08:33+0100\n"
13
13
  "PO-Revision-Date: 2014-08-22 09:57+0000\n"
@@ -5,14 +5,14 @@
5
5
  #
6
6
  # Translators:
7
7
  # francis <hackgo@gmail.com>, 2013-2014
8
- # Sergio Ocón <sergio.ocon@redhat.com>, 2014
8
+ # Sergio Ocón <sergio@redhat.com>, 2014
9
9
  msgid ""
10
10
  msgstr ""
11
- "Project-Id-Version: foreman_discovery 1.4.1\n"
11
+ "Project-Id-Version: foreman_discovery 1.4.0.rc2\n"
12
12
  "Report-Msgid-Bugs-To: \n"
13
13
  "POT-Creation-Date: 2014-08-20 08:33+0100\n"
14
14
  "PO-Revision-Date: 2014-08-29 11:11+0000\n"
15
- "Last-Translator: Sergio Ocón <sergio.ocon@redhat.com>\n"
15
+ "Last-Translator: Sergio Ocón <sergio@redhat.com>\n"
16
16
  "Language-Team: Spanish (http://www.transifex.com/projects/p/foreman/language/es/)\n"
17
17
  "MIME-Version: 1.0\n"
18
18
  "Content-Type: text/plain; charset=UTF-8\n"
@@ -8,7 +8,7 @@
8
8
  # Pierre-Emmanuel Dutang <dutangp@gmail.com>, 2014
9
9
  msgid ""
10
10
  msgstr ""
11
- "Project-Id-Version: foreman_discovery 1.4.1\n"
11
+ "Project-Id-Version: foreman_discovery 1.4.0.rc2\n"
12
12
  "Report-Msgid-Bugs-To: \n"
13
13
  "POT-Creation-Date: 2014-08-20 08:33+0100\n"
14
14
  "PO-Revision-Date: 2014-08-25 08:30+0000\n"
@@ -6,7 +6,7 @@
6
6
  # Translators:
7
7
  msgid ""
8
8
  msgstr ""
9
- "Project-Id-Version: foreman_discovery 1.4.1\n"
9
+ "Project-Id-Version: foreman_discovery 1.4.0.rc2\n"
10
10
  "Report-Msgid-Bugs-To: \n"
11
11
  "POT-Creation-Date: 2014-08-20 08:33+0100\n"
12
12
  "PO-Revision-Date: 2014-08-22 09:57+0000\n"
@@ -7,7 +7,7 @@
7
7
  # caifti <caifti@gmail.com>, 2014
8
8
  msgid ""
9
9
  msgstr ""
10
- "Project-Id-Version: foreman_discovery 1.4.1\n"
10
+ "Project-Id-Version: foreman_discovery 1.4.0.rc2\n"
11
11
  "Report-Msgid-Bugs-To: \n"
12
12
  "POT-Creation-Date: 2014-08-20 08:33+0100\n"
13
13
  "PO-Revision-Date: 2014-09-16 13:11+0000\n"
@@ -6,7 +6,7 @@
6
6
  # Translators:
7
7
  msgid ""
8
8
  msgstr ""
9
- "Project-Id-Version: foreman_discovery 1.4.1\n"
9
+ "Project-Id-Version: foreman_discovery 1.4.0.rc2\n"
10
10
  "Report-Msgid-Bugs-To: \n"
11
11
  "POT-Creation-Date: 2014-08-20 08:33+0100\n"
12
12
  "PO-Revision-Date: 2014-09-16 13:21+0000\n"
@@ -6,7 +6,7 @@
6
6
  # Translators:
7
7
  msgid ""
8
8
  msgstr ""
9
- "Project-Id-Version: foreman_discovery 1.4.1\n"
9
+ "Project-Id-Version: foreman_discovery 1.4.0.rc2\n"
10
10
  "Report-Msgid-Bugs-To: \n"
11
11
  "POT-Creation-Date: 2014-08-20 08:33+0100\n"
12
12
  "PO-Revision-Date: 2014-09-16 13:21+0000\n"
@@ -9,7 +9,7 @@
9
9
  # luizvasconcelos <luizvasconceloss@yahoo.com.br>, 2014
10
10
  msgid ""
11
11
  msgstr ""
12
- "Project-Id-Version: foreman_discovery 1.4.1\n"
12
+ "Project-Id-Version: foreman_discovery 1.4.0.rc2\n"
13
13
  "Report-Msgid-Bugs-To: \n"
14
14
  "POT-Creation-Date: 2014-08-20 08:33+0100\n"
15
15
  "PO-Revision-Date: 2014-09-16 13:30+0000\n"
@@ -8,7 +8,7 @@
8
8
  # Dominic Cleal <dcleal@redhat.com>, 2014
9
9
  msgid ""
10
10
  msgstr ""
11
- "Project-Id-Version: foreman_discovery 1.4.1\n"
11
+ "Project-Id-Version: foreman_discovery 1.4.0.rc2\n"
12
12
  "Report-Msgid-Bugs-To: \n"
13
13
  "POT-Creation-Date: 2014-08-20 08:33+0100\n"
14
14
  "PO-Revision-Date: 2014-09-16 13:30+0000\n"
@@ -8,7 +8,7 @@
8
8
  # johnny.westerlund <johnny.westerlund@gmail.com>, 2014
9
9
  msgid ""
10
10
  msgstr ""
11
- "Project-Id-Version: foreman_discovery 1.4.1\n"
11
+ "Project-Id-Version: foreman_discovery 1.4.0.rc2\n"
12
12
  "Report-Msgid-Bugs-To: \n"
13
13
  "POT-Creation-Date: 2014-08-20 08:33+0100\n"
14
14
  "PO-Revision-Date: 2014-09-16 13:30+0000\n"