foreman_content 0.1

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 (81) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +113 -0
  3. data/Rakefile +111 -0
  4. data/app/assets/javascripts/content/content.js +12 -0
  5. data/app/assets/stylesheets/content/application.css +13 -0
  6. data/app/controllers/content/api/repositories_controller.rb +27 -0
  7. data/app/controllers/content/gpg_keys_controller.rb +42 -0
  8. data/app/controllers/content/products_controller.rb +51 -0
  9. data/app/controllers/content/repositories_controller.rb +57 -0
  10. data/app/helpers/content/application_helper.rb +5 -0
  11. data/app/helpers/content/repositories_helper.rb +56 -0
  12. data/app/models/content/custom_repository_paths.rb +27 -0
  13. data/app/models/content/environment_product.rb +19 -0
  14. data/app/models/content/gpg_key.rb +32 -0
  15. data/app/models/content/host_product.rb +20 -0
  16. data/app/models/content/hostgroup_product.rb +19 -0
  17. data/app/models/content/operatingsystem_repository.rb +19 -0
  18. data/app/models/content/orchestration/pulp.rb +93 -0
  19. data/app/models/content/product.rb +28 -0
  20. data/app/models/content/product_operatingsystem.rb +19 -0
  21. data/app/models/content/remote/pulp/repository.rb +46 -0
  22. data/app/models/content/repository.rb +70 -0
  23. data/app/models/content/validators/content_validator.rb +25 -0
  24. data/app/models/content/validators/description_format.rb +24 -0
  25. data/app/models/content/validators/name_format.rb +40 -0
  26. data/app/models/content/validators/no_trailing_space.rb +27 -0
  27. data/app/models/setting/content.rb +42 -0
  28. data/app/overrides/add_host_conent_tab.rb +9 -0
  29. data/app/overrides/add_hostgroup_conent_tab.rb +9 -0
  30. data/app/overrides/add_os_conent_tab.rb +9 -0
  31. data/app/services/content/pulp_event_handler.rb +25 -0
  32. data/app/views/content/gpg_keys/_form.html.erb +8 -0
  33. data/app/views/content/gpg_keys/edit.html.erb +3 -0
  34. data/app/views/content/gpg_keys/index.html.erb +20 -0
  35. data/app/views/content/gpg_keys/new.html.erb +3 -0
  36. data/app/views/content/products/_form.html.erb +26 -0
  37. data/app/views/content/products/_form_tab.html.erb +3 -0
  38. data/app/views/content/products/_host_tab_pane.html.erb +5 -0
  39. data/app/views/content/products/_hostgroup_tab_pane.html.erb +5 -0
  40. data/app/views/content/products/_operatingsystem_tab_pane.html.erb +5 -0
  41. data/app/views/content/products/edit.html.erb +3 -0
  42. data/app/views/content/products/index.html.erb +27 -0
  43. data/app/views/content/products/new.html.erb +3 -0
  44. data/app/views/content/products/welcome.html.erb +8 -0
  45. data/app/views/content/repositories/_form.html.erb +30 -0
  46. data/app/views/content/repositories/edit.html.erb +3 -0
  47. data/app/views/content/repositories/index.html.erb +32 -0
  48. data/app/views/content/repositories/new.html.erb +3 -0
  49. data/app/views/content/repositories/show.html.erb +98 -0
  50. data/app/views/content/repositories/welcome.html.erb +8 -0
  51. data/config/routes.rb +36 -0
  52. data/db/migrate/20130702140034_create_content_repositories.rb +19 -0
  53. data/db/migrate/20130702162629_create_content_products.rb +10 -0
  54. data/db/migrate/20130709001120_create_content_gpg_keys.rb +10 -0
  55. data/db/migrate/20130717032320_create_content_environments_products.rb +9 -0
  56. data/db/migrate/20130722084911_create_content_operatingsystem_repositories.rb +9 -0
  57. data/db/migrate/20130723084911_create_content_hostgroup_products.rb +9 -0
  58. data/db/migrate/20130723124911_create_content_host_products.rb +9 -0
  59. data/db/migrate/20130729032320_create_content_product_operatingsystems.rb +9 -0
  60. data/lib/content/engine.rb +59 -0
  61. data/lib/content/version.rb +3 -0
  62. data/lib/content_environment.rb +13 -0
  63. data/lib/content_home_helper_patch.rb +23 -0
  64. data/lib/content_host.rb +55 -0
  65. data/lib/content_hostgroup.rb +22 -0
  66. data/lib/content_operatingsystem.rb +17 -0
  67. data/lib/content_redhat.rb +36 -0
  68. data/lib/content_taxonomy.rb +18 -0
  69. data/lib/foreman_content.rb +4 -0
  70. data/lib/pulp_configuration.rb +23 -0
  71. data/lib/tasks/content_tasks.rake +4 -0
  72. data/test/content_test.rb +7 -0
  73. data/test/fixtures/content/products.yml +11 -0
  74. data/test/fixtures/content/repositories.yml +11 -0
  75. data/test/integration/navigation_test.rb +10 -0
  76. data/test/test_helper.rb +23 -0
  77. data/test/unit/content/description_format_validator_test.rb +20 -0
  78. data/test/unit/content/name_format_validator_test.rb +28 -0
  79. data/test/unit/content/product_validation_test.rb +18 -0
  80. data/test/unit/content/repositories_test.rb +7 -0
  81. metadata +194 -0
