katello 3.16.0.rc1.1 → 3.16.0.rc4

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 (150) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/katello/api/v2/api_controller.rb +8 -4
  3. data/app/controllers/katello/api/v2/subscriptions_controller.rb +1 -1
  4. data/app/controllers/katello/api/v2/upstream_subscriptions_controller.rb +13 -1
  5. data/app/controllers/katello/concerns/hosts_controller_extensions.rb +11 -0
  6. data/app/controllers/katello/remote_execution_controller.rb +1 -1
  7. data/app/lib/actions/katello/applicability/hosts/{generate.rb → bulk_generate.rb} +11 -2
  8. data/app/lib/actions/katello/applicability/repository/regenerate.rb +7 -2
  9. data/app/lib/actions/katello/host/generate_applicability.rb +7 -2
  10. data/app/lib/actions/katello/host/upload_profiles.rb +20 -11
  11. data/app/lib/actions/katello/repository/sync.rb +1 -2
  12. data/app/lib/actions/katello/repository/update.rb +12 -1
  13. data/app/lib/actions/katello/repository/update_cv_repo_cert_guard.rb +17 -0
  14. data/app/lib/actions/pulp3/ContentGuard/refresh.rb +19 -0
  15. data/app/lib/actions/pulp3/orchestration/repository/copy_all_units.rb +6 -8
  16. data/app/lib/actions/pulp3/orchestration/repository/generate_metadata.rb +1 -1
  17. data/app/lib/actions/pulp3/repository/copy_content.rb +1 -0
  18. data/app/lib/actions/pulp3/repository/refresh_distribution.rb +1 -0
  19. data/app/lib/actions/pulp3/repository/save_distribution_references.rb +3 -1
  20. data/app/lib/actions/pulp3/repository/save_version.rb +3 -1
  21. data/app/lib/actions/pulp3/repository/update_cv_repository_cert_guard.rb +15 -0
  22. data/app/lib/katello/concerns/base_template_scope_extensions.rb +5 -1
  23. data/app/lib/katello/errors.rb +25 -0
  24. data/app/lib/katello/logging.rb +14 -0
  25. data/app/lib/katello/resources/candlepin.rb +1 -1
  26. data/app/lib/katello/resources/candlepin/upstream_consumer.rb +6 -0
  27. data/app/lib/katello/util/errata.rb +13 -0
  28. data/app/lib/katello/util/pulpcore_content_filters.rb +32 -0
  29. data/app/models/katello/concerns/host_managed_extensions.rb +7 -0
  30. data/app/models/katello/concerns/http_proxy_extensions.rb +30 -7
  31. data/app/models/katello/concerns/organization_extensions.rb +14 -0
  32. data/app/models/katello/concerns/pulp_database_unit.rb +2 -2
  33. data/app/models/katello/content_view_erratum_filter.rb +29 -0
  34. data/app/models/katello/content_view_package_filter.rb +16 -1
  35. data/app/models/katello/content_view_package_group_filter.rb +7 -0
  36. data/app/models/katello/events/generate_host_applicability.rb +6 -5
  37. data/app/models/katello/glue/candlepin/candlepin_object.rb +9 -5
  38. data/app/models/katello/glue/candlepin/pool.rb +8 -3
  39. data/app/models/katello/glue/provider.rb +11 -4
  40. data/app/models/katello/host/content_facet.rb +1 -1
  41. data/app/models/katello/host_queue_element.rb +4 -0
  42. data/app/models/katello/package_group.rb +2 -1
  43. data/app/models/katello/pool.rb +1 -1
  44. data/app/models/katello/pulp3/content_guard.rb +14 -0
  45. data/app/models/katello/rhsm_fact_parser.rb +4 -0
  46. data/app/models/katello/root_repository.rb +4 -1
  47. data/app/models/setting/content.rb +3 -1
  48. data/app/services/katello/applicable_host_queue.rb +21 -0
  49. data/app/services/katello/candlepin/message_handler.rb +2 -3
  50. data/app/services/katello/pulp/pulp_content_unit.rb +4 -0
  51. data/app/services/katello/pulp3/api/content_guard.rb +45 -0
  52. data/app/services/katello/pulp3/api/yum.rb +24 -0
  53. data/app/services/katello/pulp3/erratum.rb +4 -0
  54. data/app/services/katello/pulp3/pulp_content_unit.rb +4 -0
  55. data/app/services/katello/pulp3/repository.rb +29 -6
  56. data/app/services/katello/pulp3/repository/yum.rb +98 -3
  57. data/app/services/katello/pulp3/rpm.rb +3 -2
  58. data/app/services/katello/ui_notifications/subscriptions/manifest_expired_warning.rb +20 -8
  59. data/app/services/katello/upstream_connection_checker.rb +48 -0
  60. data/app/views/katello/api/v2/srpms/backend.json.rabl +11 -0
  61. data/app/views/katello/api/v2/srpms/base.json.rabl +5 -0
  62. data/app/views/katello/api/v2/srpms/compare.json.rabl +10 -0
  63. data/app/views/katello/api/v2/srpms/index.json.rabl +1 -1
  64. data/app/views/katello/api/v2/srpms/show.json.rabl +3 -3
  65. data/config/routes/api/v2.rb +2 -0
  66. data/db/migrate/20200407171926_create_content_guard.rb +10 -0
  67. data/db/migrate/20200511204005_create_katello_host_queue_elements.rb +12 -0
  68. data/db/migrate/20200526200422_encrypt_root_repository_upstream_password.rb +47 -0
  69. data/db/seeds.d/109-katello-notification-blueprints.rb +1 -1
  70. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/views/activation-key-repository-sets.html +1 -1
  71. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/views/content-host-traces.html +1 -1
  72. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/views/content-host-info.html +1 -1
  73. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/versions/content-view-version.factory.js +2 -2
  74. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/bastion_katello.pot +367 -450
  75. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/de.po +4046 -2509
  76. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/es.po +4277 -2503
  77. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/fr.po +4372 -2591
  78. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/it.po +4013 -2500
  79. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ja.po +4127 -2630
  80. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ko.po +4024 -2530
  81. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/pt_BR.po +4492 -2766
  82. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ru.po +4293 -2667
  83. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/zh_CN.po +4072 -2460
  84. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/zh_TW.po +4004 -2442
  85. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/translations.js +10 -10
  86. data/lib/katello/permission_creator.rb +1 -1
  87. data/lib/katello/version.rb +1 -1
  88. data/locale/action_names.rb +51 -43
  89. data/locale/bn/katello.po +4015 -2558
  90. data/locale/cs/katello.po +3756 -2221
  91. data/locale/de/katello.po +4303 -3044
  92. data/locale/en/katello.po +3137 -1558
  93. data/locale/es/katello.po +4280 -3012
  94. data/locale/fr/katello.po +4302 -3080
  95. data/locale/gu/katello.po +4034 -2584
  96. data/locale/hi/katello.po +4034 -2575
  97. data/locale/it/katello.po +4291 -3040
  98. data/locale/ja/katello.po +4345 -2863
  99. data/locale/katello.pot +2631 -1460
  100. data/locale/kn/katello.po +4033 -2585
  101. data/locale/ko/katello.po +4320 -2815
  102. data/locale/mr/katello.po +3971 -2506
  103. data/locale/or/katello.po +4018 -2559
  104. data/locale/pa/katello.po +3985 -2514
  105. data/locale/pt/katello.po +3358 -1810
  106. data/locale/pt_BR/katello.po +4252 -2959
  107. data/locale/ru/katello.po +4308 -2902
  108. data/locale/ta/katello.po +4012 -2562
  109. data/locale/te/katello.po +4046 -2585
  110. data/locale/zh_CN/katello.po +4344 -2803
  111. data/locale/zh_TW/katello.po +4470 -2957
  112. data/package.json +3 -3
  113. data/webpack/components/Content/ContentTable.js +2 -0
  114. data/webpack/components/Content/Details/ContentDetails.js +3 -0
  115. data/webpack/global_test_setup.js +3 -0
  116. data/webpack/scenes/AnsibleCollections/Details/AnsibleCollectionDetails.js +3 -0
  117. data/webpack/scenes/ModuleStreams/Details/ModuleStreamDetails.js +3 -0
  118. data/webpack/scenes/RedHatRepositories/RedHatRepositoriesPage.js +2 -0
  119. data/webpack/scenes/RedHatRepositories/components/EnabledRepository/EnabledRepository.js +2 -0
  120. data/webpack/scenes/RedHatRepositories/components/RepositorySetRepository/RepositorySetRepository.js +2 -0
  121. data/webpack/scenes/Subscriptions/Details/SubscriptionDetailAssociations.js +2 -0
  122. data/webpack/scenes/Subscriptions/Details/SubscriptionDetailProductContent.js +2 -0
  123. data/webpack/scenes/Subscriptions/Details/SubscriptionDetailProducts.js +2 -0
  124. data/webpack/scenes/Subscriptions/Manifest/ManageManifestModal.js +2 -0
  125. data/webpack/scenes/Subscriptions/SubscriptionActions.js +19 -21
  126. data/webpack/scenes/Subscriptions/SubscriptionConstants.js +3 -1
  127. data/webpack/scenes/Subscriptions/SubscriptionReducer.js +15 -1
  128. data/webpack/scenes/Subscriptions/SubscriptionsPage.js +66 -9
  129. data/webpack/scenes/Subscriptions/SubscriptionsSelectors.js +11 -0
  130. data/webpack/scenes/Subscriptions/UpstreamSubscriptions/UpstreamSubscriptionsActions.js +15 -1
  131. data/webpack/scenes/Subscriptions/UpstreamSubscriptions/{UpstreamSubscriptionsContstants.js → UpstreamSubscriptionsConstants.js} +3 -0
  132. data/webpack/scenes/Subscriptions/UpstreamSubscriptions/UpstreamSubscriptionsPage.js +2 -0
  133. data/webpack/scenes/Subscriptions/UpstreamSubscriptions/UpstreamSubscriptionsReducer.js +1 -1
  134. data/webpack/scenes/Subscriptions/UpstreamSubscriptions/__tests__/UpstreamSubscriptionsReducer.test.js +1 -1
  135. data/webpack/scenes/Subscriptions/__tests__/SubscriptionsActions.test.js +10 -34
  136. data/webpack/scenes/Subscriptions/__tests__/SubscriptionsPage.test.js +17 -7
  137. data/webpack/scenes/Subscriptions/__tests__/__snapshots__/SubscriptionsActions.test.js.snap +2 -4
  138. data/webpack/scenes/Subscriptions/__tests__/__snapshots__/SubscriptionsPage.test.js.snap +6 -4
  139. data/webpack/scenes/Subscriptions/__tests__/__snapshots__/SubscriptionsReducer.test.js.snap +26 -25
  140. data/webpack/scenes/Subscriptions/__tests__/subscriptions.fixtures.js +0 -58
  141. data/webpack/scenes/Subscriptions/components/SubscriptionsTable/SubscriptionsTable.js +10 -4
  142. data/webpack/scenes/Subscriptions/components/SubscriptionsTable/__tests__/SubscriptionsTable.test.js +1 -0
  143. data/webpack/scenes/Subscriptions/components/SubscriptionsTable/__tests__/__snapshots__/SubscriptionsTable.test.js.snap +1 -68
  144. data/webpack/scenes/Subscriptions/components/SubscriptionsTable/components/Dialogs/UpdateDialog.js +1 -1
  145. data/webpack/scenes/Subscriptions/components/SubscriptionsTable/components/Dialogs/index.js +4 -4
  146. data/webpack/scenes/Subscriptions/components/SubscriptionsTable/components/Table.js +12 -10
  147. data/webpack/scenes/Subscriptions/index.js +11 -4
  148. data/webpack/scenes/Tasks/TaskActions.js +2 -1
  149. data/webpack/test-utils/nockWrapper.js +1 -1
  150. metadata +54 -24
