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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0fa5a1408caba6e4ca5d6e2c634020444f644ab964f7448ff36ede9f2fe48ff4
4
- data.tar.gz: 0a641b367ce578003d72c7b05fd0e4a2d10dc7856d3ecbf80b333d723f5edaa1
3
+ metadata.gz: f4d297d61cfdedf0fb329cba44d7925c052c1c8e80f8f0ec58b1435b90b229fe
4
+ data.tar.gz: 3b434307e158ce5b45ad3e719a7538895a8bcf8d01c98f449561c8d18d4ba87f
5
5
  SHA512:
6
- metadata.gz: 767cf999eb62e84fe53ca718515e1e9655dee77f614ebd178cc3d52eb1e8568bad6924efca15c81cfb8fa796a30fb7f2162aa116d731121b7341480b50255334
7
- data.tar.gz: e2117f9f03baf0d70a0b1514fc7533f0d3656b12c22150260a3f58fb4708176e87a9b35a46bc10d1aa9caa7bf13d34d498dcfdeddde42dbba5283d479fbb5cbc
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!
@@ -26,7 +26,7 @@ $ ->
26
26
  $('#connection_test_result')[0].innerHTML = ''
27
27
  $('#test_scc_connection_indicator').show()
28
28
  $.ajax event.target.parentNode.dataset['url'],
29
- type: 'PUT'
29
+ type: 'POST'
30
30
  dataType: 'JSON'
31
31
  data: $('form').serialize()
32
32
  success: (result) ->
@@ -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
- :bulk_subscribe
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: scc_account.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: scc_account.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
@@ -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].try(:to_s)
12
- uri.password = proxy_config[:password].try(:to_s)
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
@@ -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
@@ -2,6 +2,8 @@ class SccProduct < ApplicationRecord
2
2
  include Authorizable
3
3
  include ForemanTasks::Concerns::ActionSubject
4
4
 
5
+ scope :only_products_with_repos, -> { joins(:scc_repositories).distinct }
6
+
5
7
  self.include_root_in_json = false
6
8
 
7
9
  belongs_to :scc_account
