foreman_scc_manager 1.8.0 → 1.8.5

Sign up to get free protection for your applications and to get access to all the features.
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"