@@ -93,50 +93,6 @@ export const requestSuccessResponse = Immutable({
93
93
  ],
94
94
  });
95
95
 
96
- export const requestSuccessResponseWithRHSubscriptions = Immutable({
97
- organization: {},
98
- total: 81,
99
- subtotal: 1,
100
- page: 1,
101
- per_page: 2,
102
- error: null,
103
- search: null,
104
- sort: {
105
- by: 'cp_id',
106
- order: 'asc',
107
- },
108
- results: [
109
- {
110
- id: 4,
111
- cp_id: '4028f95a62ce96190162cf435202005b',
112
- subscription_id: 5,
113
- name: 'Some RH Product',
114
- start_date: '2013-02-28 18:00:00 -1100',
115
- end_date: '2021-12-31 17:59:59 -1100',
116
- available: 12,
117
- quantity: 12,
118
- consumed: 0,
119
- account_number: 1000000,
120
- contract_number: 20000000,
121
- support_level: 'Self-Support',
122
- product_id: 'Z3BRU11',
123
- sockets: null,
124
- cores: null,
125
- ram: null,
126
- instance_multiplier: 1,
127
- stacking_id: null,
128
- multi_entitlement: null,
129
- type: 'NORMAL',
130
- product_name: 'Some RH Product',
131
- unmapped_guest: false,
132
- virt_only: false,
133
- virt_who: false,
134
- upstream: true,
135
- upstream_pool_id: '8a85f98160f068060160f06e922a0201',
136
- },
137
- ],
138
- });
139
-
140
96
  export const quantitiesRequestSuccessResponse = Immutable({
141
97
  results: [
142
98
  {
@@ -399,20 +355,6 @@ export const successActions = [
399
355
  },
400
356
  ];
401
357
 
402
- export const successActionsWithQuantityLoad = [
403
- {
404
- type: 'SUBSCRIPTIONS_REQUEST',
405
- },
406
- {
407
- type: 'SUBSCRIPTIONS_SUCCESS',
408
- response: requestSuccessResponseWithRHSubscriptions,
409
- search: undefined,
410
- },
411
- {
412
- type: 'SUBSCRIPTIONS_QUANTITIES_REQUEST',
413
- },
414
- ];
415
-
416
358
  export const failureActions = [
417
359
  {
418
360
  type: 'SUBSCRIPTIONS_REQUEST',
@@ -106,7 +106,11 @@ class SubscriptionsTable extends Component {
106
106
 
107
107
  getTableProps = () => {
108
108
  const {
109
- subscriptions, emptyState, tableColumns, loadSubscriptions, canManageSubscriptionAllocations,
109
+ subscriptions,
110
+ emptyState,
111
+ tableColumns,
112
+ loadSubscriptions,
113
+ selectionEnabled,
110
114
  } = this.props;
111
115
  const { groupedSubscriptions, rows, editing } = this.state;
112
116
 
@@ -117,8 +121,8 @@ class SubscriptionsTable extends Component {
117
121
  loadSubscriptions,
118
122
  rows,
119
123
  subscriptions,
124
+ selectionEnabled,
120
125
  tableColumns,
121
- canManageSubscriptionAllocations,
122
126
  toggleSubscriptionGroup: this.toggleSubscriptionGroup,
123
127
  inlineEditController: this.getInlineEditController(),
124
128
  selectionController: this.getSelectionController(),
@@ -272,10 +276,11 @@ SubscriptionsTable.propTypes = {
272
276
  loadSubscriptions: PropTypes.func.isRequired,
273
277
  updateQuantity: PropTypes.func.isRequired,
274
278
  emptyState: PropTypes.shape({}).isRequired,
275
- canManageSubscriptionAllocations: PropTypes.bool,
276
279
  subscriptions: PropTypes.shape({
277
280
  loading: PropTypes.bool,
278
281
  availableQuantities: PropTypes.shape({}),
282
+ // Disabling rule as existing code failed due to an eslint-plugin-react update
283
+ // eslint-disable-next-line react/forbid-prop-types
279
284
  results: PropTypes.array,
280
285
  }).isRequired,
281
286
  subscriptionDeleteModalOpen: PropTypes.bool.isRequired,
@@ -284,10 +289,11 @@ SubscriptionsTable.propTypes = {
284
289
  toggleDeleteButton: PropTypes.func.isRequired,
285
290
  selectedRows: PropTypes.instanceOf(Array).isRequired,
286
291
  onSelectedRowsChange: PropTypes.func.isRequired,
292
+ selectionEnabled: PropTypes.bool,
287
293
  };
288
294
 
289
295
  SubscriptionsTable.defaultProps = {
290
- canManageSubscriptionAllocations: false,
296
+ selectionEnabled: false,
291
297
  };
292
298
 
293
299
  export default SubscriptionsTable;
@@ -77,6 +77,7 @@ describe('subscriptions table', () => {
77
77
  emptyState={{}}
78
78
  selectedRows={[]}
79
79
  onSelectedRowsChange={() => {}}
80
+ selectionEnabled
80
81
  />
81
82
  </MemoryRouter>);
82
83
  expect(page.find('#select1').is('[disabled]')).toBe(true);
@@ -2,13 +2,13 @@
2
2
 
3
3
  exports[`subscriptions table should render a loading state 1`] = `
4
4
  <SubscriptionsTable
5
- canManageSubscriptionAllocations={false}
6
5
  emptyState={Object {}}
7
6
  loadSubscriptions={[Function]}
8
7
  onDeleteSubscriptions={[Function]}
9
8
  onSelectedRowsChange={[Function]}
10
9
  onSubscriptionDeleteModalClose={[Function]}
11
10
  selectedRows={Array []}
11
+ selectionEnabled={false}
12
12
  subscriptionDeleteModalOpen={false}
13
13
  subscriptions={
14
14
  Object {
@@ -74,21 +74,6 @@ exports[`subscriptions table should render a table 1`] = `
74
74
  <tr
75
75
  class=""
76
76
  >
77
- <th
78
- aria-label="Select all rows"
79
- class="table-view-pf-select"
80
- >
81
- <label
82
- class="control-label sr-only"
83
- for="selectAll"
84
- >
85
- Select all rows
86
- </label>
87
- <input
88
- id="selectAll"
89
- type="checkbox"
90
- />
91
- </th>
92
77
  <th
93
78
  class=""
94
79
  >
@@ -120,20 +105,6 @@ exports[`subscriptions table should render a table 1`] = `
120
105
  <tr
121
106
  class=""
122
107
  >
123
- <td
124
- class="table-view-pf-select"
125
- >
126
- <label
127
- class="control-label sr-only"
128
- for="select0"
129
- >
130
- Select row
131
- </label>
132
- <input
133
- id="select0"
134
- type="checkbox"
135
- />
136
- </td>
137
108
  <td>
138
109
  <a
139
110
  href="/subscriptions/3/"
@@ -163,21 +134,6 @@ exports[`subscriptions table should render a table 1`] = `
163
134
  <tr
164
135
  class=""
165
136
  >
166
- <td
167
- class="table-view-pf-select"
168
- >
169
- <label
170
- class="control-label sr-only"
171
- for="select1"
172
- >
173
- Select row
174
- </label>
175
- <input
176
- disabled=""
177
- id="select1"
178
- type="checkbox"
179
- />
180
- </td>
181
137
  <td>
182
138
  <a
183
139
  href="/subscriptions/4/"
@@ -224,21 +180,6 @@ exports[`subscriptions table should render subscription name without hyperlink f
224
180
  <tr
225
181
  class=""
226
182
  >
227
- <th
228
- aria-label="Select all rows"
229
- class="table-view-pf-select"
230
- >
231
- <label
232
- class="control-label sr-only"
233
- for="selectAll"
234
- >
235
- Select all rows
236
- </label>
237
- <input
238
- id="selectAll"
239
- type="checkbox"
240
- />
241
- </th>
242
183
  <th
243
184
  class=""
244
185
  >
@@ -270,14 +211,6 @@ exports[`subscriptions table should render subscription name without hyperlink f
270
211
  <tr
271
212
  class=""
272
213
  >
273
- <td
274
- class="table-view-pf-select"
275
- >
276
- <span
277
- aria-hidden="true"
278
- class="fa fa-angle-right collapse-subscription-group-button"
279
- />
280
- </td>
281
214
  <td>
282
215
  hsdfhsdh
283
216
  </td>
@@ -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;
@@ -15,9 +15,9 @@ const Table = ({
15
15
  inlineEditController,
16
16
  rows,
17
17
  editing,
18
+ selectionEnabled,
18
19
  groupedSubscriptions,
19
20
  toggleSubscriptionGroup,
20
- canManageSubscriptionAllocations,
21
21
  }) => {
22
22
  const allSubscriptionResults = subscriptions.results;
23
23
 
@@ -28,18 +28,23 @@ const Table = ({
28
28
 
29
29
  const groupingController = {
30
30
  isCollapseable: ({ rowData }) =>
31
- // the group contains more then one subscription
31
+ // the group contains more than one subscription
32
32
  rowData.collapsible,
33
33
  isCollapsed: ({ rowData }) => !groupedSubscriptions[rowData.product_id].open,
34
34
  toggle: ({ rowData }) => toggleSubscriptionGroup(rowData.product_id),
35
35
  };
36
36
 
37
- const alwaysDisplayColumns = ['select'];
37
+ const alwaysDisplayColumns = [];
38
+
39
+ if (selectionEnabled) {
40
+ alwaysDisplayColumns.push('select');
41
+ }
42
+
38
43
  const columnsDefinition = createSubscriptionsTableSchema(
39
44
  inlineEditController,
40
45
  selectionController,
41
46
  groupingController,
42
- canManageSubscriptionAllocations,
47
+ selectionEnabled,
43
48
  ).filter(column => tableColumns.includes(column.property) ||
44
49
  alwaysDisplayColumns.includes(column.property));
45
50
 
@@ -88,13 +93,14 @@ const Table = ({
88
93
  };
89
94
 
90
95
  Table.propTypes = {
91
- canManageSubscriptionAllocations: PropTypes.bool,
92
96
  emptyState: PropTypes.shape({}).isRequired,
93
97
  tableColumns: PropTypes.arrayOf(PropTypes.string).isRequired,
94
98
  subscriptions: PropTypes.shape({
95
99
  searchIsActive: PropTypes.bool,
96
100
  itemCount: PropTypes.number,
97
101
  pagination: PropTypes.shape({}),
102
+ // Disabling rule as existing code failed due to an eslint-plugin-react update
103
+ // eslint-disable-next-line react/forbid-prop-types
98
104
  results: PropTypes.array,
99
105
  }).isRequired,
100
106
  loadSubscriptions: PropTypes.func.isRequired,
@@ -107,11 +113,7 @@ Table.propTypes = {
107
113
  groupedSubscriptions: PropTypes.shape({}).isRequired,
108
114
  editing: PropTypes.bool.isRequired,
109
115
  rows: PropTypes.arrayOf(PropTypes.object).isRequired,
110
-
111
- };
112
-
113
- Table.defaultProps = {
114
- canManageSubscriptionAllocations: false,
116
+ selectionEnabled: PropTypes.bool.isRequired,
115
117
  };
116
118
 
117
119
  export default Table;
@@ -15,11 +15,14 @@ import {
15
15
  selectSubscriptionsTask,
16
16
  selectActivePermissions,
17
17
  selectTableSettings,
18
+ selectIsTaskPending,
19
+ selectHasUpstreamConnection,
18
20
  } from './SubscriptionsSelectors';
19
- import { selectSimpleContentAccessEnabled } from '../Organizations/OrganizationSelectors';
20
-
21
+ import { selectIsPollingTask } from '../Tasks/TaskSelectors';
22
+ import { selectOrganizationState, selectSimpleContentAccessEnabled } from '../Organizations/OrganizationSelectors';
23
+ import { pingUpstreamSubscriptions } from './UpstreamSubscriptions/UpstreamSubscriptionsActions';
21
24
  import reducer from './SubscriptionReducer';
22
- import { SUBSCRIPTION_TABLE_NAME } from './SubscriptionConstants';
25
+ import { SUBSCRIPTION_TABLE_NAME, SUBSCRIPTIONS } from './SubscriptionConstants';
23
26
  import SubscriptionsPage from './SubscriptionsPage';
24
27
 
25
28
  // map state to props
@@ -32,16 +35,20 @@ const mapStateToProps = (state) => {
32
35
  subscriptionTableSettings,
33
36
  activePermissions: selectActivePermissions(state),
34
37
  simpleContentAccess: selectSimpleContentAccessEnabled(state),
38
+ hasUpstreamConnection: selectHasUpstreamConnection(state),
35
39
  task: selectSubscriptionsTask(state),
40
+ isTaskPending: selectIsTaskPending(state),
41
+ isPollingTask: selectIsPollingTask(state, SUBSCRIPTIONS),
36
42
  searchQuery: selectSearchQuery(state),
37
43
  deleteModalOpened: selectDeleteModalOpened(state),
38
44
  deleteButtonDisabled: selectDeleteButtonDisabled(state),
39
- organization: state.katello.organization,
45
+ organization: selectOrganizationState(state),
40
46
  };
41
47
  };
42
48
 
43
49
  // map action dispatchers to props
44
50
  const actions = {
51
+ pingUpstreamSubscriptions,
45
52
  ...subscriptionActions,
46
53
  ...taskActions,
47
54
  ...settingActions,
@@ -5,8 +5,9 @@ import { stopInterval, withInterval } from 'foremanReact/redux/middlewares/Inter
5
5
  import { foremanTasksApi } from '../../services/api';
6
6
  import { bulkSearchKey, pollTaskKey, taskFinishedToast } from './helpers';
7
7
 
8
- export const toastTaskFinished = task => async dispatch =>
8
+ export const toastTaskFinished = task => async (dispatch) => {
9
9
  dispatch(addToast(taskFinishedToast(task)));
10
+ };
10
11
 
11
12
  const taskBulkSearchParams = params => ({
12
13
  search: Object.entries(propsToSnakeCase(params))
@@ -10,7 +10,7 @@ export const nockInstance = nock('http://localhost');
10
10
 
11
11
  // Calling .done() with nock asserts that the request was fufilled. We use a timeout to ensure
12
12
  // that the component has set up and made the request before the assertion is made.
13
- export const assertNockRequest = (scope, timeout = 2000) => {
13
+ export const assertNockRequest = (scope, timeout = 10000) => {
14
14
  setTimeout(() => {
15
15
  scope.done();
16
16
  }, timeout);
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.16.0.rc1.1
4
+ version: 3.16.0.rc4
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-05-22 00:00:00.000000000 Z
11
+ date: 2020-07-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -218,40 +218,40 @@ dependencies:
218
218
  requirements:
219
219
  - - ">="
220
220
  - !ruby/object:Gem::Version
221
- version: 3.3.0
221
+ version: 3.4.0
222
222
  - - "<"
223
223
  - !ruby/object:Gem::Version
224
- version: 3.4.0
224
+ version: 3.5.0
225
225
  type: :runtime
226
226
  prerelease: false
227
227
  version_requirements: !ruby/object:Gem::Requirement
228
228
  requirements:
229
229
  - - ">="
230
230
  - !ruby/object:Gem::Version
231
- version: 3.3.0
231
+ version: 3.4.0
232
232
  - - "<"
233
233
  - !ruby/object:Gem::Version
234
- version: 3.4.0
234
+ version: 3.5.0
235
235
  - !ruby/object:Gem::Dependency
236
236
  name: pulp_file_client
237
237
  requirement: !ruby/object:Gem::Requirement
238
238
  requirements:
239
239
  - - ">="
240
240
  - !ruby/object:Gem::Version
241
- version: 0.3.0
241
+ version: 1.0.0
242
242
  - - "<"
243
243
  - !ruby/object:Gem::Version
244
- version: 0.4.0
244
+ version: 1.1.0
245
245
  type: :runtime
246
246
  prerelease: false
247
247
  version_requirements: !ruby/object:Gem::Requirement
248
248
  requirements:
249
249
  - - ">="
250
250
  - !ruby/object:Gem::Version
251
- version: 0.3.0
251
+ version: 1.0.0
252
252
  - - "<"
253
253
  - !ruby/object:Gem::Version
254
- version: 0.4.0
254
+ version: 1.1.0
255
255
  - !ruby/object:Gem::Dependency
256
256
  name: pulp_ansible_client
257
257
  requirement: !ruby/object:Gem::Requirement
@@ -278,47 +278,47 @@ dependencies:
278
278
  requirements:
279
279
  - - ">="
280
280
  - !ruby/object:Gem::Version
281
- version: 1.3.0
281
+ version: 1.4.0
282
282
  - - "<"
283
283
  - !ruby/object:Gem::Version
284
- version: 1.4.0
284
+ version: 1.5.0
285
285
  type: :runtime
286
286
  prerelease: false
287
287
  version_requirements: !ruby/object:Gem::Requirement
288
288
  requirements:
289
289
  - - ">="
290
290
  - !ruby/object:Gem::Version
291
- version: 1.3.0
291
+ version: 1.4.0
292
292
  - - "<"
293
293
  - !ruby/object:Gem::Version
294
- version: 1.4.0
294
+ version: 1.5.0
295
295
  - !ruby/object:Gem::Dependency
296
296
  name: pulp_rpm_client
297
297
  requirement: !ruby/object:Gem::Requirement
298
298
  requirements:
299
299
  - - ">="
300
300
  - !ruby/object:Gem::Version
301
- version: 3.3.0
301
+ version: 3.4.0
302
302
  - - "<"
303
303
  - !ruby/object:Gem::Version
304
- version: 3.4.0
304
+ version: 3.5.0
305
305
  type: :runtime
306
306
  prerelease: false
307
307
  version_requirements: !ruby/object:Gem::Requirement
308
308
  requirements:
309
309
  - - ">="
310
310
  - !ruby/object:Gem::Version
311
- version: 3.3.0
311
+ version: 3.4.0
312
312
  - - "<"
313
313
  - !ruby/object:Gem::Version
314
- version: 3.4.0
314
+ version: 3.5.0
315
315
  - !ruby/object:Gem::Dependency
316
316
  name: pulp_2to3_migration_client
317
317
  requirement: !ruby/object:Gem::Requirement
318
318
  requirements:
319
- - - ">"
319
+ - - ">="
320
320
  - !ruby/object:Gem::Version
321
- version: '0.1'
321
+ version: 0.2.0b2
322
322
  - - "<"
323
323
  - !ruby/object:Gem::Version
324
324
  version: 0.3.0
@@ -326,12 +326,26 @@ dependencies:
326
326
  prerelease: false
327
327
  version_requirements: !ruby/object:Gem::Requirement
328
328
  requirements:
329
- - - ">"
329
+ - - ">="
330
330
  - !ruby/object:Gem::Version
331
- version: '0.1'
331
+ version: 0.2.0b2
332
332
  - - "<"
333
333
  - !ruby/object:Gem::Version
334
334
  version: 0.3.0
335
+ - !ruby/object:Gem::Dependency
336
+ name: pulp_certguard_client
337
+ requirement: !ruby/object:Gem::Requirement
338
+ requirements:
339
+ - - "<"
340
+ - !ruby/object:Gem::Version
341
+ version: '2.0'
342
+ type: :runtime
343
+ prerelease: false
344
+ version_requirements: !ruby/object:Gem::Requirement
345
+ requirements:
346
+ - - "<"
347
+ - !ruby/object:Gem::Version
348
+ version: '2.0'
335
349
  - !ruby/object:Gem::Dependency
336
350
  name: deface
337
351
  requirement: !ruby/object:Gem::Requirement
@@ -761,7 +775,7 @@ files:
761
775
  - app/lib/actions/katello/activation_key/reassign.rb
762
776
  - app/lib/actions/katello/activation_key/update.rb
763
777
  - app/lib/actions/katello/applicability/host/generate.rb
764
- - app/lib/actions/katello/applicability/hosts/generate.rb
778
+ - app/lib/actions/katello/applicability/hosts/bulk_generate.rb
765
779
  - app/lib/actions/katello/applicability/repository/regenerate.rb
766
780
  - app/lib/actions/katello/capsule_content/refresh_repos.rb
767
781
  - app/lib/actions/katello/capsule_content/sync.rb
@@ -874,6 +888,7 @@ files:
874
888
  - app/lib/actions/katello/repository/sync_hook.rb
875
889
  - app/lib/actions/katello/repository/update.rb
876
890
  - app/lib/actions/katello/repository/update_content_urls.rb
891
+ - app/lib/actions/katello/repository/update_cv_repo_cert_guard.rb
877
892
  - app/lib/actions/katello/repository/update_http_proxy_details.rb
878
893
  - app/lib/actions/katello/repository/update_metadata_sync.rb
879
894
  - app/lib/actions/katello/repository/update_redhat_repository.rb
@@ -961,6 +976,7 @@ files:
961
976
  - app/lib/actions/pulp/repository_group/create.rb
962
977
  - app/lib/actions/pulp/repository_group/delete.rb
963
978
  - app/lib/actions/pulp/repository_group/export.rb
979
+ - app/lib/actions/pulp3/ContentGuard/refresh.rb
964
980
  - app/lib/actions/pulp3/abstract.rb
965
981
  - app/lib/actions/pulp3/abstract_async_task.rb
966
982
  - app/lib/actions/pulp3/capsule_content/generate_metadata.rb
@@ -1007,6 +1023,7 @@ files:
1007
1023
  - app/lib/actions/pulp3/repository/save_publication.rb
1008
1024
  - app/lib/actions/pulp3/repository/save_version.rb
1009
1025
  - app/lib/actions/pulp3/repository/sync.rb
1026
+ - app/lib/actions/pulp3/repository/update_cv_repository_cert_guard.rb
1010
1027
  - app/lib/actions/pulp3/repository/update_distributions.rb
1011
1028
  - app/lib/actions/pulp3/repository/update_remote.rb
1012
1029
  - app/lib/actions/pulp3/repository/update_repository.rb
@@ -1024,6 +1041,7 @@ files:
1024
1041
  - app/lib/katello/foreman.rb
1025
1042
  - app/lib/katello/http_resource.rb
1026
1043
  - app/lib/katello/lazy_accessor.rb
1044
+ - app/lib/katello/logging.rb
1027
1045
  - app/lib/katello/mapping.rb
1028
1046
  - app/lib/katello/messaging/connection.rb
1029
1047
  - app/lib/katello/messaging/received_message.rb
@@ -1063,6 +1081,7 @@ files:
1063
1081
  - app/lib/katello/util/package_filter.rb
1064
1082
  - app/lib/katello/util/path_with_substitutions.rb
1065
1083
  - app/lib/katello/util/proxy_uri.rb
1084
+ - app/lib/katello/util/pulpcore_content_filters.rb
1066
1085
  - app/lib/katello/util/report_table.rb
1067
1086
  - app/lib/katello/util/search.rb
1068
1087
  - app/lib/katello/util/support.rb
@@ -1210,6 +1229,7 @@ files:
1210
1229
  - app/models/katello/host_collection_hosts.rb
1211
1230
  - app/models/katello/host_installed_deb.rb
1212
1231
  - app/models/katello/host_installed_package.rb
1232
+ - app/models/katello/host_queue_element.rb
1213
1233
  - app/models/katello/host_tracer.rb
1214
1234
  - app/models/katello/installed_deb.rb
1215
1235
  - app/models/katello/installed_package.rb
@@ -1235,6 +1255,7 @@ files:
1235
1255
  - app/models/katello/product_content.rb
1236
1256
  - app/models/katello/provider.rb
1237
1257
  - app/models/katello/proxy_association_owner.rb
1258
+ - app/models/katello/pulp3/content_guard.rb
1238
1259
  - app/models/katello/pulp3/distribution_reference.rb
1239
1260
  - app/models/katello/pulp3/repository_reference.rb
1240
1261
  - app/models/katello/pulp_sync_status.rb
@@ -1299,6 +1320,7 @@ files:
1299
1320
  - app/services/katello/abstract/pulp/content.rb
1300
1321
  - app/services/katello/applicability/applicable_content_helper.rb
1301
1322
  - app/services/katello/applicable_content_helper.rb
1323
+ - app/services/katello/applicable_host_queue.rb
1302
1324
  - app/services/katello/authentication/client_authentication.rb
1303
1325
  - app/services/katello/candlepin/consumer.rb
1304
1326
  - app/services/katello/candlepin/event_handler.rb
@@ -1348,6 +1370,7 @@ files:
1348
1370
  - app/services/katello/pulp/yum_metadata_file.rb
1349
1371
  - app/services/katello/pulp3/ansible_collection.rb
1350
1372
  - app/services/katello/pulp3/api/ansible_collection.rb
1373
+ - app/services/katello/pulp3/api/content_guard.rb
1351
1374
  - app/services/katello/pulp3/api/core.rb
1352
1375
  - app/services/katello/pulp3/api/docker.rb
1353
1376
  - app/services/katello/pulp3/api/file.rb
@@ -1395,6 +1418,7 @@ files:
1395
1418
  - app/services/katello/ui_notifications/subscriptions/manifest_refresh_error.rb
1396
1419
  - app/services/katello/ui_notifications/subscriptions/manifest_refresh_success.rb
1397
1420
  - app/services/katello/ui_notifications/task_notification.rb
1421
+ - app/services/katello/upstream_connection_checker.rb
1398
1422
  - app/views/common/400.html
1399
1423
  - app/views/dashboard/_content_views_widget.html.erb
1400
1424
  - app/views/dashboard/_errata_widget.html.erb
@@ -1598,6 +1622,9 @@ files:
1598
1622
  - app/views/katello/api/v2/repository_sets/show.json.rabl
1599
1623
  - app/views/katello/api/v2/root/resource_list.json.rabl
1600
1624
  - app/views/katello/api/v2/smart_proxies/pulp_info.json.rabl
1625
+ - app/views/katello/api/v2/srpms/backend.json.rabl
1626
+ - app/views/katello/api/v2/srpms/base.json.rabl
1627
+ - app/views/katello/api/v2/srpms/compare.json.rabl
1601
1628
  - app/views/katello/api/v2/srpms/index.json.rabl
1602
1629
  - app/views/katello/api/v2/srpms/show.json.rabl
1603
1630
  - app/views/katello/api/v2/subscription_facet/base.json.rabl
@@ -1952,9 +1979,12 @@ files:
1952
1979
  - db/migrate/20200213184848_create_evr_type.rb
1953
1980
  - db/migrate/20200304201026_create_katello_module_stream_rpms.rb
1954
1981
  - db/migrate/20200402130013_add_repsoitory_docker_meta_tag_f_key.rb
1982
+ - db/migrate/20200407171926_create_content_guard.rb
1955
1983
  - db/migrate/20200429153103_installed_package_bad_nvrea.rb
1956
1984
  - db/migrate/20200501155054_installed_package_unique_nvrea.rb
1957
1985
  - db/migrate/20200506163345_add_applicability_indicesto_katello_host_available_module_streams.rb
1986
+ - db/migrate/20200511204005_create_katello_host_queue_elements.rb
1987
+ - db/migrate/20200526200422_encrypt_root_repository_upstream_password.rb
1958
1988
  - db/seeds.d/101-locations.rb
1959
1989
  - db/seeds.d/102-organizations.rb
1960
1990
  - db/seeds.d/104-proxy.rb
@@ -4766,7 +4796,7 @@ files:
4766
4796
  - webpack/scenes/Subscriptions/SubscriptionsPage.scss
4767
4797
  - webpack/scenes/Subscriptions/SubscriptionsSelectors.js
4768
4798
  - webpack/scenes/Subscriptions/UpstreamSubscriptions/UpstreamSubscriptionsActions.js
4769
- - webpack/scenes/Subscriptions/UpstreamSubscriptions/UpstreamSubscriptionsContstants.js
4799
+ - webpack/scenes/Subscriptions/UpstreamSubscriptions/UpstreamSubscriptionsConstants.js
4770
4800
  - webpack/scenes/Subscriptions/UpstreamSubscriptions/UpstreamSubscriptionsPage.js
4771
4801
  - webpack/scenes/Subscriptions/UpstreamSubscriptions/UpstreamSubscriptionsReducer.js
4772
4802
  - webpack/scenes/Subscriptions/UpstreamSubscriptions/UpstreamSubscriptionsTableSchema.js