katello 3.15.2 → 3.15.3

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of katello might be problematic. Click here for more details.

Files changed (27) hide show
  1. checksums.yaml +4 -4
  2. data/app/models/katello/concerns/http_proxy_extensions.rb +30 -7
  3. data/app/models/katello/root_repository.rb +1 -1
  4. data/app/models/setting/content.rb +1 -1
  5. data/lib/katello/tasks/common.rake +7 -0
  6. data/lib/katello/tasks/delete_orphaned_content.rake +3 -1
  7. data/lib/katello/tasks/pulp3_migration.rake +2 -0
  8. data/lib/katello/tasks/repository.rake +2 -4
  9. data/lib/katello/version.rb +1 -1
  10. data/webpack/components/Content/ContentTable.js +2 -0
  11. data/webpack/components/Content/Details/ContentDetails.js +3 -0
  12. data/webpack/scenes/AnsibleCollections/Details/AnsibleCollectionDetails.js +3 -0
  13. data/webpack/scenes/ModuleStreams/Details/ModuleStreamDetails.js +3 -0
  14. data/webpack/scenes/RedHatRepositories/RedHatRepositoriesPage.js +2 -0
  15. data/webpack/scenes/RedHatRepositories/components/EnabledRepository/EnabledRepository.js +2 -0
  16. data/webpack/scenes/RedHatRepositories/components/RepositorySetRepository/RepositorySetRepository.js +2 -0
  17. data/webpack/scenes/Subscriptions/Details/SubscriptionDetailAssociations.js +2 -0
  18. data/webpack/scenes/Subscriptions/Details/SubscriptionDetailProductContent.js +2 -0
  19. data/webpack/scenes/Subscriptions/Details/SubscriptionDetailProducts.js +2 -0
  20. data/webpack/scenes/Subscriptions/Manifest/ManageManifestModal.js +2 -0
  21. data/webpack/scenes/Subscriptions/SubscriptionsPage.js +3 -0
  22. data/webpack/scenes/Subscriptions/UpstreamSubscriptions/UpstreamSubscriptionsPage.js +2 -0
  23. data/webpack/scenes/Subscriptions/components/SubscriptionsTable/SubscriptionsTable.js +2 -0
  24. data/webpack/scenes/Subscriptions/components/SubscriptionsTable/components/Dialogs/UpdateDialog.js +1 -1
  25. data/webpack/scenes/Subscriptions/components/SubscriptionsTable/components/Dialogs/index.js +4 -4
  26. data/webpack/scenes/Subscriptions/components/SubscriptionsTable/components/Table.js +2 -0
  27. metadata +7 -6
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4ad9b04f40e657a51875c8695653860da9fb8ae7
4
- data.tar.gz: 812424e72605d87d742fa45d14b09a9eaebeaa30
3
+ metadata.gz: 54f3c8f8f08fc3a97cb04de42a964ed3d108177e
4
+ data.tar.gz: 78a9f9aeedd477f1d00419723aa0f6394d5059dc
5
5
  SHA512:
6
- metadata.gz: 5e2c8979164f4403578cd093a6b34cb88bc091aa28179bb2c420730cc2bb10e2bf0cdf7ba2e5ac445b78cc0ba3fa46a21c4ce85c3447b88a8535b0ef5898f7c4
7
- data.tar.gz: a8634db2c5e979b92723e368dbf92e42766d5f20d0f8757b4f88f3ac6bf56eb7c7e4f86e14510b6bb6101d517713b915aff01f6d5145ea2ac2c85ac05e0fb87c
6
+ metadata.gz: 88a7845a0580e2a15ea5369a3a456a9721d1e21cee99f4778afae02f36e0998e9fed606a38354803332eded5896f5db01d24ca4ab87e127e27bc6355f7ff9d7c
7
+ data.tar.gz: 221debb1187c60710e648fcdd047a278fa5d6aa2d0f86b6b76ad126d2b2e096a969c88a2df639025077d10572ae55e4e5d2167cbc3ac1bb86b5db44015235a58
@@ -8,6 +8,7 @@ module Katello
8
8
  :inverse_of => :http_proxy, :dependent => :nullify