@@ -0,0 +1,36 @@
1
+ module ContentRedhat
2
+ def self.included(base)
3
+ base.send(:include, InstanceMethods)
4
+ base.class_eval do
5
+ alias_method_chain :medium_uri, :content_uri
6
+ end
7
+ end
8
+
9
+ module InstanceMethods
10
+ def medium_uri_with_content_uri host, url = nil
11
+ if url.nil? && (full_path = Content::Repository.available_for_host(host).kickstart.first.try(:full_path))
12
+ URI.parse(full_path)
13
+ else
14
+ medium_uri_without_content_uri(host, url)
15
+ end
16
+ end
17
+
18
+ # return an array of repositories for kickstart script as additional repos
19
+ # to the kickstart main repo, this list will typically include updates and epel
20
+ def repos host
21
+ host.attached_repositories.yum.map{ |repo| format_repo(repo) }
22
+ end
23
+
24
+ private
25
+ # convert a repository to a format that kickstart script can consume
26
+ def format_repo repo
27
+ {
28
+ :baseurl => repo.full_path,
29
+ :name => repo.to_label,
30
+ :description => repo.product.description,
31
+ :enabled => repo.enabled,
32
+ :gpgcheck => !!repo.gpg_key
33
+ }
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,18 @@
1
+ module ContentTaxonomy
2
+ def self.included(base)
3
+ base.send(:include, InstanceMethods)
4
+
5
+ base.class_eval do
6
+ has_many :products, :through => :taxable_taxonomies, :source => :taxable, :source_type => 'Content::Product'
7
+ alias_method_chain :dup, :content_dup
8
+ end
9
+ end
10
+
11
+ module InstanceMethods
12
+ def dup_with_content_dup
13
+ new = dup_without_content_dup
14
+ new.products = products
15
+ new
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,4 @@
1
+ require "content/engine"
2
+
3
+ module Content
4
+ end
@@ -0,0 +1,23 @@
1
+ require 'runcible'
2
+
3
+ class PulpConfiguration
4
+ def self.initialize_runcible
5
+ Runcible::Base.config = runcible_config
6
+ end
7
+
8
+ def self.runcible_config
9
+ pulp_url = URI(Setting.pulp_url)
10
+ {
11
+ :url => "#{pulp_url.scheme}://#{pulp_url.host}:#{pulp_url.port}",
12
+ :api_path => pulp_url.path,
13
+ :user => "admin",
14
+ :timeout => 60,
15
+ :open_timeout => 60,
16
+ :oauth => { :oauth_secret => Setting['pulp_oauth_secret'],
17
+ :oauth_key => Setting['pulp_oauth_key'] },
18
+ :logging => { :logger => Rails.logger,
19
+ :exception => true,
20
+ :debug => true }
21
+ }
22
+ end
23
+ end
@@ -0,0 +1,4 @@
1
+ # desc "Explaining what the task does"
2
+ # task :content do
3
+ # # Task goes here
4
+ # end
@@ -0,0 +1,7 @@
1
+ require 'test_helper'
2
+
3
+ class ContentTest < ActiveSupport::TestCase
4
+ test "truth" do
5
+ assert_kind_of Module, Content
6
+ end
7
+ end
@@ -0,0 +1,11 @@
1
+ # Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/Fixtures.html
2
+
3
+ # This model initially had no columns defined. If you add columns to the
4
+ # model remove the '{}' from the fixture names and add the columns immediately
5
+ # below each fixture, per the syntax in the comments below
6
+ #
7
+ one: {}
8
+ # column: value
9
+ #
10
+ two: {}
11
+ # column: value
@@ -0,0 +1,11 @@
1
+ # Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/Fixtures.html
2
+
3
+ # This model initially had no columns defined. If you add columns to the
4
+ # model remove the '{}' from the fixture names and add the columns immediately
5
+ # below each fixture, per the syntax in the comments below
6
+ #
7
+ one: {}
8
+ # column: value
9
+ #
10
+ two: {}
11
+ # column: value
@@ -0,0 +1,10 @@
1
+ require 'test_helper'
2
+
3
+ class NavigationTest < ActionDispatch::IntegrationTest
4
+ fixtures :all
5
+
6
+ # test "the truth" do
7
+ # assert true
8
+ # end
9
+ end
10
+
@@ -0,0 +1,23 @@
1
+ require 'rubygems'
2
+ require 'bundler/setup'
3
+
4
+ ENV["RAILS_ENV"] = "test"
5
+ require File.join("foreman_app/config/environment.rb")
6
+
7
+ require 'test/unit'
8
+ require 'content'
9
+ require 'rails/test_help'
10
+
11
+ Rails.backtrace_cleaner.remove_silencers!
12
+
13
+ class ActiveSupport::TestCase
14
+ foreman_dir = File.expand_path("../foreman_app", File.join(Dir.pwd, __FILE__))
15
+ fixture_path=File.join(foreman_dir, "test/fixtures")
16
+ fixtures :all
17
+
18
+ set_fixture_class({ :hosts => Host::Base })
19
+ end
20
+
21
+ def set_session_user
22
+ SETTINGS[:login] ? {:user => User.admin.id, :expires_at => 5.minutes.from_now} : {}
23
+ end
@@ -0,0 +1,20 @@
1
+ require 'test_helper'
2
+
3
+ module Content
4
+ class DescriptionFormatValidatorModelForTest
5
+ include ActiveModel::Validations
6
+ attr_accessor :desc
7
+ def initialize(adescription); @desc = adescription; end
8
+ validates_with Content::Validators::DescriptionFormat, :attributes => :desc
9
+ end
10
+
11
+ class DescriptionFormatValidatorTest < ActiveSupport::TestCase
12
+ test "should enforce max length" do
13
+ assert !DescriptionFormatValidatorModelForTest.new("t" * (Content::Validators::DescriptionFormat::MAX_LENGTH + 1)).valid?
14
+ end
15
+
16
+ test "should be valid with allowed number of characters" do
17
+ assert DescriptionFormatValidatorModelForTest.new("a description").valid?
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,28 @@
1
+ require 'test_helper'
2
+
3
+ module Content
4
+ class NameFormatValidatorModelForTest
5
+ include ActiveModel::Validations
6
+ attr_accessor :name
7
+ def initialize(aname); @name = aname; end
8
+ validates_with Content::Validators::NameFormat, :attributes => :name
9
+ end
10
+
11
+ class NameFormatValidatorTest < ActiveSupport::TestCase
12
+ test "should enforce min length" do
13
+ assert !NameFormatValidatorModelForTest.new("").valid?
14
+ end
15
+
16
+ test "should enforce max length" do
17
+ assert !NameFormatValidatorModelForTest.new("t" * (Content::Validators::NameFormat::MAX_LENGTH + 1)).valid?
18
+ end
19
+
20
+ test "should be valid with allowed characters" do
21
+ assert NameFormatValidatorModelForTest.new("abc123 _-").valid?
22
+ end
23
+
24
+ test "should be invalid with a trailing space" do
25
+ assert !NameFormatValidatorModelForTest.new("abc ").valid?
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,18 @@
1
+ require 'test_helper'
2
+
3
+ module Content
4
+ class ProductValidationTest < ActiveSupport::TestCase
5
+ test "valid product should be valid" do
6
+ assert Product.new(:name => "test", :description => "a description").valid?
7
+ end
8
+
9
+ test "should fail validation when the name is invalid" do
10
+ assert !Product.new(:name => nil, :description => "a description").valid?
11
+ assert !Product.new(:name => "t" * (Validators::NameFormat::MAX_LENGTH + 1), :description => "a description").valid?
12
+ end
13
+
14
+ test "should fail validation when the description is invalid" do
15
+ assert !Product.new(:name => "test", :description => "t" * (Validators::DescriptionFormat::MAX_LENGTH + 1)).valid?
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,7 @@
1
+ require 'test_helper'
2
+
3
+ class Content::RepositoriesTest < ActiveSupport::TestCase
4
+ # test "the truth" do
5
+ # assert true
6
+ # end
7
+ end
metadata ADDED
@@ -0,0 +1,194 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: foreman_content
3
+ version: !ruby/object:Gem::Version
4
+ version: '0.1'
5
+ platform: ruby
6
+ authors:
7
+ - Dmitri Dolguikh
8
+ - Amos Benari
9
+ - Ohad Levy
10
+ autorequire:
11
+ bindir: bin
12
+ cert_chain: []
13
+ date: 2013-08-01 00:00:00.000000000 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: rails
17
+ requirement: !ruby/object:Gem::Requirement
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: 3.2.8
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ requirements:
26
+ - - ~>
27
+ - !ruby/object:Gem::Version
28
+ version: 3.2.8
29
+ - !ruby/object:Gem::Dependency
30
+ name: logging
31
+ requirement: !ruby/object:Gem::Requirement
32
+ requirements:
33
+ - - '>='
34
+ - !ruby/object:Gem::Version
35
+ version: 1.8.0
36
+ type: :runtime
37
+ prerelease: false
38
+ version_requirements: !ruby/object:Gem::Requirement
39
+ requirements:
40
+ - - '>='
41
+ - !ruby/object:Gem::Version
42
+ version: 1.8.0
43
+ - !ruby/object:Gem::Dependency
44
+ name: runcible
45
+ requirement: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - ~>
48
+ - !ruby/object:Gem::Version
49
+ version: 0.4.10
50
+ type: :runtime
51
+ prerelease: false
52
+ version_requirements: !ruby/object:Gem::Requirement
53
+ requirements:
54
+ - - ~>
55
+ - !ruby/object:Gem::Version
56
+ version: 0.4.10
57
+ - !ruby/object:Gem::Dependency
58
+ name: deface
59
+ requirement: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - '>='
62
+ - !ruby/object:Gem::Version
63
+ version: '0'
64
+ type: :runtime
65
+ prerelease: false
66
+ version_requirements: !ruby/object:Gem::Requirement
67
+ requirements:
68
+ - - '>='
69
+ - !ruby/object:Gem::Version
70
+ version: '0'
71
+ description: Add Foreman support for software repositories and puppet environments
72
+ management.
73
+ email:
74
+ - witlessbird@gmail.com
75
+ - abenari@redhat.com
76
+ - ohadlevy@gmail.com
77
+ executables: []
78
+ extensions: []
79
+ extra_rdoc_files:
80
+ - README.md
81
+ files:
82
+ - app/models/setting/content.rb
83
+ - app/models/content/remote/pulp/repository.rb
84
+ - app/models/content/host_product.rb
85
+ - app/models/content/product_operatingsystem.rb
86
+ - app/models/content/gpg_key.rb
87
+ - app/models/content/orchestration/pulp.rb
88
+ - app/models/content/hostgroup_product.rb
89
+ - app/models/content/custom_repository_paths.rb
90
+ - app/models/content/operatingsystem_repository.rb
91
+ - app/models/content/validators/no_trailing_space.rb
92
+ - app/models/content/validators/name_format.rb
93
+ - app/models/content/validators/content_validator.rb
94
+ - app/models/content/validators/description_format.rb
95
+ - app/models/content/repository.rb
96
+ - app/models/content/product.rb
97
+ - app/models/content/environment_product.rb
98
+ - app/services/content/pulp_event_handler.rb
99
+ - app/overrides/add_os_conent_tab.rb
100
+ - app/overrides/add_host_conent_tab.rb
101
+ - app/overrides/add_hostgroup_conent_tab.rb
102
+ - app/controllers/content/api/repositories_controller.rb
103
+ - app/controllers/content/repositories_controller.rb
104
+ - app/controllers/content/products_controller.rb
105
+ - app/controllers/content/gpg_keys_controller.rb
106
+ - app/views/content/gpg_keys/_form.html.erb
107
+ - app/views/content/gpg_keys/new.html.erb
108
+ - app/views/content/gpg_keys/index.html.erb
109
+ - app/views/content/gpg_keys/edit.html.erb
110
+ - app/views/content/repositories/_form.html.erb
111
+ - app/views/content/repositories/new.html.erb
112
+ - app/views/content/repositories/show.html.erb
113
+ - app/views/content/repositories/index.html.erb
114
+ - app/views/content/repositories/welcome.html.erb
115
+ - app/views/content/repositories/edit.html.erb
116
+ - app/views/content/products/_form.html.erb
117
+ - app/views/content/products/new.html.erb
118
+ - app/views/content/products/_operatingsystem_tab_pane.html.erb
119
+ - app/views/content/products/_form_tab.html.erb
120
+ - app/views/content/products/_hostgroup_tab_pane.html.erb
121
+ - app/views/content/products/index.html.erb
122
+ - app/views/content/products/_host_tab_pane.html.erb
123
+ - app/views/content/products/welcome.html.erb
124
+ - app/views/content/products/edit.html.erb
125
+ - app/helpers/content/repositories_helper.rb
126
+ - app/helpers/content/application_helper.rb
127
+ - app/assets/javascripts/content/content.js
128
+ - app/assets/stylesheets/content/application.css
129
+ - config/routes.rb
130
+ - db/migrate/20130702162629_create_content_products.rb
131
+ - db/migrate/20130709001120_create_content_gpg_keys.rb
132
+ - db/migrate/20130722084911_create_content_operatingsystem_repositories.rb
133
+ - db/migrate/20130717032320_create_content_environments_products.rb
134
+ - db/migrate/20130723124911_create_content_host_products.rb
135
+ - db/migrate/20130729032320_create_content_product_operatingsystems.rb
136
+ - db/migrate/20130702140034_create_content_repositories.rb
137
+ - db/migrate/20130723084911_create_content_hostgroup_products.rb
138
+ - lib/content_hostgroup.rb
139
+ - lib/content_environment.rb
140
+ - lib/content_redhat.rb
141
+ - lib/content_home_helper_patch.rb
142
+ - lib/content_taxonomy.rb
143
+ - lib/content/engine.rb
144
+ - lib/content/version.rb
145
+ - lib/content_operatingsystem.rb
146
+ - lib/foreman_content.rb
147
+ - lib/tasks/content_tasks.rake
148
+ - lib/content_host.rb
149
+ - lib/pulp_configuration.rb
150
+ - Rakefile
151
+ - README.md
152
+ - test/unit/content/description_format_validator_test.rb
153
+ - test/unit/content/repositories_test.rb
154
+ - test/unit/content/product_validation_test.rb
155
+ - test/unit/content/name_format_validator_test.rb
156
+ - test/test_helper.rb
157
+ - test/fixtures/content/products.yml
158
+ - test/fixtures/content/repositories.yml
159
+ - test/content_test.rb
160
+ - test/integration/navigation_test.rb
161
+ homepage: https://github.com/theforeman/foreman_content
162
+ licenses:
163
+ - GPL-3
164
+ metadata: {}
165
+ post_install_message:
166
+ rdoc_options: []
167
+ require_paths:
168
+ - lib
169
+ required_ruby_version: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - '>='
172
+ - !ruby/object:Gem::Version
173
+ version: '0'
174
+ required_rubygems_version: !ruby/object:Gem::Requirement
175
+ requirements:
176
+ - - '>='
177
+ - !ruby/object:Gem::Version
178
+ version: '0'
179
+ requirements: []
180
+ rubyforge_project:
181
+ rubygems_version: 2.0.5
182
+ signing_key:
183
+ specification_version: 4
184
+ summary: Add Foreman support for content management.
185
+ test_files:
186
+ - test/unit/content/description_format_validator_test.rb
187
+ - test/unit/content/repositories_test.rb
188
+ - test/unit/content/product_validation_test.rb
189
+ - test/unit/content/name_format_validator_test.rb
190
+ - test/test_helper.rb
191
+ - test/fixtures/content/products.yml
192
+ - test/fixtures/content/repositories.yml
193
+ - test/content_test.rb
194
+ - test/integration/navigation_test.rb