foreman_puppet 1.0.4 → 2.0.2

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 (112) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/concerns/foreman_puppet/extensions/api_hostgroups_controller.rb +14 -16
  3. data/app/controllers/concerns/foreman_puppet/{api/import_puppetclasses_common_controller.rb → extensions/api_smart_proxies_controller.rb} +9 -3
  4. data/app/controllers/concerns/foreman_puppet/extensions/api_template_combinations_controller.rb +23 -1
  5. data/app/controllers/concerns/foreman_puppet/extensions/api_v2_hosts_controller.rb +15 -17
  6. data/app/controllers/concerns/foreman_puppet/extensions/hostgroups_controller_extensions.rb +3 -1
  7. data/app/controllers/concerns/foreman_puppet/extensions/hosts_controller_extensions.rb +0 -1
  8. data/app/controllers/concerns/foreman_puppet/extensions/parameters_hostgroup.rb +2 -8
  9. data/app/controllers/foreman_puppet/api/v2/environments_controller.rb +0 -1
  10. data/app/controllers/foreman_puppet/api/v2/hostgroup_classes_controller.rb +1 -1
  11. data/app/controllers/foreman_puppet/puppetclasses_controller.rb +1 -1
  12. data/app/helpers/foreman_puppet/environments_helper.rb +1 -1
  13. data/app/helpers/foreman_puppet/hosts_and_hostgroups_helper.rb +0 -5
  14. data/app/helpers/foreman_puppet/hosts_helper.rb +6 -10
  15. data/app/models/concerns/foreman_puppet/extensions/host.rb +2 -16
  16. data/app/models/concerns/foreman_puppet/extensions/hostgroup.rb +2 -7
  17. data/app/models/concerns/foreman_puppet/extensions/provisioning_template.rb +7 -12
  18. data/app/models/concerns/foreman_puppet/extensions/template_combination.rb +5 -10
  19. data/app/models/foreman_puppet/host_puppet_facet.rb +1 -1
  20. data/app/models/foreman_puppet/hostgroup_puppet_facet.rb +2 -0
  21. data/app/services/foreman_puppet/puppet_class_importer.rb +0 -6
  22. data/app/views/foreman_puppet/api/v2/host_puppet_facets/host_list.json.rabl +3 -0
  23. data/app/views/foreman_puppet/api/v2/hostgroup_puppet_facets/base.json.rabl +2 -0
  24. data/app/views/foreman_puppet/api/v2/hostgroup_puppet_facets/hostgroup_list.json.rabl +3 -0
  25. data/app/views/foreman_puppet/config_groups/index.html.erb +1 -1
  26. data/config/api_routes.rb +1 -9
  27. data/config/initializers/api_reroute.rb +73 -5
  28. data/db/migrate/20101121140000_add_environment_to_template_combinations.foreman_puppet.rb +1 -1
  29. data/db/migrate/20200803113803_migrate_environment_to_puppet_facet.foreman_puppet.rb +2 -0
  30. data/db/migrate/20200803113903_migrate_host_type_in_host_config_groups.foreman_puppet.rb +36 -20
  31. data/db/migrate/20201125113903_migrate_puppetclasses_to_facets.foreman_puppet.rb +0 -8
  32. data/db/migrate/20210924103241_remove_katello_id_from_environments.foreman_puppet.rb +5 -0
  33. data/db/migrate/20211111125003_drop_puppetclasses_direct_references.foreman_puppet.rb +11 -0
  34. data/db/migrate/20211112130803_cleanup_environment_from_core_tables.foreman_puppet.rb +10 -0
  35. data/db/migrate_foreman/{20090722141107_create_environments.rb → 20090722141107_create_environments.foreman_puppet.rb} +3 -3
  36. data/db/migrate_foreman/20090802062223_create_puppetclasses.foreman_puppet.rb +29 -0
  37. data/db/migrate_foreman/20090905150132_create_hostgroups_puppetclasses.foreman_puppet.rb +12 -0
  38. data/db/migrate_foreman/20110412103238_remove_unused_fields_from_puppet_classes.foreman_puppet.rb +9 -0
  39. data/db/migrate_foreman/20110712070522_create_host_class.foreman_puppet.rb +11 -0
  40. data/db/migrate_foreman/20120824142048_add_some_indexes.foreman_puppet.rb +21 -0
  41. data/db/migrate_foreman/{20120905095532_create_environment_classes.rb → 20120905095532_create_environment_classes.foreman_puppet.rb} +2 -2
  42. data/db/migrate_foreman/20121018152459_create_hostgroup_classes.foreman_puppet.rb +11 -0
  43. data/db/migrate_foreman/{20140407161817_create_config_groups.rb → 20140407161817_create_config_groups.foreman_puppet.rb} +0 -0
  44. data/db/migrate_foreman/{20140407162007_create_config_group_classes.rb → 20140407162007_create_config_group_classes.foreman_puppet.rb} +0 -0
  45. data/db/migrate_foreman/{20140407162059_create_host_config_groups.rb → 20140407162059_create_host_config_groups.foreman_puppet.rb} +0 -0
  46. data/db/migrate_foreman/{20161205142618_delete_orphaned_smart_class_parameters.rb → 20161205142618_delete_orphaned_smart_class_parameters.foreman_puppet.rb} +1 -1
  47. data/db/migrate_foreman/{20170109115157_fix_lookup_key_auditable_type.rb → 20170109115157_fix_lookup_key_auditable_type.foreman_puppet.rb} +0 -0
  48. data/db/migrate_foreman/20180816134832_cast_lookup_key_values.foreman_puppet.rb +5 -0
  49. data/db/migrate_foreman/20180831115634_add_uniqueness_to_puppetclass_name.foreman_puppet.rb +24 -0
  50. data/db/migrate_foreman/{20181023112532_add_environment_puppetclass_id.rb → 20181023112532_add_environment_puppetclass_id.foreman_puppet.rb} +1 -1
  51. data/db/migrate_foreman/{20181224174419_add_index_to_environment_class_by_lookup_key_and_puppetclass.rb → 20181224174419_add_index_to_environment_class_by_lookup_key_and_puppetclass.foreman_puppet.rb} +0 -0
  52. data/lib/foreman_puppet/engine.rb +4 -36
  53. data/lib/foreman_puppet/register.rb +49 -45
  54. data/lib/foreman_puppet/version.rb +1 -1
  55. data/lib/foreman_puppet.rb +1 -6
  56. data/locale/ca/LC_MESSAGES/foreman_puppet.mo +0 -0
  57. data/locale/ca/foreman_puppet.po +760 -0
  58. data/locale/cs_CZ/LC_MESSAGES/foreman_puppet.mo +0 -0
  59. data/locale/cs_CZ/foreman_puppet.edit.po +1085 -0
  60. data/locale/cs_CZ/foreman_puppet.po +823 -0
  61. data/locale/cs_CZ/foreman_puppet.po.time_stamp +0 -0
  62. data/locale/de/LC_MESSAGES/foreman_puppet.mo +0 -0
  63. data/locale/de/foreman_puppet.po +844 -0
  64. data/locale/en/LC_MESSAGES/foreman_puppet.mo +0 -0
  65. data/locale/en/foreman_puppet.edit.po +317 -162
  66. data/locale/en/foreman_puppet.po +119 -8
  67. data/locale/en_GB/LC_MESSAGES/foreman_puppet.mo +0 -0
  68. data/locale/en_GB/foreman_puppet.po +820 -0
  69. data/locale/es/LC_MESSAGES/foreman_puppet.mo +0 -0
  70. data/locale/es/foreman_puppet.po +827 -0
  71. data/locale/foreman_puppet.pot +376 -205
  72. data/locale/fr/LC_MESSAGES/foreman_puppet.mo +0 -0
  73. data/locale/fr/foreman_puppet.po +835 -0
  74. data/locale/gemspec.rb +1 -1
  75. data/locale/gl/LC_MESSAGES/foreman_puppet.mo +0 -0
  76. data/locale/gl/foreman_puppet.po +818 -0
  77. data/locale/it/LC_MESSAGES/foreman_puppet.mo +0 -0
  78. data/locale/it/foreman_puppet.po +822 -0
  79. data/locale/ja/LC_MESSAGES/foreman_puppet.mo +0 -0
  80. data/locale/ja/foreman_puppet.po +830 -0
  81. data/locale/ko/LC_MESSAGES/foreman_puppet.mo +0 -0
  82. data/locale/ko/foreman_puppet.po +819 -0
  83. data/locale/nl_NL/LC_MESSAGES/foreman_puppet.mo +0 -0
  84. data/locale/nl_NL/foreman_puppet.po +823 -0
  85. data/locale/pl/LC_MESSAGES/foreman_puppet.mo +0 -0
  86. data/locale/pl/foreman_puppet.po +822 -0
  87. data/locale/pt_BR/LC_MESSAGES/foreman_puppet.mo +0 -0
  88. data/locale/pt_BR/foreman_puppet.po +826 -0
  89. data/locale/ru/LC_MESSAGES/foreman_puppet.mo +0 -0
  90. data/locale/ru/foreman_puppet.po +827 -0
  91. data/locale/sv_SE/LC_MESSAGES/foreman_puppet.mo +0 -0
  92. data/locale/sv_SE/foreman_puppet.po +822 -0
  93. data/locale/zh_CN/LC_MESSAGES/foreman_puppet.mo +0 -0
  94. data/locale/zh_CN/foreman_puppet.po +831 -0
  95. data/locale/zh_TW/LC_MESSAGES/foreman_puppet.mo +0 -0
  96. data/locale/zh_TW/foreman_puppet.po +821 -0
  97. data/package.json +8 -11
  98. data/test/controllers/foreman_puppet/api/v2/environments_controller_test.rb +0 -231
  99. data/test/controllers/foreman_puppet/api/v2/smart_proxies_controller_test.rb +255 -0
  100. data/test/controllers/foreman_puppet/environments_controller_test.rb +2 -2
  101. data/test/controllers/foreman_puppet/hosts_controller_test.rb +0 -1
  102. data/test/factories/foreman_puppet_factories.rb +0 -2
  103. data/test/helpers/foreman_puppet/hosts_and_hostgroups_helper_test.rb +70 -31
  104. data/test/integration/foreman_puppet/dashboard_js_test.rb +31 -0
  105. data/test/integration/foreman_puppet/host_js_test.rb +0 -1
  106. data/test/integration/foreman_puppet/puppetclass_js_test.rb +1 -1
  107. data/test/models/foreman_puppet/host_puppet_facet_test.rb +7 -1
  108. data/test/models/foreman_puppet/host_test.rb +26 -0
  109. data/test/models/foreman_puppet/user_test.rb +1 -5
  110. data/test/unit/foreman_puppet/puppet_class_importer_test.rb +1 -1
  111. metadata +67 -15
  112. data/db/migrate_foreman/20180816134832_cast_lookup_key_values.rb +0 -35
