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.
- checksums.yaml +7 -0
- data/README.md +113 -0
- data/Rakefile +111 -0
- data/app/assets/javascripts/content/content.js +12 -0
- data/app/assets/stylesheets/content/application.css +13 -0
- data/app/controllers/content/api/repositories_controller.rb +27 -0
- data/app/controllers/content/gpg_keys_controller.rb +42 -0
- data/app/controllers/content/products_controller.rb +51 -0
- data/app/controllers/content/repositories_controller.rb +57 -0
- data/app/helpers/content/application_helper.rb +5 -0
- data/app/helpers/content/repositories_helper.rb +56 -0
- data/app/models/content/custom_repository_paths.rb +27 -0
- data/app/models/content/environment_product.rb +19 -0
- data/app/models/content/gpg_key.rb +32 -0
- data/app/models/content/host_product.rb +20 -0
- data/app/models/content/hostgroup_product.rb +19 -0
- data/app/models/content/operatingsystem_repository.rb +19 -0
- data/app/models/content/orchestration/pulp.rb +93 -0
- data/app/models/content/product.rb +28 -0
- data/app/models/content/product_operatingsystem.rb +19 -0
- data/app/models/content/remote/pulp/repository.rb +46 -0
- data/app/models/content/repository.rb +70 -0
- data/app/models/content/validators/content_validator.rb +25 -0
- data/app/models/content/validators/description_format.rb +24 -0
- data/app/models/content/validators/name_format.rb +40 -0
- data/app/models/content/validators/no_trailing_space.rb +27 -0
- data/app/models/setting/content.rb +42 -0
- data/app/overrides/add_host_conent_tab.rb +9 -0
- data/app/overrides/add_hostgroup_conent_tab.rb +9 -0
- data/app/overrides/add_os_conent_tab.rb +9 -0
- data/app/services/content/pulp_event_handler.rb +25 -0
- data/app/views/content/gpg_keys/_form.html.erb +8 -0
- data/app/views/content/gpg_keys/edit.html.erb +3 -0
- data/app/views/content/gpg_keys/index.html.erb +20 -0
- data/app/views/content/gpg_keys/new.html.erb +3 -0
- data/app/views/content/products/_form.html.erb +26 -0
- data/app/views/content/products/_form_tab.html.erb +3 -0
- data/app/views/content/products/_host_tab_pane.html.erb +5 -0
- data/app/views/content/products/_hostgroup_tab_pane.html.erb +5 -0
- data/app/views/content/products/_operatingsystem_tab_pane.html.erb +5 -0
- data/app/views/content/products/edit.html.erb +3 -0
- data/app/views/content/products/index.html.erb +27 -0
- data/app/views/content/products/new.html.erb +3 -0
- data/app/views/content/products/welcome.html.erb +8 -0
- data/app/views/content/repositories/_form.html.erb +30 -0
- data/app/views/content/repositories/edit.html.erb +3 -0
- data/app/views/content/repositories/index.html.erb +32 -0
- data/app/views/content/repositories/new.html.erb +3 -0
- data/app/views/content/repositories/show.html.erb +98 -0
- data/app/views/content/repositories/welcome.html.erb +8 -0
- data/config/routes.rb +36 -0
- data/db/migrate/20130702140034_create_content_repositories.rb +19 -0
- data/db/migrate/20130702162629_create_content_products.rb +10 -0
- data/db/migrate/20130709001120_create_content_gpg_keys.rb +10 -0
- data/db/migrate/20130717032320_create_content_environments_products.rb +9 -0
- data/db/migrate/20130722084911_create_content_operatingsystem_repositories.rb +9 -0
- data/db/migrate/20130723084911_create_content_hostgroup_products.rb +9 -0
- data/db/migrate/20130723124911_create_content_host_products.rb +9 -0
- data/db/migrate/20130729032320_create_content_product_operatingsystems.rb +9 -0
- data/lib/content/engine.rb +59 -0
- data/lib/content/version.rb +3 -0
- data/lib/content_environment.rb +13 -0
- data/lib/content_home_helper_patch.rb +23 -0
- data/lib/content_host.rb +55 -0
- data/lib/content_hostgroup.rb +22 -0
- data/lib/content_operatingsystem.rb +17 -0
- data/lib/content_redhat.rb +36 -0
- data/lib/content_taxonomy.rb +18 -0
- data/lib/foreman_content.rb +4 -0
- data/lib/pulp_configuration.rb +23 -0
- data/lib/tasks/content_tasks.rake +4 -0
- data/test/content_test.rb +7 -0
- data/test/fixtures/content/products.yml +11 -0
- data/test/fixtures/content/repositories.yml +11 -0
- data/test/integration/navigation_test.rb +10 -0
- data/test/test_helper.rb +23 -0
- data/test/unit/content/description_format_validator_test.rb +20 -0
- data/test/unit/content/name_format_validator_test.rb +28 -0
- data/test/unit/content/product_validation_test.rb +18 -0
- data/test/unit/content/repositories_test.rb +7 -0
- 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,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,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
|
data/test/test_helper.rb
ADDED
@@ -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
|
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
|