katello 3.3.0.1 → 3.3.1

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of katello might be problematic. Click here for more details.

checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5b93d24861f7d29e3d4559fc055116ddd8cdf526
4
- data.tar.gz: 328e808a234822d2e19bf284fdeb900cc2398862
3
+ metadata.gz: 9fd80ba62247d139ff5ed27f95aca8b25d236206
4
+ data.tar.gz: 1bfad67c04189d61a2e86501f991e2b43beca737
5
5
  SHA512:
6
- metadata.gz: 7361e797b0d349f56b57ac60edcb03b4ccb8bf973531355dc3c2624938f3aa0b651373bdb7e7533448ee0b53b0559fa657a4b278371fc7c355526b77819a257b
7
- data.tar.gz: b52dac8e18f1d7a3b3e094b393c2d65be58405266d44ee89edbdfc31a30a93c5a10c0a22f3dde2f3f430a0302ac8210d1d2192fbb235c03ca14b65a2cd5b8bdf
6
+ metadata.gz: 032e886e4f15c663634540e334b6c536553003f499380e6dd478c82d830a39e3f65def24db5915605de227d29013af5d93f240095755888cd3205f4c7557fb4a
7
+ data.tar.gz: bc5df5d5c2b2d467411abb4fef48ce0b93f92a9f71c2f889b9ed6b6f48d8cccc364ea5d93f218d04a9e53b56fd1e2f53ebbd0887891bfa4e9cca2ee318c29464
@@ -316,7 +316,7 @@ module Katello
316
316
  param 'id', String, :required => true
317
317
  param 'size', String
318
318
  param 'checksum', String
319
- param 'name', String
319
+ param 'name', String, :desc => N_("Needs to only be set for file repositories")
320
320
  end
321
321
  def import_uploads
322
322
  if params['upload_ids'].empty? && params['uploads'].empty?
@@ -337,6 +337,12 @@ module Katello
337
337
 
338
338
  if params.key?(:uploads)
339
339
  params[:uploads].each do |upload|
340
+ if @repository.file?
341
+ upload.except('id').except('name')
342
+ else
343
+ upload.except('id')
344
+ end
345
+
340
346
  begin
341
347
  sync_task(
342
348
  ::Actions::Katello::Repository::ImportUpload,
@@ -35,7 +35,7 @@ module Actions
35
35
  content_type: repository.content_type,
36
36
  pulp_id: repository.pulp_id,
37
37
  name: repository.name,
38
- feed: repository.docker? ? repository.docker_feed_url(true) : repository.full_path(nil, true),
38
+ feed: repository.docker? ? repository.docker_feed_url(capsule_content.capsule) : repository.full_path(nil, true),
39
39
  ssl_ca_cert: ::Cert::Certs.ca_cert,
40
40
  ssl_client_cert: ueber_cert[:cert],
41
41
  ssl_client_key: ueber_cert[:key],
@@ -64,6 +64,11 @@ module Actions
64
64
  environment_names: cv_envs.map { |cve| cve.environment.name },
65
65
  version_ids: versions.map(&:id),
66
66
  content_view_history_ids: cv_histories.map { |history| history.id })
67
+
68
+ if organization_destroy
69
+ content_view.hostgroups.clear
70
+ content_view.hosts.clear
71
+ end
67
72
  end
68
73
  end
69
74
 
@@ -48,6 +48,10 @@ module Actions
48
48
  clone.puppet_environment.try(:save!) #manually save puppet environment in case of error
49
49
  clone.save!
50
50
  plan_action(ContentViewPuppetEnvironment::Clear, clone)
51
+
52
+ unless ::Katello::Repository.needs_distributor_updates([clone], ::Katello::CapsuleContent.new(::SmartProxy.default_capsule)).empty?
53
+ plan_action(Pulp::Repository::Refresh, clone)
54
+ end
51
55
  end
52
56
  clone
53
57
  end
@@ -24,6 +24,11 @@ module Actions
24
24
  end
25
25
  end
26
26
 
27
+ if organization_destroy
28
+ env.hostgroups.clear
29
+ env.hosts.clear
30
+ end
31
+
27
32
  plan_self
28
33
  end
29
34
  end
@@ -5,13 +5,13 @@ module Actions
5
5
  middleware.use ::Actions::Middleware::RemoteAction
6
6
 
7
7
  def plan(host, options = {})
8
- skip_candlepin = options.fetch(:skip_candlepin, false)
8
+ organization_destroy = options.fetch(:organization_destroy, false)
9
9
  unregistering = options.fetch(:unregistering, false)