@@ -13,26 +13,8 @@ class MigrateHostTypeInHostConfigGroups < ActiveRecord::Migration[6.0]
13
13
  end
14
14
 
15
15
  def up
16
- host_config_group_ids = FakeHostConfigGroup.for_host.pluck(:host_id).uniq
17
- host_config_group_ids.each do |host_id|
18
- host_facet_id = ForemanPuppet::HostPuppetFacet.where(host_id: host_id).pick(:id)
19
- host_groups = FakeHostConfigGroup.for_host.where(host_id: host_id)
20
- if host_facet_id
21
- host_groups.update_all(host_type: 'ForemanPuppet::HostPuppetFacet', host_id: host_facet_id)
22
- else
23
- deleted_groups = FakeConfigGroup.where(id: host_groups.pluck(:config_group_id)).pluck(:name)
24
- say "deleting groups #{deleted_groups.join(', ')} from Host (id=#{host_id}) because it has no environment"
25
- host_groups.delete_all
26
- end
27
- end
28
- hostgroup_config_group_ids = FakeHostConfigGroup.for_hostgroup.pluck(:host_id).uniq
29
- hostgroup_config_group_ids.each do |hostgroup_id|
30
- hostgroup_facet_id = ForemanPuppet::HostgroupPuppetFacet.where(hostgroup_id: hostgroup_id).pick(:id)
31
- hostgroup_facet_id ||= ForemanPuppet::HostgroupPuppetFacet.create!(hostgroup: Hostgroup.unscoped.find(hostgroup_id)).id
32
- FakeHostConfigGroup.for_hostgroup
33
- .where(host_id: hostgroup_id)
34
- .update_all(host_type: 'ForemanPuppet::HostgroupPuppetFacet', host_id: hostgroup_facet_id)
35
- end
16
+ migrate_host_data_to_facets
17
+ migrate_hostgroup_data_to_facets
36
18
  end
