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
@@ -16,5 +16,16 @@ export const selectActivePermissions = state =>
16
16
  export const selectSubscriptionsTask = state =>
17
17
  selectSubscriptionsState(state).task;
18
18
 
19
+ export const selectIsTaskPending = (state) => {
20
+ const task = selectSubscriptionsTask(state);
21
+ if (task) {
22
+ return task.pending || task.result === 'pending';
23
+ }
24
+ return false;
25
+ };
26
+
19
27
  export const selectTableSettings = (state, tableName) =>
20
28
  state.katello.settings.tables[tableName] || undefined;
29
+
30
+ export const selectHasUpstreamConnection = state =>
31
+ selectSubscriptionsState(state).hasUpstreamConnection;
@@ -10,7 +10,21 @@ import {
10
10
  SAVE_UPSTREAM_SUBSCRIPTIONS_REQUEST,
11
11
  SAVE_UPSTREAM_SUBSCRIPTIONS_SUCCESS,
12
12
  SAVE_UPSTREAM_SUBSCRIPTIONS_FAILURE,
13
- } from './UpstreamSubscriptionsContstants';
13
+ PING_UPSTREAM_SUBSCRIPTIONS_SUCCESS,
14
+ PING_UPSTREAM_SUBSCRIPTIONS_FAILURE,
15
+ } from './UpstreamSubscriptionsConstants';
16
+
17
+ export const pingUpstreamSubscriptions = () => async (dispatch) => {
18
+ try {
19
+ const { data } = await api.get(`/organizations/${orgId()}/upstream_subscriptions/ping`);
20
+ return dispatch({
21
+ type: PING_UPSTREAM_SUBSCRIPTIONS_SUCCESS,
22
+ payload: data,
23
+ });
24
+ } catch (error) {
25
+ return dispatch(apiError(PING_UPSTREAM_SUBSCRIPTIONS_FAILURE, error));
26
+ }
27
+ };
14
28
 
