foreman_templates 3.0.0 → 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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ab073792fefeb26fbe23885b712a9baa467753f0
4
- data.tar.gz: c9b1d817144bd1fb43b7667a9e453000a4e047e0
3
+ metadata.gz: 82ee874e71d9e9079295163e6047be8d000ec0da
4
+ data.tar.gz: dced21a45bdb893b228b1ac6656eecfaa38bee92
5
5
  SHA512:
6
- metadata.gz: 8d746a74ce4346d98e062cd6df27c163d411474925d52ee6e54594fc68f16ccf9776fb849a701c0ef137e8136c8faf2d1ff6d915e39e8214e7dea3c004bea478
7
- data.tar.gz: 7ee0097bbc39da25acd264c7932db97c789edc1e8e042ffd7af0f984ebbe20ba7dd1cab8281390bc9022b729e1c6686ef73d81be835bb1abfb8a6035a6986223
6
+ metadata.gz: 4177cb40d2c6dfa46b6ce5435320b7b84d4d870846a59c82b48824a46d16466b92b16c38a7304cbf7ed48efc74fc421425bbaf99211e8751f2f737fdcb4c93f2
7
+ data.tar.gz: 6e06c16092fe06fd6913575e3dbf618658a4ea1c1723187ac57ce680a785b4407ce181235b4bdd15e3e322b848e28f753c196baf8f05a4d18702cd8ab86d7397
@@ -17,7 +17,9 @@ module ForemanTemplates::ProvisioningTemplateImport
17
17
  :snippet => false,
18
18
  :template_kind_id => kind.id
19
19
  }
20
- oses = map_oses(metadata)
20
+ oses = map_metadata(metadata, 'oses')
21
+ locations = map_metadata(metadata, 'locations')
22
+ organizations = map_metadata(metadata, 'organizations')
21
23
 
22
24
  # Printout helpers
23
25
  c_or_u = template.new_record? ? 'Created' : 'Updated'
@@ -25,6 +27,8 @@ module ForemanTemplates::ProvisioningTemplateImport
25
27
 
26
28
  if (metadata['associate'] == 'new' && template.new_record?) || (metadata['associate'] == 'always')
27
29
  data[:operatingsystem_ids] = oses.map(&:id)
30
+ data[:location_ids] = locations.map(&:id)
31
+ data[:organization_ids] = organizations.map(&:id)
28
32
  end
29
33
 
30
34
  if data[:template] != template.template
@@ -36,11 +40,15 @@ module ForemanTemplates::ProvisioningTemplateImport
36
40
  status = template.update_attributes(data)
37
41
  result = " #{c_or_u} Template #{id_string}:#{name}"
38
42
  result += "\n Operatingsystem Associations:\n - #{oses.map(&:fullname).join("\n - ")}" unless oses.empty?
39
- elsif data[:operatingsystem_ids]
43
+ result += "\n Organizations Associations:\n - #{organizations.map(&:name).join("\n - ")}" unless organizations.empty?
44
+ result += "\n Location Associations:\n - #{locations.map(&:name).join("\n - ")}" unless locations.empty?
45
+ elsif data[:operatingsystem_ids] || data[:location_ids] || data[:organization_ids]
40
46
  diff = nil
41
47
  status = template.update_attributes(data)
42
48
  result = " #{c_or_u} Template Associations #{id_string}:#{name}"
43
49
  result += "\n Operatingsystem Associations:\n - #{oses.map(&:fullname).join("\n - ")}" unless oses.empty?
50
+ result += "\n Organizations Associations:\n - #{organizations.map(&:name).join("\n - ")}" unless organizations.empty?
51
+ result += "\n Location Associations:\n - #{locations.map(&:name).join("\n - ")}" unless locations.empty?
44
52
  else
45
53
  diff = nil
46
54
  status = true
@@ -48,15 +56,5 @@ module ForemanTemplates::ProvisioningTemplateImport
48
56
  end
49
57
  { :diff => diff, :status => status, :result => result }
50
58
  end