37
19
 
38
20
  def down
@@ -51,4 +33,38 @@ class MigrateHostTypeInHostConfigGroups < ActiveRecord::Migration[6.0]
51
33
  .update_all(host_type: 'Hostgroup', host_id: hostgroup_facet_ids[hostgroup_facet_id])
52
34
  end
53
35
  end
36
+
37
+ private
38
+
39
+ def migrate_host_data_to_facets
40
+ host_config_group_ids = FakeHostConfigGroup.for_host.pluck(:host_id).uniq
41
+ host_config_group_ids.each do |host_id|
42
+ host_facet_id = ForemanPuppet::HostPuppetFacet.where(host_id: host_id).pick(:id)
43
+ host_groups = FakeHostConfigGroup.for_host.where(host_id: host_id)
44
+ if host_facet_id
45
+ host_groups.update_all(host_type: 'ForemanPuppet::HostPuppetFacet', host_id: host_facet_id)
46
+ else
47
+ deleted_groups = FakeConfigGroup.where(id: host_groups.pluck(:config_group_id)).pluck(:name)
48
+ say "Deleting Config groups #{deleted_groups.join(', ')} from Host (id=#{host_id}) because the Host doesn't exist or has no environment"
49
+ host_groups.delete_all
50
+ end
51
+ end
52
+ end
53
+
54
+ def migrate_hostgroup_data_to_facets
55
+ hostgroup_config_group_ids = FakeHostConfigGroup.for_hostgroup.pluck(:host_id).uniq
56
+ hostgroup_config_group_ids.each do |hostgroup_id|
57
+ hostgroup = Hostgroup.unscoped.find_by(id: hostgroup_id)
58
+ hostgroup_groups = FakeHostConfigGroup.for_hostgroup.where(host_id: hostgroup_id)
59
+ if hostgroup
60
+ hostgroup_facet_id = ForemanPuppet::HostgroupPuppetFacet.where(hostgroup_id: hostgroup_id).pick(:id)
61
+ hostgroup_facet_id ||= ForemanPuppet::HostgroupPuppetFacet.create!(hostgroup: hostgroup).id
62
+ hostgroup_groups.update_all(host_type: 'ForemanPuppet::HostgroupPuppetFacet', host_id: hostgroup_facet_id)
63
+ else
64
+ deleted_groups = FakeConfigGroup.where(id: hostgroup_groups.pluck(:config_group_id)).pluck(:name)
65
+ say "Deleting Config groups #{deleted_groups.join(', ')} from Hostgroup (id=#{hostgroup_id}) because Hostgroup doesn't exist"
66
+ hostgroup_groups.delete_all
67
+ end
68
+ end
69
+ end
54
70
  end