10
10
 
11
11
  action_subject(host)
12
12
 
13
13
  concurrence do
14
- if !skip_candlepin && host.subscription_facet.try(:uuid)
14
+ if !organization_destroy && host.subscription_facet.try(:uuid)
15
15
  plan_action(Candlepin::Consumer::Destroy, uuid: host.subscription_facet.uuid)
16
16
  end
17
17
  plan_action(Pulp::Consumer::Destroy, uuid: host.content_facet.uuid) if host.content_facet.try(:uuid)
@@ -20,14 +20,10 @@ module Actions
20
20
  host.subscription_facet.try(:destroy!)
21
21
 
22
22
  if unregistering
23
- if host.content_facet
24
- host.content_facet.uuid = nil
25
- host.content_facet.save!
26
- end
27
-
28
- host.get_status(::Katello::ErrataStatus).destroy
29
- host.get_status(::Katello::SubscriptionStatus).destroy
30
- host.installed_packages.destroy_all
23
+ unregister(host)
24
+ elsif organization_destroy
25
+ host.content_facet.try(:destroy!)
26
+ destroy_host_artifacts(host)
31
27
  else
32
28
  host.content_facet.try(:destroy!)
33
29
  unless host.destroy
@@ -36,6 +32,20 @@ module Actions
36
32
  end
37
33
  end
38
34
 
35
+ def unregister(host)
36
+ if host.content_facet
37
+ host.content_facet.uuid = nil
38
+ host.content_facet.save!
39
+ end
40
+ destroy_host_artifacts(host)
41
+ end
42
+
43
+ def destroy_host_artifacts(host)
44
+ host.get_status(::Katello::ErrataStatus).destroy
45
+ host.get_status(::Katello::SubscriptionStatus).destroy
46
+ host.installed_packages.destroy_all
47
+ end
48
+
39
49
  def humanized_name
40
50
  _("Destroy Content Host")
41
51
  end
@@ -24,8 +24,6 @@ module Actions
24
24
  host.subscription_facet = plan_subscription_facet(host, activation_keys, consumer_params)
25
25
  host.save!
26
26
 
27
- ::Katello::Host::SubscriptionFacet.update_facts(host, consumer_params[:facts]) unless consumer_params[:facts].blank?
28
-
29
27
  action_subject host
30
28
 
31
29
  cp_create = plan_action(Candlepin::Consumer::Create, cp_environment_id: content_view_environment.cp_id,
@@ -33,7 +31,7 @@ module Actions
33
31
  return if cp_create.error
34
32
 
35
33
  plan_self(uuid: cp_create.output[:response][:uuid], host_id: host.id, hostname: host.name,
36
- user_id: User.current.id)
34
+ user_id: User.current.id, :facts => consumer_params[:facts])
37
35
  plan_action(Pulp::Consumer::Create, uuid: cp_create.output[:response][:uuid], name: host.name)
38
36
  end
39
37
  end
@@ -46,6 +44,14 @@ module Actions
46
44
  end
47
45
  end
48
46
 
47
+ def run
48
+ host = ::Host.find(input[:host_id])
49
+ unless input[:facts].blank?
50
+ ::Katello::Host::SubscriptionFacet.update_facts(host, input[:facts])
51
+ input[:facts] = 'TRIMMED'
52
+ end
53
+ end
54
+
49
55
  def finalize
50
56
  host = ::Host.find(input[:host_id])
51
57
  host.content_facet.uuid = input[:uuid]
@@ -6,7 +6,7 @@ module Actions
6
6
 
7
7
  def plan(host, consumer_params = nil)
8
8
  action_subject host
9
- plan_self(:hostname => host.name)
9
+ plan_self(:hostname => host.name, :facts => consumer_params.try(:[], :facts), :host_id => host.id)
10
10
 
11
11
  sequence do
12
12
  host.content_facet.save! if host.content_facet
@@ -17,7 +17,6 @@ module Actions
17
17
  else
18
18
  consumer_params = host.subscription_facet.consumer_attributes
19
19
  end
20
- ::Katello::Host::SubscriptionFacet.update_facts(::Host.find(host.id), consumer_params[:facts]) unless consumer_params[:facts].blank?
21
20
  host.subscription_facet.save!
22
21
  plan_action(::Actions::Candlepin::Consumer::Update, host.subscription_facet.uuid, consumer_params)
23
22
  end
@@ -28,6 +27,14 @@ module Actions
28
27
  end