51
-
52
- def map_oses(metadata)
53
- if metadata['oses']
54
- metadata['oses'].map do |os|
55
- Operatingsystem.all.map { |db| db.to_label =~ /^#{os}/ ? db : nil }
56
- end.flatten.compact
57
- else
58
- []
59
- end
60
- end
61
59
  end
62
60
  end
@@ -8,15 +8,21 @@ module ForemanTemplates::PtableImport
8
8
 
9
9
  # Data
10
10
  ptable = Ptable.where(:name => name).first_or_initialize
11
- data = { :layout => text }
12
- oses = map_oses(metadata)
11
+ data = {
12
+ :layout => text
13
+ }
14
+ oses = map_metadata(metadata, 'oses')
15
+ locations = map_metadata(metadata, 'locations')
16
+ organizations = map_metadata(metadata, 'organizations')
13
17
 
14
18
  # Printout helpers
15
19
  c_or_u = ptable.new_record? ? 'Created' : 'Updated'
16
20
  id_string = ('id' + ptable.id) rescue ''
17
21
 
18
22
  if (metadata['associate'] == 'new' && ptable.new_record?) || (metadata['associate'] == 'always')
19
- data[:os_family] = oses.map(&:family).uniq.first
23
+ data[:os_family] = oses.map(&:family).uniq.first
24
+ data[:location_ids] = locations.map(&:id)
25
+ data[:organization_ids] = organizations.map(&:id)
20
26
  end
21
27
 
22
28
  if data[:layout] != ptable.layout
@@ -27,11 +33,16 @@ module ForemanTemplates::PtableImport
27
33
  ).to_s(:color)
28
34
  status = ptable.update_attributes(data)
29
35
  result = " #{c_or_u} Ptable #{id_string}:#{name}"
30
- elsif data[:os_family]
36
+ result += "\n Operatingsystem Family:\n - #{oses.map(&:family).uniq.first}" unless oses.empty?
37
+ result += "\n Organizations Associations:\n - #{organizations.map(&:name).join("\n - ")}" unless organizations.empty?
38
+ result += "\n Location Associations:\n - #{locations.map(&:name).join("\n - ")}" unless locations.empty?
39
+ elsif data[:os_family] || data[:location_ids] || data[:organization_ids]
31
40
  diff = nil
32
41
  status = ptable.update_attributes(data)
33
42
  result = " #{c_or_u} Ptable Associations #{id_string}:#{name}"
34
43
  result += "\n Operatingsystem Family:\n - #{oses.map(&:family).uniq.first}" unless oses.empty?
44
+ result += "\n Organizations Associations:\n - #{organizations.map(&:name).join("\n - ")}" unless organizations.empty?
45
+ result += "\n Location Associations:\n - #{locations.map(&:name).join("\n - ")}" unless locations.empty?
35
46
  else
36
47
  diff = nil
37
48
  status = true
@@ -39,16 +50,5 @@ module ForemanTemplates::PtableImport
39
50
  end
40
51
  { :diff => diff, :status => status, :result => result }
41
52
  end
42
-
43
- # TODO: DRY this, it's copied from ProvisioningTemplateImport
44
- def map_oses(metadata)
45
- if metadata['oses']
46
- metadata['oses'].map do |os|
47
- Operatingsystem.all.map { |db| db.to_label =~ /^#{os}/ ? db : nil }
48
- end.flatten.compact
49
- else
50
- []
51
- end
52
- end
53
53
  end
54
54
  end
@@ -29,5 +29,26 @@ module ForemanTemplates::TemplateImport
29
29
  end
30
30
  { :diff => diff, :status => status, :result => result }
31
31
  end
32
+
33
+ def map_metadata(metadata, param)
34
+ if metadata[param]
35
+ case param
36
+ when 'oses'
37
+ metadata[param].map do |os|
38
+ Operatingsystem.all.map { |db| db.to_label =~ /^#{os}/ ? db : nil }
39
+ end.flatten.compact
40
+ when 'locations'
41
+ metadata[param].map do |loc|
42
+ Location.all.map { |db| db.name =~ /^#{loc}/ ? db : nil }
43
+ end.flatten.compact
44
+ when 'organizations'
45
+ metadata[param].map do |org|
46
+ Organization.all.map { |db| db.name =~ /^#{org}/ ? db : nil }
47
+ end.flatten.compact
48
+ end
49
+ else
50
+ []
51
+ end
52
+ end
32
53
  end
33
54
  end
@@ -1,3 +1,3 @@
1
1
  module ForemanTemplates
2
- VERSION = '3.0.0'.freeze
2
+ VERSION = '3.1.0'.freeze
3
3
  end
@@ -9,7 +9,7 @@ namespace :templates do
9
9
  #* prefix => The string all imported templates should begin with [Community ]
10
10
  #* dirname => The directory within the git tree containing the templates [/]
11
11
  #* filter => Import names matching this regex (case-insensitive; snippets are not filtered)
12
- #* associate => Associate to OS, always, new or never [new]
12
+ #* associate => Associate to OS's, Locations & Organizations. Options are: always, new or never [new]
13
13
 
14
14
  results = ForemanTemplates::TemplateImporter.new({
15
15
  verbose: ENV['verbose'],
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: foreman_templates
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.0
4
+ version: 3.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Greg Sutcliffe
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-09-07 00:00:00.000000000 Z
11
+ date: 2016-10-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: diffy