@@ -33,17 +33,9 @@ class MigratePuppetclassesToFacets < ActiveRecord::Migration[6.0]
33
33
  hostgroup_facet ||= ForemanPuppet::HostgroupPuppetFacet.create(hostgroup: Hostgroup.unscoped.find(hostgroup_id))
34
34
  ForemanPuppet::HostgroupClass.where(hostgroup_id: hostgroup_id).update_all(hostgroup_puppet_facet_id: hostgroup_facet.id)
35
35
  end
36
-
37
- change_column_null(:host_classes, :host_id, true)
38
- change_column_null(:hostgroup_classes, :hostgroup_id, true)
39
- # remove_reference(:host_classes, :host, index: true, foreign_key: true)
40
- # remove_reference(:hostgroup_classes, :hostgroup, index: true, foreign_key: true)
41
36
  end
42
37
 
43
38
  def down
44
- # add_reference :host_classes, :host, foreign_key: true, index: true
45
- # add_reference :hostgroup_classes, :hostgroup, foreign_key: true, index: true
46
-
47
39
  host_facets_ids = ForemanPuppet::HostClass.joins(:host_puppet_facet).pluck(:host_puppet_facet_id, 'host_puppet_facets.host_id')
48
40
  host_facets_ids.each do |host_facet_id, host_id|
49
41
  ForemanPuppet::HostClass.where(host_puppet_facet_id: host_facet_id).update_all(host_id: host_id)
@@ -0,0 +1,5 @@
1
+ class RemoveKatelloIdFromEnvironments < ActiveRecord::Migration[6.0]
2
+ def up
3
+ remove_column :environments, :katello_id if column_exists?(:environments, :katello_id)
4
+ end
5
+ end
@@ -0,0 +1,11 @@
1
+ class DropPuppetclassesDirectReferences < ActiveRecord::Migration[6.0]
2
+ def up
3
+ remove_reference(:host_classes, :host, index: true, foreign_key: true)
4
+ remove_reference(:hostgroup_classes, :hostgroup, index: true, foreign_key: true)
5
+ end
6
+
7
+ def down
8
+ add_reference :host_classes, :host, foreign_key: true, index: true
9
+ add_reference :hostgroup_classes, :hostgroup, foreign_key: true, index: true
10
+ end
11
+ end
@@ -0,0 +1,10 @@
1
+ class CleanupEnvironmentFromCoreTables < ActiveRecord::Migration[6.0]
2
+ def up
3
+ ::Hostgroup.update_all(environment_id: nil) if column_exists?(:hostgroups, :environment_id)
4
+ Host::Managed.update_all(environment_id: nil) if column_exists?(:hosts, :environment_id)
5
+ end
6
+
7
+ def down
8
+ # nothing to do
9
+ end
10
+ end
@@ -1,17 +1,17 @@
1
- class CreateEnvironments < ActiveRecord::Migration[5.0]
1
+ class CreateEnvironments < ActiveRecord::Migration[4.2]
2
2
  def up
3
3
  create_table :environments do |t|
4
4
  t.string :name, null: false, limit: 255
5
5
  t.timestamps null: true
6
6
  end
7
7
  create_table :environments_puppetclasses do |t|
8
- t.references :puppetclass, foreign_key: true
8
+ t.references :puppetclass, null: false
9
9
  t.references :environment, foreign_key: true
10
10
  end
11
11
  end
12
12
 
13
13
  def down
14
- drop_table :environments
15
14
  drop_table :environments_puppetclasses
15
+ drop_table :environments
16
16
  end
17
17
  end
