katello 3.15.0.rc1.3 → 3.15.0.rc2

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 (65) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/katello/api/v2/api_controller.rb +5 -0
  3. data/app/controllers/katello/api/v2/host_packages_controller.rb +1 -0
  4. data/app/controllers/katello/api/v2/hosts_bulk_actions_controller.rb +1 -1
  5. data/app/lib/actions/katello/content_view/destroy.rb +1 -0
  6. data/app/lib/actions/katello/host/erratum/applicable_errata_install.rb +1 -1
  7. data/app/lib/actions/pulp3/content_view/delete_repository_references.rb +26 -0
  8. data/app/lib/actions/pulp3/orchestration/repository/delete.rb +8 -1
  9. data/app/lib/actions/pulp3/repository/delete_version.rb +20 -0
  10. data/app/lib/katello/concerns/base_template_scope_extensions.rb +23 -1
  11. data/app/lib/katello/errors.rb +2 -0
  12. data/app/models/katello/repository.rb +44 -9
  13. data/app/models/setting/content.rb +8 -2
  14. data/app/services/katello/pulp3/migration.rb +19 -4
  15. data/app/services/katello/pulp3/repository.rb +4 -0
  16. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/activation-key-details.controller.js +13 -0
  17. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/activation-key-subscriptions.controller.js +4 -2
  18. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/views/activation-key-subscriptions.html +11 -8
  19. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/common/views/katello-agent-notice.html +8 -0
  20. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/views/content-hosts-bulk-errata-modal.html +2 -0
  21. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/views/content-hosts-bulk-packages-modal.html +2 -0
  22. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/views/content-host-errata.html +2 -0
  23. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/views/content-host-packages-actions.html +1 -0
  24. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/views/content-host-packages-applicable.html +2 -1
  25. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/views/content-host-packages-installed.html +4 -2
  26. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/content-host-details.controller.js +10 -1
  27. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/views/content-host-info.html +6 -3
  28. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/views/content-host-subscriptions.html +4 -2
  29. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/views/register-client.html +9 -1
  30. data/lib/katello/tasks/pulp3_content_switchover.rake +2 -1
  31. data/lib/katello/version.rb +1 -1
  32. data/webpack/__mocks__/foremanReact/redux/API.js +6 -0
  33. data/webpack/__mocks__/foremanReact/redux/middlewares/IntervalMiddleware/IntervalSelectors.js +6 -0
  34. data/webpack/__mocks__/foremanReact/redux/middlewares/IntervalMiddleware/index.js +11 -0
  35. data/webpack/scenes/Subscriptions/Manifest/ManifestHistoryReducer.js +0 -12
  36. data/webpack/scenes/Subscriptions/Manifest/index.js +0 -1
  37. data/webpack/scenes/Subscriptions/SubscriptionActions.js +49 -10
  38. data/webpack/scenes/Subscriptions/SubscriptionConstants.js +10 -5
  39. data/webpack/scenes/Subscriptions/SubscriptionReducer.js +37 -43
  40. data/webpack/scenes/Subscriptions/SubscriptionsPage.js +55 -131
  41. data/webpack/scenes/Subscriptions/SubscriptionsSelectors.js +2 -5
  42. data/webpack/scenes/Subscriptions/UpstreamSubscriptions/UpstreamSubscriptionsPage.js +1 -1
  43. data/webpack/scenes/Subscriptions/__tests__/SubscriptionsActions.test.js +75 -8
  44. data/webpack/scenes/Subscriptions/__tests__/SubscriptionsPage.test.js +35 -8
  45. data/webpack/scenes/Subscriptions/__tests__/SubscriptionsReducer.test.js +58 -46
  46. data/webpack/scenes/Subscriptions/__tests__/SubscriptionsSelectors.test.js +3 -5
  47. data/webpack/scenes/Subscriptions/__tests__/__snapshots__/SubscriptionsActions.test.js.snap +85 -9
  48. data/webpack/scenes/Subscriptions/__tests__/__snapshots__/SubscriptionsPage.test.js.snap +0 -2
  49. data/webpack/scenes/Subscriptions/__tests__/__snapshots__/SubscriptionsReducer.test.js.snap +111 -124
  50. data/webpack/scenes/Subscriptions/__tests__/__snapshots__/SubscriptionsSelectors.test.js.snap +2 -12
  51. data/webpack/scenes/Subscriptions/__tests__/subscriptions.fixtures.js +2 -8
  52. data/webpack/scenes/Subscriptions/components/SubscriptionsTable/SubscriptionsTable.js +1 -16
  53. data/webpack/scenes/Subscriptions/components/SubscriptionsTable/__tests__/__snapshots__/SubscriptionsTable.test.js.snap +1 -6
  54. data/webpack/scenes/Subscriptions/components/SubscriptionsTable/components/Dialogs/UpdateDialog.js +0 -25
  55. data/webpack/scenes/Subscriptions/index.js +2 -5
  56. data/webpack/scenes/Tasks/TaskActions.js +34 -104
  57. data/webpack/scenes/Tasks/TaskSelectors.js +7 -0
  58. data/webpack/scenes/Tasks/__tests__/TaskActions.test.js +17 -154
  59. data/webpack/scenes/Tasks/__tests__/TaskSelectors.test.js +21 -0
  60. data/webpack/scenes/Tasks/__tests__/__snapshots__/TaskActions.test.js.snap +57 -0
  61. data/webpack/scenes/Tasks/__tests__/__snapshots__/TaskSelectors.test.js.snap +9 -0
  62. data/webpack/scenes/Tasks/__tests__/task.fixtures.js +0 -82
  63. data/webpack/scenes/Tasks/helpers.js +13 -6
  64. metadata +12 -3
  65. data/webpack/scenes/Tasks/TaskConstants.js +0 -9
