V2Wizard: Initialize packages with OpenSCAP
This initializes packages upon a selection of an OpenSCAP profile. Current logic also fixes a bug previously present in V1 - when changing an OpenSCAP profile with other previously chosen packages, the packages outside of the profile persist and don't get removed.
This commit is contained in:
parent
d219a233d9
commit
91873dc810
4 changed files with 38 additions and 1 deletions
|
|
@ -34,6 +34,10 @@ import {
|
|||
selectEnabledServices,
|
||||
changeDisabledServices,
|
||||
changeEnabledServices,
|
||||
clearOscapPackages,
|
||||
addPackage,
|
||||
selectPackages,
|
||||
removePackage,
|
||||
} from '../../../../store/wizardSlice';
|
||||
|
||||
const ProfileSelector = () => {
|
||||
|
|
@ -42,6 +46,7 @@ const ProfileSelector = () => {
|
|||
let disabledServices = useAppSelector(selectDisabledServices);
|
||||
let enabledServices = useAppSelector(selectEnabledServices);
|
||||
const release = useAppSelector(selectDistribution);
|
||||
const packages = useAppSelector(selectPackages);
|
||||
const dispatch = useAppDispatch();
|
||||
const [profileName, setProfileName] = useState<string | undefined>('None');
|
||||
const [isOpen, setIsOpen] = useState(false);
|
||||
|
|
@ -96,6 +101,25 @@ const ProfileSelector = () => {
|
|||
}
|
||||
}, [data]);
|
||||
|
||||
useEffect(() => {
|
||||
dispatch(clearOscapPackages());
|
||||
for (const pkg in data?.packages) {
|
||||
if (
|
||||
packages.map((pkg) => pkg.name).includes(data?.packages[Number(pkg)])
|
||||
) {
|
||||
dispatch(removePackage(data?.packages[Number(pkg)]));
|
||||
}
|
||||
dispatch(
|
||||
addPackage({
|
||||
name: data?.packages[Number(pkg)],
|
||||
summary: 'Required by chosen OpenSCAP profile',
|
||||
repository: 'distro',
|
||||
isRequiredByOpenScap: true,
|
||||
})
|
||||
);
|
||||
}
|
||||
}, [data?.packages, dispatch]);
|
||||
|
||||
const handleToggle = () => {
|
||||
if (!isOpen) {
|
||||
refetch();
|
||||
|
|
@ -108,6 +132,7 @@ const ProfileSelector = () => {
|
|||
dispatch(changeKernel(undefined));
|
||||
dispatch(changeDisabledServices(undefined));
|
||||
dispatch(changeEnabledServices(undefined));
|
||||
dispatch(clearOscapPackages());
|
||||
setProfileName(undefined);
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -36,10 +36,13 @@ import {
|
|||
addPackage,
|
||||
} from '../../../../store/wizardSlice';
|
||||
|
||||
type PackageRepository = 'distro' | 'custom' | '';
|
||||
|
||||
export type IBPackageWithRepositoryInfo = {
|
||||
name: Package['name'];
|
||||
summary: Package['summary'];
|
||||
repository: string;
|
||||
repository: PackageRepository;
|
||||
isRequiredByOpenScap: boolean;
|
||||
};
|
||||
|
||||
const EmptySearch = () => {
|
||||
|
|
@ -180,6 +183,7 @@ const Packages = () => {
|
|||
transformedDistroData = dataDistroPackages.data.map((values) => ({
|
||||
...values,
|
||||
repository: 'distro',
|
||||
isRequiredByOpenScap: false,
|
||||
}));
|
||||
}
|
||||
|
||||
|
|
@ -188,6 +192,7 @@ const Packages = () => {
|
|||
name: values.package_name!,
|
||||
summary: values.summary!,
|
||||
repository: 'custom',
|
||||
isRequiredByOpenScap: false,
|
||||
}));
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue