foreman_scc_manager 2.2.3 → 3.0.0
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 +4 -4
- data/README.md +2 -2
- data/app/assets/javascripts/foreman_scc_manager/locale/de/foreman_scc_manager.js +592 -0
- data/app/assets/javascripts/foreman_scc_manager/locale/el/foreman_scc_manager.js +592 -0
- data/app/assets/javascripts/foreman_scc_manager/locale/en/foreman_scc_manager.js +592 -0
- data/app/assets/javascripts/foreman_scc_manager/locale/fr/foreman_scc_manager.js +592 -0
- data/app/assets/javascripts/foreman_scc_manager/locale/ja/foreman_scc_manager.js +592 -0
- data/app/assets/javascripts/foreman_scc_manager/locale/ka/foreman_scc_manager.js +592 -0
- data/app/assets/javascripts/foreman_scc_manager/locale/zh_CN/foreman_scc_manager.js +592 -0
- data/app/controllers/api/v2/scc_accounts_controller.rb +21 -17
- data/app/controllers/api/v2/scc_products_controller.rb +2 -2
- data/app/controllers/scc_accounts_controller.rb +14 -8
- data/app/lib/actions/scc_manager/subscribe_product.rb +14 -14
- data/app/lib/actions/scc_manager/sync_products.rb +6 -6
- data/app/lib/actions/scc_manager/sync_repositories.rb +5 -5
- data/app/models/scc_account.rb +2 -2
- data/app/models/scc_product.rb +4 -4
- data/app/views/api/v2/scc_products/main.json.rabl +1 -1
- data/db/migrate/20200520281300_fix_scc_permissions.rb +1 -1
- data/db/migrate/20210713092440_add_permissions.rb +1 -1
- data/db/migrate/20220429102717_populate_scc_katello_repositories.rb +1 -0
- data/lib/foreman_scc_manager/engine.rb +41 -46
- data/lib/foreman_scc_manager/version.rb +1 -1
- data/lib/tasks/rubocop.rake +2 -2
- data/lib/tasks/setup_authentication_token.rake +1 -1
- data/locale/Makefile +8 -10
- data/locale/fr/LC_MESSAGES/foreman_scc_manager.mo +0 -0
- data/locale/fr/foreman_scc_manager.po +601 -0
- data/package.json +12 -15
- data/test/controllers/api/v2/scc_accounts_test.rb +21 -21
- data/test/controllers/scc_accounts_controller_test.rb +9 -9
- data/test/features/sync_test.rb +9 -9
- data/test/fixtures/models/scc_repositories.yml +1 -1
- data/test/models/scc_account_test.rb +3 -3
- data/test/models/scc_product_test.rb +1 -1
- data/test/support/fixtures_support.rb +1 -1
- data/test/test_plugin_helper.rb +4 -4
- data/webpack/components/SCCProductPage/components/SCCProductPicker/components/SCCTreePicker/components/SCCRepoPicker/index.js +8 -8
- data/webpack/components/SCCProductPage/components/SCCProductPicker/components/SCCTreePicker/index.js +4 -12
- data/webpack/components/SCCProductPage/components/SCCProductView/components/SCCRepoView/index.js +4 -4
- metadata +14 -20
- data/locale/action_names.rb +0 -88
@@ -33,7 +33,8 @@ class SccAccountsController < ApplicationController
|
|
33
33
|
end
|
34
34
|
|
35
35
|
# GET /scc_accounts/1/edit
|
36
|
-
def edit
|
36
|
+
def edit
|
37
|
+
end
|
37
38
|
|
38
39
|
# POST /scc_accounts/test_connection
|
39
40
|
def test_connection
|
@@ -84,8 +85,8 @@ class SccAccountsController < ApplicationController
|
|
84
85
|
|
85
86
|
if scc_products_to_subscribe.count > 0
|
86
87
|
ForemanTasks.async_task(::Actions::BulkAction,
|
87
|
-
|
88
|
-
|
88
|
+
::Actions::SccManager::SubscribeProduct,
|
89
|
+
scc_products_to_subscribe)
|
89
90
|
success _('Task to subscribe products started.')
|
90
91
|
else
|
91
92
|
warning _('No products selected.')
|
@@ -114,17 +115,22 @@ class SccAccountsController < ApplicationController
|
|
114
115
|
|
115
116
|
def scc_product_hash(scc_product)
|
116
117
|
scc_product_json = scc_product.as_json(:only => [:scc_id, :id, :arch, :version, :product_id, :subscription_valid],
|
117
|
-
|
118
|
+
:include => { :scc_repositories => { :only => [:id, :name, :subscription_valid] } })
|
118
119
|
.merge('name' => scc_product.pretty_name, 'product_category' => scc_product.product_category)
|
119
120
|
# find if and which Katello root repository is associated with this SCC product
|
120
|
-
repo_ids_katello = scc_product
|
121
|
+
repo_ids_katello = scc_product&.product&.root_repository_ids
|
121
122
|
scc_product_json['scc_repositories'].each do |repo|
|
122
|
-
# byebug
|
123
123
|
if repo_ids_katello.blank?
|
124
|
-
repo['
|
124
|
+
repo['katello_repository_id'] = nil
|
125
125
|
else
|
126
126
|
repo_ids_scc = scc_product.scc_repositories.find(repo['id']).katello_root_repository_ids
|
127
|
-
|
127
|
+
if repo_ids_scc.blank?
|
128
|
+
repo['katello_repository_id'] = nil
|
129
|
+
else
|
130
|
+
# we need to extract the library instance id for the correct repo link in the UI
|
131
|
+
root_repo_id = (repo_ids_scc & repo_ids_katello).first
|
132
|
+
repo['katello_repository_id'] = ::Katello::Repository.where({ root_id: root_repo_id, library_instance: nil }).pick(:id)
|
133
|
+
end
|
128
134
|
end
|
129
135
|
end
|
130
136
|
scc_product_json
|
@@ -17,10 +17,10 @@ module Actions
|
|
17
17
|
sequence do
|
18
18
|
if scc_product.product_id.nil?
|
19
19
|
product_create_action = plan_action(CreateProduct,
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
20
|
+
:product_name => scc_product.pretty_name,
|
21
|
+
:product_description => scc_product.pretty_description,
|
22
|
+
:organization_id => scc_product.organization.id,
|
23
|
+
:gpg_key => scc_product.scc_account.katello_gpg_key_id)
|
24
24
|
end
|
25
25
|
katello_repos = {}
|
26
26
|
# we need to set the repositories to subscribe to
|
@@ -48,14 +48,14 @@ module Actions
|
|
48
48
|
scc_repos.each do |repo|
|
49
49
|
arch = scc_product.arch || 'noarch'
|
50
50
|
repo_create_action = plan_action(CreateRepository,
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
51
|
+
:product_id => scc_product.product_id || product_create_action.output[:product_id],
|
52
|
+
:uniq_name => repo.uniq_name(scc_product),
|
53
|
+
:pretty_repo_name => repo.pretty_name,
|
54
|
+
:url => repo.url,
|
55
|
+
:token => repo.token,
|
56
|
+
:arch => arch,
|
57
|
+
:download_policy => scc_product.scc_account.download_policy,
|
58
|
+
:mirroring_policy => scc_product.scc_account.mirroring_policy)
|
59
59
|
katello_repos[repo.id] = repo_create_action.output[:katello_root_repository_id]
|
60
60
|
end
|
61
61
|
|
@@ -99,8 +99,8 @@ module Actions
|
|
99
99
|
end
|
100
100
|
product.description = input[:product_description]
|
101
101
|
trigger(::Actions::Katello::Product::Create,
|
102
|
-
|
103
|
-
|
102
|
+
product,
|
103
|
+
Organization.find(input[:organization_id])).tap do
|
104
104
|
output[:product_id] = product.id
|
105
105
|
end
|
106
106
|
end
|
@@ -7,16 +7,16 @@ module Actions
|
|
7
7
|
action_subject(scc_account)
|
8
8
|
password = encrypt_field(scc_account.password)
|
9
9
|
plan_self(id: scc_account.id,
|
10
|
-
|
11
|
-
|
12
|
-
|
10
|
+
base_url: scc_account.base_url,
|
11
|
+
login: scc_account.login,
|
12
|
+
password: password)
|
13
13
|
end
|
14
14
|
|
15
15
|
def run
|
16
16
|
products = ::SccManager.get_scc_data(input.fetch(:base_url),
|
17
|
-
|
18
|
-
|
19
|
-
|
17
|
+
'/connect/organizations/products',
|
18
|
+
input.fetch(:login),
|
19
|
+
decrypt_field(input.fetch(:password)))
|
20
20
|
output[:data] = ::SccManager.sanitize_products(products).values
|
21
21
|
rescue StandardError => e
|
22
22
|
::Foreman::Logging.logger('foreman_scc_manager').error "Error while syncronizing SCC-Products: #{e}"
|
@@ -7,15 +7,15 @@ module Actions
|
|
7
7
|
action_subject(scc_account)
|
8
8
|
password = encrypt_field(scc_account.password)
|
9
9
|
plan_self(base_url: scc_account.base_url,
|
10
|
-
|
11
|
-
|
10
|
+
login: scc_account.login,
|
11
|
+
password: password)
|
12
12
|
end
|
13
13
|
|
14
14
|
def run
|
15
15
|
output[:data] = ::SccManager.get_scc_data(input[:base_url],
|
16
|
-
|
17
|
-
|
18
|
-
|
16
|
+
'/connect/organizations/repositories',
|
17
|
+
input[:login],
|
18
|
+
decrypt_field(input[:password]))
|
19
19
|
rescue StandardError => e
|
20
20
|
::Foreman::Logging.logger('foreman_scc_manager').error "Error while syncronizing SCC-Repositories: #{e}"
|
21
21
|
error! e.to_s
|
data/app/models/scc_account.rb
CHANGED
@@ -289,7 +289,7 @@ class SccAccount < ApplicationRecord
|
|
289
289
|
def self.download_policy_selection_values
|
290
290
|
names = {
|
291
291
|
::Katello::RootRepository::DOWNLOAD_ON_DEMAND => _('On Demand'),
|
292
|
-
::Katello::RootRepository::DOWNLOAD_IMMEDIATE => _('Immediate')
|
292
|
+
::Katello::RootRepository::DOWNLOAD_IMMEDIATE => _('Immediate'),
|
293
293
|
}
|
294
294
|
|
295
295
|
::Katello::RootRepository::DOWNLOAD_POLICIES.map do |p|
|
@@ -300,7 +300,7 @@ class SccAccount < ApplicationRecord
|
|
300
300
|
def self.mirroring_policy_selection_values
|
301
301
|
names = {
|
302
302
|
::Katello::RootRepository::MIRRORING_POLICY_ADDITIVE => _('Additive'),
|
303
|
-
::Katello::RootRepository::MIRRORING_POLICY_CONTENT => _('Content Only')
|
303
|
+
::Katello::RootRepository::MIRRORING_POLICY_CONTENT => _('Content Only'),
|
304
304
|
}
|
305
305
|
|
306
306
|
::Katello::RootRepository::MIRRORING_POLICIES.map do |p|
|
data/app/models/scc_product.rb
CHANGED
@@ -13,10 +13,10 @@ class SccProduct < ApplicationRecord
|
|
13
13
|
has_many :scc_extendings, inverse_of: :scc_product, dependent: :destroy
|
14
14
|
has_many :scc_extensions, through: :scc_extendings
|
15
15
|
has_many :inverse_scc_extendings,
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
16
|
+
inverse_of: :scc_extension,
|
17
|
+
dependent: :destroy,
|
18
|
+
class_name: :SccExtending,
|
19
|
+
foreign_key: :scc_extension_id
|
20
20
|
has_many :inverse_scc_extensions, through: :inverse_scc_extendings, source: :scc_product
|
21
21
|
|
22
22
|
default_scope -> { order(:name) }
|
@@ -3,6 +3,7 @@ class PopulateSccKatelloRepositories < ActiveRecord::Migration[6.0]
|
|
3
3
|
belongs_to :product, class_name: 'Katello::Product'
|
4
4
|
has_and_belongs_to_many :scc_repositories
|
5
5
|
end
|
6
|
+
|
6
7
|
class SccRepository < ApplicationRecord
|
7
8
|
has_many :scc_katello_repositories
|
8
9
|
has_many :katello_root_repositories, through: :scc_katello_repositories
|
@@ -22,8 +22,9 @@ module ForemanSccManager
|
|
22
22
|
|
23
23
|
initializer 'foreman_scc_manager.register_plugin', :before => :finisher_hook do |_app|
|
24
24
|
Foreman::Plugin.register :foreman_scc_manager do
|
25
|
-
requires_foreman '>=
|
25
|
+
requires_foreman '>= 3.7'
|
26
26
|
requires_foreman_plugin 'katello', '>= 3.16.0'
|
27
|
+
register_gettext
|
27
28
|
|
28
29
|
precompile_assets 'foreman_scc_manager/scc_accounts.js'
|
29
30
|
|
@@ -32,77 +33,77 @@ module ForemanSccManager
|
|
32
33
|
# Add permissions
|
33
34
|
security_block :foreman_scc_manager do
|
34
35
|
permission :view_scc_accounts,
|
35
|
-
|
36
|
-
|
37
|
-
|
36
|
+
{ :scc_accounts => [:show, :index, :auto_complete_search],
|
37
|
+
:'api/v2/scc_accounts' => [:show, :index, :auto_complete_search] },
|
38
|
+
:resource_type => 'SccAccount'
|
38
39
|
|
39
40
|
permission :use_scc_accounts,
|
40
|
-
|
41
|
-
|
42
|
-
|
41
|
+
{ :scc_accounts => [:bulk_subscribe],
|
42
|
+
:'api/v2/scc_accounts' => [:bulk_subscribe, :bulk_subscribe_with_repos] },
|
43
|
+
:resource_type => 'SccAccount'
|
43
44
|
|
44
45
|
permission :new_scc_accounts,
|
45
|
-
|
46
|
-
|
47
|
-
|
46
|
+
{ :scc_accounts => [:new, :create],
|
47
|
+
:'api/v2/scc_accounts' => [:create] },
|
48
|
+
:resource_type => 'SccAccount'
|
48
49
|
|
49
50
|
permission :edit_scc_accounts,
|
50
|
-
|
51
|
-
|
52
|
-
|
51
|
+
{ :scc_accounts => [:edit, :update],
|
52
|
+
:'api/v2/scc_accounts' => [:update] },
|
53
|
+
:resource_type => 'SccAccount'
|
53
54
|
|
54
55
|
permission :delete_scc_accounts,
|
55
|
-
|
56
|
-
|
57
|
-
|
56
|
+
{ :scc_accounts => [:destroy],
|
57
|
+
:'api/v2/scc_accounts' => [:destroy] },
|
58
|
+
:resource_type => 'SccAccount'
|
58
59
|
|
59
60
|
permission :sync_scc_accounts,
|
60
|
-
|
61
|
-
|
62
|
-
|
61
|
+
{ :scc_accounts => [:sync],
|
62
|
+
:'api/v2/scc_accounts' => [:sync] },
|
63
|
+
:resource_type => 'SccAccount'
|
63
64
|
|
64
65
|
permission :test_connection_scc_accounts,
|
65
|
-
|
66
|
-
|
67
|
-
|
66
|
+
{ :scc_accounts => [:test_connection],
|
67
|
+
:'api/v2/scc_accounts' => [:test_connection] },
|
68
|
+
:resource_type => 'SccAccount'
|
68
69
|
|
69
70
|
permission :view_scc_products,
|
70
|
-
|
71
|
-
|
72
|
-
|
71
|
+
{ :scc_products => [:index, :show],
|
72
|
+
:'api/v2/scc_products' => [:index, :show] },
|
73
|
+
:resource_type => 'SccProduct'
|
73
74
|
|
74
75
|
permission :subscribe_scc_products,
|
75
|
-
|
76
|
-
|
77
|
-
|
76
|
+
{ :scc_products => [:subscribe, :unsubscribe],
|
77
|
+
:'api/v2/scc_products' => [:subscribe, :unsibscribe] },
|
78
|
+
:resource_type => 'SccProduct'
|
78
79
|
end
|
79
80
|
|
80
81
|
# Add a new role called 'SccManager' if it doesn't exist
|
81
82
|
role 'SccManager',
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
83
|
+
%i[view_scc_accounts use_scc_accounts new_scc_accounts edit_scc_accounts
|
84
|
+
delete_scc_accounts sync_scc_accounts test_connection_scc_accounts
|
85
|
+
view_scc_products subscribe_scc_products],
|
86
|
+
'Role granting permissons to manage SUSE Subscriptions'
|
86
87
|
|
87
88
|
role 'SccViewer',
|
88
|
-
|
89
|
-
|
90
|
-
|
89
|
+
%i[view_scc_accounts use_scc_accounts sync_scc_accounts
|
90
|
+
create_products view_products subscribe_scc_products view_scc_products],
|
91
|
+
'Role granting permissons to view and use SUSE Subscriptions'
|
91
92
|
|
92
93
|
add_all_permissions_to_default_roles
|
93
94
|
|
94
95
|
# add menu entry
|
95
96
|
menu :top_menu, :scc_manager,
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
97
|
+
url_hash: { controller: :scc_accounts, action: :index },
|
98
|
+
caption: _('SUSE Subscriptions'),
|
99
|
+
parent: :content_menu,
|
100
|
+
after: :red_hat_subscriptions
|
100
101
|
end
|
101
102
|
end
|
102
103
|
|
103
104
|
initializer 'foreman_scc_manager.register_actions', :before => :finisher_hook do |_app|
|
104
105
|
ForemanTasks.dynflow.require!
|
105
|
-
action_paths =
|
106
|
+
action_paths = [ForemanSccManager::Engine.root.join('app/lib/actions')]
|
106
107
|
ForemanTasks.dynflow.config.eager_load_paths.concat(action_paths)
|
107
108
|
end
|
108
109
|
|
@@ -129,11 +130,5 @@ module ForemanSccManager
|
|
129
130
|
ForemanSccManager::Engine.load_seed
|
130
131
|
end
|
131
132
|
end
|
132
|
-
|
133
|
-
initializer 'foreman_scc_manager.register_gettext', after: :load_config_initializers do |_app|
|
134
|
-
locale_dir = File.join(File.expand_path('../..', __dir__), 'locale')
|
135
|
-
locale_domain = 'foreman_scc_manager'
|
136
|
-
Foreman::Gettext::Support.add_text_domain locale_domain, locale_dir
|
137
|
-
end
|
138
133
|
end
|
139
134
|
end
|
data/lib/tasks/rubocop.rake
CHANGED
@@ -9,7 +9,7 @@ begin
|
|
9
9
|
"#{ForemanSccManager::Engine.root}/db/**/*.rb",
|
10
10
|
"#{ForemanSccManager::Engine.root}/lib/**/*.rake",
|
11
11
|
"#{ForemanSccManager::Engine.root}/lib/**/*.rb",
|
12
|
-
"#{ForemanSccManager::Engine.root}/test/**/*.rb"
|
12
|
+
"#{ForemanSccManager::Engine.root}/test/**/*.rb",
|
13
13
|
]
|
14
14
|
|
15
15
|
namespace :foreman_scc_manager do
|
@@ -27,5 +27,5 @@ begin
|
|
27
27
|
end
|
28
28
|
end
|
29
29
|
rescue LoadError
|
30
|
-
|
30
|
+
# 'Rubocop not loaded.'
|
31
31
|
end
|
data/locale/Makefile
CHANGED
@@ -14,6 +14,7 @@ POFILES = $(shell find . -name '$(DOMAIN).po')
|
|
14
14
|
MOFILES = $(patsubst %.po,%.mo,$(POFILES))
|
15
15
|
POXFILES = $(patsubst %.po,%.pox,$(POFILES))
|
16
16
|
EDITFILES = $(patsubst %.po,%.edit.po,$(POFILES))
|
17
|
+
JSFILES = $(shell find ../app/assets/javascripts/*/locale -name '$(DOMAIN).js')
|
17
18
|
|
18
19
|
%.mo: %.po
|
19
20
|
mkdir -p $(shell dirname $@)/LC_MESSAGES
|
@@ -41,24 +42,21 @@ uniq-po:
|
|
41
42
|
msguniq $$f -o $$f ; \
|
42
43
|
done
|
43
44
|
|
44
|
-
tx-
|
45
|
-
tx pull
|
46
|
-
|
47
|
-
tx-pull: tx-new $(EDITFILES)
|
48
|
-
tx pull -f
|
45
|
+
tx-pull: $(EDITFILES)
|
46
|
+
cd .. && tx pull -f --all
|
49
47
|
for f in $(EDITFILES) ; do \
|
50
48
|
sed -i 's/^\("Project-Id-Version: \).*$$/\1$(DOMAIN) $(VERSION)\\n"/' $$f; \
|
51
49
|
done
|
52
50
|
|
53
51
|
tx-update: tx-pull
|
54
52
|
@echo
|
55
|
-
@echo Run rake plugin:gettext[$(DOMAIN)] from the Foreman installation
|
53
|
+
@echo Run rake plugin:gettext[$(DOMAIN)] from the Foreman installation
|
54
|
+
@echo then run rake plugin:po_to_json[$(DOMAIN)] from the Foreman installation
|
55
|
+
@echo then run make -C locale mo-files to finish
|
56
56
|
@echo
|
57
57
|
|
58
|
-
|
59
|
-
|
60
|
-
mo-files: build-mo-files
|
61
|
-
git add $(POFILES) $(POTFILE) ../locale/*/LC_MESSAGES
|
58
|
+
mo-files: $(MOFILES)
|
59
|
+
git add $(POFILES) $(POTFILE) $(JSFILES) ../locale/*/LC_MESSAGES
|
62
60
|
git commit -m "i18n - pulling from tx"
|
63
61
|
@echo
|
64
62
|
@echo Changes commited!
|
Binary file
|