@@ -0,0 +1,21 @@
1
+ import { testSelectorsSnapshotWithFixtures } from 'react-redux-test-utils';
2
+ import {
3
+ selectIsPollingTask,
4
+ selectIsPollingTasks,
5
+ } from '../TaskSelectors';
6
+
7
+ const state = {
8
+ intervals: {
9
+ TEST_POLL_TASK: 1,
10
+ TEST_TASK_SEARCH: 3,
11
+ },
12
+ };
13
+
14
+ const fixtures = {
15
+ 'selects if polling a task': () => selectIsPollingTask(state, 'TEST'),
16
+ 'selects if not polling a task': () => selectIsPollingTask({}),
17
+ 'selects if polling tasks': () => selectIsPollingTasks(state, 'TEST'),
18
+ 'selects if not polling tasks': () => selectIsPollingTasks({}),
19
+ };
20
+
21
+ describe('Task selectors', () => testSelectorsSnapshotWithFixtures(fixtures));
@@ -0,0 +1,57 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`task actions can poll a task 1`] = `
4
+ Object {
5
+ "interval": 1000,
6
+ "key": "TEST_POLL_TASK",
7
+ "type": "API_GET",
8
+ "url": "/foreman_tasks/api/tasks/12345",
9
+ }
10
+ `;
11
+
12
+ exports[`task actions can search tasks 1`] = `
13
+ Object {
14
+ "interval": 1000,
15
+ "key": "TEST_TASK_SEARCH",
16
+ "params": Object {
17
+ "search": "",
18
+ },
19
+ "type": "API_GET",
20
+ "url": "/foreman_tasks/api/tasks",
21
+ }
22
+ `;
23
+
24
+ exports[`task actions can stop polling a task 1`] = `
25
+ Object {
26
+ "key": "TEST_POLL_TASK",
27
+ "type": "STOP_INTERVAL",
28
+ }
29
+ `;
30
+
31
+ exports[`task actions can stop searching tasks 1`] = `
32
+ Object {
33
+ "key": "TEST_TASK_SEARCH",
34
+ "type": "STOP_INTERVAL",
35
+ }
36
+ `;
37
+
38
+ exports[`task actions can toast a finished task 1`] = `
39
+ Array [
40
+ Array [
41
+ Object {
42
+ "payload": Object {
43
+ "message": Object {
44
+ "link": Object {
45
+ "children": "Go to task page",
46
+ "href": "/foreman_tasks/tasks/eb1b6271-8a69-4d98-84fc-bea06ddcc166/",
47
+ },
48
+ "message": "Task Refresh Manifest completed with a result of pending.
49
+ ",
50
+ "type": "pending",
51
+ },
52
+ },
53
+ "type": "TOASTS_ADD",
54
+ },
55
+ ],
56
+ ]
57
+ `;
@@ -0,0 +1,9 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`Task selectors selects if not polling a task 1`] = `false`;
4
+
5
+ exports[`Task selectors selects if not polling tasks 1`] = `false`;
6
+
7
+ exports[`Task selectors selects if polling a task 1`] = `true`;
8
+
9
+ exports[`Task selectors selects if polling tasks 1`] = `true`;
@@ -1,15 +1,5 @@
1
1
  import Immutable from 'seamless-immutable';
2
2
 