9
9
  after_update :update_default_proxy_setting
10
10
  after_commit :update_repository_proxy_details
11
+ before_destroy :remove_references_to_proxy
11
12
 
12
13
  def self.default_global_content_proxy
13
14
  if Setting[:content_default_http_proxy]
@@ -16,6 +17,34 @@ module Katello
16
17
  end
17
18
  end
18
19
 
20
+ def repositories_with_proxy(proxy_id)
21
+ root_repos = RootRepository.with_selected_proxy(proxy_id)
22
+
23
+ if self == HttpProxy.default_global_content_proxy
24
+ root_repos += RootRepository.with_global_proxy
25
+ end
26
+
27
+ root_repos
28
+ end
29
+
30
+ def remove_references_to_proxy
31
+ root_repos = repositories_with_proxy(nil).uniq.sort
32
+
33
+ setting = Setting.find_by(name: 'content_default_http_proxy')
34
+ if setting&.value && setting.value == self.name
35
+ setting.update_attribute(:value, '')
36
+ end
37
+
38
+ unless root_repos.empty?
39
+ ForemanTasks.async_task(
40
+ ::Actions::BulkAction,
41
+ ::Actions::Katello::Repository::Update,
42
+ root_repos,
43
+ http_proxy_policy: Katello::RootRepository::GLOBAL_DEFAULT_HTTP_PROXY,
44
+ http_proxy_id: nil)
45
+ end
46
+ end
47
+
19
48
  def update_default_proxy_setting
20
49
  changes = self.previous_changes
21
50
  if changes.key?(:name)
@@ -32,13 +61,7 @@ module Katello
32
61
  changes = self.previous_changes
33
62
  if changes.key?(:url) || changes.key?(:username) || changes.key?(:password)
34
63
 
35
- root_repos = RootRepository.with_selected_proxy(id)
36
-
37
- if self == HttpProxy.default_global_content_proxy
38
- root_repos += RootRepository.with_global_proxy
39
- end
40
-
41
- repos = root_repos.uniq.collect(&:library_instance)
64
+ repos = repositories_with_proxy(id).uniq.collect(&:library_instance)
42
65
 
43
66
  unless repos.empty?