@@ -0,0 +1,29 @@
1
+ class CreatePuppetclasses < ActiveRecord::Migration[4.2]
2
+ def up
3
+ create_table :puppetclasses do |t|
4
+ t.string :name, limit: 255
5
+ t.string :nameindicator, limit: 255
6
+ t.integer :operatingsystem_id
7
+
8
+ t.timestamps null: true
9
+ end
10
+ add_foreign_key(:environments_puppetclasses, :puppetclasses)
11
+
12
+ create_table :hosts_puppetclasses, id: false do |t|
13
+ t.references :puppetclass, null: false
14
+ t.references :host, null: false
15
+ end
16
+
17
+ create_table :operatingsystems_puppetclasses, id: false do |t|
18
+ t.references :puppetclass, null: false
19
+ t.references :operatingsystem, null: false
20
+ end
21
+ end
22
+
23
+ def down
24
+ drop_table :operatingsystems_puppetclasses
25
+ drop_table :hosts_puppetclasses
26
+ remove_foreign_key(:environments_puppetclasses, :puppetclasses)
27
+ drop_table :puppetclasses
28
+ end
29
+ end
@@ -0,0 +1,12 @@
1
+ class CreateHostgroupsPuppetclasses < ActiveRecord::Migration[6.0]
2
+ def up
3
+ create_table :hostgroups_puppetclasses, id: false, if_not_exists: true do |t|
4
+ t.references :hostgroup, foreign_key: true, null: false
5
+ t.references :puppetclass, foreign_key: true, null: false
6
+ end
7
+ end
8
+
9
+ def down
10
+ drop_table :hostgroups_puppetclasses
11
+ end
12
+ end
@@ -0,0 +1,9 @@
1
+ class RemoveUnusedFieldsFromPuppetClasses < ActiveRecord::Migration[4.2]
2
+ def up
3
+ remove_column :puppetclasses, :nameindicator
4
+ remove_column :puppetclasses, :operatingsystem_id
5
+ end
6
+
7
+ def down
8
+ end
9
+ end
@@ -0,0 +1,11 @@
1
+ class CreateHostClass < ActiveRecord::Migration[4.2]
2
+ def up
3
+ rename_table :hosts_puppetclasses, :host_classes
4
+ add_column :host_classes, :id, :primary_key
5
+ end
6
+
7
+ def down
8
+ remove_column :host_classes, :id
9
+ rename_table :host_classes, :hosts_puppetclasses
10
+ end
11
+ end
@@ -0,0 +1,21 @@
1
+ class AddSomeIndexes < ActiveRecord::Migration[4.2]
2
+ def up
3
+ # puppetclasses
4
+ add_index :puppetclasses, :name
5
+
6
+ # turn off Foreign Key checks
7
+ execute 'SET CONSTRAINTS ALL DEFERRED;' if ActiveRecord::Base.connection.adapter_name == 'PostgreSQL'
8
+
9
+ add_foreign_key 'host_classes', 'hosts', name: 'host_classes_host_id_fk'
10
+ add_foreign_key 'host_classes', 'puppetclasses', name: 'host_classes_puppetclass_id_fk'
11
+ add_foreign_key 'operatingsystems_puppetclasses', 'operatingsystems', name: 'operatingsystems_puppetclasses_operatingsystem_id_fk'
12
+ add_foreign_key 'operatingsystems_puppetclasses', 'puppetclasses', name: 'operatingsystems_puppetclasses_puppetclass_id_fk'
13
+ end
14
+
15
+ def down
16
+ remove_foreign_key('host_classes', 'hosts') if foreign_key_exists?(:host_classes, :hosts)
17
+ remove_foreign_key('host_classes', 'puppetclasses') if foreign_key_exists?(:host_classes, :puppetclasses)
18
+ remove_foreign_key('operatingsystems_puppetclasses', 'operatingsystems') if foreign_key_exists?(:operatingsystems_puppetclasses, :operatingsystems)
19
+ remove_foreign_key('operatingsystems_puppetclasses', 'puppetclasses') if foreign_key_exists?(:operatingsystems_puppetclasses, :puppetclasses)
20
+ end
21
+ end
@@ -8,8 +8,8 @@ class CreateEnvironmentClasses < ActiveRecord::Migration[5.0]
8
8
  end
9
9
 
10
10
  def down
11
- remove_foreign_key :environment_classes, :lookup_key
12
- drop_column :environment_classes, :puppetclass_lookup_key_id, :integer
11
+ remove_foreign_key :environment_classes, :lookup_keys, column: :puppetclass_lookup_key_id
12
+ remove_column :environment_classes, :puppetclass_lookup_key_id, :integer
13
13
  rename_table :environment_classes, :environments_puppetclasses
14
14
  end
15
15
  end
@@ -0,0 +1,11 @@
1
+ class CreateHostgroupClasses < ActiveRecord::Migration[4.2]
2
+ def up
3
+ rename_table :hostgroups_puppetclasses, :hostgroup_classes
4
+ add_column :hostgroup_classes, :id, :primary_key
5
+ end
6
+
7
+ def down
8
+ remove_column :hostgroup_classes, :id
9
+ rename_table :hostgroup_classes, :hostgroups_puppetclasses
10
+ end
11
+ end
@@ -2,7 +2,7 @@ class DeleteOrphanedSmartClassParameters < ActiveRecord::Migration[4.2]
2
2
  def up