15
29
  export const loadUpstreamSubscriptions = (extendedParams = {}) => async (dispatch) => {
16
30
  dispatch({ type: UPSTREAM_SUBSCRIPTIONS_REQUEST });
@@ -5,3 +5,6 @@ export const UPSTREAM_SUBSCRIPTIONS_FAILURE = 'UPSTREAM_SUBSCRIPTIONS_FAILURE';
5
5
  export const SAVE_UPSTREAM_SUBSCRIPTIONS_REQUEST = 'SAVE_UPSTREAM_SUBSCRIPTIONS_REQUEST';
6
6
  export const SAVE_UPSTREAM_SUBSCRIPTIONS_SUCCESS = 'SAVE_UPSTREAM_SUBSCRIPTIONS_SUCCESS';
7
7
  export const SAVE_UPSTREAM_SUBSCRIPTIONS_FAILURE = 'SAVE_UPSTREAM_SUBSCRIPTIONS_FAILURE';
8
+
9
+ export const PING_UPSTREAM_SUBSCRIPTIONS_SUCCESS = 'PING_UPSTREAM_SUBSCRIPTIONS_SUCCESS';
10
+ export const PING_UPSTREAM_SUBSCRIPTIONS_FAILURE = 'PING_UPSTREAM_SUBSCRIPTIONS_FAILURE';
@@ -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({
@@ -7,7 +7,7 @@ import {
7
7
  SAVE_UPSTREAM_SUBSCRIPTIONS_REQUEST,
8
8
  SAVE_UPSTREAM_SUBSCRIPTIONS_SUCCESS,
9
9
  SAVE_UPSTREAM_SUBSCRIPTIONS_FAILURE,
10
- } from './UpstreamSubscriptionsContstants';
10
+ } from './UpstreamSubscriptionsConstants';
11
11
 
12
12
  const initialState = initialApiState;
13
13
 
@@ -1,4 +1,4 @@
1
- import * as types from '../UpstreamSubscriptionsContstants';
1
+ import * as types from '../UpstreamSubscriptionsConstants';
2
2
 
3
3
  import {
4
4
  initialState,
@@ -5,9 +5,7 @@ import { testActionSnapshotWithFixtures } from 'react-redux-test-utils';
5
5
  import { mockRequest, mockErrorRequest, mockReset } from '../../../mockRequest';
6
6
  import {
7
7
  requestSuccessResponse,
8
- requestSuccessResponseWithRHSubscriptions,
9
8
  successActions,
10
- successActionsWithQuantityLoad,
11
9
  failureActions,
12
10
  updateQuantitySuccessActions,
13
11
  updateQuantityFailureActions,
@@ -18,7 +16,8 @@ import {
18
16
  loadTableColumnsSuccessAction,
19
17
  } from './subscriptions.fixtures';
20
18
  import {
21
- handleTask,
19
+ handleFinishedTask,
20
+ handleStartTask,
22
21
  pollTasks,
23
22
  cancelPollTasks,
24
23
  resetTasks,
@@ -33,7 +32,7 @@ import {
33
32
  enableDeleteButton,
34
33
  } from '../SubscriptionActions';
35
34
 
36
- import { getTaskPendingResponse, getTaskSuccessResponse } from '../../Tasks/__tests__/task.fixtures';
35
+ import { getTaskSuccessResponse } from '../../Tasks/__tests__/task.fixtures';
37
36
 
38
37
  const mockStore = configureMockStore([thunk]);
39
38
  const store = mockStore(Immutable({
@@ -77,17 +76,6 @@ describe('subscription actions', () => {
77
76
  expect(store.getActions()).toEqual(successActions);
78
77
  },
79
78
  );
80
- it(
81
- 'creates SUBSCRIPTIONS_REQUEST and triggers loadAvailableQuantities when there is some RH subscription',
82
- async () => {
83
- mockRequest({
84
- url: '/katello/api/v2/subscriptions',
85
- response: requestSuccessResponseWithRHSubscriptions,
86
- });
87
- await store.dispatch(loadSubscriptions());
88
- expect(store.getActions()).toEqual(successActionsWithQuantityLoad);
89
- },
90
- );
91
79
  });
92
80
 
93
81
  describe('updateQuantity', () => {
@@ -159,27 +147,15 @@ describe('subscription actions', () => {
159
147
  );
160
148
  });
161
149
 
162
- describe('handleTask', () => {
163
- describe('when not polling a task', () => {
164
- it('starts polling the task', async () => {
165
- await store.dispatch(handleTask(getTaskSuccessResponse));
166
-
167
- expect(store.getActions()).toMatchSnapshot();
168
- });
169
- });
150
+ describe('handleStartTask', () => {
151
+ it('starts polling the task', async () => {
152
+ await store.dispatch(handleStartTask(getTaskSuccessResponse));
170
153
 
171
- it('does nothing if already polling and task is pending', async () => {
172
- const pollStore = configureMockStore([thunk])({
173
- intervals: {
174
- SUBSCRIPTIONS_POLL_TASK: 5,
175
- },
176
- });
177
-
178
- await pollStore.dispatch(handleTask(getTaskPendingResponse));
179
-
180
- expect(pollStore.getActions()).toMatchSnapshot();
154
+ expect(store.getActions()).toMatchSnapshot();
181
155
  });
156
+ });
182
157
 
158
+ describe('handleFinishedTask', () => {
183
159
  it('handles a finished task', async () => {
184
160
  const pollStore = configureMockStore([thunk])({
185
161
  intervals: {
@@ -187,7 +163,7 @@ describe('subscription actions', () => {
187
163
  },
188
164
  });
189
165
 
190
- await pollStore.dispatch(handleTask(getTaskSuccessResponse));
166
+ await pollStore.dispatch(handleFinishedTask(getTaskSuccessResponse));
191
167
 
192
168
  expect(pollStore.getActions()).toMatchSnapshot();
193
169
  });
@@ -4,7 +4,8 @@ import toJson from 'enzyme-to-json';
4
4
  import { loadSetting } from 'foremanReact/components/Settings/SettingsActions';
5
5
  import SubscriptionsPage from '../SubscriptionsPage';
6
6
  import { successState, settingsSuccessState, permissionDeniedState } from './subscriptions.fixtures';
7
- import { loadSubscriptions, updateQuantity, loadTableColumns } from '../SubscriptionActions';
7
+ import { loadAvailableQuantities, loadSubscriptions, updateQuantity, loadTableColumns } from '../SubscriptionActions';
8
+ import { pingUpstreamSubscriptions } from '../UpstreamSubscriptions/UpstreamSubscriptionsActions';
8
9
  import { createColumns, updateColumns } from '../../../scenes/Settings/Tables/TableActions';
9
10
 
10
11
  jest.mock('foremanReact/components/PermissionDenied');
@@ -16,11 +17,13 @@ const loadTables = () => new Promise((resolve) => {
16
17
  });
17
18
 
18
19
  const pollTasks = jest.fn();
19
- const handleTask = jest.fn();
20
+ const handleStartTask = jest.fn();
21
+ const handleFinishedTask = jest.fn();
20
22
 
21
23
  afterEach(() => {
22
24
  pollTasks.mockClear();
23
- handleTask.mockClear();
25
+ handleStartTask.mockClear();
26
+ handleFinishedTask.mockClear();
24
27
  });
25
28
 
26
29
  describe('subscriptions page', () => {
@@ -38,8 +41,11 @@ describe('subscriptions page', () => {
38
41
  createColumns={createColumns}
39
42
  updateColumns={updateColumns}
40
43
  loadSubscriptions={loadSubscriptions}
44
+ loadAvailableQuantities={loadAvailableQuantities}
45
+ pingUpstreamSubscriptions={pingUpstreamSubscriptions}
41
46
  updateQuantity={updateQuantity}
42
- handleTask={handleTask}
47
+ handleStartTask={handleStartTask}
48
+ handleFinishedTask={handleFinishedTask}
43
49
  pollTaskUntilDone={noop}
44
50
  pollBulkSearch={noop}
45
51
  pollTasks={pollTasks}
@@ -70,8 +76,11 @@ describe('subscriptions page', () => {
70
76
  createColumns={createColumns}
71
77
  updateColumns={updateColumns}
72
78
  loadSubscriptions={loadSubscriptions}
79
+ loadAvailableQuantities={loadAvailableQuantities}
80
+ pingUpstreamSubscriptions={pingUpstreamSubscriptions}
73
81
  updateQuantity={updateQuantity}
74
- handleTask={handleTask}
82
+ handleStartTask={handleStartTask}
83
+ handleFinishedTask={handleFinishedTask}
75
84
  pollTaskUntilDone={noop}
76
85
  pollBulkSearch={noop}
77
86
  pollTasks={pollTasks}
@@ -118,8 +127,9 @@ describe('subscriptions page', () => {
118
127
  },
119
128
  };
120
129
 
121
- page.setProps({ task: mockTask });
130
+ page.setProps({ isTaskPending: true, isPollingTask: true });
131
+ page.setProps({ task: mockTask, isPollingTask: true, isTaskPending: false });
122
132
 
123
- expect(handleTask).toHaveBeenCalledWith(mockTask);
133
+ expect(handleFinishedTask).toHaveBeenCalledWith(mockTask);
124
134
  });
125
135
  });
@@ -35,9 +35,7 @@ Object {
35
35
  }
36
36
  `;
37
37
 
38
- exports[`subscription actions handleTask does nothing if already polling and task is pending 1`] = `Array []`;
39
-
40
- exports[`subscription actions handleTask handles a finished task 1`] = `
38
+ exports[`subscription actions handleFinishedTask handles a finished task 1`] = `
41
39
  Array [
42
40
  Object {
43
41
  "key": "SUBSCRIPTIONS_POLL_TASK",
@@ -77,7 +75,7 @@ Array [
77
75
  ]
78
76
  `;
79
77
 
80
- exports[`subscription actions handleTask when not polling a task starts polling the task 1`] = `
78
+ exports[`subscription actions handleStartTask starts polling the task 1`] = `
81
79
  Array [
82
80
  Object {
83
81
  "key": "SUBSCRIPTIONS_TASK_SEARCH",
@@ -38,11 +38,11 @@ exports[`subscriptions page should render 1`] = `
38
38
  </h1>
39
39
  <SubscriptionsToolbar
40
40
  canManageSubscriptionAllocations={false}
41
- disableAddButton={false}
41
+ disableAddButton={true}
42
42
  disableDeleteButton={true}
43
43
  disableDeleteReason="This is disabled because no subscriptions are selected."
44
- disableManifestActions={false}
45
- disableManifestReason={null}
44
+ disableManifestActions={true}
45
+ disableManifestReason="This is disabled because no connection could be made to the upstream Subscription Allocation."
46
46
  getAutoCompleteParams={[Function]}
47
47
  initialInputValue=""
48
48
  onDeleteButtonClick={[Function]}
@@ -57,7 +57,8 @@ exports[`subscriptions page should render 1`] = `
57
57
  <Connect(ManageManifestModal)
58
58
  canImportManifest={false}
59
59
  delete={[Function]}
60
- disabledReason={null}
60
+ disableManifestActions={true}
61
+ disabledReason="This is disabled because no connection could be made to the upstream Subscription Allocation."
61
62
  refresh={[Function]}
62
63
  taskInProgress={false}
63
64
  upload={[Function]}
@@ -83,6 +84,7 @@ exports[`subscriptions page should render 1`] = `
83
84
  onSelectedRowsChange={[Function]}
84
85
  onSubscriptionDeleteModalClose={[Function]}
85
86
  selectedRows={Array []}
87
+ selectionEnabled={false}
86
88
  subscriptionDeleteModalOpen={false}
87
89
  subscriptions={
88
90
  Object {
@@ -5,7 +5,7 @@ Object {
5
5
  "availableQuantities": null,
6
6
  "deleteButtonDisabled": true,
7
7
  "deleteModalOpened": false,
8
- "disconnected": false,
8
+ "hasUpstreamConnection": false,
9
9
  "itemCount": 0,
10
10
  "loading": true,
11
11
  "pagination": Object {
@@ -31,7 +31,7 @@ Object {
31
31
  "availableQuantities": null,
32
32
  "deleteButtonDisabled": true,
33
33
  "deleteModalOpened": false,
34
- "disconnected": false,
34
+ "hasUpstreamConnection": false,
35
35
  "itemCount": 0,
36
36
  "loading": true,
37
37
  "pagination": Object {
@@ -58,6 +58,7 @@ Object {
58
58
  "deleteButtonDisabled": true,
59
59
  "deleteModalOpened": false,
60
60
  "disconnected": "some-value",
61
+ "hasUpstreamConnection": false,
61
62
  "itemCount": 0,
62
63
  "loading": true,
63
64
  "pagination": Object {
@@ -78,7 +79,7 @@ Object {
78
79
  "availableQuantities": null,
79
80
  "deleteButtonDisabled": true,
80
81
  "deleteModalOpened": false,
81
- "disconnected": false,
82
+ "hasUpstreamConnection": false,
82
83
  "itemCount": 0,
83
84
  "loading": true,
84
85
  "pagination": Object {
@@ -99,7 +100,7 @@ Object {
99
100
  "availableQuantities": null,
100
101
  "deleteButtonDisabled": true,
101
102
  "deleteModalOpened": false,
102
- "disconnected": false,
103
+ "hasUpstreamConnection": false,
103
104
  "itemCount": 0,
104
105
  "loading": true,
105
106
  "pagination": Object {
@@ -125,7 +126,7 @@ Object {
125
126
  "availableQuantities": null,
126
127
  "deleteButtonDisabled": true,
127
128
  "deleteModalOpened": false,
128
- "disconnected": false,
129
+ "hasUpstreamConnection": false,
129
130
  "itemCount": 0,
130
131
  "loading": true,
131
132
  "pagination": Object {
@@ -146,7 +147,7 @@ Object {
146
147
  "availableQuantities": null,
147
148
  "deleteButtonDisabled": true,
148
149
  "deleteModalOpened": false,
149
- "disconnected": false,
150
+ "hasUpstreamConnection": false,
150
151
  "itemCount": 0,
151
152
  "loading": true,
152
153
  "pagination": Object {
@@ -171,7 +172,7 @@ Object {
171
172
  "availableQuantities": null,
172
173
  "deleteButtonDisabled": true,
173
174
  "deleteModalOpened": false,
174
- "disconnected": false,
175
+ "hasUpstreamConnection": false,
175
176
  "itemCount": 0,
176
177
  "loading": true,
177
178
  "pagination": Object {
@@ -192,7 +193,7 @@ Object {
192
193
  "availableQuantities": null,
193
194
  "deleteButtonDisabled": false,
194
195
  "deleteModalOpened": false,
195
- "disconnected": false,
196
+ "hasUpstreamConnection": false,
196
197
  "itemCount": 0,
197
198
  "loading": true,
198
199
  "pagination": Object {
@@ -213,7 +214,7 @@ Object {
213
214
  "availableQuantities": null,
214
215
  "deleteButtonDisabled": true,
215
216
  "deleteModalOpened": false,
216
- "disconnected": false,
217
+ "hasUpstreamConnection": false,
217
218
  "itemCount": 0,
218
219
  "loading": false,
219
220
  "missingPermissions": undefined,
@@ -235,7 +236,7 @@ Object {
235
236
  "availableQuantities": null,
236
237
  "deleteButtonDisabled": true,
237
238
  "deleteModalOpened": true,
238
- "disconnected": false,
239
+ "hasUpstreamConnection": false,
239
240
  "itemCount": 0,
240
241
  "loading": true,
241
242
  "pagination": Object {
@@ -256,7 +257,7 @@ Object {
256
257
  "availableQuantities": null,
257
258
  "deleteButtonDisabled": true,
258
259
  "deleteModalOpened": false,
259
- "disconnected": false,
260
+ "hasUpstreamConnection": false,
260
261
  "itemCount": 0,
261
262
  "loading": true,
262
263
  "pagination": Object {
@@ -277,7 +278,7 @@ Object {
277
278
  "availableQuantities": null,
278
279
  "deleteButtonDisabled": true,
279
280
  "deleteModalOpened": false,
280
- "disconnected": false,
281
+ "hasUpstreamConnection": false,
281
282
  "itemCount": 0,
282
283
  "loading": true,
283
284
  "pagination": Object {
@@ -303,7 +304,7 @@ Object {
303
304
  "availableQuantities": Object {},
304
305
  "deleteButtonDisabled": true,
305
306
  "deleteModalOpened": false,
306
- "disconnected": false,
307
+ "hasUpstreamConnection": false,
307
308
  "itemCount": 0,
308
309
  "loading": true,
309
310
  "pagination": Object {
@@ -324,7 +325,7 @@ Object {
324
325
  "availableQuantities": null,
325
326
  "deleteButtonDisabled": true,
326
327
  "deleteModalOpened": false,
327
- "disconnected": false,
328
+ "hasUpstreamConnection": false,
328
329
  "itemCount": 0,
329
330
  "loading": true,
330
331
  "pagination": Object {
@@ -345,7 +346,7 @@ Object {
345
346
  "availableQuantities": "some-quantities-data",
346
347
  "deleteButtonDisabled": true,
347
348
  "deleteModalOpened": false,
348
- "disconnected": false,
349
+ "hasUpstreamConnection": false,
349
350
  "itemCount": 0,
350
351
  "loading": true,
351
352
  "pagination": Object {
@@ -366,7 +367,7 @@ Object {
366
367
  "availableQuantities": null,
367
368
  "deleteButtonDisabled": true,
368
369
  "deleteModalOpened": false,
369
- "disconnected": false,
370
+ "hasUpstreamConnection": false,
370
371
  "itemCount": 0,
371
372
  "loading": true,
372
373
  "pagination": Object {
@@ -387,7 +388,7 @@ Object {
387
388
  "availableQuantities": null,
388
389
  "deleteButtonDisabled": true,
389
390
  "deleteModalOpened": false,
390
- "disconnected": false,
391
+ "hasUpstreamConnection": false,
391
392
  "itemCount": 0,
392
393
  "loading": true,
393
394
  "pagination": Object {
@@ -414,7 +415,7 @@ Object {
414
415
  "availableQuantities": null,
415
416
  "deleteButtonDisabled": true,
416
417
  "deleteModalOpened": false,
417
- "disconnected": false,
418
+ "hasUpstreamConnection": false,
418
419
  "itemCount": 20,
419
420
  "loading": false,
420
421
  "pagination": Object {
@@ -437,7 +438,7 @@ Object {
437
438
  "availableQuantities": null,
438
439
  "deleteButtonDisabled": true,
439
440
  "deleteModalOpened": false,
440
- "disconnected": false,
441
+ "hasUpstreamConnection": false,
441
442
  "itemCount": 0,
442
443
  "loading": true,
443
444
  "pagination": Object {
@@ -458,7 +459,7 @@ Object {
458
459
  "availableQuantities": null,
459
460
  "deleteButtonDisabled": true,
460
461
  "deleteModalOpened": false,
461
- "disconnected": false,
462
+ "hasUpstreamConnection": false,
462
463
  "itemCount": 0,
463
464
  "loading": true,
464
465
  "pagination": Object {
@@ -484,7 +485,7 @@ Object {
484
485
  "availableQuantities": null,
485
486
  "deleteButtonDisabled": true,
486
487
  "deleteModalOpened": false,
487
- "disconnected": false,
488
+ "hasUpstreamConnection": false,
488
489
  "itemCount": 0,
489
490
  "loading": true,
490
491
  "pagination": Object {
@@ -505,7 +506,7 @@ Object {
505
506
  "availableQuantities": null,
506
507
  "deleteButtonDisabled": true,
507
508
  "deleteModalOpened": false,
508
- "disconnected": false,
509
+ "hasUpstreamConnection": false,
509
510
  "itemCount": 0,
510
511
  "loading": true,
511
512
  "pagination": Object {
@@ -531,7 +532,7 @@ Object {
531
532
  "availableQuantities": null,
532
533
  "deleteButtonDisabled": true,
533
534
  "deleteModalOpened": false,
534
- "disconnected": false,
535
+ "hasUpstreamConnection": false,
535
536
  "itemCount": 0,
536
537
  "loading": true,
537
538
  "pagination": Object {
@@ -555,7 +556,7 @@ Object {
555
556
  "availableQuantities": null,
556
557
  "deleteButtonDisabled": true,
557
558
  "deleteModalOpened": false,
558
- "disconnected": false,
559
+ "hasUpstreamConnection": false,
559
560
  "itemCount": 0,
560
561
  "loading": true,
561
562
  "pagination": Object {
@@ -581,7 +582,7 @@ Object {
581
582
  "availableQuantities": null,
582
583
  "deleteButtonDisabled": true,
583
584
  "deleteModalOpened": false,
584
- "disconnected": false,
585
+ "hasUpstreamConnection": false,
585
586
  "itemCount": 0,
586
587
  "loading": true,
587
588
  "pagination": Object {