44
67
  ForemanTasks.async_task(
@@ -97,7 +97,7 @@ module Katello
97
97
  scope :with_no_proxy, -> { where(:http_proxy_policy => RootRepository::NO_DEFAULT_HTTP_PROXY) }
98
98
  scope :with_selected_proxy, ->(http_proxy_id) {
99
99
  where(:http_proxy_policy => RootRepository::USE_SELECTED_HTTP_PROXY).
100
- where("http_proxy_id = ?", http_proxy_id)
100
+ where(:http_proxy_id => http_proxy_id)
101
101
  }
102
102
  delegate :redhat?, :provider, :organization, to: :product
103
103
 
@@ -2,7 +2,7 @@ class Setting::Content < Setting
2
2
  #rubocop:disable Metrics/MethodLength
3
3
  #rubocop:disable Metrics/AbcSize
4
4
 
5
- validate :content_default_http_proxy, if: proc { |s| s.name == 'content_default_http_proxy' }
5
+ validate :content_default_http_proxy, if: proc { |s| s.name == 'content_default_http_proxy' && HttpProxy.table_exists? }
6
6
 
7
7
  after_save :add_organizations_and_locations_if_global_http_proxy
8
8
 
@@ -0,0 +1,7 @@
1
+ namespace :katello do
2
+ task :disable_dynflow do
3
+ #Ensures that we run as a dynflow 'client'
4
+ ::Rails.application.dynflow.initialize!
5
+ ForemanTasks.dynflow.config.remote = true
6
+ end
7
+ end
@@ -1,7 +1,9 @@
1
+ load "#{Katello::Engine.root}/lib/katello/tasks/common.rake"
2
+
1
3
  namespace :katello do
2
4
  desc "Remove orphaned and unneeded content/repos from a smart proxy.\
3
5
  Run with SMART_PROXY_ID=1 to run for a single smart proxy."
4
- task :delete_orphaned_content => ["environment"] do
6
+ task :delete_orphaned_content => ["environment", "disable_dynflow"] do
5
7
  User.current = User.anonymous_admin
6
8
  smart_proxy_id = ENV['SMART_PROXY_ID']
7
9
  if smart_proxy_id
@@ -1,3 +1,5 @@
1
+ load "#{Katello::Engine.root}/lib/katello/tasks/common.rake"
2
+
1
3
  namespace :katello do
2
4
  desc "Runs a Pulp 2 to 3 Content Migration for supported types. May be run multiple times. Use wait=false to immediately return with a task url."
3
5
  task :pulp3_migration => ["environment", "disable_dynflow", "check_ping"] do
@@ -1,8 +1,6 @@
1
- namespace :katello do
2
- task :disable_dynflow do
3
- ForemanTasks.dynflow.config.remote = true
4
- end
1
+ load "#{Katello::Engine.root}/lib/katello/tasks/common.rake"
5
2
 
3
+ namespace :katello do
6
4
  def commit?
7
5
  ENV['COMMIT'] == 'true' || ENV['FOREMAN_UPGRADE'] == '1'
8
6
  end
@@ -1,3 +1,3 @@
1
1
  module Katello
2
- VERSION = "3.15.2".freeze
2
+ VERSION = "3.15.3".freeze
3
3
  end
@@ -34,6 +34,8 @@ const ContentTable = ({ content, tableSchema, onPaginationChange }) => {
34
34
  ContentTable.propTypes = {
35
35
  content: PropTypes.shape({
36
36
  loading: PropTypes.bool,
37
+ // Disabling rule as existing code failed due to an eslint-plugin-react update
38
+ // eslint-disable-next-line react/forbid-prop-types
37
39
  results: PropTypes.array,
38
40
  pagination: PropTypes.shape({}),
39
41
  itemCount: PropTypes.number,
@@ -59,9 +59,12 @@ ContentDetails.propTypes = {
59
59
  contentDetails: PropTypes.shape({
60
60
  loading: PropTypes.bool,
61
61
  name: PropTypes.string,
62
+ // Disabling rule as existing code failed due to an eslint-plugin-react update
63
+ /* eslint-disable react/forbid-prop-types */
62
64
  profiles: PropTypes.array,
63
65
  repositories: PropTypes.array,
64
66
  artifacts: PropTypes.array,
67
+ /* eslint-enable react/forbid-prop-types */
65
68
  stream: PropTypes.string,
66
69
  }).isRequired,
67
70
  schema: PropTypes.arrayOf(PropTypes.shape({})).isRequired,
@@ -83,8 +83,11 @@ AnsibleCollectionDetails.propTypes = {
83
83
  name: PropTypes.string,
84
84
  namespace: PropTypes.string,
85
85
  version: PropTypes.string,
86
+ // Disabling rule as existing code failed due to an eslint-plugin-react update
87
+ /* eslint-disable react/forbid-prop-types */
86
88
  repositories: PropTypes.array,
87
89
  tags: PropTypes.array,
90
+ /* eslint-enable react/forbid-prop-types */
88
91
  }).isRequired,
89
92
  };
90
93
 
@@ -81,9 +81,12 @@ ModuleStreamDetails.propTypes = {
81
81
  moduleStreamDetails: PropTypes.shape({
82
82
  loading: PropTypes.bool,
83
83
  name: PropTypes.string,
84
+ // Disabling rule as existing code failed due to an eslint-plugin-react update
85
+ /* eslint-disable react/forbid-prop-types */
84
86
  profiles: PropTypes.array,
85
87
  repositories: PropTypes.array,
86
88
  artifacts: PropTypes.array,
89
+ /* eslint-enable react/forbid-prop-types */
87
90
  stream: PropTypes.string,
88
91
  }).isRequired,
89
92
  };
@@ -111,6 +111,8 @@ RedHatRepositoriesPage.propTypes = {
111
111
  recommended: PropTypes.bool,
112
112
  loading: PropTypes.bool,
113
113
  search: PropTypes.shape({}),
114
+ // Disabling rule as existing code failed due to an eslint-plugin-react update
115
+ // eslint-disable-next-line react/forbid-prop-types
114
116
  missingPermissions: PropTypes.array,
115
117
  }).isRequired,
116
118
  };
@@ -94,6 +94,8 @@ EnabledRepository.propTypes = {
94
94
  search: PropTypes.shape({
95
95
  query: PropTypes.string,
96
96
  searchList: PropTypes.string,
97
+ // Disabling rule as existing code failed due to an eslint-plugin-react update
98
+ // eslint-disable-next-line react/forbid-prop-types
97
99
  filters: PropTypes.array,
98
100
  }),
99
101
  pagination: PropTypes.shape({
@@ -141,6 +141,8 @@ RepositorySetRepository.propTypes = {
141
141
  enabledSearch: PropTypes.shape({
142
142
  query: PropTypes.string,
143
143
  searchList: PropTypes.string,
144
+ // Disabling rule as existing code failed due to an eslint-plugin-react update
145
+ // eslint-disable-next-line react/forbid-prop-types
144
146
  filters: PropTypes.array,
145
147
  }),
146
148
  enabledPagination: PropTypes.shape({
@@ -45,6 +45,8 @@ SubscriptionDetailAssociations.propTypes = {
45
45
  subscriptionDetails: PropTypes.shape({
46
46
  id: PropTypes.number,
47
47
  host_count: PropTypes.number,
48
+ // Disabling rule as existing code failed due to an eslint-plugin-react update
49
+ // eslint-disable-next-line react/forbid-prop-types
48
50
  activation_keys: PropTypes.array,
49
51
  }).isRequired,
50
52
  };
@@ -50,6 +50,8 @@ const SubscriptionDetailProductContent = ({ productContent }) => {
50
50
 
51
51
  SubscriptionDetailProductContent.propTypes = {
52
52
  productContent: PropTypes.shape({
53
+ // Disabling rule as existing code failed due to an eslint-plugin-react update
54
+ // eslint-disable-next-line react/forbid-prop-types
53
55
  results: PropTypes.array,
54
56
  }).isRequired,
55
57
  };
@@ -18,6 +18,8 @@ const SubscriptionDetailProducts = ({ subscriptionDetails }) => (
18
18
 
19
19
  SubscriptionDetailProducts.propTypes = {
20
20
  subscriptionDetails: PropTypes.shape({
21
+ // Disabling rule as existing code failed due to an eslint-plugin-react update
22
+ // eslint-disable-next-line react/forbid-prop-types
21
23
  provided_products: PropTypes.array,
22
24
  }).isRequired,
23
25
  };
@@ -352,6 +352,8 @@ ManageManifestModal.propTypes = {
352
352
  simpleContentAccess: PropTypes.bool,
353
353
  manifestHistory: PropTypes.shape({
354
354
  loading: PropTypes.bool,
355
+ // Disabling rule as existing code failed due to an eslint-plugin-react update
356
+ // eslint-disable-next-line react/forbid-prop-types
355
357
  results: PropTypes.array,
356
358
  }).isRequired,
357
359
  setModalClosed: PropTypes.func.isRequired,
@@ -264,10 +264,13 @@ SubscriptionsPage.propTypes = {
264
264
  loadTableColumns: PropTypes.func.isRequired,
265
265
  simpleContentAccess: PropTypes.bool,
266
266
  subscriptions: PropTypes.shape({
267
+ // Disabling rule as existing code failed due to an eslint-plugin-react update
268
+ /* eslint-disable react/forbid-prop-types */
267
269
  disconnected: PropTypes.bool,
268
270
  tableColumns: PropTypes.array,
269
271
  selectedTableColumns: PropTypes.array,
270
272
  missingPermissions: PropTypes.array,
273
+ /* eslint-enable react/forbid-prop-types */
271
274
  }).isRequired,
272
275
  activePermissions: PropTypes.shape({
273
276
  can_delete_manifest: PropTypes.bool,
@@ -262,6 +262,8 @@ UpstreamSubscriptionsPage.propTypes = {
262
262
  upstreamSubscriptions: PropTypes.shape({
263
263
  loading: PropTypes.bool,
264
264
  itemCount: PropTypes.number,
265
+ // Disabling rule as existing code failed due to an eslint-plugin-react update
266
+ // eslint-disable-next-line react/forbid-prop-types
265
267
  results: PropTypes.array,
266
268
  pagination: PropTypes.shape({}),
267
269
  task: PropTypes.shape({
@@ -276,6 +276,8 @@ SubscriptionsTable.propTypes = {
276
276
  subscriptions: PropTypes.shape({
277
277
  loading: PropTypes.bool,
278
278
  availableQuantities: PropTypes.shape({}),
279
+ // Disabling rule as existing code failed due to an eslint-plugin-react update
280
+ // eslint-disable-next-line react/forbid-prop-types
279
281
  results: PropTypes.array,
280
282
  }).isRequired,
281
283
  subscriptionDeleteModalOpen: PropTypes.bool.isRequired,
@@ -47,7 +47,7 @@ const UpdateDialog = ({
47
47
  UpdateDialog.propTypes = {
48
48
  show: PropTypes.bool.isRequired,
49
49
  updateQuantity: PropTypes.func.isRequired,
50
- updatedQuantity: PropTypes.shape(PropTypes.Object).isRequired,
50
+ updatedQuantity: PropTypes.shape({}).isRequired,
51
51
  showUpdateConfirm: PropTypes.func.isRequired,
52
52
  enableEditing: PropTypes.func.isRequired,
53
53
  };
@@ -17,10 +17,10 @@ const Dialogs = ({
17
17
  );
18
18
 
19
19
  Dialogs.propTypes = {
20
- updateDialog: PropTypes.shape(UpdateDialog.propTypes).isRequired,
21
- unsavedChangesDialog: PropTypes.shape(UnsavedChangesDialog.propTypes).isRequired,
22
- inputsErrorsDialog: PropTypes.shape(InputsErrorsDialog.propTypes).isRequired,
23
- deleteDialog: PropTypes.shape(DeleteDialog.propTypes).isRequired,
20
+ updateDialog: PropTypes.shape({}).isRequired,
21
+ unsavedChangesDialog: PropTypes.shape({}).isRequired,
22
+ inputsErrorsDialog: PropTypes.shape({}).isRequired,
23
+ deleteDialog: PropTypes.shape({}).isRequired,
24
24
  };
25
25
 
26
26
  export default Dialogs;
@@ -95,6 +95,8 @@ Table.propTypes = {
95
95
  searchIsActive: PropTypes.bool,
96
96
  itemCount: PropTypes.number,
97
97
  pagination: PropTypes.shape({}),
98
+ // Disabling rule as existing code failed due to an eslint-plugin-react update
99
+ // eslint-disable-next-line react/forbid-prop-types
98
100
  results: PropTypes.array,
99
101
  }).isRequired,
100
102
  loadSubscriptions: PropTypes.func.isRequired,
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: katello
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.15.2
4
+ version: 3.15.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - N/A
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-06-17 00:00:00.000000000 Z
11
+ date: 2020-07-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -84,16 +84,16 @@ dependencies:
84
84
  name: foreman-tasks
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - "<"
87
+ - - "<="
88
88
  - !ruby/object:Gem::Version
89
- version: 1.2.0
89
+ version: 1.1.1
90
90
  type: :runtime
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - "<"
94
+ - - "<="
95
95
  - !ruby/object:Gem::Version
96
- version: 1.2.0
96
+ version: 1.1.1
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: dynflow
99
99
  requirement: !ruby/object:Gem::Requirement
@@ -4125,6 +4125,7 @@ files:
4125
4125
  - lib/katello/tasks/clean_backend_objects.rake
4126
4126
  - lib/katello/tasks/clean_old_file_repos.rake
4127
4127
  - lib/katello/tasks/clean_published_repo_directories.rake
4128
+ - lib/katello/tasks/common.rake
4128
4129
  - lib/katello/tasks/delete_orphaned_content.rake
4129
4130
  - lib/katello/tasks/import_applicability.rake
4130
4131
  - lib/katello/tasks/import_subscriptions.rake