29
28
  end
30
29
 
30
+ def run
31
+ host = ::Host.find(input[:host_id])
32
+ unless input[:facts].blank?
33
+ ::Katello::Host::SubscriptionFacet.update_facts(host, input[:facts])
34
+ input[:facts] = 'TRIMMED'
35
+ end
36
+ end
37
+
31
38
  def resource_locks
32
39
  :update
33
40
  end
@@ -47,8 +47,8 @@ module Actions
47
47
 
48
48
  def remove_consumers(organization)
49
49
  concurrence do
50
- organization.hosts.each do |host|
51
- plan_action(Katello::Host::Destroy, host, skip_candlepin: true)
50
+ ::Host.unscoped.where(:organization => organization).each do |host|
51
+ plan_action(Katello::Host::Destroy, host, organization_destroy: true)
52
52
  end
53
53
 
54
54
  organization.activation_keys.each do |key|
@@ -47,6 +47,10 @@ module Katello
47
47
  end
48
48
 
49
49
  def self.applicable_to_hosts(hosts)
50
+ # Note: ContentFacetErrata actually holds the "Applicable Errata" to that host
51
+ # It is not the errata "belonging" to the host. Its rather the errata that is "applicable"
52
+ # which is calculated elsewhere.
53
+
50
54
  self.joins(:content_facets).
51
55
  where("#{Katello::Host::ContentFacet.table_name}.host_id" => hosts).uniq
52
56
  end
@@ -85,12 +89,18 @@ module Katello
85
89
  end
86
90
 
87
91
  def self.installable_for_hosts(hosts = nil)
