foreman_scc_manager 1.8.0 → 1.8.5
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 +5 -0
- data/app/assets/javascripts/foreman_scc_manager/scc_accounts.js.coffee +1 -1
- data/app/controllers/scc_accounts_controller.rb +20 -1
- data/app/lib/actions/scc_manager/sync_products.rb +8 -7
- data/app/lib/actions/scc_manager/sync_repositories.rb +8 -7
- data/app/lib/scc_manager.rb +2 -2
- data/app/models/scc_account.rb +10 -6
- data/app/models/scc_product.rb +2 -0
- data/app/views/scc_accounts/_form.html.erb +3 -2
- data/app/views/scc_accounts/index.html.erb +4 -3
- data/app/views/scc_accounts/show.html.erb +3 -3
- data/config/routes.rb +2 -1
- data/db/migrate/20200520281300_fix_scc_permissions.rb +22 -0
- data/lib/foreman_scc_manager/engine.rb +38 -25
- data/lib/foreman_scc_manager/version.rb +1 -1
- data/lib/tasks/test.rake +1 -1
- data/locale/de/LC_MESSAGES/foreman_scc_manager.mo +0 -0
- data/locale/de/foreman_scc_manager.po +124 -121
- data/locale/en/foreman_scc_manager.po +86 -139
- data/locale/foreman_scc_manager.pot +17 -11
- data/test/fixtures/models/scc_products.yml +24 -0
- data/test/fixtures/models/scc_repositories.yml +15 -0
- data/test/models/scc_product_test.rb +56 -1
- data/test/support/fixtures_support.rb +3 -2
- metadata +22 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f4d297d61cfdedf0fb329cba44d7925c052c1c8e80f8f0ec58b1435b90b229fe
|
4
|
+
data.tar.gz: 3b434307e158ce5b45ad3e719a7538895a8bcf8d01c98f449561c8d18d4ba87f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b31980bb5ef8302a4015ddc5338a7cbb217e666c271ae03781ba530d3823a8608e8afd9d686f80113280ed9033a033b9988fcf8a7a376e791ed2e4a30d7bf159
|
7
|
+
data.tar.gz: 8ebaf1d499fbe65e28c61177ddfbbc6efdf6d1438dc854493686b3842d41ae8a0d9f3bb6ef66bede4ecb2c5c0c82a40da50221e376d96974e0bca18a684a6eb5
|
data/README.md
CHANGED
@@ -13,6 +13,8 @@ for how to install Foreman plugins
|
|
13
13
|
|
14
14
|
| Foreman Version | Katello Version | Plugin Version |
|
15
15
|
| --------------- | --------------- | -------------- |
|
16
|
+
| 2.1 | 3.16 | ~> 1.8.5 |
|
17
|
+
| 2.0 | 3.16 | ~> 1.8.4 |
|
16
18
|
| 1.24 | 3.14 | ~> 1.8.0 |
|
17
19
|
| 1.22 | 3.12 | ~> 1.7.0 |
|
18
20
|
| 1.21 | 3.10 | ~> 1.6.0 |
|
@@ -23,6 +25,9 @@ for how to install Foreman plugins
|
|
23
25
|
| 1.16 | 3.5 | <= 1.3.0 |
|
24
26
|
| 1.15 | 3.4 | ~> 1.1.0 |
|
25
27
|
|
28
|
+
## Documentation
|
29
|
+
The plugin documentation can be found at https://docs.orcharhino.com/sources/management_ui/the_content_menu/suse_subscriptions.html.
|
30
|
+
|
26
31
|
## Contributing
|
27
32
|
|
28
33
|
Fork and send a Pull Request. Thanks!
|
@@ -1,4 +1,5 @@
|
|
1
1
|
class SccAccountsController < ApplicationController
|
2
|
+
helper_method :scc_filtered_products
|
2
3
|
before_action :find_organization
|
3
4
|
before_action :find_resource, only: %i[show edit update destroy sync bulk_subscribe]
|
4
5
|
include Foreman::Controller::AutoCompleteSearch
|
@@ -7,6 +8,11 @@ class SccAccountsController < ApplicationController
|
|
7
8
|
def index
|
8
9
|
@scc_accounts = resource_base.search_for(params[:search], order: params[:order])
|
9
10
|
.paginate(page: params[:page])
|
11
|
+
|
12
|
+
# overwrite the product list with filtered products that do not include products with empty repositories
|
13
|
+
@scc_accounts.each do |scc_account|
|
14
|
+
scc_account.scc_products_with_repos_count = scc_account.scc_products.only_products_with_repos.count
|
15
|
+
end
|
10
16
|
end
|
11
17
|
|
12
18
|
# GET /scc_accounts/new
|
@@ -121,9 +127,22 @@ class SccAccountsController < ApplicationController
|
|
121
127
|
when 'sync', 'test_connection'
|
122
128
|
:sync
|
123
129
|
when 'bulk_subscribe'
|
124
|
-
:
|
130
|
+
:use
|
125
131
|
else
|
126
132
|
super
|
127
133
|
end
|
128
134
|
end
|
135
|
+
|
136
|
+
# Function filters a product list and removes all products without valid repositories
|
137
|
+
# The .order call is necessary to apply the ordering to repository that have already been loaded from the database.
|
138
|
+
# Input parameters:
|
139
|
+
# product_list: list of SccProduct
|
140
|
+
# product_type: return only base products if type is set (default), else all
|
141
|
+
def scc_filtered_products(product_list, product_type = 'base')
|
142
|
+
if product_type == 'base'
|
143
|
+
product_list.only_products_with_repos.where(product_type: 'base').order(:friendly_name)
|
144
|
+
else
|
145
|
+
product_list.only_products_with_repos.order(:friendly_name)
|
146
|
+
end
|
147
|
+
end
|
129
148
|
end
|
@@ -1,12 +1,15 @@
|
|
1
1
|
module Actions
|
2
2
|
module SccManager
|
3
3
|
class SyncProducts < Actions::EntryAction
|
4
|
+
include EncryptValue
|
5
|
+
|
4
6
|
def plan(scc_account)
|
5
7
|
action_subject(scc_account)
|
8
|
+
password = encrypt_field(scc_account.password)
|
6
9
|
plan_self(id: scc_account.id,
|
7
10
|
base_url: scc_account.base_url,
|
8
11
|
login: scc_account.login,
|
9
|
-
password:
|
12
|
+
password: password)
|
10
13
|
end
|
11
14
|
|
12
15
|
def run
|
@@ -15,9 +18,11 @@ module Actions
|
|
15
18
|
products = ::SccManager.get_scc_data(input.fetch(:base_url),
|
16
19
|
'/connect/organizations/products',
|
17
20
|
input.fetch(:login),
|
18
|
-
input.fetch(:password))
|
21
|
+
decrypt_field(input.fetch(:password)))
|
19
22
|
output[:data] = ::SccManager.sanitize_products(products).values
|
20
|
-
rescue StandardError
|
23
|
+
rescue StandardError => e
|
24
|
+
::Foreman::Logging.logger('foreman_scc_manager').error "Error while syncronizing SCC-Products: #{e}"
|
25
|
+
output[:error] = e.to_s
|
21
26
|
output[:status] = 'FAILURE'
|
22
27
|
end
|
23
28
|
end
|
@@ -34,10 +39,6 @@ module Actions
|
|
34
39
|
_('Sync SUSE subscriptions (Products)')
|
35
40
|
end
|
36
41
|
|
37
|
-
def humanized_input
|
38
|
-
input.dup.update(password: '***')
|
39
|
-
end
|
40
|
-
|
41
42
|
def humanized_output
|
42
43
|
output.dup.update(data: 'Trimmed')
|
43
44
|
end
|
@@ -1,11 +1,14 @@
|
|
1
1
|
module Actions
|
2
2
|
module SccManager
|
3
3
|
class SyncRepositories < Actions::EntryAction
|
4
|
+
include EncryptValue
|
5
|
+
|
4
6
|
def plan(scc_account)
|
5
7
|
action_subject(scc_account)
|
8
|
+
password = encrypt_field(scc_account.password)
|
6
9
|
plan_self(base_url: scc_account.base_url,
|
7
10
|
login: scc_account.login,
|
8
|
-
password:
|
11
|
+
password: password)
|
9
12
|
end
|
10
13
|
|
11
14
|
def run
|
@@ -14,9 +17,11 @@ module Actions
|
|
14
17
|
output[:data] = ::SccManager.get_scc_data(input[:base_url],
|
15
18
|
'/connect/organizations/repositories',
|
16
19
|
input[:login],
|
17
|
-
input[:password])
|
20
|
+
decrypt_field(input[:password]))
|
18
21
|
output[:status] = 'SUCCESS'
|
19
|
-
rescue StandardError
|
22
|
+
rescue StandardError => e
|
23
|
+
::Foreman::Logging.logger('foreman_scc_manager').error "Error while syncronizing SCC-Repositories: #{e}"
|
24
|
+
output[:error] = e.to_s
|
20
25
|
output[:status] = 'FAILURE'
|
21
26
|
end
|
22
27
|
end
|
@@ -33,10 +38,6 @@ module Actions
|
|
33
38
|
_('Sync SUSE subscriptions (Repositories)')
|
34
39
|
end
|
35
40
|
|
36
|
-
def humanized_input
|
37
|
-
input.dup.update(password: '***')
|
38
|
-
end
|
39
|
-
|
40
41
|
def humanized_output
|
41
42
|
output.dup.update(data: "Trimmed (got #{output[:data]&.length} repositories")
|
42
43
|
end
|
data/app/lib/scc_manager.rb
CHANGED
@@ -8,8 +8,8 @@ module SccManager
|
|
8
8
|
uri.scheme = URI.parse(proxy_config[:host]).scheme
|
9
9
|
uri.host = URI.parse(proxy_config[:host]).host
|
10
10
|
uri.port = proxy_config[:port].try(:to_s)
|
11
|
-
uri.user = proxy_config[:user]
|
12
|
-
uri.password = proxy_config[:password].
|
11
|
+
uri.user = proxy_config[:user]
|
12
|
+
uri.password = proxy_config[:password] if uri.user.present?
|
13
13
|
|
14
14
|
RestClient.proxy = uri.to_s
|
15
15
|
end
|
data/app/models/scc_account.rb
CHANGED
@@ -2,6 +2,9 @@ class SccAccount < ApplicationRecord
|
|
2
2
|
include Authorizable
|
3
3
|
include Encryptable
|
4
4
|
include ForemanTasks::Concerns::ActionSubject
|
5
|
+
|
6
|
+
attr_accessor :scc_products_with_repos_count
|
7
|
+
|
5
8
|
encrypts :password
|
6
9
|
|
7
10
|
NEVER = 'never'.freeze
|
@@ -166,7 +169,8 @@ class SccAccount < ApplicationRecord
|
|
166
169
|
def test_connection
|
167
170
|
get_scc_data('/connect/organizations/subscriptions')
|
168
171
|
true
|
169
|
-
rescue StandardError
|
172
|
+
rescue StandardError => e
|
173
|
+
::Foreman::Logging.logger('foreman_scc_manager').warn "Error occurred while testing SCC-Connection to Account #{self}: #{e}"
|
170
174
|
false
|
171
175
|
end
|
172
176
|
|
@@ -185,10 +189,10 @@ class SccAccount < ApplicationRecord
|
|
185
189
|
cached_repository.save!
|
186
190
|
upstream_repo_ids << ur['id']
|
187
191
|
end
|
188
|
-
logger.debug "Found #{upstream_repo_ids.length} repositories"
|
192
|
+
::Foreman::Logging.logger('foreman_scc_manager').debug "Found #{upstream_repo_ids.length} repositories"
|
189
193
|
# delete repositories beeing removed upstream
|
190
194
|
to_delete = scc_repositories.where.not(scc_id: upstream_repo_ids)
|
191
|
-
logger.debug "Deleting #{to_delete.count} old repositories"
|
195
|
+
::Foreman::Logging.logger('foreman_scc_manager').debug "Deleting #{to_delete.count} old repositories"
|
192
196
|
to_delete.destroy_all
|
193
197
|
end
|
194
198
|
|
@@ -208,10 +212,10 @@ class SccAccount < ApplicationRecord
|
|
208
212
|
cached_product.save!
|
209
213
|
upstream_product_ids << up['id']
|
210
214
|
end
|
211
|
-
logger.debug "Found #{upstream_product_ids.length} products"
|
215
|
+
::Foreman::Logging.logger('foreman_scc_manager').debug "Found #{upstream_product_ids.length} products"
|
212
216
|
# delete products beeing removed upstream
|
213
217
|
to_delete = scc_products.where.not(scc_id: upstream_product_ids)
|
214
|
-
logger.debug "Deleting #{to_delete.count} old products"
|
218
|
+
::Foreman::Logging.logger('foreman_scc_manager').debug "Deleting #{to_delete.count} old products"
|
215
219
|
to_delete.destroy_all
|
216
220
|
# rewire product to product relationships
|
217
221
|
upstream_products.each do |up|
|
@@ -219,7 +223,7 @@ class SccAccount < ApplicationRecord
|
|
219
223
|
begin
|
220
224
|
scc_products.find_by!(scc_id: up['id']).update!(scc_extensions: extensions)
|
221
225
|
rescue ActiveRecord::RecordNotFound
|
222
|
-
logger.info "Failed to find parent scc_product '#{up['name']}'."
|
226
|
+
::Foreman::Logging.logger('foreman_scc_manager').info "Failed to find parent scc_product '#{up['name']}'."
|
223
227
|
end
|
224
228
|
end
|
225
229
|
end
|
data/app/models/scc_product.rb
CHANGED
@@ -13,7 +13,8 @@
|
|
13
13
|
<%= text_f f, :login, :help_block => _("Use your 'Organization credentials' obtained from the SUSE Customer Center.") %>
|
14
14
|
<%= password_f f, :password %>
|
15
15
|
<%= text_f f, :base_url, label: _('Base URL') %>
|
16
|
-
<%= selectable_f f, :interval, SccAccount::TYPES,
|
16
|
+
<%= selectable_f f, :interval, SccAccount::TYPES, {},
|
17
|
+
{ :label => _('Sync interval'), :help_block => _("The sync interval is used to periodically update the SCC authentication tokens of any imported products.") } %>
|
17
18
|
<%= field f, :sync_date, label: _('Sync Date') do
|
18
19
|
f.datetime_field :sync_date, placeholder: Time.now
|
19
20
|
end %>
|
@@ -25,7 +26,7 @@
|
|
25
26
|
id: 'test_scc_connection_btn',
|
26
27
|
spinner_id: 'test_scc_connection_indicator',
|
27
28
|
class: 'btn-default',
|
28
|
-
'data-url':
|
29
|
+
'data-url': @scc_account.id ? test_connection_scc_account_path : test_connection_scc_accounts_path ) %>
|
29
30
|
</div>
|
30
31
|
<div class='col-md-2'>
|
31
32
|
<span id='connection_test_result'></span>
|
@@ -17,15 +17,16 @@
|
|
17
17
|
<td class="display-two-pane ellipsis">
|
18
18
|
<%= link_to_if_authorized(scc_account.name, hash_for_edit_scc_account_path(:id => scc_account).merge(:auth_object => scc_account, :authorizer => authorizer)) %>
|
19
19
|
</td>
|
20
|
-
<td><%= scc_account.
|
20
|
+
<td><%= scc_account.scc_products_with_repos_count.to_s %></td>
|
21
21
|
<td><%= link_to_if(scc_account.sync_task, scc_account.sync_status, scc_account.sync_task) %></td>
|
22
22
|
<td>
|
23
23
|
<%= action_buttons(
|
24
|
-
display_link_if_authorized(_("Select products"), hash_for_scc_account_path(:id => scc_account).merge(:auth_object => scc_account, :authorizer => authorizer)),
|
24
|
+
display_link_if_authorized(_("Select products"), hash_for_scc_account_path(:id => scc_account).merge(:auth_object => scc_account, :authorizer => authorizer, :permission => 'view_scc_accounts')),
|
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
|
-
display_delete_if_authorized(hash_for_scc_account_path(:id => scc_account).merge(:auth_object => scc_account, :authorizer => authorizer),
|
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
28
|
:data => { :confirm => _("Delete %s?") % scc_account.to_s })
|
29
|
+
|
29
30
|
) %>
|
30
31
|
</td>
|
31
32
|
</tr>
|
@@ -11,8 +11,8 @@
|
|
11
11
|
</span>
|
12
12
|
<%= scc_product.friendly_name %>
|
13
13
|
<% if scc_product.scc_extensions.any? %>
|
14
|
-
<ul>
|
15
|
-
<% scc_product.scc_extensions
|
14
|
+
<ul style='padding-left: 20px;'>
|
15
|
+
<% scc_filtered_products(scc_product.scc_extensions, 'extension').each do |scc_extension| %>
|
16
16
|
<% render_list_node(f, scc_extension, parent_id + "_" + scc_product.id.to_s) %>
|
17
17
|
<% end %>
|
18
18
|
</ul>
|
@@ -29,7 +29,7 @@
|
|
29
29
|
<div class="tab-pane active" id="primary">
|
30
30
|
<ul>
|
31
31
|
<% if @scc_account.synced %>
|
32
|
-
<% @scc_account.scc_products
|
32
|
+
<% scc_filtered_products(@scc_account.scc_products).each do |scc_product| %>
|
33
33
|
<% render_list_node(f, scc_product) %>
|
34
34
|
<% end %>
|
35
35
|
<% else %>
|
data/config/routes.rb
CHANGED
@@ -2,10 +2,11 @@ Rails.application.routes.draw do
|
|
2
2
|
resources :scc_accounts do
|
3
3
|
collection do
|
4
4
|
post 'test_connection'
|
5
|
+
put 'test_connection'
|
5
6
|
get 'auto_complete_search'
|
6
7
|
end
|
7
8
|
member do
|
8
|
-
|
9
|
+
patch 'test_connection'
|
9
10
|
put 'sync'
|
10
11
|
put 'bulk_subscribe'
|
11
12
|
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
class FixSccPermissions < ActiveRecord::Migration[5.2]
|
2
|
+
PERMISSION_NAMES = {
|
3
|
+
:view_scc => :view_scc_accounts,
|
4
|
+
:use_scc => :use_scc_accounts,
|
5
|
+
:new_scc => :new_scc_accounts,
|
6
|
+
:edit_scc => :edit_scc_accounts,
|
7
|
+
:delete_scc => :delete_scc_accounts,
|
8
|
+
:sync_scc => :sync_scc_accounts
|
9
|
+
}.freeze
|
10
|
+
|
11
|
+
def up
|
12
|
+
PERMISSION_NAMES.each do |old_n, new_n|
|
13
|
+
Permission.find_by(name: old_n)&.update(name: new_n, resource_type: 'SccAccount')
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
def down
|
18
|
+
PERMISSION_NAMES.each do |old_n, new_n|
|
19
|
+
Permission.find_by(name: new_n)&.update(name: old_n, resource_type: nil)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -29,34 +29,47 @@ module ForemanSccManager
|
|
29
29
|
|
30
30
|
# Add permissions
|
31
31
|
security_block :foreman_scc_manager do
|
32
|
-
permission :
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
permission :
|
53
|
-
|
54
|
-
|
55
|
-
|
32
|
+
permission :view_scc_accounts,
|
33
|
+
{ :scc_accounts => [:show, :index],
|
34
|
+
:'api/v2/scc_accounts' => [:show, :index] },
|
35
|
+
:resource_type => 'SccAccount'
|
36
|
+
|
37
|
+
permission :use_scc_accounts,
|
38
|
+
{ :scc_accounts => [:bulk_subscribe],
|
39
|
+
:'api/v2/scc_accounts' => [:bulk_subscribe] },
|
40
|
+
:resource_type => 'SccAccount'
|
41
|
+
|
42
|
+
permission :new_scc_accounts,
|
43
|
+
{ :scc_accounts => [:new, :create],
|
44
|
+
:'api/v2/scc_accounts' => [:create] },
|
45
|
+
:resource_type => 'SccAccount'
|
46
|
+
|
47
|
+
permission :edit_scc_accounts,
|
48
|
+
{ :scc_accounts => [:edit, :update],
|
49
|
+
:'api/v2/scc_accounts' => [:update] },
|
50
|
+
:resource_type => 'SccAccount'
|
51
|
+
|
52
|
+
permission :delete_scc_accounts,
|
53
|
+
{ :scc_accounts => [:destroy],
|
54
|
+
:'api/v2/scc_accounts' => [:destroy] },
|
55
|
+
:resource_type => 'SccAccount'
|
56
|
+
|
57
|
+
permission :sync_scc_accounts,
|
58
|
+
{ :scc_accounts => [:sync],
|
59
|
+
:'api/v2/scc_accounts' => [:sync] },
|
60
|
+
:resource_type => 'SccAccount'
|
56
61
|
end
|
57
62
|
|
58
63
|
# Add a new role called 'SccManager' if it doesn't exist
|
59
|
-
role 'SccManager',
|
64
|
+
role 'SccManager',
|
65
|
+
%i[view_scc_accounts use_scc_accounts new_scc_accounts edit_scc_accounts delete_scc_accounts sync_scc_accounts],
|
66
|
+
'Role granting permissons to manage SUSE Subscriptions'
|
67
|
+
|
68
|
+
role 'SccViewer',
|
69
|
+
%i[view_scc_accounts use_scc_accounts sync_scc_accounts create_products view_products],
|
70
|
+
'Role granting permissons to view and use SUSE Subscriptions'
|
71
|
+
|
72
|
+
add_all_permissions_to_default_roles
|
60
73
|
|
61
74
|
# add menu entry
|
62
75
|
menu :top_menu, :scc_manager,
|
data/lib/tasks/test.rake
CHANGED
@@ -14,7 +14,7 @@ end
|
|
14
14
|
|
15
15
|
namespace :jenkins do
|
16
16
|
desc 'Test ForemanSccManager with XML output for jenkins'
|
17
|
-
task 'foreman_scc_manager' do
|
17
|
+
task 'foreman_scc_manager' => :environment do
|
18
18
|
Rake::Task['jenkins:setup:minitest'].invoke
|
19
19
|
Rake::Task['rake:test:foreman_scc_manager'].invoke
|
20
20
|
end
|
Binary file
|
@@ -2,7 +2,7 @@
|
|
2
2
|
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
3
3
|
# This file is distributed under the same license as the foreman_scc_manager package.
|
4
4
|
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
5
|
-
#
|
5
|
+
#
|
6
6
|
# Translators:
|
7
7
|
# Wiederoder <stefanwiederoder@googlemail.com>, 2019
|
8
8
|
# Bryan Kearney <bryan.kearney@gmail.com>, 2019
|
@@ -11,13 +11,11 @@
|
|
11
11
|
# Michael Moll, 2019
|
12
12
|
# Lukas K. <kallies@puzzle.ch>, 2019
|
13
13
|
# Markus Bucher <bucher@atix.de>, 2019
|
14
|
-
#
|
15
|
-
#, fuzzy
|
14
|
+
#
|
16
15
|
msgid ""
|
17
16
|
msgstr ""
|
18
17
|
"Project-Id-Version: foreman_scc_manager 1.7.0\n"
|
19
18
|
"Report-Msgid-Bugs-To: \n"
|
20
|
-
"POT-Creation-Date: 2019-10-22 13:59+0000\n"
|
21
19
|
"PO-Revision-Date: 2019-10-17 13:28+0000\n"
|
22
20
|
"Last-Translator: Markus Bucher <bucher@atix.de>, 2019\n"
|
23
21
|
"Language-Team: German (https://www.transifex.com/foreman/teams/114/de/)\n"
|
@@ -27,168 +25,173 @@ msgstr ""
|
|
27
25
|
"Language: de\n"
|
28
26
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
29
27
|
|
30
|
-
|
31
|
-
|
32
|
-
msgstr "Sync Job gestartet."
|
33
|
-
|
34
|
-
#: ../app/controllers/scc_accounts_controller.rb:66
|
35
|
-
#: ../app/controllers/scc_accounts_controller.rb:86
|
36
|
-
msgid "Failed to add task to queue: %s"
|
37
|
-
msgstr "Aufgabe konnte nicht in die Warteschlange gestellt werden: %s"
|
38
|
-
|
39
|
-
#: ../app/controllers/scc_accounts_controller.rb:68
|
40
|
-
#: ../app/controllers/scc_accounts_controller.rb:88
|
41
|
-
msgid "Lock on SCC account already taken: %s"
|
42
|
-
msgstr "Lock für SCC Zugang bereits vergeben: %s"
|
28
|
+
msgid "Actions"
|
29
|
+
msgstr "Aktionen"
|
43
30
|
|
44
|
-
|
45
|
-
|
46
|
-
msgstr "Job zum abonnieren von Produkten gestartet."
|
31
|
+
msgid "Add SCC account"
|
32
|
+
msgstr "SCC Konto hinzufügen"
|
47
33
|
|
48
|
-
|
49
|
-
|
50
|
-
msgstr "Keine Produkte ausgewählt."
|
34
|
+
msgid "Add SUSE Customer Center Account"
|
35
|
+
msgstr "SUSE Customer Center Konto hinzufügen"
|
51
36
|
|
52
|
-
|
53
|
-
|
54
|
-
msgstr "Produkt wurde bereits abonniert!"
|
37
|
+
msgid "Base URL"
|
38
|
+
msgstr "Basis URL"
|
55
39
|
|
56
|
-
|
57
|
-
|
58
|
-
msgstr "SCC Produkt abonnieren"
|
40
|
+
msgid "Bulk subscription of scc_products for scc_account"
|
41
|
+
msgstr ""
|
59
42
|
|
60
|
-
|
61
|
-
|
62
|
-
msgstr "SUSE Abonnements synchronisieren"
|
43
|
+
msgid "Create an scc_account"
|
44
|
+
msgstr ""
|
63
45
|
|
64
|
-
|
65
|
-
|
66
|
-
msgstr "SUSE Repositorien %s aktualisieren"
|
46
|
+
msgid "Cron expression is not valid!"
|
47
|
+
msgstr "Cron-Ausdruck ungültig!"
|
67
48
|
|
68
|
-
|
69
|
-
|
70
|
-
msgstr "Unbekannt"
|
49
|
+
msgid "Delete %s?"
|
50
|
+
msgstr "%s löschen?"
|
71
51
|
|
72
|
-
|
73
|
-
|
74
|
-
msgid "Update SUSE repositories"
|
75
|
-
msgstr "SUSE Repositorien aktualisieren"
|
52
|
+
msgid "Delete scc_account"
|
53
|
+
msgstr ""
|
76
54
|
|
77
|
-
|
78
|
-
|
79
|
-
msgstr "SUSE Abonnements (Produkte) synchronisieren"
|
55
|
+
msgid "Edit %s"
|
56
|
+
msgstr "%s bearbeiten"
|
80
57
|
|
81
|
-
|
82
|
-
|
83
|
-
msgstr "SUSE Abonnements (Repositorien) synchronisieren"
|
58
|
+
msgid "Failed to add task to queue: %s"
|
59
|
+
msgstr "Aufgabe konnte nicht in die Warteschlange gestellt werden: %s"
|
84
60
|
|
85
|
-
|
86
|
-
|
87
|
-
msgstr "Nie synchronisiert"
|
61
|
+
msgid "Foreman plugin to sync SUSE Customer Center products and repositories into Katello."
|
62
|
+
msgstr "Foreman Plugin um SUSE Customer Center Produkte und Repositorien in Katello zu importieren."
|
88
63
|
|
89
|
-
#: ../app/models/scc_account.rb:105
|
90
64
|
msgid "Interval cannot be nil"
|
91
65
|
msgstr "Intervall darf nicht Null sein"
|
92
66
|
|
93
|
-
|
67
|
+
msgid "Interval for syncing scc_account"
|
68
|
+
msgstr ""
|
69
|
+
|
94
70
|
msgid "Interval not set correctly"
|
95
71
|
msgstr "Intervall nicht richtig gesetzt"
|
96
72
|
|
97
|
-
|
98
|
-
|
99
|
-
msgstr "Cron-Ausdruck ungültig!"
|
73
|
+
msgid "Last Sync time of scc_account"
|
74
|
+
msgstr ""
|
100
75
|
|
101
|
-
|
102
|
-
|
103
|
-
msgstr "SUSE Abonnement"
|
76
|
+
msgid "Last synced"
|
77
|
+
msgstr "Letzte Synchronisation"
|
104
78
|
|
105
|
-
|
106
|
-
msgid "SUSE Subscription: "
|
79
|
+
msgid "List all products for scc_account"
|
107
80
|
msgstr ""
|
108
81
|
|
109
|
-
|
110
|
-
msgid "SUSE Customer Center account"
|
111
|
-
msgstr "SUSE Customer Center Konto"
|
112
|
-
|
113
|
-
#: ../app/views/scc_accounts/_form.html.erb:13
|
114
|
-
msgid ""
|
115
|
-
"Use your 'Organization credentials' obtained from the SUSE Customer Center."
|
82
|
+
msgid "List all scc_accounts"
|
116
83
|
msgstr ""
|
117
|
-
"Verwenden Sie die \"Organisationszugangsdaten\" aus dem SUSE Customer "
|
118
|
-
"Center."
|
119
84
|
|
120
|
-
|
121
|
-
|
122
|
-
msgstr "Basis URL"
|
85
|
+
msgid "Lock on SCC account already taken: %s"
|
86
|
+
msgstr "Lock für SCC Zugang bereits vergeben: %s"
|
123
87
|
|
124
|
-
|
125
|
-
|
126
|
-
msgstr "Intervall"
|
88
|
+
msgid "Login id of scc_account"
|
89
|
+
msgstr ""
|
127
90
|
|
128
|
-
|
129
|
-
|
130
|
-
msgstr "Synchronisationsdatum"
|
91
|
+
msgid "Name of the scc_account"
|
92
|
+
msgstr ""
|
131
93
|
|
132
|
-
|
133
|
-
|
134
|
-
msgstr "Verbindung testen"
|
94
|
+
msgid "No products selected."
|
95
|
+
msgstr "Keine Produkte ausgewählt."
|
135
96
|
|
136
|
-
|
137
|
-
|
138
|
-
msgstr "%s bearbeiten"
|
97
|
+
msgid "Password of scc_account"
|
98
|
+
msgstr ""
|
139
99
|
|
140
|
-
|
141
|
-
|
142
|
-
msgstr "SUSE Abonnements"
|
100
|
+
msgid "Please sync your SUSE subscriptions first."
|
101
|
+
msgstr "Bitte synchronisieren Sie zuerst Ihre SUSE Abonnements."
|
143
102
|
|
144
|
-
|
145
|
-
|
146
|
-
msgstr "SCC Konto hinzufügen"
|
103
|
+
msgid "Product already subscribed!"
|
104
|
+
msgstr "Produkt wurde bereits abonniert!"
|
147
105
|
|
148
|
-
#: ../app/views/scc_accounts/index.html.erb:9
|
149
106
|
msgid "Products"
|
150
107
|
msgstr "Produkte"
|
151
108
|
|
152
|
-
|
153
|
-
|
154
|
-
msgstr "Letzte Synchronisation"
|
109
|
+
msgid "SUSE Customer Center"
|
110
|
+
msgstr "SUSE Customer Center"
|
155
111
|
|
156
|
-
|
157
|
-
|
158
|
-
|
112
|
+
msgid "SUSE Customer Center account"
|
113
|
+
msgstr "SUSE Customer Center Konto"
|
114
|
+
|
115
|
+
msgid "SUSE Subscription"
|
116
|
+
msgstr "SUSE Abonnement"
|
117
|
+
|
118
|
+
msgid "SUSE Subscription: "
|
119
|
+
msgstr "SUSE Abonnement:"
|
120
|
+
|
121
|
+
msgid "SUSE Subscriptions"
|
122
|
+
msgstr "SUSE Abonnements"
|
123
|
+
|
124
|
+
msgid "SUSE subscriptions"
|
125
|
+
msgstr "SUSE Abonnements"
|
159
126
|
|
160
|
-
#: ../app/views/scc_accounts/index.html.erb:24
|
161
127
|
msgid "Select products"
|
162
128
|
msgstr "Produkte auswählen"
|
163
129
|
|
164
|
-
|
130
|
+
msgid "Show an scc_account product"
|
131
|
+
msgstr ""
|
132
|
+
|
133
|
+
msgid "Show scc_account"
|
134
|
+
msgstr ""
|
135
|
+
|
136
|
+
msgid "Subscribe SCC Product"
|
137
|
+
msgstr "SCC Produkt abonnieren"
|
138
|
+
|
139
|
+
msgid "Subscribe product"
|
140
|
+
msgstr ""
|
141
|
+
|
165
142
|
msgid "Sync"
|
166
143
|
msgstr "Synchronisation"
|
167
144
|
|
168
|
-
|
169
|
-
|
170
|
-
msgstr "%s löschen?"
|
145
|
+
msgid "Sync Date"
|
146
|
+
msgstr "Synchronisationsdatum"
|
171
147
|
|
172
|
-
|
173
|
-
|
174
|
-
msgstr "SUSE Customer Center Konto hinzufügen"
|
148
|
+
msgid "Sync SUSE subscriptions"
|
149
|
+
msgstr "SUSE Abonnements synchronisieren"
|
175
150
|
|
176
|
-
|
177
|
-
|
178
|
-
msgstr "SUSE Customer Center"
|
151
|
+
msgid "Sync SUSE subscriptions (Products)"
|
152
|
+
msgstr "SUSE Abonnements (Produkte) synchronisieren"
|
179
153
|
|
180
|
-
|
181
|
-
|
182
|
-
msgstr "Bitte synchronisieren Sie zuerst Ihre SUSE Abonnements."
|
154
|
+
msgid "Sync SUSE subscriptions (Repositories)"
|
155
|
+
msgstr "SUSE Abonnements (Repositorien) synchronisieren"
|
183
156
|
|
184
|
-
|
185
|
-
|
186
|
-
msgstr "SUSE Abonnements"
|
157
|
+
msgid "Sync interval"
|
158
|
+
msgstr ""
|
187
159
|
|
188
|
-
|
189
|
-
msgid ""
|
190
|
-
"Foreman plugin to sync SUSE Customer Center products and repositories into "
|
191
|
-
"Katello."
|
160
|
+
msgid "Sync scc_account"
|
192
161
|
msgstr ""
|
193
|
-
|
194
|
-
"
|
162
|
+
|
163
|
+
msgid "Sync task started."
|
164
|
+
msgstr "Sync Job gestartet."
|
165
|
+
|
166
|
+
msgid "Task to subscribe products started."
|
167
|
+
msgstr "Job zum abonnieren von Produkten gestartet."
|
168
|
+
|
169
|
+
msgid "Test Connection"
|
170
|
+
msgstr "Verbindung testen"
|
171
|
+
|
172
|
+
msgid "Test connection for scc_account"
|
173
|
+
msgstr ""
|
174
|
+
|
175
|
+
msgid "The sync interval is used to periodically update the SCC authentication tokens of any imported products."
|
176
|
+
msgstr ""
|
177
|
+
|
178
|
+
msgid "URL of SUSE for scc_account"
|
179
|
+
msgstr ""
|
180
|
+
|
181
|
+
msgid "Unknown"
|
182
|
+
msgstr "Unbekannt"
|
183
|
+
|
184
|
+
msgid "Update SUSE repositories"
|
185
|
+
msgstr "SUSE Repositorien aktualisieren"
|
186
|
+
|
187
|
+
msgid "Update SUSE repositories %s"
|
188
|
+
msgstr "SUSE Repositorien %s aktualisieren"
|
189
|
+
|
190
|
+
msgid "Update scc_account"
|
191
|
+
msgstr ""
|
192
|
+
|
193
|
+
msgid "Use your 'Organization credentials' obtained from the SUSE Customer Center."
|
194
|
+
msgstr "Verwenden Sie die \"Organisationszugangsdaten\" aus dem SUSE Customer Center."
|
195
|
+
|
196
|
+
msgid "never synced"
|
197
|
+
msgstr "Nie synchronisiert"
|