katello 4.4.0.rc1 → 4.4.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.
- checksums.yaml +4 -4
- data/app/controllers/katello/api/v2/repositories_bulk_actions_controller.rb +10 -1
- data/app/controllers/katello/api/v2/repositories_controller.rb +3 -0
- data/app/lib/actions/katello/repository/errata_mail.rb +4 -5
- data/app/lib/actions/katello/repository/sync.rb +2 -2
- data/app/lib/actions/pulp3/abstract.rb +1 -1
- data/app/lib/actions/pulp3/content_view/delete_repository_references.rb +14 -4
- data/app/lib/actions/pulp3/content_view_version/create_import_history.rb +1 -2
- data/app/lib/actions/pulp3/repository/reclaim_space.rb +3 -10
- data/app/lib/katello/util/pulpcore_content_filters.rb +2 -1
- data/app/models/katello/candlepin/repository_mapper.rb +1 -0
- data/app/models/katello/concerns/audit_comment_extensions.rb +17 -0
- data/app/models/katello/concerns/host_managed_extensions.rb +11 -1
- data/app/models/katello/concerns/smart_proxy_extensions.rb +1 -0
- data/app/models/katello/content_view_version_export_history.rb +2 -1
- data/app/models/katello/content_view_version_import_history.rb +4 -4
- data/app/models/katello/host_available_module_stream.rb +10 -0
- data/app/models/katello/installed_package.rb +1 -0
- data/app/models/katello/root_repository.rb +14 -2
- data/app/models/setting/content.rb +9 -2
- data/app/services/katello/pulp3/api/yum.rb +4 -0
- data/app/services/katello/pulp3/repository/yum.rb +11 -4
- data/app/services/katello/pulp3/repository.rb +4 -2
- data/app/views/foreman/job_templates/remove_packages_by_search_query.erb +19 -0
- data/app/views/foreman/job_templates/update_packages_by_search_query.erb +19 -0
- data/app/views/katello/api/v2/content_views/base.json.rabl +8 -4
- data/app/views/katello/api/v2/host_module_streams/base.json.rabl +1 -0
- data/db/migrate/20210119162528_delete_puppet_and_ostree_repos.rb +2 -0
- data/db/migrate/20211019192121_create_cdn_configuration.katello.rb +11 -2
- data/db/migrate/20220209205137_expand_sync_timeout_settings.rb +23 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/apply-errata.controller.js +10 -3
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/repository-details-info.controller.js +4 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/new/new-repository.controller.js +17 -12
- data/lib/katello/plugin.rb +2 -0
- data/lib/katello/repository_types/ostree.rb +0 -6
- data/lib/katello/version.rb +1 -1
- data/webpack/components/Errata/index.js +57 -57
- data/webpack/components/ErratumTypeLabel.js +16 -16
- data/webpack/components/MultiSelect/index.js +2 -2
- data/webpack/components/Select/Select.js +1 -1
- data/webpack/components/SelectOrg/SelectOrgReducer.js +15 -15
- data/webpack/components/SelectOrg/SetOrganization.js +1 -1
- data/webpack/components/Table/TableHooks.js +1 -0
- data/webpack/components/Table/TableWrapper.js +4 -1
- data/webpack/components/TypeAhead/helpers/commonPropTypes.js +1 -1
- data/webpack/components/TypeAhead/helpers/helpers.js +14 -14
- data/webpack/components/TypeAhead/pf3Search/TypeAheadSearch.js +1 -1
- data/webpack/components/WithOrganization/withOrganization.js +3 -3
- data/webpack/components/extensions/HostDetails/HostPackages/HostPackagesActions.js +32 -1
- data/webpack/components/extensions/HostDetails/HostPackages/HostPackagesConstants.js +3 -2
- data/webpack/components/extensions/HostDetails/Tabs/ContentTab/SecondaryTabsRoutes.js +5 -3
- data/webpack/components/extensions/HostDetails/Tabs/ContentTab/constants.js +1 -0
- data/webpack/components/extensions/HostDetails/Tabs/ErrataTab/ErratumExpansionContents.js +3 -3
- data/webpack/components/extensions/HostDetails/Tabs/ModuleStreamsTab/ModuleStreamsActions.js +16 -0
- data/webpack/components/extensions/HostDetails/Tabs/ModuleStreamsTab/ModuleStreamsConstants.js +3 -0
- data/webpack/components/extensions/HostDetails/Tabs/ModuleStreamsTab/ModuleStreamsSelectors.js +19 -0
- data/webpack/components/extensions/HostDetails/Tabs/ModuleStreamsTab/ModuleStreamsTab.js +241 -0
- data/webpack/components/extensions/HostDetails/Tabs/ModuleStreamsTab/__tests__/moduleStreamsTab.test.js +108 -0
- data/webpack/components/extensions/HostDetails/Tabs/ModuleStreamsTab/__tests__/modules.fixtures.json +34 -0
- data/webpack/components/extensions/HostDetails/Tabs/PackageInstallModal.js +5 -5
- data/webpack/components/extensions/HostDetails/Tabs/PackagesTab.js +255 -79
- data/webpack/components/extensions/HostDetails/Tabs/RemoteExecutionActions.js +76 -0
- data/webpack/components/extensions/HostDetails/Tabs/RemoteExecutionConstants.js +4 -0
- data/webpack/components/extensions/HostDetails/Tabs/__tests__/packagesTab.test.js +259 -9
- data/webpack/components/extensions/HostDetails/Tabs/__tests__/tracesTab.test.js +22 -26
- data/webpack/components/extensions/HostDetails/Tabs/customizedRexUrlHelpers.js +13 -0
- data/webpack/components/extensions/RegistrationCommands/__tests__/__snapshots__/ActivationKeys.test.js.snap +4 -0
- data/webpack/components/extensions/RegistrationCommands/fields/ActivationKeys.js +1 -1
- data/webpack/components/extensions/RegistrationCommands/fields/LifecycleEnvironment.js +1 -1
- data/webpack/components/extensions/about/SystemStatuses.js +1 -1
- data/webpack/components/extensions/about/SystemStatusesReducer.js +10 -10
- data/webpack/components/pf3Table/components/Table.js +2 -2
- data/webpack/components/pf3Table/components/TableBody.js +2 -2
- data/webpack/redux/OrganizationProducts/OrganizationProductsReducer.js +15 -15
- data/webpack/redux/reducers/RedHatRepositories/enabled.js +43 -43
- data/webpack/redux/reducers/RedHatRepositories/repositorySetRepositories.js +43 -43
- data/webpack/redux/reducers/RedHatRepositories/sets.js +31 -31
- data/webpack/scenes/AnsibleCollections/AnsibleCollectionsReducer.js +26 -26
- data/webpack/scenes/AnsibleCollections/Details/AnsibleCollectionDetailsReducer.js +19 -19
- data/webpack/scenes/Content/Table/ContentTable.js +1 -1
- data/webpack/scenes/ContentViews/Create/CreateContentViewForm.js +2 -1
- data/webpack/scenes/ContentViews/Delete/Steps/CVDeletionReassignHostsForm.js +2 -2
- data/webpack/scenes/ContentViews/Details/ComponentContentViews/ContentViewComponents.js +1 -1
- data/webpack/scenes/ContentViews/Details/ContentViewDetailActions.js +1 -1
- data/webpack/scenes/ContentViews/Details/ContentViewDetailReducer.js +8 -8
- data/webpack/scenes/ContentViews/Details/Filters/AffectedRepositories/AffectedRepositoryTable.js +1 -1
- data/webpack/scenes/ContentViews/Details/Filters/ArtifactsWithNoErrata.js +8 -8
- data/webpack/scenes/ContentViews/Details/Filters/CVContainerImageFilterContent.js +1 -1
- data/webpack/scenes/ContentViews/Details/Filters/CVErrataDateFilterContent.js +1 -1
- data/webpack/scenes/ContentViews/Details/Filters/CVErrataIDFilterContent.js +1 -1
- data/webpack/scenes/ContentViews/Details/Filters/CVFilterDetailType.js +46 -46
- data/webpack/scenes/ContentViews/Details/Filters/CVModuleStreamFilterContent.js +14 -14
- data/webpack/scenes/ContentViews/Details/Filters/CVPackageGroupFilterContent.js +14 -14
- data/webpack/scenes/ContentViews/Details/Filters/CVRpmFilterContent.js +1 -1
- data/webpack/scenes/ContentViews/Details/Filters/ContentViewFilters.js +1 -1
- data/webpack/scenes/ContentViews/Details/Filters/Rules/Package/AddEditPackageRuleModal.js +17 -17
- data/webpack/scenes/ContentViews/Details/Repositories/ContentViewRepositories.js +1 -1
- data/webpack/scenes/ContentViews/Details/Versions/ContentViewVersionContent.js +19 -18
- data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveSteps/CVEnvironmentSelectionForm.js +18 -18
- data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveSteps/CVReassignActivationKeysForm.js +3 -3
- data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveSteps/CVReassignHostsForm.js +3 -3
- data/webpack/scenes/ContentViews/Details/Versions/Delete/affectedActivationKeys.js +1 -1
- data/webpack/scenes/ContentViews/Details/Versions/Delete/affectedHosts.js +1 -1
- data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionDetailConfig.js +1 -1
- data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionDetailsTable.js +46 -34
- data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionRepositoryCell.js +65 -48
- data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/__tests__/ContentViewVersionDetails.test.js +1 -1
- data/webpack/scenes/ContentViews/Publish/CVPublishFinish.js +2 -2
- data/webpack/scenes/ContentViews/Table/ContentViewsTable.js +4 -4
- data/webpack/scenes/ContentViews/components/EnvironmentLabels.js +18 -18
- data/webpack/scenes/ContentViews/components/EnvironmentPaths/EnvironmentPaths.js +10 -10
- data/webpack/scenes/ContentViews/expansions/DetailsExpansion.js +2 -2
- data/webpack/scenes/Hosts/ChangeContentSource/components/ContentSourceForm.js +7 -7
- data/webpack/scenes/Hosts/ChangeContentSource/components/ContentSourceTemplate.js +7 -7
- data/webpack/scenes/Hosts/ChangeContentSource/components/FormField.js +3 -3
- data/webpack/scenes/ModuleStreams/Details/ModuleStreamDetailsReducer.js +18 -18
- data/webpack/scenes/ModuleStreams/ModuleStreamsReducer.js +26 -26
- data/webpack/scenes/Organizations/OrganizationReducer.js +8 -8
- data/webpack/scenes/RedHatRepositories/components/EnabledRepository/EnabledRepositoryContent.js +4 -4
- data/webpack/scenes/RedHatRepositories/components/RepositorySetRepositories.js +1 -1
- data/webpack/scenes/Settings/SettingsReducer.js +14 -14
- data/webpack/scenes/Settings/Tables/TableReducer.js +23 -23
- data/webpack/scenes/Subscriptions/Details/SubscriptionDetailInfo.js +2 -2
- data/webpack/scenes/Subscriptions/Details/SubscriptionDetailProductContent.js +15 -15
- data/webpack/scenes/Subscriptions/Details/SubscriptionDetailProducts.js +1 -1
- data/webpack/scenes/Subscriptions/Details/SubscriptionDetailReducer.js +34 -34
- data/webpack/scenes/Subscriptions/Details/SubscriptionDetails.js +13 -13
- data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/AirGappedTypeForm.js +3 -3
- data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/CdnTypeForm.js +4 -4
- data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/UpstreamServerTypeForm.js +3 -3
- data/webpack/scenes/Subscriptions/Manifest/ManageManifestModal.js +5 -5
- data/webpack/scenes/Subscriptions/Manifest/ManifestHistoryReducer.js +16 -16
- data/webpack/scenes/Subscriptions/SubscriptionReducer.js +149 -149
- data/webpack/scenes/Subscriptions/UpstreamSubscriptions/UpstreamSubscriptionsReducer.js +41 -41
- data/webpack/scenes/Subscriptions/components/SubscriptionsTable/components/Dialogs/DeleteDialog.js +6 -6
- data/webpack/scenes/Subscriptions/components/SubscriptionsTable/components/Table.js +12 -12
- data/webpack/services/index.js +36 -36
- data/webpack/utils/helpers.js +5 -5
- metadata +16 -6
@@ -60,49 +60,49 @@ const changeRepoState = (state, repoToChange, stateDiff) => (
|
|
60
60
|
|
61
61
|
export default (state = initialState, action) => {
|
62
62
|
switch (action.type) {
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
}
|
71
|
-
return state;
|
72
|
-
case ENABLED_REPOSITORIES_SUCCESS: {
|
73
|
-
const {
|
74
|
-
page,
|
75
|
-
per_page, // eslint-disable-line camelcase
|
76
|
-
subtotal,
|
77
|
-
results,
|
78
|
-
} = action.response;
|
79
|
-
return Immutable({
|
80
|
-
repositories: mapRepositories(results),
|
81
|
-
pagination: {
|
82
|
-
page: Number(page) || 1,
|
83
|
-
// server can return per_page: null when there's error in the search query,
|
84
|
-
// don't store it in such case
|
85
|
-
// eslint-disable-next-line camelcase
|
86
|
-
perPage: (per_page || state.pagination.perPage)
|
87
|
-
// eslint-disable-next-line camelcase
|
88
|
-
&& Number(per_page || state.pagination.perPage),
|
89
|
-
},
|
90
|
-
itemCount: Number(subtotal),
|
91
|
-
loading: false,
|
92
|
-
searchIsActive: !isEmpty(action.search),
|
93
|
-
search: action.search,
|
94
|
-
});
|
95
|
-
}
|
96
|
-
case ENABLED_REPOSITORIES_FAILURE: {
|
97
|
-
const { error, missingPermissions } = action;
|
98
|
-
return Immutable({
|
99
|
-
repositories: [],
|
100
|
-
loading: false,
|
101
|
-
error,
|
102
|
-
missingPermissions,
|
103
|
-
});
|
63
|
+
case DISABLE_REPOSITORY_REQUEST:
|
64
|
+
return changeRepoState(state, action.repository, { loading: true });
|
65
|
+
case DISABLE_REPOSITORY_FAILURE:
|
66
|
+
return changeRepoState(state, action.payload.repository, { loading: false });
|
67
|
+
case ENABLED_REPOSITORIES_REQUEST:
|
68
|
+
if (!action.silent) {
|
69
|
+
return state.set(['loading'], true);
|
104
70
|
}
|
105
|
-
|
106
|
-
|
71
|
+
return state;
|
72
|
+
case ENABLED_REPOSITORIES_SUCCESS: {
|
73
|
+
const {
|
74
|
+
page,
|
75
|
+
per_page, // eslint-disable-line camelcase
|
76
|
+
subtotal,
|
77
|
+
results,
|
78
|
+
} = action.response;
|
79
|
+
return Immutable({
|
80
|
+
repositories: mapRepositories(results),
|
81
|
+
pagination: {
|
82
|
+
page: Number(page) || 1,
|
83
|
+
// server can return per_page: null when there's error in the search query,
|
84
|
+
// don't store it in such case
|
85
|
+
// eslint-disable-next-line camelcase
|
86
|
+
perPage: (per_page || state.pagination.perPage)
|
87
|
+
// eslint-disable-next-line camelcase
|
88
|
+
&& Number(per_page || state.pagination.perPage),
|
89
|
+
},
|
90
|
+
itemCount: Number(subtotal),
|
91
|
+
loading: false,
|
92
|
+
searchIsActive: !isEmpty(action.search),
|
93
|
+
search: action.search,
|
94
|
+
});
|
95
|
+
}
|
96
|
+
case ENABLED_REPOSITORIES_FAILURE: {
|
97
|
+
const { error, missingPermissions } = action;
|
98
|
+
return Immutable({
|
99
|
+
repositories: [],
|
100
|
+
loading: false,
|
101
|
+
error,
|
102
|
+
missingPermissions,
|
103
|
+
});
|
104
|
+
}
|
105
|
+
default:
|
106
|
+
return state;
|
107
107
|
}
|
108
108
|
};
|
@@ -56,48 +56,48 @@ const initialState = Immutable({});
|
|
56
56
|
|
57
57
|
export default (state = initialState, action) => {
|
58
58
|
switch (action.type) {
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
59
|
+
case ENABLE_REPOSITORY_REQUEST:
|
60
|
+
return changeRepoState(state, action.repository, { loading: true });
|
61
|
+
|
62
|
+
case ENABLE_REPOSITORY_FAILURE:
|
63
|
+
return changeRepoState(state, action.payload.repository, { loading: false, error: true });
|
64
|
+
|
65
|
+
case REPOSITORY_SET_REPOSITORIES_REQUEST:
|
66
|
+
return state.set(action.contentId, {
|
67
|
+
loading: true,
|
68
|
+
repositories: [],
|
69
|
+
error: null,
|
70
|
+
});
|
71
|
+
|
72
|
+
case REPOSITORY_SET_REPOSITORIES_SUCCESS:
|
73
|
+
return state.set(action.contentId, {
|
74
|
+
loading: false,
|
75
|
+
repositories: normalizeContentSetRepositories(
|
76
|
+
action.results,
|
77
|
+
action.contentId,
|
78
|
+
action.productId,
|
79
|
+
),
|
80
|
+
error: null,
|
81
|
+
});
|
82
|
+
|
83
|
+
case REPOSITORY_SET_REPOSITORIES_FAILURE:
|
84
|
+
return state.set(action.contentId, {
|
85
|
+
loading: false,
|
86
|
+
repositories: [],
|
87
|
+
error: action.error,
|
88
|
+
});
|
89
|
+
|
90
|
+
case REPOSITORY_ENABLED:
|
91
|
+
return changeRepoState(state, action.repository, {
|
92
|
+
enabled: true,
|
93
|
+
loading: false,
|
94
|
+
error: false,
|
95
|
+
});
|
96
|
+
|
97
|
+
case REPOSITORY_DISABLED:
|
98
|
+
return changeRepoState(state, action.repository, { enabled: false });
|
99
|
+
|
100
|
+
default:
|
101
|
+
return state;
|
102
102
|
}
|
103
103
|
};
|
@@ -14,36 +14,36 @@ export default (state = initialState, action) => {
|
|
14
14
|
const { payload } = action;
|
15
15
|
|
16
16
|
switch (action.type) {
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
17
|
+
case REPOSITORY_SETS_REQUEST:
|
18
|
+
return state.set('loading', true);
|
19
|
+
|
20
|
+
case REPOSITORY_SETS_UPDATE_RECOMMENDED:
|
21
|
+
return state
|
22
|
+
.set('recommended', payload);
|
23
|
+
|
24
|
+
case REPOSITORY_SETS_SUCCESS:
|
25
|
+
return state
|
26
|
+
.set('results', payload.response.results)
|
27
|
+
.set('pagination', {
|
28
|
+
page: Number(payload.response.page),
|
29
|
+
// server can return per_page: null when there's error in the search query,
|
30
|
+
// don't store it in such case
|
31
|
+
// eslint-disable-next-line camelcase
|
32
|
+
perPage: Number(payload.response.per_page || state.pagination.perPage),
|
33
|
+
})
|
34
|
+
.set('itemCount', Number(payload.response.subtotal))
|
35
|
+
.set('loading', false)
|
36
|
+
.set('searchIsActive', !isEmpty(payload.search))
|
37
|
+
.set('search', payload.search);
|
38
|
+
|
39
|
+
case REPOSITORY_SETS_FAILURE:
|
40
|
+
return Immutable({
|
41
|
+
error: payload,
|
42
|
+
loading: false,
|
43
|
+
missingPermissions: get(payload, ['response', 'data', 'error', 'missing_permissions']),
|
44
|
+
});
|
45
|
+
|
46
|
+
default:
|
47
|
+
return state;
|
48
48
|
}
|
49
49
|
};
|
@@ -9,31 +9,31 @@ const initialState = initialApiState;
|
|
9
9
|
|
10
10
|
export default (state = initialState, action) => {
|
11
11
|
switch (action.type) {
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
12
|
+
case ANSIBLE_COLLECTIONS_REQUEST: {
|
13
|
+
return state.set('loading', true);
|
14
|
+
}
|
15
|
+
case ANSIBLE_COLLECTIONS_SUCCESS: {
|
16
|
+
const {
|
17
|
+
results, page, per_page, subtotal, // eslint-disable-line camelcase
|
18
|
+
} = action.response;
|
19
|
+
return state.merge({
|
20
|
+
results,
|
21
|
+
loading: false,
|
22
|
+
pagination: {
|
23
|
+
page: Number(page),
|
24
|
+
perPage: Number(per_page || state.pagination.perPage), // eslint-disable-line camelcase
|
25
|
+
},
|
26
|
+
itemCount: Number(subtotal),
|
27
|
+
});
|
28
|
+
}
|
29
|
+
case ANSIBLE_COLLECTIONS_ERROR: {
|
30
|
+
return state.merge({
|
31
|
+
error: action.error,
|
32
|
+
loading: false,
|
33
|
+
});
|
34
|
+
}
|
35
|
+
default: {
|
36
|
+
return state;
|
37
|
+
}
|
38
38
|
}
|
39
39
|
};
|
@@ -7,24 +7,24 @@ import {
|
|
7
7
|
|
8
8
|
export default (state = initialApiState, action) => {
|
9
9
|
switch (action.type) {
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
10
|
+
case ANSIBLE_COLLECTION_DETAILS_REQUEST: {
|
11
|
+
return state.set('loading', true);
|
12
|
+
}
|
13
|
+
case ANSIBLE_COLLECTION_DETAILS_SUCCESS: {
|
14
|
+
const ansibleCollectionDetails = action.response;
|
15
|
+
return state.merge({
|
16
|
+
...ansibleCollectionDetails,
|
17
|
+
loading: false,
|
18
|
+
});
|
19
|
+
}
|
20
|
+
case ANSIBLE_COLLECTION_DETAILS_ERROR: {
|
21
|
+
return state.merge({
|
22
|
+
error: action.payload.message,
|
23
|
+
loading: false,
|
24
|
+
});
|
25
|
+
}
|
26
|
+
default: {
|
27
|
+
return state;
|
28
|
+
}
|
29
29
|
}
|
30
30
|
};
|
@@ -78,7 +78,7 @@ const ContentTable = ({
|
|
78
78
|
ContentTable.propTypes = {
|
79
79
|
selectedContentType: PropTypes.string.isRequired,
|
80
80
|
setSelectedContentType: PropTypes.func.isRequired,
|
81
|
-
contentTypes: PropTypes.
|
81
|
+
contentTypes: PropTypes.shape({}).isRequired,
|
82
82
|
showContentTypeSelector: PropTypes.bool,
|
83
83
|
};
|
84
84
|
|
@@ -61,7 +61,8 @@ const CreateContentViewForm = ({ setModalOpen }) => {
|
|
61
61
|
|
62
62
|
if (redirect) {
|
63
63
|
const { id } = response;
|
64
|
-
return (<Redirect to={`/content_views/${id}`} />);
|
64
|
+
if (composite) { return (<Redirect to={`/content_views/${id}#/contentviews`} />); }
|
65
|
+
return (<Redirect to={`/content_views/${id}#/repositories`} />);
|
65
66
|
}
|
66
67
|
|
67
68
|
const submitDisabled = !name?.length || !label?.length || saving;
|
@@ -268,7 +268,7 @@ const ContentViewComponents = ({ cvId, details }) => {
|
|
268
268
|
<SplitItem>
|
269
269
|
<ActionList>
|
270
270
|
<ActionListItem>
|
271
|
-
<Button onClick={addBulk} isDisabled={!(bulkAddEnabled())} variant="
|
271
|
+
<Button onClick={addBulk} isDisabled={!(bulkAddEnabled())} variant="primary" aria-label="bulk_add_components">
|
272
272
|
{__('Add content views')}
|
273
273
|
</Button>
|
274
274
|
</ActionListItem>
|
@@ -132,7 +132,7 @@ export const getDockerTags = params => get({
|
|
132
132
|
key: DOCKER_TAGS_CONTENT,
|
133
133
|
url: api.getApiUrl('/docker_tags'),
|
134
134
|
params,
|
135
|
-
errorToast: error => __(`Something went wrong while getting
|
135
|
+
errorToast: error => __(`Something went wrong while getting container tags! ${getResponseErrorMsgs(error.response)}`),
|
136
136
|
});
|
137
137
|
|
138
138
|
export const getErrata = params => get({
|
@@ -11,13 +11,13 @@ const initialState = Immutable({
|
|
11
11
|
|
12
12
|
export default (state = initialState, action) => {
|
13
13
|
switch (action.type) {
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
14
|
+
case UPDATE_CONTENT_VIEW:
|
15
|
+
return state.set('updating', true);
|
16
|
+
case UPDATE_CONTENT_VIEW_SUCCESS:
|
17
|
+
return state.merge({ updating: false });
|
18
|
+
case UPDATE_CONTENT_VIEW_FAILURE:
|
19
|
+
return state.set('updating', false);
|
20
|
+
default:
|
21
|
+
return state;
|
22
22
|
}
|
23
23
|
};
|
data/webpack/scenes/ContentViews/Details/Filters/AffectedRepositories/AffectedRepositoryTable.js
CHANGED
@@ -222,7 +222,7 @@ const AffectedRepositoryTable = ({
|
|
222
222
|
<SplitItem>
|
223
223
|
<ActionList>
|
224
224
|
<ActionListItem>
|
225
|
-
<Button onClick={addBulk} isDisabled={!hasNotAddedSelected} variant="
|
225
|
+
<Button onClick={addBulk} isDisabled={!hasNotAddedSelected} variant="primary" aria-label="add_repositories">
|
226
226
|
{__('Add repositories')}
|
227
227
|
</Button>
|
228
228
|
</ActionListItem>
|
@@ -22,14 +22,14 @@ export const ArtifactsWithNoErrataRenderer = ({ filterDetails }) => {
|
|
22
22
|
};
|
23
23
|
const getLabel = () => {
|
24
24
|
switch (true) {
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
25
|
+
case type === 'modulemd' && inclusion:
|
26
|
+
return __('Include all Module Streams with no errata.');
|
27
|
+
case type === 'modulemd' && !inclusion:
|
28
|
+
return __('Exclude all Module Streams with no errata.');
|
29
|
+
case !inclusion:
|
30
|
+
return __('Exclude all RPMs with no errata.');
|
31
|
+
default:
|
32
|
+
return __('Include all RPMs with no errata.');
|
33
33
|
}
|
34
34
|
};
|
35
35
|
|
@@ -312,7 +312,7 @@ const CVErrataIDFilterContent = ({
|
|
312
312
|
</SplitItem>
|
313
313
|
{hasPermission(permissions, 'edit_content_views') &&
|
314
314
|
<SplitItem>
|
315
|
-
<Button isDisabled={!hasNotAddedSelected} onClick={bulkAdd} variant="
|
315
|
+
<Button isDisabled={!hasNotAddedSelected} onClick={bulkAdd} variant="primary" aria-label="add_filter_rule">
|
316
316
|
{__('Add errata')}
|
317
317
|
</Button>
|
318
318
|
</SplitItem>
|
@@ -12,24 +12,42 @@ const CVFilterDetailType = ({
|
|
12
12
|
cvId, filterId, inclusion, type, showAffectedRepos, setShowAffectedRepos, rules, details,
|
13
13
|
}) => {
|
14
14
|
switch (type) {
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
15
|
+
case 'docker':
|
16
|
+
return (<CVContainerImageFilterContent
|
17
|
+
cvId={cvId}
|
18
|
+
filterId={filterId}
|
19
|
+
showAffectedRepos={showAffectedRepos}
|
20
|
+
setShowAffectedRepos={setShowAffectedRepos}
|
21
|
+
details={details}
|
22
|
+
/>);
|
23
|
+
case 'package_group':
|
24
|
+
return (<CVPackageGroupFilterContent
|
25
|
+
cvId={cvId}
|
26
|
+
filterId={filterId}
|
27
|
+
showAffectedRepos={showAffectedRepos}
|
28
|
+
setShowAffectedRepos={setShowAffectedRepos}
|
29
|
+
details={details}
|
30
|
+
/>);
|
31
|
+
case 'rpm':
|
32
|
+
return (<CVRpmFilterContent
|
33
|
+
cvId={cvId}
|
34
|
+
filterId={filterId}
|
35
|
+
inclusion={inclusion}
|
36
|
+
showAffectedRepos={showAffectedRepos}
|
37
|
+
setShowAffectedRepos={setShowAffectedRepos}
|
38
|
+
details={details}
|
39
|
+
/>);
|
40
|
+
case 'modulemd':
|
41
|
+
return (<CVModuleStreamFilterContent
|
42
|
+
cvId={cvId}
|
43
|
+
filterId={filterId}
|
44
|
+
showAffectedRepos={showAffectedRepos}
|
45
|
+
setShowAffectedRepos={setShowAffectedRepos}
|
46
|
+
details={details}
|
47
|
+
/>);
|
48
|
+
case 'erratum':
|
49
|
+
if (head(rules)?.types) {
|
50
|
+
return (<CVErrataDateFilterContent
|
33
51
|
cvId={cvId}
|
34
52
|
filterId={filterId}
|
35
53
|
inclusion={inclusion}
|
@@ -37,34 +55,16 @@ const CVFilterDetailType = ({
|
|
37
55
|
setShowAffectedRepos={setShowAffectedRepos}
|
38
56
|
details={details}
|
39
57
|
/>);
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
return (<CVErrataDateFilterContent
|
51
|
-
cvId={cvId}
|
52
|
-
filterId={filterId}
|
53
|
-
inclusion={inclusion}
|
54
|
-
showAffectedRepos={showAffectedRepos}
|
55
|
-
setShowAffectedRepos={setShowAffectedRepos}
|
56
|
-
details={details}
|
57
|
-
/>);
|
58
|
-
}
|
59
|
-
return (<CVErrataIDFilterContent
|
60
|
-
cvId={cvId}
|
61
|
-
filterId={filterId}
|
62
|
-
showAffectedRepos={showAffectedRepos}
|
63
|
-
setShowAffectedRepos={setShowAffectedRepos}
|
64
|
-
details={details}
|
65
|
-
/>);
|
66
|
-
default:
|
67
|
-
return null;
|
58
|
+
}
|
59
|
+
return (<CVErrataIDFilterContent
|
60
|
+
cvId={cvId}
|
61
|
+
filterId={filterId}
|
62
|
+
showAffectedRepos={showAffectedRepos}
|
63
|
+
setShowAffectedRepos={setShowAffectedRepos}
|
64
|
+
details={details}
|
65
|
+
/>);
|
66
|
+
default:
|
67
|
+
return null;
|
68
68
|
}
|
69
69
|
};
|
70
70
|
|
@@ -78,19 +78,19 @@ const CVModuleStreamFilterContent = ({
|
|
78
78
|
const fetchItems = useCallback((params) => {
|
79
79
|
const adjustedParams = { ...params };
|
80
80
|
switch (selectedIndex) {
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
81
|
+
case 0:
|
82
|
+
adjustedParams.show_all_for = 'content_view_filter';
|
83
|
+
adjustedParams.available_for = undefined;
|
84
|
+
break;
|
85
|
+
case 1:
|
86
|
+
adjustedParams.show_all_for = undefined;
|
87
|
+
adjustedParams.available_for = undefined;
|
88
|
+
break;
|
89
|
+
case 2:
|
90
|
+
adjustedParams.show_all_for = undefined;
|
91
|
+
adjustedParams.available_for = 'content_view_filter';
|
92
|
+
break;
|
93
|
+
default:
|
94
94
|
}
|
95
95
|
|
96
96
|
return getCVFilterModuleStreams(cvId, filterId, adjustedParams);
|
@@ -247,7 +247,7 @@ const CVModuleStreamFilterContent = ({
|
|
247
247
|
<Button
|
248
248
|
isDisabled={!hasNotAddedSelected}
|
249
249
|
onClick={bulkAdd}
|
250
|
-
variant="
|
250
|
+
variant="primary"
|
251
251
|
aria-label="add_filter_rule"
|
252
252
|
>
|
253
253
|
{__('Add filter rule')}
|