foreman_scc_manager 1.8.12 → 1.8.17
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +8 -2
- data/Rakefile +5 -9
- data/app/controllers/api/v2/scc_products_controller.rb +14 -3
- data/app/controllers/scc_accounts_controller.rb +7 -3
- data/app/lib/actions/scc_manager/subscribe_product.rb +10 -2
- data/app/lib/scc_manager.rb +2 -1
- data/app/models/scc_account.rb +6 -6
- data/app/models/scc_product.rb +5 -1
- data/app/models/scc_repository.rb +2 -2
- data/app/views/scc_accounts/index.html.erb +1 -1
- data/db/migrate/20201119084201_add_gpg_key_to_scc_account.rb +6 -2
- data/lib/foreman_scc_manager/version.rb +1 -1
- data/test/actions/sync_test.rb +24 -0
- data/test/controllers/api/v2/scc_products_test.rb +21 -1
- data/test/fixtures/models/scc_products.yml +18 -3
- data/test/models/scc_product_test.rb +1 -1
- data/test/test_plugin_helper.rb +2 -0
- metadata +8 -18
- data/locale/de/foreman_scc_manager.edit.po +0 -571
- data/locale/de/foreman_scc_manager.po.time_stamp +0 -0
- data/locale/en/foreman_scc_manager.edit.po +0 -562
- data/locale/en/foreman_scc_manager.po.time_stamp +0 -0
- data/test/controllers/scc_accounts_controller_test2.rb +0 -51
- data/test/fixtures/models/scc_extendings.yml +0 -6
- data/test/test_controller_helper.rb +0 -15
- data/test/unit/access_permissions_test.rb +0 -16
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 96a0d125c5dab16617adfbfbabb28166111f8d0f85c5cbac77836e2f2d6a6791
|
4
|
+
data.tar.gz: 2b3ea8baa9f5f09427aee36ce034f6d4e0c385c395b148311ce1605221d9843d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 193d57d91538c74f8e29ee1d7fce65153c46a286b586a281674cbfcde51e833a485c8c7bab8e4342ab09451bcc044dceb09be42e489f3ed3ef4a91217b2b5585
|
7
|
+
data.tar.gz: 76f4ff19c508a4f61d5153dcf80f1298c9edb140c0e59e05f702218d097b4d62fe9f7f945dd797bbe0c4ad495db2a39b0807cd7006a7d20f2f8994616feb9da7
|
data/README.md
CHANGED
@@ -8,7 +8,13 @@ Foreman plugin to sync SUSE Customer Center products and repositories into Katel
|
|
8
8
|
|
9
9
|
## Installation
|
10
10
|
|
11
|
-
|
11
|
+
This plugin installation is not supported by foreman-installer and has to be installed manually:
|
12
|
+
|
13
|
+
```sh
|
14
|
+
yum install tfm-rubygem-foreman_scc_manager
|
15
|
+
|
16
|
+
foreman-installer
|
17
|
+
```
|
12
18
|
|
13
19
|
## Compatibility
|
14
20
|
|
@@ -29,7 +35,7 @@ See [Foreman Manual](https://theforeman.org/plugins/#2.Installation) on how to i
|
|
29
35
|
|
30
36
|
## Documentation
|
31
37
|
|
32
|
-
[Plugin documentation](https://docs.orcharhino.com/sources/
|
38
|
+
[Plugin documentation](https://docs.orcharhino.com/or/docs/sources/usage_guides/managing_sles_systems_guide.html#mssg_installing_the_scc_manager_plugin)
|
33
39
|
|
34
40
|
## Hammer CLI Extension
|
35
41
|
|
data/Rakefile
CHANGED
@@ -35,13 +35,9 @@ end
|
|
35
35
|
|
36
36
|
task default: :test
|
37
37
|
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
puts 'Rubocop not loaded.'
|
43
|
-
end
|
44
|
-
|
45
|
-
task :default do
|
46
|
-
Rake::Task['rubocop'].execute
|
38
|
+
class ForemanSccManager::Engine
|
39
|
+
def self.root
|
40
|
+
File.expand_path('__dir__')
|
41
|
+
end
|
47
42
|
end
|
43
|
+
import 'lib/tasks/rubocop.rake'
|
@@ -12,11 +12,22 @@ module Api
|
|
12
12
|
|
13
13
|
before_action :find_resource, :only => [:show, :subscribe]
|
14
14
|
|
15
|
-
|
15
|
+
def metadata_subtotal
|
16
|
+
if @scc_products.present?
|
17
|
+
@scc_products.count
|
18
|
+
else
|
19
|
+
super
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
api :GET, '/scc_accounts/:scc_account_id/scc_products/', N_('List products for an scc_account')
|
16
24
|
param :scc_account_id, :identifier_dottable, :required => true
|
25
|
+
param :subscribed_only, :bool, :required => false, :desc => N_('Show subscribed products only')
|
17
26
|
param_group :search_and_pagination, ::Api::V2::BaseController
|
27
|
+
|
18
28
|
def index
|
19
29
|
scope = resource_scope
|
30
|
+
scope = scope.where.not(:product_id => nil) if ::Foreman::Cast.to_bool(params[:subscribed_only])
|
20
31
|
scope = scope.where(:organization => params[:organization_id]) if params[:organization_id].present?
|
21
32
|
@scc_products = scope.search_for(params[:search], :order => params[:order]).paginate(:page => params[:page])
|
22
33
|
end
|
@@ -47,8 +58,8 @@ module Api
|
|
47
58
|
private
|
48
59
|
|
49
60
|
def find_resource
|
50
|
-
@scc_account = ::SccAccount.
|
51
|
-
@scc_product = @scc_account.scc_products.
|
61
|
+
@scc_account = ::SccAccount.find(params[:scc_account_id])
|
62
|
+
@scc_product = @scc_account.scc_products.find(params[:id])
|
52
63
|
end
|
53
64
|
|
54
65
|
def action_permission
|
@@ -37,7 +37,7 @@ class SccAccountsController < ApplicationController
|
|
37
37
|
# POST /scc_accounts/test_connection
|
38
38
|
def test_connection
|
39
39
|
@scc_account = SccAccount.new(scc_account_params)
|
40
|
-
@scc_account.password = SccAccount.
|
40
|
+
@scc_account.password = SccAccount.find(params[:scc_account_id]).password if params[:scc_account_id].present? && scc_account_params[:password].empty?
|
41
41
|
respond_to do |format|
|
42
42
|
if @scc_account.test_connection
|
43
43
|
format.json { render json: nil, status: :ok }
|
@@ -101,12 +101,16 @@ class SccAccountsController < ApplicationController
|
|
101
101
|
|
102
102
|
def find_available_gpg_keys
|
103
103
|
@scc_account ? org = @scc_account.organization : org = @organization
|
104
|
-
|
104
|
+
if ::Katello.const_defined?(:ContentCredential)
|
105
|
+
@selectable_gpg_keys = ::Katello::ContentCredential.where(organization: org).collect { |p| [p.name, p.id] }.unshift ['None', nil]
|
106
|
+
else
|
107
|
+
@selectable_gpg_keys = ::Katello::GpgKey.where(organization: org).collect { |p| [p.name, p.id] }.unshift ['None', nil]
|
108
|
+
end
|
105
109
|
end
|
106
110
|
|
107
111
|
def find_organization
|
108
112
|
@organization = Organization.current
|
109
|
-
redirect_to
|
113
|
+
redirect_to "/select_organization?toState=#{request.path}" unless @organization
|
110
114
|
end
|
111
115
|
|
112
116
|
# Use callbacks to share common setup or constraints between actions.
|
@@ -54,7 +54,11 @@ module Actions
|
|
54
54
|
def create_sub_plans
|
55
55
|
product = ::Katello::Product.new
|
56
56
|
product.name = input[:product_name]
|
57
|
-
|
57
|
+
if ::Katello.const_defined?(:ContentCredential)
|
58
|
+
product.gpg_key = ::Katello::ContentCredential.find_by(id: input[:gpg_key], organization: input[:organization_id])
|
59
|
+
else
|
60
|
+
product.gpg_key = ::Katello::GpgKey.find_by(id: input[:gpg_key], organization: input[:organization_id])
|
61
|
+
end
|
58
62
|
product.description = input[:product_description]
|
59
63
|
trigger(::Actions::Katello::Product::Create,
|
60
64
|
product,
|
@@ -82,7 +86,11 @@ module Actions
|
|
82
86
|
:arch => input[:arch],
|
83
87
|
:download_policy => ::Runcible::Models::YumImporter::DOWNLOAD_IMMEDIATE }
|
84
88
|
repository = product.add_repo(repo_param)
|
85
|
-
repository.mirror_on_sync
|
89
|
+
if repository.has_attribute?('mirror_on_sync')
|
90
|
+
repository.mirror_on_sync = true
|
91
|
+
else
|
92
|
+
repository.mirroring_policy = ::Katello::RootRepository::MIRRORING_POLICY_CONTENT
|
93
|
+
end
|
86
94
|
repository.verify_ssl_on_sync = true
|
87
95
|
trigger(::Actions::Katello::Repository::CreateRoot, repository).tap do
|
88
96
|
output[:katello_root_repository_id] = repository.id
|
data/app/lib/scc_manager.rb
CHANGED
@@ -10,7 +10,8 @@ module SccManager
|
|
10
10
|
end
|
11
11
|
|
12
12
|
url = base_url + rest_url
|
13
|
-
|
13
|
+
credentials = Base64.encode64("#{login}:#{password}").chomp
|
14
|
+
auth_header = { Authorization: "Basic #{credentials}",
|
14
15
|
Accept: 'application/vnd.scc.suse.com.v4+json' }
|
15
16
|
results = []
|
16
17
|
loop do
|
data/app/models/scc_account.rb
CHANGED
@@ -172,7 +172,7 @@ class SccAccount < ApplicationRecord
|
|
172
172
|
def update_scc_repositories(upstream_repositories)
|
173
173
|
upstream_repo_ids = []
|
174
174
|
# initially invalidate all repositories and validate them during update
|
175
|
-
invalidated_repos = invalidate_subscription_status(scc_repositories)
|
175
|
+
invalidated_repos = invalidate_subscription_status(scc_repositories, save_record: false)
|
176
176
|
# import repositories
|
177
177
|
upstream_repositories.each do |ur|
|
178
178
|
cached_repository = scc_repositories.find_or_initialize_by(scc_id: ur['id'])
|
@@ -196,7 +196,7 @@ class SccAccount < ApplicationRecord
|
|
196
196
|
# subscription_valid can be set to nil
|
197
197
|
to_invalidate = invalidated_repos.select { |ir| ir.katello_root_repository_id.present? && !ir.subscription_valid }
|
198
198
|
::Foreman::Logging.logger('foreman_scc_manager').debug "Invalidating #{to_invalidate.count} expired repositories"
|
199
|
-
invalidate_subscription_status(to_invalidate, true)
|
199
|
+
invalidate_subscription_status(to_invalidate, save_record: true)
|
200
200
|
|
201
201
|
# delete repositories being removed upstream and that are not subscribed to
|
202
202
|
to_delete = scc_repositories.where.not(scc_id: upstream_repo_ids)
|
@@ -207,7 +207,7 @@ class SccAccount < ApplicationRecord
|
|
207
207
|
def update_scc_products(upstream_products)
|
208
208
|
upstream_product_ids = []
|
209
209
|
# initially invalidate all products and validate them during update
|
210
|
-
invalidated_products = invalidate_subscription_status(scc_products)
|
210
|
+
invalidated_products = invalidate_subscription_status(scc_products, save_record: false)
|
211
211
|
# import products
|
212
212
|
upstream_products.each do |up|
|
213
213
|
cached_product = scc_products.find_or_initialize_by(scc_id: up['id'])
|
@@ -233,7 +233,7 @@ class SccAccount < ApplicationRecord
|
|
233
233
|
# subscription_valid can be set to nil
|
234
234
|
to_invalidate = invalidated_products.select { |ip| ip.product_id.present? && !ip.subscription_valid }
|
235
235
|
::Foreman::Logging.logger('foreman_scc_manager').debug "Invalidating #{to_invalidate.count} expired products"
|
236
|
-
invalidate_subscription_status(to_invalidate, true)
|
236
|
+
invalidate_subscription_status(to_invalidate, save_record: true)
|
237
237
|
|
238
238
|
# delete products being removed upstream and that are not subscribed to
|
239
239
|
to_delete = scc_products.where.not(scc_id: upstream_product_ids).where(product_id: nil)
|
@@ -266,9 +266,9 @@ class SccAccount < ApplicationRecord
|
|
266
266
|
|
267
267
|
# set all products/repos invalid
|
268
268
|
# params: items_to_invalidate: ActiveRecord_(*)
|
269
|
-
# save_record: store in database or not
|
269
|
+
# save_record: store in database or not
|
270
270
|
# return: ActiveRecord elements with invalidated subscription status
|
271
|
-
def invalidate_subscription_status(items_to_invalidate, save_record
|
271
|
+
def invalidate_subscription_status(items_to_invalidate, save_record:)
|
272
272
|
if items_to_invalidate.present?
|
273
273
|
items_to_invalidate.each do |inv|
|
274
274
|
inv.subscription_valid = false
|
data/app/models/scc_product.rb
CHANGED
@@ -58,7 +58,11 @@ class SccProduct < ApplicationRecord
|
|
58
58
|
gpg_key = new_product.gpg_key
|
59
59
|
new_repo = new_product.add_repo(label, uniq_repo_name, repo.full_url, 'yum', unprotected, gpg_key)
|
60
60
|
new_repo.arch = arch || 'noarch'
|
61
|
-
new_repo.mirror_on_sync
|
61
|
+
if new_repo.has_attribute?('mirror_on_sync')
|
62
|
+
new_repo.mirror_on_sync = true
|
63
|
+
else
|
64
|
+
new_repo.mirroring_policy = ::Katello::RootRepository::MIRRORING_POLICY_CONTENT
|
65
|
+
end
|
62
66
|
new_repo.verify_ssl_on_sync = true
|
63
67
|
ForemanTasks.sync_task(::Actions::Katello::Repository::Create, new_repo, false, false)
|
64
68
|
end
|
@@ -9,11 +9,11 @@ class SccRepository < ApplicationRecord
|
|
9
9
|
has_and_belongs_to_many :scc_products
|
10
10
|
|
11
11
|
def full_url
|
12
|
-
token.blank? ? url : url
|
12
|
+
token.blank? ? url : "#{url}?#{token}"
|
13
13
|
end
|
14
14
|
|
15
15
|
def uniq_name(scc_product)
|
16
|
-
scc_product.scc_id
|
16
|
+
"#{scc_product.scc_id} #{description}"
|
17
17
|
end
|
18
18
|
|
19
19
|
def pretty_name
|
@@ -25,7 +25,7 @@
|
|
25
25
|
display_link_if_authorized(_("Sync"), hash_for_sync_scc_account_path(:id => scc_account).merge(:auth_object => scc_account, :authorizer => authorizer),
|
26
26
|
:method => :put),
|
27
27
|
display_delete_if_authorized(hash_for_scc_account_path(:id => scc_account).merge(:auth_object => scc_account, :authorizer => authorizer, :permission => 'delete_scc_accounts'),
|
28
|
-
:data => { :confirm => _("
|
28
|
+
:data => { :confirm => _("WARNING: If you want to switch SCC accounts and retain the synchronized content, DO NOT delete your old SCC account, even if it is expired. Please change the login and password of your SCC account, instead.\n\nIf you delete your old SCC account, you CANNOT reuse existing repositories, products, content views, and composite content views.\n\nReally delete SCC account %s?") % scc_account.to_s })
|
29
29
|
|
30
30
|
) %>
|
31
31
|
</td>
|
@@ -1,6 +1,10 @@
|
|
1
1
|
class AddGpgKeyToSccAccount < ActiveRecord::Migration[5.2]
|
2
2
|
def change
|
3
|
-
add_column :scc_accounts, :katello_gpg_key_id, :integer,
|
4
|
-
|
3
|
+
add_column :scc_accounts, :katello_gpg_key_id, :integer, null: true
|
4
|
+
if ActiveRecord::Base.connection.table_exists? :katello_content_credentials
|
5
|
+
add_foreign_key :scc_accounts, :katello_content_credentials, column: :katello_gpg_key_id, on_delete: :nullify
|
6
|
+
else
|
7
|
+
add_foreign_key :scc_accounts, :katello_gpg_keys, column: :katello_gpg_key_id, on_delete: :nullify
|
8
|
+
end
|
5
9
|
end
|
6
10
|
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'test_plugin_helper'
|
2
|
+
|
3
|
+
class SccManagerActions < ActiveSupport::TestCase
|
4
|
+
include Dynflow::Testing
|
5
|
+
|
6
|
+
let(:action_class) { ::Actions::SccManager::Sync }
|
7
|
+
|
8
|
+
def setup
|
9
|
+
@scc_account = scc_accounts(:one)
|
10
|
+
# ensure we have an org label
|
11
|
+
get_organization
|
12
|
+
end
|
13
|
+
|
14
|
+
test 'plan sync action' do
|
15
|
+
action = create_action(action_class)
|
16
|
+
action.stubs(:action_subject).with(@scc_account)
|
17
|
+
|
18
|
+
assert_respond_to(action, :phase)
|
19
|
+
plan_action(action, @scc_account)
|
20
|
+
|
21
|
+
assert_action_planned_with(action, ::Actions::SccManager::SyncProducts, @scc_account)
|
22
|
+
assert_action_planned_with(action, ::Actions::SccManager::SyncRepositories, @scc_account)
|
23
|
+
end
|
24
|
+
end
|
@@ -5,7 +5,9 @@ class Api::V2::SccProductsControllerTest < ActionController::TestCase
|
|
5
5
|
@scc_account = scc_accounts(:one)
|
6
6
|
@scc_product1 = scc_products(:one)
|
7
7
|
@scc_product2 = scc_products(:two)
|
8
|
-
@
|
8
|
+
@scc_product3 = scc_products(:three)
|
9
|
+
@scc_product4 = scc_products(:four)
|
10
|
+
@scc_account.scc_products = [@scc_product1, @scc_product2, @scc_product3, @scc_product4]
|
9
11
|
end
|
10
12
|
|
11
13
|
test 'should get index' do
|
@@ -37,4 +39,22 @@ class Api::V2::SccProductsControllerTest < ActionController::TestCase
|
|
37
39
|
put :subscribe, params: { :id => 'doest-not-exit', :scc_account_id => @scc_account.id }
|
38
40
|
assert_response :not_found
|
39
41
|
end
|
42
|
+
|
43
|
+
test 'show subscribed products only' do
|
44
|
+
get :index, params: { :scc_account_id => @scc_account.id, :subscribed_only => true }
|
45
|
+
assert_response :success
|
46
|
+
body = ActiveSupport::JSON.decode(@response.body)
|
47
|
+
assert_not_empty body
|
48
|
+
assert_equal 2, body['results'].count
|
49
|
+
assert_equal 2, body['subtotal']
|
50
|
+
end
|
51
|
+
|
52
|
+
test 'show all products if subscribed_only flag is set to false' do
|
53
|
+
get :index, params: { :scc_account_id => @scc_account.id, :subscribed_only => false }
|
54
|
+
assert_response :success
|
55
|
+
body = ActiveSupport::JSON.decode(@response.body)
|
56
|
+
assert_not_empty body
|
57
|
+
assert_equal 4, body['results'].count
|
58
|
+
assert_equal 4, body['subtotal']
|
59
|
+
end
|
40
60
|
end
|
@@ -10,6 +10,7 @@ one:
|
|
10
10
|
description: "<p> lorem ipsum dolor sit amet </p>"
|
11
11
|
product_type: base
|
12
12
|
subscription_valid: nil
|
13
|
+
product_id: nil
|
13
14
|
|
14
15
|
two:
|
15
16
|
scc_account_id: test_account1
|
@@ -21,6 +22,7 @@ two:
|
|
21
22
|
description: "<p> lorem ipsum dolor sit amet </p><p> lorem lorem lorem </p>"
|
22
23
|
product_type: extras
|
23
24
|
subscription_valid: true
|
25
|
+
product_id: nil
|
24
26
|
|
25
27
|
three:
|
26
28
|
scc_account_id: test_account1
|
@@ -32,18 +34,31 @@ three:
|
|
32
34
|
description: lorem ipsum dolor sit amet
|
33
35
|
product_type: base
|
34
36
|
subscription_valid: nil
|
37
|
+
product_id: 1
|
38
|
+
|
39
|
+
four:
|
40
|
+
scc_account_id: test_account1
|
41
|
+
scc_id: 444
|
42
|
+
name: four
|
43
|
+
version: 4
|
44
|
+
arch: x86_128
|
45
|
+
friendly_name: number four
|
46
|
+
description: lorem ipsum dolor sit amet
|
47
|
+
product_type: base
|
48
|
+
subscription_valid: nil
|
49
|
+
product_id: 2
|
35
50
|
|
36
51
|
# create a couple of products as scc_extensions
|
37
52
|
<% 1.upto(10) do |i| %>
|
38
53
|
p_extension_<%= i %>:
|
39
54
|
scc_account_id: test_account1
|
40
55
|
scc_id: <%= i %>
|
41
|
-
name: p_ext_<%= i%>
|
56
|
+
name: p_ext_<%= i%>
|
42
57
|
version: 3
|
43
58
|
arch: x86_128
|
44
|
-
friendly_name: number <%= i%>
|
59
|
+
friendly_name: number <%= i%>
|
45
60
|
description: lorem ipsum dolor sit amet
|
46
61
|
product_type: extension
|
47
62
|
subscription_valid: nil
|
63
|
+
product_id: nil
|
48
64
|
<% end %>
|
49
|
-
|
@@ -30,7 +30,7 @@ end
|
|
30
30
|
|
31
31
|
class SccProductSearchTest < ActiveSupport::TestCase
|
32
32
|
test 'default ordered by name' do
|
33
|
-
product_names = ['one', 'two', 'three',
|
33
|
+
product_names = ['one', 'two', 'three', 'four',
|
34
34
|
'p_ext_1', 'p_ext_10', 'p_ext_2', 'p_ext_3',
|
35
35
|
'p_ext_4', 'p_ext_5', 'p_ext_6', 'p_ext_7',
|
36
36
|
'p_ext_8', 'p_ext_9']
|
data/test/test_plugin_helper.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: foreman_scc_manager
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.8.
|
4
|
+
version: 1.8.17
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- ATIX AG
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-02-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rdoc
|
@@ -36,28 +36,28 @@ dependencies:
|
|
36
36
|
requirements:
|
37
37
|
- - "~>"
|
38
38
|
- !ruby/object:Gem::Version
|
39
|
-
version: 0.
|
39
|
+
version: 0.89.0
|
40
40
|
type: :development
|
41
41
|
prerelease: false
|
42
42
|
version_requirements: !ruby/object:Gem::Requirement
|
43
43
|
requirements:
|
44
44
|
- - "~>"
|
45
45
|
- !ruby/object:Gem::Version
|
46
|
-
version: 0.
|
46
|
+
version: 0.89.0
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: rubocop-rails
|
49
49
|
requirement: !ruby/object:Gem::Requirement
|
50
50
|
requirements:
|
51
51
|
- - "~>"
|
52
52
|
- !ruby/object:Gem::Version
|
53
|
-
version: 2.
|
53
|
+
version: 2.8.1
|
54
54
|
type: :development
|
55
55
|
prerelease: false
|
56
56
|
version_requirements: !ruby/object:Gem::Requirement
|
57
57
|
requirements:
|
58
58
|
- - "~>"
|
59
59
|
- !ruby/object:Gem::Version
|
60
|
-
version: 2.
|
60
|
+
version: 2.8.1
|
61
61
|
- !ruby/object:Gem::Dependency
|
62
62
|
name: webmock
|
63
63
|
requirement: !ruby/object:Gem::Requirement
|
@@ -173,19 +173,15 @@ files:
|
|
173
173
|
- locale/Makefile
|
174
174
|
- locale/action_names.rb
|
175
175
|
- locale/de/LC_MESSAGES/foreman_scc_manager.mo
|
176
|
-
- locale/de/foreman_scc_manager.edit.po
|
177
176
|
- locale/de/foreman_scc_manager.po
|
178
|
-
- locale/de/foreman_scc_manager.po.time_stamp
|
179
177
|
- locale/en/LC_MESSAGES/foreman_scc_manager.mo
|
180
|
-
- locale/en/foreman_scc_manager.edit.po
|
181
178
|
- locale/en/foreman_scc_manager.po
|
182
|
-
- locale/en/foreman_scc_manager.po.time_stamp
|
183
179
|
- locale/foreman_scc_manager.pot
|
184
180
|
- locale/gemspec.rb
|
181
|
+
- test/actions/sync_test.rb
|
185
182
|
- test/controllers/api/v2/scc_accounts_test.rb
|
186
183
|
- test/controllers/api/v2/scc_products_test.rb
|
187
184
|
- test/controllers/scc_accounts_controller_test.rb
|
188
|
-
- test/controllers/scc_accounts_controller_test2.rb
|
189
185
|
- test/factories/foreman_scc_manager_factories.rb
|
190
186
|
- test/features/sync_test.rb
|
191
187
|
- test/fixtures/files/data_products_page1.json
|
@@ -193,15 +189,12 @@ files:
|
|
193
189
|
- test/fixtures/files/data_repositories.json
|
194
190
|
- test/fixtures/files/data_subscriptions.json
|
195
191
|
- test/fixtures/models/scc_accounts.yml
|
196
|
-
- test/fixtures/models/scc_extendings.yml
|
197
192
|
- test/fixtures/models/scc_products.yml
|
198
193
|
- test/fixtures/models/scc_repositories.yml
|
199
194
|
- test/models/scc_account_test.rb
|
200
195
|
- test/models/scc_product_test.rb
|
201
196
|
- test/support/fixtures_support.rb
|
202
|
-
- test/test_controller_helper.rb
|
203
197
|
- test/test_plugin_helper.rb
|
204
|
-
- test/unit/access_permissions_test.rb
|
205
198
|
- test/unit/foreman_scc_manager_test.rb
|
206
199
|
homepage: https://www.orcharhino.com/
|
207
200
|
licenses:
|
@@ -227,22 +220,19 @@ signing_key:
|
|
227
220
|
specification_version: 4
|
228
221
|
summary: Suse Customer Center plugin for Foreman
|
229
222
|
test_files:
|
230
|
-
- test/unit/access_permissions_test.rb
|
231
223
|
- test/unit/foreman_scc_manager_test.rb
|
232
|
-
- test/test_controller_helper.rb
|
233
224
|
- test/features/sync_test.rb
|
234
225
|
- test/models/scc_product_test.rb
|
235
226
|
- test/models/scc_account_test.rb
|
236
227
|
- test/factories/foreman_scc_manager_factories.rb
|
237
228
|
- test/controllers/api/v2/scc_accounts_test.rb
|
238
229
|
- test/controllers/api/v2/scc_products_test.rb
|
239
|
-
- test/controllers/scc_accounts_controller_test2.rb
|
240
230
|
- test/controllers/scc_accounts_controller_test.rb
|
231
|
+
- test/actions/sync_test.rb
|
241
232
|
- test/support/fixtures_support.rb
|
242
233
|
- test/fixtures/models/scc_accounts.yml
|
243
234
|
- test/fixtures/models/scc_repositories.yml
|
244
235
|
- test/fixtures/models/scc_products.yml
|
245
|
-
- test/fixtures/models/scc_extendings.yml
|
246
236
|
- test/fixtures/files/data_products_page2.json
|
247
237
|
- test/fixtures/files/data_products_page1.json
|
248
238
|
- test/fixtures/files/data_subscriptions.json
|