3
3
  condition = 'NOT EXISTS (SELECT 1 FROM environment_classes WHERE environment_classes.puppetclass_lookup_key_id = lookup_keys.id)'
4
4
  LookupValue.joins(:lookup_key).where(condition).where("lookup_keys.type = 'PuppetclassLookupKey'").delete_all
5
- PuppetclassLookupKey.where(condition).delete_all
5
+ LookupKey.where(condition).where(type: 'PuppetclassLookupKey').delete_all
6
6
  end
7
7
 
8
8
  def down
@@ -0,0 +1,5 @@
1
+ class CastLookupKeyValues < ActiveRecord::Migration[5.1]
2
+ def up
3
+ # Do nothing, if this is upgrade from too old version, we are not supporting it.
4
+ end
5
+ end
@@ -0,0 +1,24 @@
1
+ class AddUniquenessToPuppetclassName < ActiveRecord::Migration[5.1]
2
+ class FakePuppetclass < ApplicationRecord
3
+ self.table_name = 'puppetclasses'
4
+ end
5
+
6
+ def up
7
+ names = FakePuppetclass.group(:name).count.select { |_key, value| value > 1 }.keys
8
+ unless names.empty?
9
+ names.each do |name|
10
+ classes = FakePuppetclass.where name: name
11
+ say "#{classes.count} Puppet classes with duplicate name detected: #{name}"
12
+ end
13
+ raise 'Please make sure there are no duplicate Puppet classes before continuing.'
14
+ end
15
+
16
+ remove_index :puppetclasses, :name
17
+ add_index :puppetclasses, :name, unique: true
18
+ end
19
+
20
+ def down
21
+ remove_index :puppetclasses, :name
22
+ add_index :puppetclasses, :name
23
+ end
24
+ end
@@ -2,6 +2,6 @@
2
2
  class AddEnvironmentPuppetclassId < ActiveRecord::Migration[5.2]
3
3
  def change
4
4
  add_index :environment_classes, %i[environment_id puppetclass_id]
5
- remove_index :environment_classes, :environment_id
5
+ remove_index(:environment_classes, :environment_id) if index_exists?(:environment_classes, :environment_id)
6
6
  end
7
7
  end
@@ -1,38 +1,9 @@
1
1
  module ForemanPuppet
2
2
  class Engine < ::Rails::Engine
3
- config.before_configuration do
4
- unless ForemanPuppet.extracted_from_core?
5
- require 'graphql'
6
-
7
- module BaseObjectClassMethodPath
8
- def field(*args, **kwargs, &block)
9
- return if args.first == :environment && args.second.to_s == 'Types::Environment'
10
- return if args.first == :environments && args.second.node_type.to_s == 'Types::Environment'
11
- return if args.first == :puppetclass && args.second.to_s == 'Types::Puppetclass'
12
- return if args.first == :puppetclasses && args.second.node_type.to_s == 'Types::Puppetclass'
13
-
14
- super
15
- end
16
- end
17
-
18
- module RelayClassicMutationClassMethodPath
19
- # rubocop:disable Metrics/ParameterLists
20
- def argument(name, type, *rest, loads: nil, **kwargs, &block)
21
- # rubocop:enable Metrics/ParameterLists
22
- return if [::Types::Environment, ::Types::Puppetclass].include?(loads)
23
-
24
- super
25
- end
26
- end
27
-
28
- GraphQL::Types::Relay::BaseObject.extend(BaseObjectClassMethodPath)
29
- GraphQL::Schema::RelayClassicMutation.extend(RelayClassicMutationClassMethodPath)
30
- end
31
- end
32
-
33
3
  engine_name 'foreman_puppet'
34
4
  isolate_namespace ForemanPuppet
35
5
 
6
+ config.paths['db/migrate'] << 'db/migrate_foreman' if Gem::Dependency.new('', ">= #{ForemanPuppet::FOREMAN_DROP_MIGRATIONS_VERSION}").match?('', SETTINGS[:version].notag)
36
7
  config.paths['config/routes.rb'].unshift('config/api_routes.rb')
37
8
 
38
9
  initializer 'foreman_puppet.register_plugin', before: :finisher_hook do |_app|
@@ -95,15 +66,12 @@ module ForemanPuppet
95
66
 
96
67
  ::SmartProxiesHelper::TABBED_FEATURES << 'Puppet'
97
68
 
98
- unless ForemanPuppet.extracted_from_core?
99
- ::HostInfo.local_entries.delete('HostInfoProviders::PuppetInfo'.safe_constantize)
100
- ::HostInfo.local_entries.delete('HostInfoProviders::ConfigGroupsInfo'.safe_constantize)
101
- ::ProxyStatus.status_registry.delete('ProxyStatus::Puppet'.safe_constantize)
102
- Foreman.input_types_registry.input_types.delete('puppet_parameter')
103
- end
104
69
  Foreman.input_types_registry.register(ForemanPuppet::InputType::PuppetParameterInput)