3
- export const initialState = Immutable({
4
- loading: false,
5
- results: [],
6
- });
7
-
8
- export const loadingState = Immutable({
9
- loading: true,
10
- results: [],
11
- });
12
-
13
3
  export const getTaskSuccessResponse = Immutable({
14
4
  id: 'eb1b6271-8a69-4d98-84fc-bea06ddcc166',
15
5
  label: 'Actions::Katello::Organization::ManifestRefresh',
@@ -59,75 +49,3 @@ export const getTaskPendingResponse = {
59
49
  ...getTaskSuccessResponse,
60
50
  pending: true,
61
51
  };
62
-
63
- export const bulkSearchSuccessResponse = Immutable([
64
- {
65
- search_params: {
66
- search_id: 'pollBulkSearch',
67
- type: 'all',
68
- active_only: true,
69
- action_types: [
70
- 'Actions::Katello::Organization::ManifestImport',
71
- 'Actions::Katello::Organization::ManifestRefresh',
72
- 'Actions::Katello::Organization::ManifestDelete',
73
- ],
74
- },
75
- results: [getTaskSuccessResponse],
76
- },
77
- ]);
78
-
79
- export const successState = Immutable({
80
- loading: false,
81
- results: bulkSearchSuccessResponse,
82
- });
83
-
84
- export const errorState = Immutable({
85
- loading: false,
86
- error: 'Unable to process request.',
87
- results: [],
88
- });
89
-
90
- export const bulkSearchSuccessActions = [
91
- {
92
- type: 'TASK_BULK_SEARCH_REQUEST',
93
- },
94
- {
95
- response: bulkSearchSuccessResponse,
96
- type: 'TASK_BULK_SEARCH_SUCCESS',
97
- },
98
- ];
99
-
100
- export const buildBulkSearchFailureActions = (errorCode = 422) => ([
101
- {
102
- type: 'TASK_BULK_SEARCH_REQUEST',
103
- },
104
- {
105
- result: new Error(`Request failed with status code ${errorCode}`),
106
- type: 'TASK_BULK_SEARCH_FAILURE',
107
- },
108
- ]);
109
-
110
- export const buildTaskSuccessActions = response => ([
111
- {
112
- type: 'GET_TASK_REQUEST',
113
- },
114
- {
115
- response,
116
- type: 'GET_TASK_SUCCESS',
117
- },
118
- ]);
119
-
120
- export const getTaskSuccessActions = buildTaskSuccessActions(getTaskSuccessResponse);
121
-
122
- export const getTaskPendingActions = buildTaskSuccessActions(getTaskPendingResponse);
123
-
124
- export const buildTaskFailureActions = (errorCode = 422) => ([
125
- {
126
- type: 'GET_TASK_REQUEST',
127
- },
128
- {
129
- result: new Error(`Request failed with status code ${errorCode}`),
130
- type: 'GET_TASK_FAILURE',
131
- },
132
- ]);
133
-
@@ -2,6 +2,9 @@ import React from 'react';
2
2
  import { translate as __ } from 'foremanReact/common/I18n';
3
3
  import { urlBuilder } from 'foremanReact/common/urlHelpers';
4
4
 
5
+ export const bulkSearchKey = key => `${key}_TASK_SEARCH`;
6
+ export const pollTaskKey = key => `${key}_POLL_TASK`;
7
+
5
8
  const link = id => ({
6
9
  children: __('Go to task page'),
7
10
  href: urlBuilder('foreman_tasks/tasks', '', id),
@@ -27,15 +30,19 @@ export const renderTaskStartedToast = (task) => {
27
30
  });
28
31
  };
29
32
 
30
- export const renderTaskFinishedToast = (task) => {
31
- if (!task) return;
32
-
33
- const message = __(`Task ${task.action} completed with a result of ${task.result}.
33
+ export const taskFinishedToast = (task) => {
34
+ const message = __(`Task ${task.humanized.action} completed with a result of ${task.result}.
34
35
  ${task.errors ? getErrors(task) : ''}`);
35
36
 
36
- window.tfm.toastNotifications.notify({
37
+ return {
37
38
  message,
38
39
  type: task.result,
39
40
  link: link(task.id),
40
- });
41
+ };
42
+ };
43
+
44
+ export const renderTaskFinishedToast = (task) => {
45
+ if (!task) return;
46
+
47
+ window.tfm.toastNotifications.notify(taskFinishedToast(task));
41
48
  };
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.0.rc1.3
4
+ version: 3.15.0.rc2
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-03-25 00:00:00.000000000 Z
11
+ date: 2020-03-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -932,6 +932,7 @@ files:
932
932
  - app/lib/actions/pulp3/capsule_content/refresh_distribution.rb
933
933
  - app/lib/actions/pulp3/capsule_content/sync.rb
934
934
  - app/lib/actions/pulp3/content_migration.rb
935
+ - app/lib/actions/pulp3/content_view/delete_repository_references.rb
935
936
  - app/lib/actions/pulp3/import_migration.rb
936
937
  - app/lib/actions/pulp3/orchestration/orphan_cleanup/remove_orphans.rb
937
938
  - app/lib/actions/pulp3/orchestration/repository/copy_all_units.rb
@@ -958,6 +959,7 @@ files:
958
959
  - app/lib/actions/pulp3/repository/delete.rb
959
960
  - app/lib/actions/pulp3/repository/delete_distributions.rb
960
961
  - app/lib/actions/pulp3/repository/delete_remote.rb
962
+ - app/lib/actions/pulp3/repository/delete_version.rb
961
963
  - app/lib/actions/pulp3/repository/import_upload.rb
962
964
  - app/lib/actions/pulp3/repository/presenters/abstract_sync_presenter.rb
963
965
  - app/lib/actions/pulp3/repository/presenters/content_unit_presenter.rb
@@ -3586,6 +3588,7 @@ files:
3586
3588
  - engines/bastion_katello/app/assets/javascripts/bastion_katello/common/common.module.js
3587
3589
  - engines/bastion_katello/app/assets/javascripts/bastion_katello/common/module-stream-actions.service.js
3588
3590
  - engines/bastion_katello/app/assets/javascripts/bastion_katello/common/select-action-dropdown.directive.js
3591
+ - engines/bastion_katello/app/assets/javascripts/bastion_katello/common/views/katello-agent-notice.html
3589
3592
  - engines/bastion_katello/app/assets/javascripts/bastion_katello/common/views/registration.html
3590
3593
  - engines/bastion_katello/app/assets/javascripts/bastion_katello/common/views/select-action-dropdown.html
3591
3594
  - engines/bastion_katello/app/assets/javascripts/bastion_katello/common/views/subscription-add-or-remove.html
@@ -4257,7 +4260,10 @@ files:
4257
4260
  - webpack/__mocks__/foremanReact/components/common/ModalProgressBar.js
4258
4261
  - webpack/__mocks__/foremanReact/components/common/table.js
4259
4262
  - webpack/__mocks__/foremanReact/redux.js
4263
+ - webpack/__mocks__/foremanReact/redux/API.js
4260
4264
  - webpack/__mocks__/foremanReact/redux/actions/toasts.js
4265
+ - webpack/__mocks__/foremanReact/redux/middlewares/IntervalMiddleware/IntervalSelectors.js
4266
+ - webpack/__mocks__/foremanReact/redux/middlewares/IntervalMiddleware/index.js
4261
4267
  - webpack/common_index.js
4262
4268
  - webpack/components/Content/ContentPage.js
4263
4269
  - webpack/components/Content/ContentTable.js
@@ -4609,8 +4615,11 @@ files:
4609
4615
  - webpack/scenes/Subscriptions/components/SubscriptionsToolbar/index.js
4610
4616
  - webpack/scenes/Subscriptions/index.js
4611
4617
  - webpack/scenes/Tasks/TaskActions.js
4612
- - webpack/scenes/Tasks/TaskConstants.js
4618
+ - webpack/scenes/Tasks/TaskSelectors.js
4613
4619
  - webpack/scenes/Tasks/__tests__/TaskActions.test.js
4620
+ - webpack/scenes/Tasks/__tests__/TaskSelectors.test.js
4621
+ - webpack/scenes/Tasks/__tests__/__snapshots__/TaskActions.test.js.snap
4622
+ - webpack/scenes/Tasks/__tests__/__snapshots__/TaskSelectors.test.js.snap
4614
4623
  - webpack/scenes/Tasks/__tests__/task.fixtures.js
4615
4624
  - webpack/scenes/Tasks/helpers.js
4616
4625
  - webpack/services/api/index.js
@@ -1,9 +0,0 @@
1
- export const GET_TASK_REQUEST = 'GET_TASK_REQUEST';
2
- export const GET_TASK_SUCCESS = 'GET_TASK_SUCCESS';
3
- export const GET_TASK_FAILURE = 'GET_TASK_FAILURE';
4
-
5
- export const TASK_BULK_SEARCH_REQUEST = 'TASK_BULK_SEARCH_REQUEST';
6
- export const TASK_BULK_SEARCH_SUCCESS = 'TASK_BULK_SEARCH_SUCCESS';
7
- export const TASK_BULK_SEARCH_FAILURE = 'TASK_BULK_SEARCH_FAILURE';
8
- export const RESET_TASKS = 'RESET_TASKS';
9
- export const POLL_TASK_INTERVAL = 5000;