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
@@ -47,19 +47,19 @@ const EnvironmentPaths = ({
|
|
47
47
|
{index === 0 && <hr />}
|
48
48
|
<FormGroup key={`fg-${index}`} isInline fieldId="environment-checkbox-group">
|
49
49
|
{environments.map(env =>
|
50
|
-
|
51
|
-
|
50
|
+
(<Checkbox
|
51
|
+
isChecked={(publishing && env.library) ||
|
52
52
|
envCheckedInList(env, userCheckedItems) ||
|
53
53
|
envCheckedInList(env, promotedEnvironments)}
|
54
|
-
|
54
|
+
isDisabled={(publishing && env.library)
|
55
55
|
|| envCheckedInList(env, promotedEnvironments)}
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
56
|
+
className="env-path__labels-with-pointer"
|
57
|
+
key={`${env.id}${index}`}
|
58
|
+
id={`${env.id}${index}`}
|
59
|
+
label={<EnvironmentLabels environments={env} />}
|
60
|
+
aria-label={env.label}
|
61
|
+
onChange={checked => oncheckedChange(checked, env)}
|
62
|
+
/>))}
|
63
63
|
</FormGroup>
|
64
64
|
<hr />
|
65
65
|
</div>
|
@@ -26,9 +26,9 @@ const ContentSourceForm = ({
|
|
26
26
|
isLoading,
|
27
27
|
}) => {
|
28
28
|
const formIsValid = () => (!!environmentId &&
|
29
|
-
|
30
|
-
|
31
|
-
|
29
|
+
!!contentViewId &&
|
30
|
+
!!contentSourceId &&
|
31
|
+
contentHostsIds.length !== 0);
|
32
32
|
|
33
33
|
return (
|
34
34
|
<Form
|
@@ -50,7 +50,7 @@ const ContentSourceForm = ({
|
|
50
50
|
isDisabled={isLoading || !formIsValid()}
|
51
51
|
isLoading={isLoading}
|
52
52
|
>
|
53
|
-
{
|
53
|
+
{__('Change content source')}
|
54
54
|
</Button>
|
55
55
|
</ActionGroup>
|
56
56
|
</GridItem>
|
@@ -60,13 +60,13 @@ const ContentSourceForm = ({
|
|
60
60
|
|
61
61
|
ContentSourceForm.propTypes = {
|
62
62
|
handleSubmit: PropTypes.func.isRequired,
|
63
|
-
environments: PropTypes.arrayOf(PropTypes.
|
63
|
+
environments: PropTypes.arrayOf(PropTypes.shape({})),
|
64
64
|
handleEnvironment: PropTypes.func.isRequired,
|
65
65
|
environmentId: PropTypes.string,
|
66
|
-
contentViews: PropTypes.arrayOf(PropTypes.
|
66
|
+
contentViews: PropTypes.arrayOf(PropTypes.shape({})),
|
67
67
|
handleContentView: PropTypes.func.isRequired,
|
68
68
|
contentViewId: PropTypes.string,
|
69
|
-
contentSources: PropTypes.arrayOf(PropTypes.
|
69
|
+
contentSources: PropTypes.arrayOf(PropTypes.shape({})),
|
70
70
|
handleContentSource: PropTypes.func.isRequired,
|
71
71
|
contentSourceId: PropTypes.string,
|
72
72
|
contentHostsIds: PropTypes.arrayOf(PropTypes.number),
|
@@ -44,14 +44,14 @@ const ContentSourceTemplate = ({ template, jobInvocationPath }) => {
|
|
44
44
|
</h1>
|
45
45
|
<p>
|
46
46
|
{jobInvocationPath && (
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
47
|
+
<>
|
48
|
+
<a href={jobInvocationPath}>
|
49
|
+
{__('Run job invocation')}
|
50
|
+
</a>
|
51
51
|
|
52
|
-
|
53
|
-
|
54
|
-
|
52
|
+
{__('to update configuration on all hosts, or')}
|
53
|
+
</>
|
54
|
+
)}
|
55
55
|
|
56
56
|
{__('update configuration on the hosts manually:')}
|
57
57
|
</p>
|
@@ -22,9 +22,9 @@ const FormField = ({
|
|
22
22
|
isRequired
|
23
23
|
>
|
24
24
|
<FormSelectOption key={0} value="" label={__('Select ...')} />
|
25
|
-
{
|
25
|
+
{items.map(item => (
|
26
26
|
<FormSelectOption key={item.id} value={item.id} label={item.name} />
|
27
|
-
|
27
|
+
))}
|
28
28
|
</FormSelect>
|
29
29
|
</FormGroup>
|
30
30
|
</GridItem>
|
@@ -34,7 +34,7 @@ FormField.propTypes = {
|
|
34
34
|
label: PropTypes.string.isRequired,
|
35
35
|
id: PropTypes.string.isRequired,
|
36
36
|
value: PropTypes.string.isRequired,
|
37
|
-
items: PropTypes.arrayOf(PropTypes.
|
37
|
+
items: PropTypes.arrayOf(PropTypes.shape({})).isRequired,
|
38
38
|
onChange: PropTypes.func.isRequired,
|
39
39
|
isLoading: PropTypes.bool.isRequired,
|
40
40
|
contentHostsCount: PropTypes.number.isRequired,
|
@@ -7,27 +7,27 @@ import {
|
|
7
7
|
|
8
8
|
export default (state = initialApiState, action) => {
|
9
9
|
switch (action.type) {
|
10
|
-
|
11
|
-
|
12
|
-
|
10
|
+
case MODULE_STREAM_DETAILS_REQUEST: {
|
11
|
+
return state.set('loading', true);
|
12
|
+
}
|
13
13
|
|
14
|
-
|
15
|
-
|
14
|
+
case MODULE_STREAM_DETAILS_SUCCESS: {
|
15
|
+
const moduleStreamDetails = action.response;
|
16
16
|
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
17
|
+
return state.merge({
|
18
|
+
...moduleStreamDetails,
|
19
|
+
loading: false,
|
20
|
+
});
|
21
|
+
}
|
22
22
|
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
23
|
+
case MODULE_STREAM_DETAILS_FAILURE: {
|
24
|
+
return state.merge({
|
25
|
+
error: action.payload.message,
|
26
|
+
loading: false,
|
27
|
+
});
|
28
|
+
}
|
29
29
|
|
30
|
-
|
31
|
-
|
30
|
+
default:
|
31
|
+
return state;
|
32
32
|
}
|
33
33
|
};
|
@@ -9,35 +9,35 @@ const initialState = initialApiState;
|
|
9
9
|
|
10
10
|
export default (state = initialState, action) => {
|
11
11
|
switch (action.type) {
|
12
|
-
|
13
|
-
|
14
|
-
|
12
|
+
case MODULE_STREAMS_REQUEST: {
|
13
|
+
return state.set('loading', true);
|
14
|
+
}
|
15
15
|
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
16
|
+
case MODULE_STREAMS_SUCCESS: {
|
17
|
+
const {
|
18
|
+
results, page, per_page, subtotal, // eslint-disable-line camelcase
|
19
|
+
} = action.response;
|
20
20
|
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
21
|
+
return state.merge({
|
22
|
+
results,
|
23
|
+
loading: false,
|
24
|
+
pagination: {
|
25
|
+
page: Number(page),
|
26
|
+
// eslint-disable-next-line camelcase
|
27
|
+
perPage: Number(per_page || state.pagination.perPage),
|
28
|
+
},
|
29
|
+
itemCount: Number(subtotal),
|
30
|
+
});
|
31
|
+
}
|
32
32
|
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
33
|
+
case MODULE_STREAMS_FAILURE: {
|
34
|
+
return state.merge({
|
35
|
+
error: action.error,
|
36
|
+
loading: false,
|
37
|
+
});
|
38
|
+
}
|
39
39
|
|
40
|
-
|
41
|
-
|
40
|
+
default:
|
41
|
+
return state;
|
42
42
|
}
|
43
43
|
};
|
@@ -10,16 +10,16 @@ const initialState = Immutable({ loading: false });
|
|
10
10
|
|
11
11
|
export default (state = initialState, action) => {
|
12
12
|
switch (action.type) {
|
13
|
-
|
14
|
-
|
13
|
+
case GET_ORGANIZATION_REQUEST:
|
14
|
+
return state.set('loading', true);
|
15
15
|
|
16
|
-
|
17
|
-
|
16
|
+
case GET_ORGANIZATION_SUCCESS:
|
17
|
+
return Immutable({ loading: false, ...action.response });
|
18
18
|
|
19
|
-
|
20
|
-
|
19
|
+
case GET_ORGANIZATION_FAILURE:
|
20
|
+
return Immutable({ error: action.error });
|
21
21
|
|
22
|
-
|
23
|
-
|
22
|
+
default:
|
23
|
+
return state;
|
24
24
|
}
|
25
25
|
};
|
data/webpack/scenes/RedHatRepositories/components/EnabledRepository/EnabledRepositoryContent.js
CHANGED
@@ -15,10 +15,10 @@ const EnabledRepositoryContent = ({ loading, disableTooltipId, disableRepository
|
|
15
15
|
<button
|
16
16
|
onClick={disableRepository}
|
17
17
|
style={{
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
18
|
+
backgroundColor: 'initial',
|
19
|
+
border: 'none',
|
20
|
+
color: '#0388ce',
|
21
|
+
}}
|
22
22
|
>
|
23
23
|
<i className={cx('fa-2x', 'fa fa-minus-circle')} />
|
24
24
|
</button>
|
@@ -81,7 +81,7 @@ RepositorySetRepositories.propTypes = {
|
|
81
81
|
type: PropTypes.string,
|
82
82
|
data: PropTypes.shape({
|
83
83
|
loading: PropTypes.bool.isRequired,
|
84
|
-
repositories: PropTypes.arrayOf(PropTypes.
|
84
|
+
repositories: PropTypes.arrayOf(PropTypes.shape({})),
|
85
85
|
error: PropTypes.shape({
|
86
86
|
displayMessage: PropTypes.string,
|
87
87
|
}),
|
@@ -13,21 +13,21 @@ export const initialSettingsState = Immutable({
|
|
13
13
|
|
14
14
|
export default (state = initialSettingsState, action) => {
|
15
15
|
switch (action.type) {
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
default:
|
26
|
-
return state;
|
27
|
-
}
|
28
|
-
}
|
29
|
-
|
16
|
+
case GET_SETTING_SUCCESS: {
|
17
|
+
const { name, value } = action.response;
|
18
|
+
switch (name) {
|
19
|
+
case AUTOSEARCH_DELAY:
|
20
|
+
return state.set('autoSearchDelay', value);
|
21
|
+
case AUTOSEARCH_WHILE_TYPING:
|
22
|
+
return state.set('autoSearchEnabled', value);
|
23
|
+
case CONTENT_DISCONNECTED:
|
24
|
+
return state.set('disconnected', value);
|
30
25
|
default:
|
31
26
|
return state;
|
27
|
+
}
|
28
|
+
}
|
29
|
+
|
30
|
+
default:
|
31
|
+
return state;
|
32
32
|
}
|
33
33
|
};
|
@@ -18,29 +18,29 @@ const initialState = Immutable({
|
|
18
18
|
|
19
19
|
export default (state = initialState, action) => {
|
20
20
|
switch (action.type) {
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
21
|
+
case TABLES_REQUEST:
|
22
|
+
case CREATE_TABLE:
|
23
|
+
case UPDATE_TABLE:
|
24
|
+
return state.set('loading', true);
|
25
25
|
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
26
|
+
case TABLES_SUCCESS:
|
27
|
+
return state.merge({
|
28
|
+
loading: false,
|
29
|
+
...mapTables(action.payload.results),
|
30
|
+
});
|
31
|
+
case CREATE_TABLE_SUCCESS:
|
32
|
+
case UPDATE_TABLE_SUCCESS:
|
33
|
+
return state.merge({
|
34
|
+
loading: false,
|
35
|
+
...state,
|
36
|
+
...mapTables(action.payload),
|
37
|
+
});
|
38
|
+
case TABLES_FAILURE:
|
39
|
+
case UPDATE_TABLE_FAILURE:
|
40
|
+
case CREATE_TABLE_FAILURE: {
|
41
|
+
return state.set('loading', false);
|
42
|
+
}
|
43
|
+
default:
|
44
|
+
return state;
|
45
45
|
}
|
46
46
|
};
|
@@ -44,7 +44,7 @@ const SubscriptionDetailInfo = ({ subscriptionDetails }) => {
|
|
44
44
|
<td><b>{__(subscriptionAttributes[key])}</b></td>
|
45
45
|
<td>{subscriptionDetailValue(subscriptionDetails, key)}</td>
|
46
46
|
</tr>
|
47
|
-
|
47
|
+
))}
|
48
48
|
<tr>
|
49
49
|
<td><b>{__('Limits')}</b></td>
|
50
50
|
<td>{subscriptionLimits(subscriptionDetails)}</td>
|
@@ -63,7 +63,7 @@ const SubscriptionDetailInfo = ({ subscriptionDetails }) => {
|
|
63
63
|
<td><b>{__(subscriptionPurposeAttributes[key])}</b></td>
|
64
64
|
<td>{subscriptionDetailValue(subscriptionDetails, key)}</td>
|
65
65
|
</tr>
|
66
|
-
|
66
|
+
))}
|
67
67
|
</tbody>
|
68
68
|
</Table>
|
69
69
|
</div>
|
@@ -22,22 +22,22 @@ const SubscriptionDetailProductContent = ({ productContent }) => {
|
|
22
22
|
return (
|
23
23
|
<ListView>
|
24
24
|
{listItems.map(({
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
25
|
+
index,
|
26
|
+
title,
|
27
|
+
availableContent,
|
28
|
+
}) => (
|
29
|
+
<ListView.Item
|
30
|
+
key={index}
|
31
|
+
heading={title}
|
32
|
+
hideCloseIcon
|
33
|
+
>
|
34
34
|
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
35
|
+
<Col sm={12}>
|
36
|
+
{availableContent.map(content => (
|
37
|
+
<SubscriptionDetailProduct key={content.id} content={content} />
|
38
|
+
))}
|
39
|
+
</Col>
|
40
|
+
</ListView.Item>
|
41
41
|
))}
|
42
42
|
</ListView>
|
43
43
|
);
|
@@ -11,7 +11,7 @@ const SubscriptionDetailProducts = ({ subscriptionDetails }) => (
|
|
11
11
|
{subscriptionDetails.provided_products &&
|
12
12
|
subscriptionDetails.provided_products.map(prod => (
|
13
13
|
<ListGroupItem key={prod.id}> {prod.name} </ListGroupItem>
|
14
|
-
|
14
|
+
))}
|
15
15
|
</ListGroup>
|
16
16
|
</div>
|
17
17
|
);
|
@@ -20,47 +20,47 @@ const initialState = Immutable({
|
|
20
20
|
|
21
21
|
export default (state = initialState, action) => {
|
22
22
|
switch (action.type) {
|
23
|
-
|
24
|
-
|
25
|
-
|
23
|
+
case SUBSCRIPTION_DETAILS_REQUEST: {
|
24
|
+
return state.set('loading', true);
|
25
|
+
}
|
26
26
|
|
27
|
-
|
28
|
-
|
29
|
-
|
27
|
+
case PRODUCTS_REQUEST: {
|
28
|
+
return state.set('loading', true);
|
29
|
+
}
|
30
30
|
|
31
|
-
|
32
|
-
|
31
|
+
case SUBSCRIPTION_DETAILS_SUCCESS: {
|
32
|
+
const subscriptionDetails = action.response;
|
33
33
|
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
34
|
+
return state.merge({
|
35
|
+
...subscriptionDetails,
|
36
|
+
loading: false,
|
37
|
+
});
|
38
|
+
}
|
39
39
|
|
40
|
-
|
41
|
-
|
40
|
+
case PRODUCTS_SUCCESS: {
|
41
|
+
const productContent = { productContent: action.response };
|
42
42
|
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
43
|
+
return state.merge({
|
44
|
+
...productContent,
|
45
|
+
loading: false,
|
46
|
+
});
|
47
|
+
}
|
48
48
|
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
49
|
+
case SUBSCRIPTION_DETAILS_FAILURE: {
|
50
|
+
return state.merge({
|
51
|
+
error: action.payload.message,
|
52
|
+
loading: false,
|
53
|
+
});
|
54
|
+
}
|
55
55
|
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
56
|
+
case PRODUCTS_FAILURE: {
|
57
|
+
return state.merge({
|
58
|
+
error: action.payload.message,
|
59
|
+
loading: false,
|
60
|
+
});
|
61
|
+
}
|
62
62
|
|
63
|
-
|
64
|
-
|
63
|
+
default:
|
64
|
+
return state;
|
65
65
|
}
|
66
66
|
};
|
@@ -63,19 +63,19 @@ class SubscriptionDetails extends Component {
|
|
63
63
|
<BreadcrumbsBar
|
64
64
|
onSwitcherItemClick={(e, url) => this.handleBreadcrumbSwitcherItem(e, url)}
|
65
65
|
data={{
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
66
|
+
isSwitchable: true,
|
67
|
+
breadcrumbItems: [
|
68
|
+
{
|
69
|
+
caption: __('Subscriptions'),
|
70
|
+
onClick: () =>
|
71
|
+
this.props.history.push('/subscriptions'),
|
72
|
+
},
|
73
|
+
{
|
74
|
+
caption: String(subscriptionDetails.name || __('Subscription Details')),
|
75
|
+
},
|
76
|
+
],
|
77
|
+
resource,
|
78
|
+
}}
|
79
79
|
/>}
|
80
80
|
|
81
81
|
<TabContainer id="subscription-tabs-container" defaultActiveKey={1}>
|
@@ -37,7 +37,7 @@ const AirGappedTypeForm = ({ showUpdate, onUpdate }) => {
|
|
37
37
|
id="cdn-configuration-type"
|
38
38
|
defaultMessage={__('Red Hat content will be enabled and consumed via the {type} process.')}
|
39
39
|
values={{
|
40
|
-
|
40
|
+
type: <strong>{__('Import/Export')}</strong>,
|
41
41
|
}}
|
42
42
|
/>
|
43
43
|
<br />
|
@@ -46,10 +46,10 @@ const AirGappedTypeForm = ({ showUpdate, onUpdate }) => {
|
|
46
46
|
id="cdn-configuration-type-cdn"
|
47
47
|
defaultMessage={__('Click {update} below to save changes.')}
|
48
48
|
values={{
|
49
|
-
|
49
|
+
update: <strong>{__('Update')}</strong>,
|
50
50
|
}}
|
51
51
|
/>
|
52
|
-
|
52
|
+
}
|
53
53
|
</p>
|
54
54
|
</div>
|
55
55
|
|
@@ -51,8 +51,8 @@ const CdnTypeForm = ({ showUpdate, onUpdate, url }) => {
|
|
51
51
|
id="cdn-configuration-type"
|
52
52
|
defaultMessage={__('Red Hat content will be consumed from the {type}.')}
|
53
53
|
values={{
|
54
|
-
|
55
|
-
|
54
|
+
type: <strong>{__('Red Hat CDN')}</strong>,
|
55
|
+
}}
|
56
56
|
/>
|
57
57
|
<br />
|
58
58
|
{showUpdate &&
|
@@ -60,8 +60,8 @@ const CdnTypeForm = ({ showUpdate, onUpdate, url }) => {
|
|
60
60
|
id="cdn-configuration-type-cdn"
|
61
61
|
defaultMessage={__('Click {update} below to save changes.')}
|
62
62
|
values={{
|
63
|
-
|
64
|
-
|
63
|
+
update: <strong>{__('Update')}</strong>,
|
64
|
+
}}
|
65
65
|
/>
|
66
66
|
}
|
67
67
|
</Text>
|
@@ -114,7 +114,7 @@ const UpstreamServerTypeForm = ({
|
|
114
114
|
defaultMessage={__('Red Hat content will be consumed from an {type}.')}
|
115
115
|
values={{
|
116
116
|
type: <strong>{__('upstream Foreman server')}</strong>,
|
117
|
-
|
117
|
+
}}
|
118
118
|
/>
|
119
119
|
<br />
|
120
120
|
{showUpdate &&
|
@@ -122,10 +122,10 @@ const UpstreamServerTypeForm = ({
|
|
122
122
|
id="cdn-configuration-type-upstream-server"
|
123
123
|
defaultMessage={__('Provide the required information and click {update} below to save changes.')}
|
124
124
|
values={{
|
125
|
-
|
125
|
+
update: <strong>{__('Update')}</strong>,
|
126
126
|
}}
|
127
127
|
/>
|
128
|
-
|
128
|
+
}
|
129
129
|
</Text>
|
130
130
|
</div>
|
131
131
|
<FormGroup
|