105
70
  ::ProxyStatus.status_registry.add(ForemanPuppet::ProxyStatus::Puppet)
106
71
 
72
+ # Extend smart_proxies API functionality
73
+ ::Api::V2::SmartProxiesController.include ForemanPuppet::Extensions::ApiSmartProxiesController
74
+
107
75
  # GraphQL
108
76
  ::Types::Host.include(ForemanPuppet::Types::HostExtensions)
109
77
  ::Types::Hostgroup.include(ForemanPuppet::Types::HostgroupExtensions)
@@ -1,34 +1,50 @@
1
1
  Foreman::Plugin.register :foreman_puppet do
2
- requires_foreman '>= 2.0.0'
2
+ requires_foreman '>= 3.0.0'
3
3
  # Add Global JS file for extending foreman-core components and routes
4
4
  register_global_js_file 'fills'
5
5
 
6
- apipie_documented_controllers(["#{ForemanPuppet::Engine.root}/app/controllers/foreman_puppet/api/v2/*.rb"])
7
-
8
- unless ForemanPuppet.extracted_from_core?
9
- # Remove core permissions
10
- cfgs = %i[view_config_groups create_config_groups edit_config_groups destroy_config_groups]
11
- plks = %i[view_external_parameters create_external_parameters edit_external_parameters
12
- destroy_external_parameters]
13
- pcls = %i[view_puppetclasses create_puppetclasses edit_puppetclasses destroy_puppetclasses import_puppetclasses]
14
- (cfgs | plks | pcls).each do |perm_name|
15
- p = Foreman::AccessControl.permission(perm_name)
16
- Foreman::AccessControl.remove_permission(p)
6
+ settings do
7
+ category(:facts, N_('Facts')) do
8
+ setting('default_puppet_environment',
9
+ type: :string,
10
+ description: N_('Foreman will default to this puppet environment if it cannot auto detect one'),
11
+ default: 'production',
12
+ full_name: N_('Default Puppet environment'),
13
+ collection: proc { ForemanPuppet::Environment.pluck(:name).map { |name| [name, name] }.to_h })
14
+ setting('enc_environment',
15
+ type: :boolean,
16
+ description: N_('Foreman will explicitly set the puppet environment in the ENC yaml output. '\
17
+ 'This will avoid conflicts between the environment in puppet.conf and the environment set in Foreman'),
18
+ default: true,
19
+ full_name: N_('ENC environment'))
20
+ setting('update_environment_from_facts',
21
+ type: :boolean,
22
+ description: N_("Foreman will update a host's environment from its facts"),
23
+ default: false,
24
+ full_name: N_('Update environment from facts'))
17
25
  end
18
26
 
19
- delete_menu_item(:top_menu, :puppetclasses)
20
- delete_menu_item(:top_menu, :config_groups)
21
- delete_menu_item(:top_menu, :puppetclass_lookup_keys)
22
- delete_menu_item(:top_menu, :environments)
27
+ category(:cfgmgmt, N_('Config Management')) do
28
+ setting('puppet_interval',
29
+ type: :integer,
30
+ description: N_('Duration in minutes after servers reporting via Puppet are classed as out of sync.'),
31
+ default: 35,
32
+ full_name: N_('Puppet interval'))
33
+ setting('puppet_out_of_sync_disabled',
34
+ type: :boolean,
35
+ description: N_('Disable host configuration status turning to out of sync for %s after report does not arrive within configured interval') % 'Puppet',
36
+ default: false,
37
+ full_name: N_('%s out of sync disabled') % 'Puppet')
38
+ end
23
39
  end
24
40
 
41
+ apipie_documented_controllers(["#{ForemanPuppet::Engine.root}/app/controllers/foreman_puppet/api/v2/*.rb"])
42
+
25
43
  # TODO: maybe this would not be necessary if we rething the form
26
44
  %i[create_hostgroups edit_hostgroups].each do |perm|
27
45
  p = Foreman::AccessControl.permission(perm)
28
- if ForemanPuppet.extracted_from_core?
29
- p.actions << 'hostgroups/environment_selected'
30
- p.actions << 'hostgroups/puppetclass_parameters'
31
- end
46
+ p.actions << 'hostgroups/environment_selected'
47
+ p.actions << 'hostgroups/puppetclass_parameters'
32
48
  p.actions << 'foreman_puppet/puppetclasses/parameters'
33
49
  end
34
50
  p = Foreman::AccessControl.permission(:edit_hostgroups)
@@ -37,15 +53,13 @@ Foreman::Plugin.register :foreman_puppet do
37
53
  end