88
- query = Katello::Erratum.joins(:content_facet_errata).joins(:repository_errata).
92
+ # Main goal of this query
93
+ # 1) Get me the applicable errata for these set of hosts
94
+ # 2) Now further prune this list. Only include errata from repos that have been "enabled" on those hosts.
95
+ # In other words, prune the list to only include the errate in the "bound" repositories signified by
96
+ # the inner join between ContentFacetRepository and RepositoryErratum
97
+ query = self.
89
98
  joins("INNER JOIN #{Katello::ContentFacetRepository.table_name} on \
90
99
  #{Katello::ContentFacetRepository.table_name}.content_facet_id = #{Katello::ContentFacetErratum.table_name}.content_facet_id").
91
100
  joins("INNER JOIN #{Katello::RepositoryErratum.table_name} AS host_repo_errata ON \
92
- host_repo_errata.erratum_id = #{Katello::Erratum.table_name}.id").
93
- where("#{Katello::ContentFacetRepository.table_name}.repository_id = host_repo_errata.repository_id")
101
+ host_repo_errata.erratum_id = #{Katello::Erratum.table_name}.id AND \
102
+ #{Katello::ContentFacetRepository.table_name}.repository_id = host_repo_errata.repository_id")
103
+ query = query.joins(:content_facet_errata) unless hosts
94
104
 
95
105
  query = query.joins(:content_facets).where("#{Katello::Host::ContentFacet.table_name}.host_id" => hosts.map(&:id)) if hosts
96
106
  query.uniq
@@ -5,7 +5,7 @@ module Katello
5
5
 
6
6
  def initialize(object_id)
7
7
  @host = ::Host.find_by_id(object_id)
8
- fail "Host not found for ID #{object_id}" if @host.nil?
8
+ Rails.logger.warn "Host not found for ID #{object_id}" if @host.nil?
9
9
  end
10
10
 
11
11
  def run
@@ -150,7 +150,7 @@ module Katello
150
150
  raise PulpErrors::ServiceUnavailable.new(message, e)
151
151
  end
152
152
 
153
- def generate_importer(capsule = nil)
153
+ def generate_importer(capsule = SmartProxy.default_capsule)
154
154
  case self.content_type
155
155
  when Repository::YUM_TYPE
156
156
  Runcible::Models::YumImporter.new(yum_importer_values(capsule))
@@ -161,7 +161,7 @@ module Katello
161
161
  Runcible::Models::PuppetImporter.new(importer_ssl_options(capsule).merge(options))
162
162
  when Repository::DOCKER_TYPE
163
163
  options = {}
164
- options[:upstream_name] = capsule ? self.pulp_id : self.docker_upstream_name
164
+ options[:upstream_name] = capsule.default_capsule? ? self.docker_upstream_name : self.pulp_id
165
165
  options[:feed] = docker_feed_url(capsule)
166
166
  options[:enable_v1] = false
167
167
  Runcible::Models::DockerImporter.new(importer_ssl_options(capsule).merge(options))
@@ -175,40 +175,40 @@ module Katello
175
175
  end
176
176
  end
177
177
 
178
- def docker_feed_url(capsule = false)
178
+ def docker_feed_url(capsule = SmartProxy.default_capsule)
179
179
  pulp_uri = URI.parse(SETTINGS[:katello][:pulp][:url])
180
- if capsule
181
- "https://#{pulp_uri.host.downcase}:#{Setting['pulp_docker_registry_port']}"
182
- else
180
+ if capsule.default_capsule?
183
181
  self.url if self.respond_to?(:url)
182
+ else
183
+ "https://#{pulp_uri.host.downcase}:#{Setting['pulp_docker_registry_port']}"
184
184
  end
185
185
  end
186
186
 
187
- def importer_feed_url(capsule = false)
188
- if capsule
189
- self.full_path(nil, true)
190
- else
187
+ def importer_feed_url(capsule = SmartProxy.default_capsule)
188
+ if capsule.default_capsule?
191
189
  self.url if self.respond_to?(:url)
190
+ else
191
+ self.full_path(nil, true)
192
192
  end
193
193
  end
194
194
 
195
195
  def yum_importer_values(capsule)
196
- if capsule
197
- new_download_policy = capsule_download_policy(capsule)
198
- else
196
+ if capsule.default_capsule?
199
197
  new_download_policy = self.download_policy
198
+ else
199
+ new_download_policy = capsule_download_policy(capsule)
200
200
  end
201
201
 
202
202
  config = {
203
203
  :feed => self.importer_feed_url(capsule),
204
204
  :download_policy => new_download_policy,
205
- :remove_missing => capsule ? true : self.mirror_on_sync?
205
+ :remove_missing => capsule.default_capsule? ? self.mirror_on_sync? : true
206
206
  }
207
207
  config.merge(importer_ssl_options(capsule))
208
208
  end
209
209
 
210
- def importer_ssl_options(capsule = nil)
211
- if capsule
210
+ def importer_ssl_options(capsule = SmartProxy.default_capsule)
211
+ if !capsule.default_capsule?
212
212
  ueber_cert = ::Cert::Certs.ueber_cert(organization)
213
213
  importer_options = {
214
214
  :ssl_client_cert => ueber_cert[:cert],
@@ -236,7 +236,7 @@ module Katello
236
236
  importer_options
237
237
  end
238
238
 
239
- def generate_distributors(capsule = nil)
239
+ def generate_distributors(capsule = SmartProxy.default_capsule)
240
240
  case self.content_type
241
241
  when Repository::YUM_TYPE
242
242
  yum_dist_id = self.pulp_id
@@ -249,7 +249,7 @@ module Katello
249
249
  :destination_distributor_id => yum_dist_id)
250
250
  export_dist = Runcible::Models::ExportDistributor.new(false, false, self.relative_path)
251
251
  distributors = [yum_dist, export_dist]
252
- distributors << clone_dist unless capsule
252
+ distributors << clone_dist if capsule.default_capsule?
253
253
  when Repository::FILE_TYPE
254
254
  dist = Runcible::Models::IsoDistributor.new(true, true)
255
255
  dist.auto_publish = true
@@ -30,7 +30,7 @@ module Katello
30
30
  new_fact.parent = parent_fact_name
31
31
  new_fact.compose = is_parent
32
32
  end
33
- rescue ActiveRecord::RecordNotUnique
33
+ rescue ActiveRecord::RecordNotUnique, ActiveRecord::RecordInvalid
34
34
  retry
35
35
  end
36
36
  FactValue.create(:fact_name => fact_name, :value => nil, :host => @host) if is_parent
@@ -18,7 +18,7 @@
18
18
  <tr>
19
19
  <td align="center" valign="top">
20
20
  <div align="left">
21
- <h2 style="font-weight: normal;"><%= _("<b>PROMOTION</b> SUMMARY") %></h2>
21
+ <h2 style="font-weight: normal;"><%= _("<b>PROMOTION</b> SUMMARY").html_safe %></h2>
22
22
 
23
23
  <%= (_("The promotion of %{content_view} to <b>%{environment}</b> has completed. %{count} needed errata are installable on your hosts.") %
24
24
  {:content_view => link_to(@content_view.name, content_view_path(@content_view)),
@@ -18,7 +18,7 @@
18
18
  <tr>
19
19
  <td align="center" valign="top">
20
20
  <div align="left">
21
- <h2 style="font-weight: normal;"><%= _("<b>SYNC</b> SUMMARY") %></h2>
21
+ <h2 style="font-weight: normal;"><%= _("<b>SYNC</b> SUMMARY").html_safe %></h2>
22
22
  <p><%= _("The synchronization of \"%s\" has completed. Below is a summary of new errata.") % @repo.name %>
23
23
  <% if @errata_counts[:total] > 100 %>
24
24
  <%= _("A large number of errata were synced for this repository, so only the first 100 are shown.") %>
@@ -1,7 +1,7 @@
1
1
  <% if taxonomy.is_a?(Organization) %>
2
2
  <%= action_buttons(
3
3
  display_link_if_authorized(_("Edit"), hash_for_edit_taxonomy_path(taxonomy) ),
4
- display_delete_if_authorized(hash_for_taxonomy_path(taxonomy), :confirm => _("Delete %s?") % taxonomy.name, :action => :destroy),
4
+ display_delete_if_authorized(hash_for_taxonomy_path(taxonomy), :data => { :confirm => _("%s %s has %s Hosts and %s Hostgroups that will need to be reassociated post deletion. Delete %s?") % [taxonomy_title, taxonomy.name, taxonomy.hosts.count, taxonomy.hostgroups.count, taxonomy.name]}, :action => :destroy),
5
5
  (link_to((_("Select hosts to assign to %s") % taxonomy.name), assign_hosts_taxonomy_path(taxonomy)) if @count_nil_hosts > 0),
6
6
  (link_to(n_("Assign the %{count} host with no %{taxonomy_single} to %{taxonomy_name}", "Assign all %{count} hosts with no %{taxonomy_single} to %{taxonomy_name}", @count_nil_hosts) % {:count => @count_nil_hosts, :taxonomy_single => taxonomy_single, :taxonomy_name => taxonomy.name} ,
7
7
  assign_all_hosts_taxonomy_path(taxonomy),
@@ -12,7 +12,7 @@
12
12
  display_link_if_authorized(_("Edit"), hash_for_edit_taxonomy_path(taxonomy) ),
13
13
  display_link_if_authorized(_("Nest"), hash_for_nest_taxonomy_path(taxonomy) ),
14
14
  display_link_if_authorized(_("Clone"), hash_for_clone_taxonomy_path(taxonomy) ),
15
- display_delete_if_authorized(hash_for_taxonomy_path(taxonomy), :confirm => _("Delete %s?") % taxonomy.name, :action => :destroy),
15
+ display_delete_if_authorized(hash_for_taxonomy_path(taxonomy), :data => { :confirm => _("%s %s has %s Hosts and %s Hostgroups that will need to be reassociated post deletion. Delete %s?") % [taxonomy_title, taxonomy.name, taxonomy.hosts.count, taxonomy.hostgroups.count, taxonomy.name]}, :action => :destroy),
16
16
  (link_to((_("Select hosts to assign to %s") % taxonomy.name), assign_hosts_taxonomy_path(taxonomy)) if @count_nil_hosts > 0),
17
17
  (link_to(n_("Assign the %{count} host with no %{taxonomy_single} to %{taxonomy_name}", "Assign all %{count} hosts with no %{taxonomy_single} to %{taxonomy_name}", @count_nil_hosts) % {:count => @count_nil_hosts, :taxonomy_single => taxonomy_single, :taxonomy_name => taxonomy.name} ,
18
18
  assign_all_hosts_taxonomy_path(taxonomy),
@@ -0,0 +1,7 @@
1
+ class RemoveSystemPermissions < ActiveRecord::Migration
2
+ def up
3
+ system_permissions = Permission.where(:resource_type => 'Katello::System')
4
+ system_permissions.flat_map(&:filters).map(&:destroy!)
5
+ system_permissions.map(&:destroy!)
6
+ end
7
+ end
@@ -37,10 +37,7 @@
37
37
 
38
38
  <tbody>
39
39
  <tr bst-table-row ng-repeat-start="(name, subscriptions) in groupedSubscriptions">
40
- <td class="row-select"></td>
41
- <td colspan="8">
42
- {{ name }}
43
- </td>
40
+ {{ name }}
44
41
  </tr>
45
42
  <tr bst-table-row
46
43
  ng-repeat-end
@@ -36,10 +36,7 @@
36
36
 
37
37
  <tbody>
38
38
  <tr bst-table-row ng-repeat-start="(name, subscriptions) in groupedSubscriptions | groupedFilter: subscriptionSearch">
39
- <td class="row-select"></td>
40
- <td colspan="8">
41
- {{ name }}
42
- </td>
39
+ {{ name }}
43
40
  </tr>
44
41
  <tr class="grey-table-row" bst-table-row ng-repeat-end ng-repeat="subscription in subscriptions" row-select="subscription">
45
42
  <td bst-table-cell>{{ subscription | subscriptionAttachAmountFilter }}</td>
@@ -1,3 +1,3 @@
1
1
  module Katello
2
- VERSION = "3.3.0.1".freeze
2
+ VERSION = "3.3.1".freeze
3
3
  end
metadata CHANGED
@@ -1,353 +1,353 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: katello
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.3.0.1
4
+ version: 3.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - N/A
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-02-22 00:00:00.000000000 Z
11
+ date: 2017-03-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
17
+ - - '>='
18
18
  - !ruby/object:Gem::Version
19
19
  version: '0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ">="
24
+ - - '>='
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: json
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ">="
31
+ - - '>='
32
32
  - !ruby/object:Gem::Version
33
33
  version: '0'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ">="
38
+ - - '>='
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: oauth
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ">="
45
+ - - '>='
46
46
  - !ruby/object:Gem::Version
47
47
  version: '0'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ">="
52
+ - - '>='
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rest-client
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ">="
59
+ - - '>='
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0'
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - ">="
66
+ - - '>='
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rabl
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - ">="
73
+ - - '>='
74
74
  - !ruby/object:Gem::Version
75
75
  version: '0'
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - ">="
80
+ - - '>='
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: foreman-tasks
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - "~>"
87
+ - - ~>
88
88
  - !ruby/object:Gem::Version
89
89
  version: 0.8.0
90
90
  type: :runtime
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - "~>"
94
+ - - ~>
95
95
  - !ruby/object:Gem::Version
96
96
  version: 0.8.0
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: foreman_docker
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - ">="
101
+ - - '>='
102
102
  - !ruby/object:Gem::Version
103
103
  version: 0.2.0
104
104
  type: :runtime
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
- - - ">="
108
+ - - '>='
109
109
  - !ruby/object:Gem::Version
110
110
  version: 0.2.0
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: qpid_messaging
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
- - - "<"
115
+ - - <
116
116
  - !ruby/object:Gem::Version
117
117
  version: 1.0.0
118
118
  type: :runtime
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
- - - "<"
122
+ - - <
123
123
  - !ruby/object:Gem::Version
124
124
  version: 1.0.0
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: gettext_i18n_rails
127
127
  requirement: !ruby/object:Gem::Requirement
128
128
  requirements:
129
- - - ">="
129
+ - - '>='
130
130
  - !ruby/object:Gem::Version
131
131
  version: '0'
132
132
  type: :runtime
133
133
  prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
- - - ">="
136
+ - - '>='
137
137
  - !ruby/object:Gem::Version
138
138
  version: '0'
139
139
  - !ruby/object:Gem::Dependency
140
140
  name: runcible
141
141
  requirement: !ruby/object:Gem::Requirement
142
142
  requirements:
143
- - - ">="
143
+ - - '>='
144
144
  - !ruby/object:Gem::Version
145
145
  version: 1.9.0
146
- - - "<"
146
+ - - <
147
147
  - !ruby/object:Gem::Version
148
148
  version: 2.0.0
149
149
  type: :runtime
150
150
  prerelease: false
151
151
  version_requirements: !ruby/object:Gem::Requirement
152
152
  requirements:
153
- - - ">="
153
+ - - '>='
154
154
  - !ruby/object:Gem::Version
155
155
  version: 1.9.0
156
- - - "<"
156
+ - - <
157
157
  - !ruby/object:Gem::Version
158
158
  version: 2.0.0
159
159
  - !ruby/object:Gem::Dependency
160
160
  name: anemone
161
161
  requirement: !ruby/object:Gem::Requirement
162
162
  requirements:
163
- - - ">="
163
+ - - '>='
164
164
  - !ruby/object:Gem::Version
165
165
  version: '0'
166
166
  type: :runtime
167
167
  prerelease: false
168
168
  version_requirements: !ruby/object:Gem::Requirement
169
169
  requirements:
170
- - - ">="
170
+ - - '>='
171
171
  - !ruby/object:Gem::Version
172
172
  version: '0'
173
173
  - !ruby/object:Gem::Dependency
174
174
  name: deface
175
175
  requirement: !ruby/object:Gem::Requirement
176
176
  requirements:
177
- - - ">="
177
+ - - '>='
178
178
  - !ruby/object:Gem::Version
179
179
  version: 1.0.2
180
- - - "<"
180
+ - - <
181
181
  - !ruby/object:Gem::Version
182
182
  version: 2.0.0
183
183
  type: :runtime
184
184
  prerelease: false
185
185
  version_requirements: !ruby/object:Gem::Requirement
186
186
  requirements:
187
- - - ">="
187
+ - - '>='
188
188
  - !ruby/object:Gem::Version
189
189
  version: 1.0.2
190
- - - "<"
190
+ - - <
191
191
  - !ruby/object:Gem::Version
192
192
  version: 2.0.0
193
193
  - !ruby/object:Gem::Dependency
194
194
  name: jquery-ui-rails
195
195
  requirement: !ruby/object:Gem::Requirement
196
196
  requirements:
197
- - - ">="
197
+ - - '>='
198
198
  - !ruby/object:Gem::Version
199
199
  version: '0'
200
200
  type: :runtime
201
201
  prerelease: false
202
202
  version_requirements: !ruby/object:Gem::Requirement
203
203
  requirements:
204
- - - ">="
204
+ - - '>='
205
205
  - !ruby/object:Gem::Version
206
206
  version: '0'
207
207
  - !ruby/object:Gem::Dependency
208
208
  name: bastion
209
209
  requirement: !ruby/object:Gem::Requirement
210
210
  requirements:
211
- - - ">="
211
+ - - '>='
212
212
  - !ruby/object:Gem::Version
213
213
  version: 4.0.0
214
- - - "<"
214
+ - - <
215
215
  - !ruby/object:Gem::Version
216
216
  version: 5.0.0
217
217
  type: :runtime
218
218
  prerelease: false
219
219
  version_requirements: !ruby/object:Gem::Requirement
220
220
  requirements:
221
- - - ">="
221
+ - - '>='
222
222
  - !ruby/object:Gem::Version
223
223
  version: 4.0.0
224
- - - "<"
224
+ - - <
225
225
  - !ruby/object:Gem::Version
226
226
  version: 5.0.0
227
227
  - !ruby/object:Gem::Dependency
228
228
  name: factory_girl_rails
229
229
  requirement: !ruby/object:Gem::Requirement
230
230
  requirements:
231
- - - ">="
231
+ - - '>='
232
232
  - !ruby/object:Gem::Version
233
233
  version: '0'
234
234
  type: :development
235
235
  prerelease: false
236
236
  version_requirements: !ruby/object:Gem::Requirement
237
237
  requirements:
238
- - - ">="
238
+ - - '>='
239
239
  - !ruby/object:Gem::Version
240
240
  version: '0'
241
241
  - !ruby/object:Gem::Dependency
242
242
  name: minitest-tags
243
243
  requirement: !ruby/object:Gem::Requirement
244
244
  requirements:
245
- - - ">="
245
+ - - '>='
246
246
  - !ruby/object:Gem::Version
247
247
  version: '0'
248
248
  type: :development
249
249
  prerelease: false
250
250
  version_requirements: !ruby/object:Gem::Requirement
251
251
  requirements:
252
- - - ">="
252
+ - - '>='
253
253
  - !ruby/object:Gem::Version
254
254
  version: '0'
255
255
  - !ruby/object:Gem::Dependency
256
256
  name: mocha
257
257
  requirement: !ruby/object:Gem::Requirement
258
258
  requirements:
259
- - - ">="
259
+ - - '>='
260
260
  - !ruby/object:Gem::Version
261
261
  version: '0'
262
262
  type: :development
263
263
  prerelease: false
264
264
  version_requirements: !ruby/object:Gem::Requirement
265
265
  requirements:
266
- - - ">="
266
+ - - '>='
267
267
  - !ruby/object:Gem::Version
268
268
  version: '0'
269
269
  - !ruby/object:Gem::Dependency
270
270
  name: vcr
271
271
  requirement: !ruby/object:Gem::Requirement
272
272
  requirements:
273
- - - "<"
273
+ - - <
274
274
  - !ruby/object:Gem::Version
275
275
  version: 3.0.0
276
276
  type: :development
277
277
  prerelease: false
278
278
  version_requirements: !ruby/object:Gem::Requirement
279
279
  requirements:
280
- - - "<"
280
+ - - <
281
281
  - !ruby/object:Gem::Version
282
282
  version: 3.0.0
283
283
  - !ruby/object:Gem::Dependency
284
284
  name: webmock
285
285
  requirement: !ruby/object:Gem::Requirement
286
286
  requirements:
287
- - - ">="
287
+ - - '>='
288
288
  - !ruby/object:Gem::Version
289
289
  version: '0'
290
290
  type: :development
291
291
  prerelease: false
292
292
  version_requirements: !ruby/object:Gem::Requirement
293
293
  requirements:
294
- - - ">="
294
+ - - '>='
295
295
  - !ruby/object:Gem::Version
296
296
  version: '0'
297
297
  - !ruby/object:Gem::Dependency
298
298
  name: rubocop-checkstyle_formatter
299
299
  requirement: !ruby/object:Gem::Requirement
300
300
  requirements:
301
- - - ">="
301
+ - - '>='
302
302
  - !ruby/object:Gem::Version
303
303
  version: '0'
304
304
  type: :development
305
305
  prerelease: false
306
306
  version_requirements: !ruby/object:Gem::Requirement
307
307
  requirements:
308
- - - ">="
308
+ - - '>='
309
309
  - !ruby/object:Gem::Version
310
310
  version: '0'
311
311
  - !ruby/object:Gem::Dependency
312
312
  name: simplecov
313
313
  requirement: !ruby/object:Gem::Requirement
314
314
  requirements:
315
- - - ">="
315
+ - - '>='
316
316
  - !ruby/object:Gem::Version
317
317
  version: '0'
318
318
  type: :development
319
319
  prerelease: false
320
320
  version_requirements: !ruby/object:Gem::Requirement
321
321
  requirements:
322
- - - ">="
322
+ - - '>='
323
323
  - !ruby/object:Gem::Version
324
324
  version: '0'
325
325
  - !ruby/object:Gem::Dependency
326
326
  name: simplecov-rcov
327
327
  requirement: !ruby/object:Gem::Requirement
328
328
  requirements:
329
- - - ">="
329
+ - - '>='
330
330
  - !ruby/object:Gem::Version
331
331
  version: '0'
332
332
  type: :development
333
333
  prerelease: false
334
334
  version_requirements: !ruby/object:Gem::Requirement
335
335
  requirements:
336
- - - ">="
336
+ - - '>='
337
337
  - !ruby/object:Gem::Version
338
338
  version: '0'
339
339
  - !ruby/object:Gem::Dependency
340
340
  name: patternfly-sass
341
341
  requirement: !ruby/object:Gem::Requirement
342
342
  requirements:
343
- - - "~>"
343
+ - - ~>
344
344
  - !ruby/object:Gem::Version
345
345
  version: 3.11.0
346
346
  type: :development
347
347
  prerelease: false
348
348
  version_requirements: !ruby/object:Gem::Requirement
349
349
  requirements:
350
- - - "~>"
350
+ - - ~>
351
351
  - !ruby/object:Gem::Version
352
352
  version: 3.11.0
353
353
  description: Content and Subscription Management plugin for Foreman
@@ -1394,6 +1394,7 @@ files:
1394
1394
  - db/migrate/20161031204903_add_tracer_support.rb
1395
1395
  - db/migrate/20161102194100_create_content_view_docker_filter_rules.rb
1396
1396
  - db/migrate/20161214151548_move_content_source_id_to_content_facets.rb
1397
+ - db/migrate/20170220679403_remove_system_permissions.rb
1397
1398
  - db/seeds.d/101-locations.rb
1398
1399
  - db/seeds.d/102-organizations.rb
1399
1400
  - db/seeds.d/103-provisioning_templates.rb
@@ -2029,17 +2030,17 @@ require_paths:
2029
2030
  - lib
2030
2031
  required_ruby_version: !ruby/object:Gem::Requirement
2031
2032
  requirements:
2032
- - - ">="
2033
+ - - '>='
2033
2034
  - !ruby/object:Gem::Version
2034
2035
  version: '0'
2035
2036
  required_rubygems_version: !ruby/object:Gem::Requirement
2036
2037
  requirements:
2037
- - - ">="
2038
+ - - '>='
2038
2039
  - !ruby/object:Gem::Version
2039
2040
  version: '0'
2040
2041
  requirements: []
2041
2042
  rubyforge_project:
2042
- rubygems_version: 2.6.8
2043
+ rubygems_version: 2.4.8
2043
2044
  signing_key:
2044
2045
  specification_version: 4
2045
2046
  summary: ''