@@ -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, label: _('Interval') %>
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': test_connection_scc_accounts_path(scc_account_id: @scc_account)) %>
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.scc_products.count.to_s %></td>
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.order(:friendly_name).each do |scc_extension| %>
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.where(product_type: 'base').order(:friendly_name).each do |scc_product| %>
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 %>
@@ -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
- put 'test_connection'
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 :view_scc, {
33
- :'foreman_scc_manager/scc_accounts' => [:show, :index],
34
- :'api/v2/scc_accounts' => [:show, :index]
35
- }
36
- permission :use_scc, {
37
- :'foreman_scc_manager/scc_accounts' => [:bulk_subscribe],
38
- :'api/v2/scc_accounts' => [:bulk_subscribe]
39
- }
40
- permission :new_scc, {
41
- :'foreman_scc_manager/scc_accounts' => [:new, :create],
42
- :'api/v2/scc_accounts' => [:create]
43
- }
44
- permission :edit_scc, {
45
- :'foreman_scc_manager/scc_accounts' => [:edit, :update],
46
- :'api/v2/scc_accounts' => [:update]
47
- }
48
- permission :delete_scc, {
49
- :'foreman_scc_manager/scc_accounts' => [:destroy],
50
- :'api/v2/scc_accounts' => [:destroy]
51
- }
52
- permission :sync_scc, {
53
- :'foreman_scc_manager/scc_accounts' => [:sync],
54
- :'api/v2/scc_accounts' => [:sync]
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', %i[view_scc use_scc new_scc edit_scc delete_scc sync_scc]
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,
@@ -1,3 +1,3 @@
1
1
  module ForemanSccManager
2
- VERSION = '1.8.0'.freeze
2
+ VERSION = '1.8.5'.freeze
3
3
  end
@@ -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
@@ -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
- #: ../app/controllers/scc_accounts_controller.rb:64
31
- msgid "Sync task started."
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
- #: ../app/controllers/scc_accounts_controller.rb:81
45
- msgid "Task to subscribe products started."
46
- msgstr "Job zum abonnieren von Produkten gestartet."
31
+ msgid "Add SCC account"
32
+ msgstr "SCC Konto hinzufügen"
47
33
 
48
- #: ../app/controllers/scc_accounts_controller.rb:83
49
- msgid "No products selected."
50
- msgstr "Keine Produkte ausgewählt."
34
+ msgid "Add SUSE Customer Center Account"
35
+ msgstr "SUSE Customer Center Konto hinzufügen"
51
36
 
52
- #: ../app/lib/actions/scc_manager/subscribe_product.rb:5
53
- msgid "Product already subscribed!"
54
- msgstr "Produkt wurde bereits abonniert!"
37
+ msgid "Base URL"
38
+ msgstr "Basis URL"
55
39
 
56
- #: ../app/lib/actions/scc_manager/subscribe_product.rb:35 action_names.rb:1
57
- msgid "Subscribe SCC Product"
58
- msgstr "SCC Produkt abonnieren"
40
+ msgid "Bulk subscription of scc_products for scc_account"
41
+ msgstr ""
59
42
 
60
- #: ../app/lib/actions/scc_manager/sync.rb:27 action_names.rb:2
61
- msgid "Sync SUSE subscriptions"
62
- msgstr "SUSE Abonnements synchronisieren"
43
+ msgid "Create an scc_account"
44
+ msgstr ""
63
45
 
64
- #: ../app/lib/actions/scc_manager/sync_plan_account_repositories.rb:31
65
- msgid "Update SUSE repositories %s"
66
- msgstr "SUSE Repositorien %s aktualisieren"
46
+ msgid "Cron expression is not valid!"
47
+ msgstr "Cron-Ausdruck ungültig!"
67
48
 
68
- #: ../app/lib/actions/scc_manager/sync_plan_account_repositories.rb:31
69
- msgid "Unknown"
70
- msgstr "Unbekannt"
49
+ msgid "Delete %s?"
50
+ msgstr "%s löschen?"
71
51
 
72
- #: ../app/lib/actions/scc_manager/sync_plan_account_repositories.rb:33
73
- #: action_names.rb:3
74
- msgid "Update SUSE repositories"
75
- msgstr "SUSE Repositorien aktualisieren"
52
+ msgid "Delete scc_account"
53
+ msgstr ""
76
54
 
77
- #: ../app/lib/actions/scc_manager/sync_products.rb:34 action_names.rb:4
78
- msgid "Sync SUSE subscriptions (Products)"
79
- msgstr "SUSE Abonnements (Produkte) synchronisieren"
55
+ msgid "Edit %s"
56
+ msgstr "%s bearbeiten"
80
57
 
81
- #: ../app/lib/actions/scc_manager/sync_repositories.rb:33 action_names.rb:5
82
- msgid "Sync SUSE subscriptions (Repositories)"
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
- #: ../app/models/scc_account.rb:58
86
- msgid "never synced"
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
- #: ../app/models/scc_account.rb:112
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
- #: ../app/models/scc_account.rb:117
98
- msgid "Cron expression is not valid!"
99
- msgstr "Cron-Ausdruck ungültig!"
73
+ msgid "Last Sync time of scc_account"
74
+ msgstr ""
100
75
 
101
- #: ../app/models/scc_account_sync_plan_task_group.rb:5
102
- msgid "SUSE Subscription"
103
- msgstr "SUSE Abonnement"
76
+ msgid "Last synced"
77
+ msgstr "Letzte Synchronisation"
104
78
 
105
- #: ../app/views/scc_account_sync_plan_task_groups/_scc_account_sync_plan_task_groups.html.erb:1
106
- msgid "SUSE Subscription: "
79
+ msgid "List all products for scc_account"
107
80
  msgstr ""
108
81
 
109
- #: ../app/views/scc_accounts/_form.html.erb:6
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
- #: ../app/views/scc_accounts/_form.html.erb:15
121
- msgid "Base URL"
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
- #: ../app/views/scc_accounts/_form.html.erb:16
125
- msgid "Interval"
126
- msgstr "Intervall"
88
+ msgid "Login id of scc_account"
89
+ msgstr ""
127
90
 
128
- #: ../app/views/scc_accounts/_form.html.erb:17
129
- msgid "Sync Date"
130
- msgstr "Synchronisationsdatum"
91
+ msgid "Name of the scc_account"
92
+ msgstr ""
131
93
 
132
- #: ../app/views/scc_accounts/_form.html.erb:24
133
- msgid "Test Connection"
134
- msgstr "Verbindung testen"
94
+ msgid "No products selected."
95
+ msgstr "Keine Produkte ausgewählt."
135
96
 
136
- #: ../app/views/scc_accounts/edit.html.erb:1
137
- msgid "Edit %s"
138
- msgstr "%s bearbeiten"
97
+ msgid "Password of scc_account"
98
+ msgstr ""
139
99
 
140
- #: ../app/views/scc_accounts/index.html.erb:2
141
- msgid "SUSE subscriptions"
142
- msgstr "SUSE Abonnements"
100
+ msgid "Please sync your SUSE subscriptions first."
101
+ msgstr "Bitte synchronisieren Sie zuerst Ihre SUSE Abonnements."
143
102
 
144
- #: ../app/views/scc_accounts/index.html.erb:3
145
- msgid "Add SCC account"
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
- #: ../app/views/scc_accounts/index.html.erb:10
153
- msgid "Last synced"
154
- msgstr "Letzte Synchronisation"
109
+ msgid "SUSE Customer Center"
110
+ msgstr "SUSE Customer Center"
155
111
 
156
- #: ../app/views/scc_accounts/index.html.erb:11
157
- msgid "Actions"
158
- msgstr "Aktionen"
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
- #: ../app/views/scc_accounts/index.html.erb:25
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
- #: ../app/views/scc_accounts/index.html.erb:28
169
- msgid "Delete %s?"
170
- msgstr "%s löschen?"
145
+ msgid "Sync Date"
146
+ msgstr "Synchronisationsdatum"
171
147
 
172
- #: ../app/views/scc_accounts/new.html.erb:1
173
- msgid "Add SUSE Customer Center Account"
174
- msgstr "SUSE Customer Center Konto hinzufügen"
148
+ msgid "Sync SUSE subscriptions"
149
+ msgstr "SUSE Abonnements synchronisieren"
175
150
 
176
- #: ../app/views/scc_accounts/show.html.erb:25
177
- msgid "SUSE Customer Center"
178
- msgstr "SUSE Customer Center"
151
+ msgid "Sync SUSE subscriptions (Products)"
152
+ msgstr "SUSE Abonnements (Produkte) synchronisieren"
179
153
 
180
- #: ../app/views/scc_accounts/show.html.erb:36
181
- msgid "Please sync your SUSE subscriptions first."
182
- msgstr "Bitte synchronisieren Sie zuerst Ihre SUSE Abonnements."
154
+ msgid "Sync SUSE subscriptions (Repositories)"
155
+ msgstr "SUSE Abonnements (Repositorien) synchronisieren"
183
156
 
184
- #: ../lib/foreman_scc_manager/engine.rb:45
185
- msgid "SUSE Subscriptions"
186
- msgstr "SUSE Abonnements"
157
+ msgid "Sync interval"
158
+ msgstr ""
187
159
 
188
- #: gemspec.rb:2
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
- "Foreman Plugin um SUSE Customer Center Produkte und Repositorien in Katello "
194
- "zu importieren."
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"