38
54
  %i[create_hosts edit_hosts].each do |perm|
39
55
  p = Foreman::AccessControl.permission(perm)
40
- if ForemanPuppet.extracted_from_core?
41
- p.actions << 'hosts/hostgroup_or_environment_selected'
42
- p.actions << 'hosts/puppetclass_parameters'
43
- if perm == :edit_hosts
44
- p.actions << 'hosts/select_multiple_environment'
45
- p.actions << 'hosts/update_multiple_environment'
46
- p.actions << 'hosts/select_multiple_puppet_proxy'
47
- p.actions << 'hosts/update_multiple_puppet_proxy'
48
- end
56
+ p.actions << 'hosts/hostgroup_or_environment_selected'
57
+ p.actions << 'hosts/puppetclass_parameters'
58
+ if perm == :edit_hosts
59
+ p.actions << 'hosts/select_multiple_environment'
60
+ p.actions << 'hosts/update_multiple_environment'
61
+ p.actions << 'hosts/select_multiple_puppet_proxy'
62
+ p.actions << 'hosts/update_multiple_puppet_proxy'
49
63
  end
50
64
  p.actions << 'foreman_puppet/puppetclasses/parameters'
51
65
  end
@@ -168,13 +182,13 @@ Foreman::Plugin.register :foreman_puppet do
168
182
  register_facet ForemanPuppet::HostPuppetFacet, :puppet do
169
183
  configure_host do
170
184
  # extend_model ForemanPuppet::Extensions::Host
171
- api_view list: 'foreman_puppet/api/v2/host_puppet_facets/base',
185
+ api_view list: 'foreman_puppet/api/v2/host_puppet_facets/host_list',
172
186
  single: 'foreman_puppet/api/v2/host_puppet_facets/host_single'
173
187
  template_compatibility_properties :environment, :environment_id, :environment_name
174
188
  set_dependent_action :destroy
175
189
  end
176
190
  configure_hostgroup(ForemanPuppet::HostgroupPuppetFacet) do
177
- api_view list: 'foreman_puppet/api/v2/hostgroup_puppet_facets/base',
191
+ api_view list: 'foreman_puppet/api/v2/hostgroup_puppet_facets/hostgroup_list',
178
192
  single: 'foreman_puppet/api/v2/hostgroup_puppet_facets/hostgroup_single'
179
193
  template_compatibility_properties :environment, :environment_id, :environment_name
180
194
  set_dependent_action :destroy
@@ -185,14 +199,6 @@ Foreman::Plugin.register :foreman_puppet do
185
199
  base_scope.preload(puppet: :environment)
186
200
  end
187
201
 
188
- unless ForemanPuppet.extracted_from_core?
189
- Rails.application.config.after_initialize do
190
- list = Pagelets::Manager.instance.instance_variable_get(:@pagelets)['hosts/_form'][:main_tabs]
191
- core_pagelet = list.detect { |pagelet| pagelet.opts[:id] == :puppet_klasses }
192
- list.delete(core_pagelet)
193
- end
194
- end
195
-
196
202
  register_graphql_query_field :environment, 'ForemanPuppet::Types::Environment', :record_field
197
203
  register_graphql_query_field :environments, 'ForemanPuppet::Types::Environment', :collection_field
198
204
  register_graphql_query_field :puppetclass, 'ForemanPuppet::Types::Puppetclass', :record_field
@@ -212,12 +218,10 @@ Foreman::Plugin.register :foreman_puppet do
212
218
  priority: 100,
213
219
  onlyif: (host_onlyif if resource_type == :host)
214
220
 
215
- if ForemanPuppet.extracted_from_core?
216
- context.add_pagelet :main_tab_fields,
217
- partial: 'hosts/foreman_puppet/form_main_tab_fields',
218
- resource_type: resource_type,
219
- priority: 100
220
- end
221
+ context.add_pagelet :main_tab_fields,
222
+ partial: 'hosts/foreman_puppet/form_main_tab_fields',
223
+ resource_type: resource_type,
224
+ priority: 100
221
225
  end
222
226
  end
223
227
  end
@@ -1,3 +1,3 @@
1
1
  module ForemanPuppet
2
- VERSION = '1.0.4'.freeze
2
+ VERSION = '2.0.2'.freeze
3
3
  end
@@ -1,10 +1,5 @@
1
1
  module ForemanPuppet
2
- FOREMAN_EXTRACTION_VERSION = '3.0'.freeze
3
-
4
- def self.extracted_from_core?
5
- ENV['PUPPET_EXTRACTED'].to_s == '1' ||
6
- Gem::Dependency.new('', ">= #{FOREMAN_EXTRACTION_VERSION}").match?('', SETTINGS[:version].notag)
7
- end
2
+ FOREMAN_DROP_MIGRATIONS_VERSION = '3.1'.freeze
8
3
  end
9
4
 
10
5
  require 'foreman_puppet/engine'