ESLint: All the single quotes
This commit is contained in:
parent
eafcd200ae
commit
bb345c0e4f
118 changed files with 1269 additions and 1269 deletions
|
|
@ -124,7 +124,7 @@ module.exports = defineConfig([
|
||||||
semi: true,
|
semi: true,
|
||||||
tabWidth: 2,
|
tabWidth: 2,
|
||||||
singleQuote: true,
|
singleQuote: true,
|
||||||
jsxSingleQuote: false,
|
jsxSingleQuote: true,
|
||||||
bracketSpacing: true,
|
bracketSpacing: true,
|
||||||
tsxSingleQuote: true,
|
tsxSingleQuote: true,
|
||||||
tsSingleQuote: true,
|
tsSingleQuote: true,
|
||||||
|
|
|
||||||
|
|
@ -41,7 +41,7 @@ const Application = () => {
|
||||||
};
|
};
|
||||||
const ImageBuilder = () => (
|
const ImageBuilder = () => (
|
||||||
<Provider store={store}>
|
<Provider store={store}>
|
||||||
<Page className="no-masthead-sidebar" isContentFilled>
|
<Page className='no-masthead-sidebar' isContentFilled>
|
||||||
<PageSection>
|
<PageSection>
|
||||||
<Application />
|
<Application />
|
||||||
</PageSection>
|
</PageSection>
|
||||||
|
|
|
||||||
|
|
@ -58,10 +58,10 @@ export const BlueprintActionsMenu: React.FunctionComponent<
|
||||||
ref={toggleRef}
|
ref={toggleRef}
|
||||||
isExpanded={showBlueprintActionsMenu}
|
isExpanded={showBlueprintActionsMenu}
|
||||||
onClick={() => setShowBlueprintActionsMenu(!showBlueprintActionsMenu)}
|
onClick={() => setShowBlueprintActionsMenu(!showBlueprintActionsMenu)}
|
||||||
variant="plain"
|
variant='plain'
|
||||||
aria-label="blueprint menu toggle"
|
aria-label='blueprint menu toggle'
|
||||||
>
|
>
|
||||||
<EllipsisVIcon aria-hidden="true" />
|
<EllipsisVIcon aria-hidden='true' />
|
||||||
</MenuToggle>
|
</MenuToggle>
|
||||||
)}
|
)}
|
||||||
>
|
>
|
||||||
|
|
|
||||||
|
|
@ -52,7 +52,7 @@ const BlueprintCard = ({ blueprint }: blueprintProps) => {
|
||||||
>
|
>
|
||||||
<CardTitle>
|
<CardTitle>
|
||||||
{isLoading && blueprint.id === selectedBlueprintId && (
|
{isLoading && blueprint.id === selectedBlueprintId && (
|
||||||
<Spinner size="md" />
|
<Spinner size='md' />
|
||||||
)}
|
)}
|
||||||
{blueprint.name}
|
{blueprint.name}
|
||||||
</CardTitle>
|
</CardTitle>
|
||||||
|
|
|
||||||
|
|
@ -53,20 +53,20 @@ const BlueprintDiffModal = ({
|
||||||
/>
|
/>
|
||||||
<ModalBody>
|
<ModalBody>
|
||||||
<DiffEditor
|
<DiffEditor
|
||||||
height="90vh"
|
height='90vh'
|
||||||
language="json"
|
language='json'
|
||||||
original={JSON.stringify(baseBlueprint, undefined, 2)}
|
original={JSON.stringify(baseBlueprint, undefined, 2)}
|
||||||
modified={JSON.stringify(blueprint, undefined, 2)}
|
modified={JSON.stringify(blueprint, undefined, 2)}
|
||||||
/>
|
/>
|
||||||
</ModalBody>
|
</ModalBody>
|
||||||
<ModalFooter>
|
<ModalFooter>
|
||||||
<BuildImagesButton key="build-button">
|
<BuildImagesButton key='build-button'>
|
||||||
Synchronize images
|
Synchronize images
|
||||||
</BuildImagesButton>
|
</BuildImagesButton>
|
||||||
<Button
|
<Button
|
||||||
key="cancel-button"
|
key='cancel-button'
|
||||||
variant="link"
|
variant='link'
|
||||||
type="button"
|
type='button'
|
||||||
onClick={onClose}
|
onClick={onClose}
|
||||||
>
|
>
|
||||||
Cancel
|
Cancel
|
||||||
|
|
|
||||||
|
|
@ -58,10 +58,10 @@ const BlueprintVersionFilter: React.FC<blueprintVersionFilterProps> = ({
|
||||||
shouldFocusToggleOnSelect
|
shouldFocusToggleOnSelect
|
||||||
>
|
>
|
||||||
<DropdownList>
|
<DropdownList>
|
||||||
<DropdownItem value={'all'} key="all">
|
<DropdownItem value={'all'} key='all'>
|
||||||
All versions
|
All versions
|
||||||
</DropdownItem>
|
</DropdownItem>
|
||||||
<DropdownItem value={'latest'} key="newest">
|
<DropdownItem value={'latest'} key='newest'>
|
||||||
Newest
|
Newest
|
||||||
</DropdownItem>
|
</DropdownItem>
|
||||||
</DropdownList>
|
</DropdownList>
|
||||||
|
|
|
||||||
|
|
@ -50,8 +50,8 @@ const BlueprintsPagination = () => {
|
||||||
page={currPage}
|
page={currPage}
|
||||||
onSetPage={onSetPage}
|
onSetPage={onSetPage}
|
||||||
onPerPageSelect={onPerPageSelect}
|
onPerPageSelect={onPerPageSelect}
|
||||||
widgetId="blueprints-pagination-bottom"
|
widgetId='blueprints-pagination-bottom'
|
||||||
data-testid="blueprints-pagination-bottom"
|
data-testid='blueprints-pagination-bottom'
|
||||||
isCompact
|
isCompact
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -100,7 +100,7 @@ const BlueprintsSidebar = () => {
|
||||||
if (isLoading) {
|
if (isLoading) {
|
||||||
return (
|
return (
|
||||||
<Bullseye>
|
<Bullseye>
|
||||||
<Spinner size="xl" />
|
<Spinner size='xl' />
|
||||||
</Bullseye>
|
</Bullseye>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
@ -114,8 +114,8 @@ const BlueprintsSidebar = () => {
|
||||||
<EmptyBlueprintState
|
<EmptyBlueprintState
|
||||||
icon={PlusCircleIcon}
|
icon={PlusCircleIcon}
|
||||||
action={<Link to={resolveRelPath('imagewizard')}>Add blueprint</Link>}
|
action={<Link to={resolveRelPath('imagewizard')}>Add blueprint</Link>}
|
||||||
titleText="No blueprints yet"
|
titleText='No blueprints yet'
|
||||||
bodyText="Add a blueprint and optionally build related images."
|
bodyText='Add a blueprint and optionally build related images.'
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
@ -147,7 +147,7 @@ const BlueprintsSidebar = () => {
|
||||||
<Flex justifyContent={{ default: 'justifyContentCenter' }}>
|
<Flex justifyContent={{ default: 'justifyContentCenter' }}>
|
||||||
<FlexItem>
|
<FlexItem>
|
||||||
<Button
|
<Button
|
||||||
variant="link"
|
variant='link'
|
||||||
isDisabled={!selectedBlueprintId}
|
isDisabled={!selectedBlueprintId}
|
||||||
onClick={handleClickViewAll}
|
onClick={handleClickViewAll}
|
||||||
>
|
>
|
||||||
|
|
@ -163,14 +163,14 @@ const BlueprintsSidebar = () => {
|
||||||
icon={SearchIcon}
|
icon={SearchIcon}
|
||||||
action={
|
action={
|
||||||
<Button
|
<Button
|
||||||
variant="link"
|
variant='link'
|
||||||
onClick={() => dispatch(setBlueprintSearchInput(undefined))}
|
onClick={() => dispatch(setBlueprintSearchInput(undefined))}
|
||||||
>
|
>
|
||||||
Clear all filters
|
Clear all filters
|
||||||
</Button>
|
</Button>
|
||||||
}
|
}
|
||||||
titleText="No blueprints found"
|
titleText='No blueprints found'
|
||||||
bodyText="No blueprints match your search criteria. Try a different search."
|
bodyText='No blueprints match your search criteria. Try a different search.'
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
{blueprintsTotal > 0 &&
|
{blueprintsTotal > 0 &&
|
||||||
|
|
@ -212,7 +212,7 @@ const BlueprintSearch = ({ blueprintsTotal }: blueprintSearchProps) => {
|
||||||
return (
|
return (
|
||||||
<SearchInput
|
<SearchInput
|
||||||
value={blueprintSearchInput || ''}
|
value={blueprintSearchInput || ''}
|
||||||
placeholder="Search by name or description"
|
placeholder='Search by name or description'
|
||||||
onChange={(_event, value) => onChange(value)}
|
onChange={(_event, value) => onChange(value)}
|
||||||
onClear={() => onChange('')}
|
onClear={() => onChange('')}
|
||||||
resultsCount={`${blueprintsTotal} blueprints`}
|
resultsCount={`${blueprintsTotal} blueprints`}
|
||||||
|
|
@ -226,7 +226,7 @@ const EmptyBlueprintState = ({
|
||||||
icon,
|
icon,
|
||||||
action,
|
action,
|
||||||
}: emptyBlueprintStateProps) => (
|
}: emptyBlueprintStateProps) => (
|
||||||
<EmptyState headingLevel="h4" icon={icon} titleText={titleText} variant="sm">
|
<EmptyState headingLevel='h4' icon={icon} titleText={titleText} variant='sm'>
|
||||||
<EmptyStateBody>{bodyText}</EmptyStateBody>
|
<EmptyStateBody>{bodyText}</EmptyStateBody>
|
||||||
<EmptyStateFooter>
|
<EmptyStateFooter>
|
||||||
<EmptyStateActions>{action}</EmptyStateActions>
|
<EmptyStateActions>{action}</EmptyStateActions>
|
||||||
|
|
|
||||||
|
|
@ -101,17 +101,17 @@ export const BuildImagesButton = ({ children }: BuildImagesButtonPropTypes) => {
|
||||||
onOpenChange={(isOpen: boolean) => setIsOpen(isOpen)}
|
onOpenChange={(isOpen: boolean) => setIsOpen(isOpen)}
|
||||||
toggle={(toggleRef: React.Ref<MenuToggleElement>) => (
|
toggle={(toggleRef: React.Ref<MenuToggleElement>) => (
|
||||||
<MenuToggle
|
<MenuToggle
|
||||||
variant="primary"
|
variant='primary'
|
||||||
data-testid="blueprint-build-image-menu"
|
data-testid='blueprint-build-image-menu'
|
||||||
ref={toggleRef}
|
ref={toggleRef}
|
||||||
onClick={onToggleClick}
|
onClick={onToggleClick}
|
||||||
isExpanded={isOpen}
|
isExpanded={isOpen}
|
||||||
splitButtonItems={[
|
splitButtonItems={[
|
||||||
<MenuToggleAction
|
<MenuToggleAction
|
||||||
data-testid="blueprint-build-image-menu-option"
|
data-testid='blueprint-build-image-menu-option'
|
||||||
key="split-action"
|
key='split-action'
|
||||||
onClick={onBuildHandler}
|
onClick={onBuildHandler}
|
||||||
id="wizard-build-image-btn"
|
id='wizard-build-image-btn'
|
||||||
isDisabled={
|
isDisabled={
|
||||||
!selectedBlueprintId ||
|
!selectedBlueprintId ||
|
||||||
deselectedTargets.length === blueprintImageType?.length
|
deselectedTargets.length === blueprintImageType?.length
|
||||||
|
|
@ -127,7 +127,7 @@ export const BuildImagesButton = ({ children }: BuildImagesButtonPropTypes) => {
|
||||||
} as React.CSSProperties
|
} as React.CSSProperties
|
||||||
}
|
}
|
||||||
isInline
|
isInline
|
||||||
size="md"
|
size='md'
|
||||||
/>
|
/>
|
||||||
</FlexItem>
|
</FlexItem>
|
||||||
)}
|
)}
|
||||||
|
|
|
||||||
|
|
@ -93,16 +93,16 @@ export const DeleteBlueprintModal: React.FunctionComponent<
|
||||||
};
|
};
|
||||||
return (
|
return (
|
||||||
<Modal variant={ModalVariant.small} isOpen={isOpen} onClose={onDeleteClose}>
|
<Modal variant={ModalVariant.small} isOpen={isOpen} onClose={onDeleteClose}>
|
||||||
<ModalHeader title={'Delete blueprint?'} titleIconVariant="warning" />
|
<ModalHeader title={'Delete blueprint?'} titleIconVariant='warning' />
|
||||||
<ModalBody>
|
<ModalBody>
|
||||||
All versions of {blueprintName} and its associated images will be
|
All versions of {blueprintName} and its associated images will be
|
||||||
deleted.
|
deleted.
|
||||||
</ModalBody>
|
</ModalBody>
|
||||||
<ModalFooter>
|
<ModalFooter>
|
||||||
<Button variant="danger" type="button" onClick={handleDelete}>
|
<Button variant='danger' type='button' onClick={handleDelete}>
|
||||||
Delete
|
Delete
|
||||||
</Button>
|
</Button>
|
||||||
<Button variant="link" type="button" onClick={onDeleteClose}>
|
<Button variant='link' type='button' onClick={onDeleteClose}>
|
||||||
Cancel
|
Cancel
|
||||||
</Button>
|
</Button>
|
||||||
</ModalFooter>
|
</ModalFooter>
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,7 @@ export const EditBlueprintButton = () => {
|
||||||
onClick={() =>
|
onClick={() =>
|
||||||
navigate(resolveRelPath(`imagewizard/${selectedBlueprintId}`))
|
navigate(resolveRelPath(`imagewizard/${selectedBlueprintId}`))
|
||||||
}
|
}
|
||||||
variant="secondary"
|
variant='secondary'
|
||||||
>
|
>
|
||||||
Edit blueprint
|
Edit blueprint
|
||||||
</Button>
|
</Button>
|
||||||
|
|
|
||||||
|
|
@ -258,9 +258,9 @@ export const ImportBlueprintModal: React.FunctionComponent<
|
||||||
>
|
>
|
||||||
<Button
|
<Button
|
||||||
icon={<HelpIcon />}
|
icon={<HelpIcon />}
|
||||||
variant="plain"
|
variant='plain'
|
||||||
aria-label="About import"
|
aria-label='About import'
|
||||||
className="pf-v6-u-pl-sm"
|
className='pf-v6-u-pl-sm'
|
||||||
isInline
|
isInline
|
||||||
/>
|
/>
|
||||||
</Popover>
|
</Popover>
|
||||||
|
|
@ -269,23 +269,23 @@ export const ImportBlueprintModal: React.FunctionComponent<
|
||||||
/>
|
/>
|
||||||
<ModalBody>
|
<ModalBody>
|
||||||
<Form>
|
<Form>
|
||||||
<FormGroup fieldId="checkbox-import-custom-repositories">
|
<FormGroup fieldId='checkbox-import-custom-repositories'>
|
||||||
<Checkbox
|
<Checkbox
|
||||||
label="Import missing custom repositories after file upload."
|
label='Import missing custom repositories after file upload.'
|
||||||
isChecked={isCheckedImportRepos}
|
isChecked={isCheckedImportRepos}
|
||||||
onChange={() => setIsCheckedImportRepos((prev) => !prev)}
|
onChange={() => setIsCheckedImportRepos((prev) => !prev)}
|
||||||
aria-label="Import Custom Repositories checkbox"
|
aria-label='Import Custom Repositories checkbox'
|
||||||
id="checkbox-import-custom-repositories"
|
id='checkbox-import-custom-repositories'
|
||||||
name="Import Repositories"
|
name='Import Repositories'
|
||||||
/>
|
/>
|
||||||
</FormGroup>
|
</FormGroup>
|
||||||
<FormGroup fieldId="import-blueprint-file-upload">
|
<FormGroup fieldId='import-blueprint-file-upload'>
|
||||||
<FileUpload
|
<FileUpload
|
||||||
id="import-blueprint-file-upload"
|
id='import-blueprint-file-upload'
|
||||||
type="text"
|
type='text'
|
||||||
value={fileContent}
|
value={fileContent}
|
||||||
filename={filename}
|
filename={filename}
|
||||||
filenamePlaceholder="Drag and drop a file or upload one"
|
filenamePlaceholder='Drag and drop a file or upload one'
|
||||||
onFileInputChange={handleFileInputChange}
|
onFileInputChange={handleFileInputChange}
|
||||||
onDataChange={handleDataChange}
|
onDataChange={handleDataChange}
|
||||||
onReadStarted={handleFileReadStarted}
|
onReadStarted={handleFileReadStarted}
|
||||||
|
|
@ -293,7 +293,7 @@ export const ImportBlueprintModal: React.FunctionComponent<
|
||||||
onClearClick={handleClear}
|
onClearClick={handleClear}
|
||||||
isLoading={isLoading}
|
isLoading={isLoading}
|
||||||
isReadOnly={true}
|
isReadOnly={true}
|
||||||
browseButtonText="Upload"
|
browseButtonText='Upload'
|
||||||
dropzoneProps={{
|
dropzoneProps={{
|
||||||
accept: { 'text/json': ['.json'], 'text/plain': ['.toml'] },
|
accept: { 'text/json': ['.json'], 'text/plain': ['.toml'] },
|
||||||
maxSize: 512000,
|
maxSize: 512000,
|
||||||
|
|
@ -319,7 +319,7 @@ export const ImportBlueprintModal: React.FunctionComponent<
|
||||||
</ModalBody>
|
</ModalBody>
|
||||||
<ModalFooter>
|
<ModalFooter>
|
||||||
<Button
|
<Button
|
||||||
type="button"
|
type='button'
|
||||||
isDisabled={isRejected || isInvalidFormat || !fileContent}
|
isDisabled={isRejected || isInvalidFormat || !fileContent}
|
||||||
onClick={() =>
|
onClick={() =>
|
||||||
navigate(resolveRelPath(`imagewizard/import`), {
|
navigate(resolveRelPath(`imagewizard/import`), {
|
||||||
|
|
@ -329,7 +329,7 @@ export const ImportBlueprintModal: React.FunctionComponent<
|
||||||
>
|
>
|
||||||
Review and finish
|
Review and finish
|
||||||
</Button>
|
</Button>
|
||||||
<Button variant="link" type="button" onClick={onImportClose}>
|
<Button variant='link' type='button' onClick={onImportClose}>
|
||||||
Cancel
|
Cancel
|
||||||
</Button>
|
</Button>
|
||||||
</ModalFooter>
|
</ModalFooter>
|
||||||
|
|
|
||||||
|
|
@ -44,13 +44,13 @@ const AWSConfigToggle = ({ value, onChange }: ToggleGroupProps) => {
|
||||||
};
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<FormGroup label="Configure AWS Uploads">
|
<FormGroup label='Configure AWS Uploads'>
|
||||||
<Switch
|
<Switch
|
||||||
id="aws-config-switch"
|
id='aws-config-switch'
|
||||||
ouiaId="aws-config-switch"
|
ouiaId='aws-config-switch'
|
||||||
aria-label="aws-config-switch"
|
aria-label='aws-config-switch'
|
||||||
// empty label so there is no icon
|
// empty label so there is no icon
|
||||||
label=""
|
label=''
|
||||||
isChecked={value}
|
isChecked={value}
|
||||||
onChange={handleChange}
|
onChange={handleChange}
|
||||||
/>
|
/>
|
||||||
|
|
@ -79,19 +79,19 @@ const AWSBucket = ({ value, onChange, isDisabled }: FormGroupProps<string>) => {
|
||||||
|
|
||||||
if (isDisabled) {
|
if (isDisabled) {
|
||||||
return (
|
return (
|
||||||
<DisabledInputGroup label={label} value={value} ariaLabel="aws-bucket" />
|
<DisabledInputGroup label={label} value={value} ariaLabel='aws-bucket' />
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<FormGroup label={label}>
|
<FormGroup label={label}>
|
||||||
<ValidatedInput
|
<ValidatedInput
|
||||||
placeholder="AWS bucket"
|
placeholder='AWS bucket'
|
||||||
ariaLabel="aws-bucket"
|
ariaLabel='aws-bucket'
|
||||||
value={value || ''}
|
value={value || ''}
|
||||||
validator={isAwsBucketValid}
|
validator={isAwsBucketValid}
|
||||||
onChange={(_event, value) => onChange(value)}
|
onChange={(_event, value) => onChange(value)}
|
||||||
helperText="Invalid AWS bucket name"
|
helperText='Invalid AWS bucket name'
|
||||||
/>
|
/>
|
||||||
</FormGroup>
|
</FormGroup>
|
||||||
);
|
);
|
||||||
|
|
@ -100,7 +100,7 @@ const AWSBucket = ({ value, onChange, isDisabled }: FormGroupProps<string>) => {
|
||||||
const CredsPathPopover = () => {
|
const CredsPathPopover = () => {
|
||||||
return (
|
return (
|
||||||
<Popover
|
<Popover
|
||||||
minWidth="35rem"
|
minWidth='35rem'
|
||||||
headerContent={'What is the AWS Credentials Path?'}
|
headerContent={'What is the AWS Credentials Path?'}
|
||||||
bodyContent={
|
bodyContent={
|
||||||
<Content>
|
<Content>
|
||||||
|
|
@ -115,9 +115,9 @@ const CredsPathPopover = () => {
|
||||||
>
|
>
|
||||||
<Button
|
<Button
|
||||||
icon={<HelpIcon />}
|
icon={<HelpIcon />}
|
||||||
variant="plain"
|
variant='plain'
|
||||||
aria-label="Credentials Path Info"
|
aria-label='Credentials Path Info'
|
||||||
className="pf-v6-u-pl-sm header-button"
|
className='pf-v6-u-pl-sm header-button'
|
||||||
/>
|
/>
|
||||||
</Popover>
|
</Popover>
|
||||||
);
|
);
|
||||||
|
|
@ -139,7 +139,7 @@ const AWSCredsPath = ({
|
||||||
<DisabledInputGroup
|
<DisabledInputGroup
|
||||||
value={value}
|
value={value}
|
||||||
label={label}
|
label={label}
|
||||||
ariaLabel="aws-creds-path"
|
ariaLabel='aws-creds-path'
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
@ -147,12 +147,12 @@ const AWSCredsPath = ({
|
||||||
return (
|
return (
|
||||||
<FormGroup label={label}>
|
<FormGroup label={label}>
|
||||||
<ValidatedInput
|
<ValidatedInput
|
||||||
placeholder="Path to AWS credentials"
|
placeholder='Path to AWS credentials'
|
||||||
ariaLabel="aws-creds-path"
|
ariaLabel='aws-creds-path'
|
||||||
value={value || ''}
|
value={value || ''}
|
||||||
validator={isAwsCredsPathValid}
|
validator={isAwsCredsPathValid}
|
||||||
onChange={(_event, value) => onChange(value)}
|
onChange={(_event, value) => onChange(value)}
|
||||||
helperText="Invalid filepath for AWS credentials"
|
helperText='Invalid filepath for AWS credentials'
|
||||||
/>
|
/>
|
||||||
</FormGroup>
|
</FormGroup>
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -48,9 +48,9 @@ const ConfigError = ({
|
||||||
<EmptyState
|
<EmptyState
|
||||||
variant={EmptyStateVariant.xl}
|
variant={EmptyStateVariant.xl}
|
||||||
icon={ExclamationIcon}
|
icon={ExclamationIcon}
|
||||||
color="#C9190B"
|
color='#C9190B'
|
||||||
>
|
>
|
||||||
<Title headingLevel="h4" size="lg">
|
<Title headingLevel='h4' size='lg'>
|
||||||
Error
|
Error
|
||||||
</Title>
|
</Title>
|
||||||
<EmptyStateBody>
|
<EmptyStateBody>
|
||||||
|
|
@ -59,7 +59,7 @@ const ConfigError = ({
|
||||||
</EmptyStateBody>
|
</EmptyStateBody>
|
||||||
<EmptyStateFooter>
|
<EmptyStateFooter>
|
||||||
<EmptyStateActions>
|
<EmptyStateActions>
|
||||||
<Button variant="primary" onClick={onClose}>
|
<Button variant='primary' onClick={onClose}>
|
||||||
Go back
|
Go back
|
||||||
</Button>
|
</Button>
|
||||||
</EmptyStateActions>
|
</EmptyStateActions>
|
||||||
|
|
@ -118,8 +118,8 @@ export const CloudProviderConfig = () => {
|
||||||
<PageSection>
|
<PageSection>
|
||||||
<Wizard onClose={handleClose}>
|
<Wizard onClose={handleClose}>
|
||||||
<WizardStep
|
<WizardStep
|
||||||
name="AWS Config"
|
name='AWS Config'
|
||||||
id="aws-config"
|
id='aws-config'
|
||||||
footer={{
|
footer={{
|
||||||
nextButtonText: 'Submit',
|
nextButtonText: 'Submit',
|
||||||
isNextDisabled: !isAwsStepValid(config),
|
isNextDisabled: !isAwsStepValid(config),
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@ import cockpit from 'cockpit';
|
||||||
export const NotReady = ({ enabled }: { enabled: boolean }) => {
|
export const NotReady = ({ enabled }: { enabled: boolean }) => {
|
||||||
return (
|
return (
|
||||||
<EmptyState
|
<EmptyState
|
||||||
headingLevel="h4"
|
headingLevel='h4'
|
||||||
icon={CubesIcon}
|
icon={CubesIcon}
|
||||||
titleText={`OSBuild Composer is not ${enabled ? 'started' : 'enabled'}`}
|
titleText={`OSBuild Composer is not ${enabled ? 'started' : 'enabled'}`}
|
||||||
variant={EmptyStateVariant.xl}
|
variant={EmptyStateVariant.xl}
|
||||||
|
|
@ -21,7 +21,7 @@ export const NotReady = ({ enabled }: { enabled: boolean }) => {
|
||||||
<EmptyStateFooter>
|
<EmptyStateFooter>
|
||||||
<EmptyStateActions>
|
<EmptyStateActions>
|
||||||
<Button
|
<Button
|
||||||
variant="primary"
|
variant='primary'
|
||||||
onClick={(event) => {
|
onClick={(event) => {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
cockpit
|
cockpit
|
||||||
|
|
@ -40,7 +40,7 @@ export const NotReady = ({ enabled }: { enabled: boolean }) => {
|
||||||
</EmptyStateActions>
|
</EmptyStateActions>
|
||||||
<EmptyStateActions>
|
<EmptyStateActions>
|
||||||
<Button
|
<Button
|
||||||
variant="link"
|
variant='link'
|
||||||
onClick={(event) => {
|
onClick={(event) => {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
cockpit.jump(
|
cockpit.jump(
|
||||||
|
|
|
||||||
|
|
@ -10,9 +10,9 @@ import { LockIcon } from '@patternfly/react-icons';
|
||||||
export const RequireAdmin = () => {
|
export const RequireAdmin = () => {
|
||||||
return (
|
return (
|
||||||
<EmptyState
|
<EmptyState
|
||||||
headingLevel="h4"
|
headingLevel='h4'
|
||||||
icon={LockIcon}
|
icon={LockIcon}
|
||||||
titleText="Access is limited."
|
titleText='Access is limited.'
|
||||||
variant={EmptyStateVariant.xl}
|
variant={EmptyStateVariant.xl}
|
||||||
>
|
>
|
||||||
<EmptyStateBody>
|
<EmptyStateBody>
|
||||||
|
|
|
||||||
|
|
@ -118,7 +118,7 @@ export const CustomWizardFooter = ({
|
||||||
<WizardFooterWrapper>
|
<WizardFooterWrapper>
|
||||||
<Flex columnGap={{ default: 'columnGapSm' }}>
|
<Flex columnGap={{ default: 'columnGapSm' }}>
|
||||||
<Button
|
<Button
|
||||||
variant="primary"
|
variant='primary'
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
if (!process.env.IS_ON_PREMISE) {
|
if (!process.env.IS_ON_PREMISE) {
|
||||||
analytics.track(`${AMPLITUDE_MODULE_NAME} - Button Clicked`, {
|
analytics.track(`${AMPLITUDE_MODULE_NAME} - Button Clicked`, {
|
||||||
|
|
@ -134,7 +134,7 @@ export const CustomWizardFooter = ({
|
||||||
Next
|
Next
|
||||||
</Button>
|
</Button>
|
||||||
<Button
|
<Button
|
||||||
variant="secondary"
|
variant='secondary'
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
if (!process.env.IS_ON_PREMISE) {
|
if (!process.env.IS_ON_PREMISE) {
|
||||||
analytics.track(`${AMPLITUDE_MODULE_NAME} - Button Clicked`, {
|
analytics.track(`${AMPLITUDE_MODULE_NAME} - Button Clicked`, {
|
||||||
|
|
@ -151,7 +151,7 @@ export const CustomWizardFooter = ({
|
||||||
</Button>
|
</Button>
|
||||||
{optional && (
|
{optional && (
|
||||||
<Button
|
<Button
|
||||||
variant="tertiary"
|
variant='tertiary'
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
if (!process.env.IS_ON_PREMISE) {
|
if (!process.env.IS_ON_PREMISE) {
|
||||||
analytics.track(`${AMPLITUDE_MODULE_NAME} - Button Clicked`, {
|
analytics.track(`${AMPLITUDE_MODULE_NAME} - Button Clicked`, {
|
||||||
|
|
@ -168,7 +168,7 @@ export const CustomWizardFooter = ({
|
||||||
</Button>
|
</Button>
|
||||||
)}
|
)}
|
||||||
<Button
|
<Button
|
||||||
variant="link"
|
variant='link'
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
if (!process.env.IS_ON_PREMISE) {
|
if (!process.env.IS_ON_PREMISE) {
|
||||||
analytics.track(`${AMPLITUDE_MODULE_NAME} - Button Clicked`, {
|
analytics.track(`${AMPLITUDE_MODULE_NAME} - Button Clicked`, {
|
||||||
|
|
@ -372,8 +372,8 @@ const CreateImageWizard = ({ isEdit }: CreateImageWizardProps) => {
|
||||||
isVisitRequired
|
isVisitRequired
|
||||||
>
|
>
|
||||||
<WizardStep
|
<WizardStep
|
||||||
name="Image output"
|
name='Image output'
|
||||||
id="step-image-output"
|
id='step-image-output'
|
||||||
footer={
|
footer={
|
||||||
<CustomWizardFooter
|
<CustomWizardFooter
|
||||||
disableNext={targetEnvironments.length === 0}
|
disableNext={targetEnvironments.length === 0}
|
||||||
|
|
@ -384,8 +384,8 @@ const CreateImageWizard = ({ isEdit }: CreateImageWizardProps) => {
|
||||||
<ImageOutputStep />
|
<ImageOutputStep />
|
||||||
</WizardStep>
|
</WizardStep>
|
||||||
<WizardStep
|
<WizardStep
|
||||||
name="Target Environment"
|
name='Target Environment'
|
||||||
id="step-target-environment"
|
id='step-target-environment'
|
||||||
isHidden={
|
isHidden={
|
||||||
!targetEnvironments.find(
|
!targetEnvironments.find(
|
||||||
(target: string) =>
|
(target: string) =>
|
||||||
|
|
@ -394,9 +394,9 @@ const CreateImageWizard = ({ isEdit }: CreateImageWizardProps) => {
|
||||||
}
|
}
|
||||||
steps={[
|
steps={[
|
||||||
<WizardStep
|
<WizardStep
|
||||||
name="Amazon Web Services"
|
name='Amazon Web Services'
|
||||||
id="wizard-target-aws"
|
id='wizard-target-aws'
|
||||||
key="wizard-target-aws"
|
key='wizard-target-aws'
|
||||||
footer={
|
footer={
|
||||||
<CustomWizardFooter
|
<CustomWizardFooter
|
||||||
disableNext={
|
disableNext={
|
||||||
|
|
@ -415,9 +415,9 @@ const CreateImageWizard = ({ isEdit }: CreateImageWizardProps) => {
|
||||||
<Aws />
|
<Aws />
|
||||||
</WizardStep>,
|
</WizardStep>,
|
||||||
<WizardStep
|
<WizardStep
|
||||||
name="Google Cloud Platform"
|
name='Google Cloud Platform'
|
||||||
id="wizard-target-gcp"
|
id='wizard-target-gcp'
|
||||||
key="wizard-target-gcp"
|
key='wizard-target-gcp'
|
||||||
footer={
|
footer={
|
||||||
<CustomWizardFooter
|
<CustomWizardFooter
|
||||||
disableNext={
|
disableNext={
|
||||||
|
|
@ -431,9 +431,9 @@ const CreateImageWizard = ({ isEdit }: CreateImageWizardProps) => {
|
||||||
<Gcp />
|
<Gcp />
|
||||||
</WizardStep>,
|
</WizardStep>,
|
||||||
<WizardStep
|
<WizardStep
|
||||||
name="Azure"
|
name='Azure'
|
||||||
id="wizard-target-azure"
|
id='wizard-target-azure'
|
||||||
key="wizard-target-azure"
|
key='wizard-target-azure'
|
||||||
footer={
|
footer={
|
||||||
<CustomWizardFooter
|
<CustomWizardFooter
|
||||||
disableNext={
|
disableNext={
|
||||||
|
|
@ -456,13 +456,13 @@ const CreateImageWizard = ({ isEdit }: CreateImageWizardProps) => {
|
||||||
]}
|
]}
|
||||||
/>
|
/>
|
||||||
<WizardStep
|
<WizardStep
|
||||||
name="Optional steps"
|
name='Optional steps'
|
||||||
id="step-optional-steps"
|
id='step-optional-steps'
|
||||||
steps={[
|
steps={[
|
||||||
<WizardStep
|
<WizardStep
|
||||||
name="Register"
|
name='Register'
|
||||||
id="step-register"
|
id='step-register'
|
||||||
key="step-register"
|
key='step-register'
|
||||||
isHidden={!!process.env.IS_ON_PREMISE || !isRhel(distribution)}
|
isHidden={!!process.env.IS_ON_PREMISE || !isRhel(distribution)}
|
||||||
navItem={CustomStatusNavItem}
|
navItem={CustomStatusNavItem}
|
||||||
status={
|
status={
|
||||||
|
|
@ -483,8 +483,8 @@ const CreateImageWizard = ({ isEdit }: CreateImageWizardProps) => {
|
||||||
</WizardStep>,
|
</WizardStep>,
|
||||||
<WizardStep
|
<WizardStep
|
||||||
name={complianceEnabled ? 'Compliance' : 'OpenSCAP'}
|
name={complianceEnabled ? 'Compliance' : 'OpenSCAP'}
|
||||||
id="step-oscap"
|
id='step-oscap'
|
||||||
key="step-oscap"
|
key='step-oscap'
|
||||||
navItem={CustomStatusNavItem}
|
navItem={CustomStatusNavItem}
|
||||||
footer={
|
footer={
|
||||||
<CustomWizardFooter disableNext={false} optional={true} />
|
<CustomWizardFooter disableNext={false} optional={true} />
|
||||||
|
|
@ -493,9 +493,9 @@ const CreateImageWizard = ({ isEdit }: CreateImageWizardProps) => {
|
||||||
<OscapStep />
|
<OscapStep />
|
||||||
</WizardStep>,
|
</WizardStep>,
|
||||||
<WizardStep
|
<WizardStep
|
||||||
name="File system configuration"
|
name='File system configuration'
|
||||||
id="step-file-system"
|
id='step-file-system'
|
||||||
key="step-file-system"
|
key='step-file-system'
|
||||||
navItem={CustomStatusNavItem}
|
navItem={CustomStatusNavItem}
|
||||||
isHidden={hasWslTargetOnly}
|
isHidden={hasWslTargetOnly}
|
||||||
footer={
|
footer={
|
||||||
|
|
@ -519,9 +519,9 @@ const CreateImageWizard = ({ isEdit }: CreateImageWizardProps) => {
|
||||||
</FileSystemContext.Provider>
|
</FileSystemContext.Provider>
|
||||||
</WizardStep>,
|
</WizardStep>,
|
||||||
<WizardStep
|
<WizardStep
|
||||||
name="Repeatable build"
|
name='Repeatable build'
|
||||||
id="wizard-repository-snapshot"
|
id='wizard-repository-snapshot'
|
||||||
key="wizard-repository-snapshot"
|
key='wizard-repository-snapshot'
|
||||||
navItem={CustomStatusNavItem}
|
navItem={CustomStatusNavItem}
|
||||||
status={snapshotValidation.disabledNext ? 'error' : 'default'}
|
status={snapshotValidation.disabledNext ? 'error' : 'default'}
|
||||||
isHidden={!!process.env.IS_ON_PREMISE}
|
isHidden={!!process.env.IS_ON_PREMISE}
|
||||||
|
|
@ -535,9 +535,9 @@ const CreateImageWizard = ({ isEdit }: CreateImageWizardProps) => {
|
||||||
<SnapshotStep />
|
<SnapshotStep />
|
||||||
</WizardStep>,
|
</WizardStep>,
|
||||||
<WizardStep
|
<WizardStep
|
||||||
name="Custom repositories"
|
name='Custom repositories'
|
||||||
id="wizard-custom-repositories"
|
id='wizard-custom-repositories'
|
||||||
key="wizard-custom-repositories"
|
key='wizard-custom-repositories'
|
||||||
navItem={CustomStatusNavItem}
|
navItem={CustomStatusNavItem}
|
||||||
isHidden={!!process.env.IS_ON_PREMISE}
|
isHidden={!!process.env.IS_ON_PREMISE}
|
||||||
isDisabled={snapshotValidation.disabledNext}
|
isDisabled={snapshotValidation.disabledNext}
|
||||||
|
|
@ -548,9 +548,9 @@ const CreateImageWizard = ({ isEdit }: CreateImageWizardProps) => {
|
||||||
<RepositoriesStep />
|
<RepositoriesStep />
|
||||||
</WizardStep>,
|
</WizardStep>,
|
||||||
<WizardStep
|
<WizardStep
|
||||||
name="Additional packages"
|
name='Additional packages'
|
||||||
id="wizard-additional-packages"
|
id='wizard-additional-packages'
|
||||||
key="wizard-additional-packages"
|
key='wizard-additional-packages'
|
||||||
navItem={CustomStatusNavItem}
|
navItem={CustomStatusNavItem}
|
||||||
isDisabled={snapshotValidation.disabledNext}
|
isDisabled={snapshotValidation.disabledNext}
|
||||||
footer={
|
footer={
|
||||||
|
|
@ -560,9 +560,9 @@ const CreateImageWizard = ({ isEdit }: CreateImageWizardProps) => {
|
||||||
<PackagesStep />
|
<PackagesStep />
|
||||||
</WizardStep>,
|
</WizardStep>,
|
||||||
<WizardStep
|
<WizardStep
|
||||||
name="Users"
|
name='Users'
|
||||||
id="wizard-users"
|
id='wizard-users'
|
||||||
key="wizard-users"
|
key='wizard-users'
|
||||||
navItem={CustomStatusNavItem}
|
navItem={CustomStatusNavItem}
|
||||||
status={usersValidation.disabledNext ? 'error' : 'default'}
|
status={usersValidation.disabledNext ? 'error' : 'default'}
|
||||||
footer={
|
footer={
|
||||||
|
|
@ -575,9 +575,9 @@ const CreateImageWizard = ({ isEdit }: CreateImageWizardProps) => {
|
||||||
<UsersStep />
|
<UsersStep />
|
||||||
</WizardStep>,
|
</WizardStep>,
|
||||||
<WizardStep
|
<WizardStep
|
||||||
name="Timezone"
|
name='Timezone'
|
||||||
id="wizard-timezone"
|
id='wizard-timezone'
|
||||||
key="wizard-timezone"
|
key='wizard-timezone'
|
||||||
navItem={CustomStatusNavItem}
|
navItem={CustomStatusNavItem}
|
||||||
status={timezoneValidation.disabledNext ? 'error' : 'default'}
|
status={timezoneValidation.disabledNext ? 'error' : 'default'}
|
||||||
footer={
|
footer={
|
||||||
|
|
@ -590,9 +590,9 @@ const CreateImageWizard = ({ isEdit }: CreateImageWizardProps) => {
|
||||||
<TimezoneStep />
|
<TimezoneStep />
|
||||||
</WizardStep>,
|
</WizardStep>,
|
||||||
<WizardStep
|
<WizardStep
|
||||||
name="Locale"
|
name='Locale'
|
||||||
id="wizard-locale"
|
id='wizard-locale'
|
||||||
key="wizard-locale"
|
key='wizard-locale'
|
||||||
navItem={CustomStatusNavItem}
|
navItem={CustomStatusNavItem}
|
||||||
status={localeValidation.disabledNext ? 'error' : 'default'}
|
status={localeValidation.disabledNext ? 'error' : 'default'}
|
||||||
footer={
|
footer={
|
||||||
|
|
@ -605,9 +605,9 @@ const CreateImageWizard = ({ isEdit }: CreateImageWizardProps) => {
|
||||||
<LocaleStep />
|
<LocaleStep />
|
||||||
</WizardStep>,
|
</WizardStep>,
|
||||||
<WizardStep
|
<WizardStep
|
||||||
name="Hostname"
|
name='Hostname'
|
||||||
id="wizard-hostname"
|
id='wizard-hostname'
|
||||||
key="wizard-hostname"
|
key='wizard-hostname'
|
||||||
navItem={CustomStatusNavItem}
|
navItem={CustomStatusNavItem}
|
||||||
status={hostnameValidation.disabledNext ? 'error' : 'default'}
|
status={hostnameValidation.disabledNext ? 'error' : 'default'}
|
||||||
footer={
|
footer={
|
||||||
|
|
@ -620,9 +620,9 @@ const CreateImageWizard = ({ isEdit }: CreateImageWizardProps) => {
|
||||||
<HostnameStep />
|
<HostnameStep />
|
||||||
</WizardStep>,
|
</WizardStep>,
|
||||||
<WizardStep
|
<WizardStep
|
||||||
name="Kernel"
|
name='Kernel'
|
||||||
id="wizard-kernel"
|
id='wizard-kernel'
|
||||||
key="wizard-kernel"
|
key='wizard-kernel'
|
||||||
navItem={CustomStatusNavItem}
|
navItem={CustomStatusNavItem}
|
||||||
isHidden={hasWslTargetOnly}
|
isHidden={hasWslTargetOnly}
|
||||||
status={kernelValidation.disabledNext ? 'error' : 'default'}
|
status={kernelValidation.disabledNext ? 'error' : 'default'}
|
||||||
|
|
@ -636,9 +636,9 @@ const CreateImageWizard = ({ isEdit }: CreateImageWizardProps) => {
|
||||||
<KernelStep />
|
<KernelStep />
|
||||||
</WizardStep>,
|
</WizardStep>,
|
||||||
<WizardStep
|
<WizardStep
|
||||||
name="Firewall"
|
name='Firewall'
|
||||||
id="wizard-firewall"
|
id='wizard-firewall'
|
||||||
key="wizard-firewall"
|
key='wizard-firewall'
|
||||||
navItem={CustomStatusNavItem}
|
navItem={CustomStatusNavItem}
|
||||||
status={firewallValidation.disabledNext ? 'error' : 'default'}
|
status={firewallValidation.disabledNext ? 'error' : 'default'}
|
||||||
footer={
|
footer={
|
||||||
|
|
@ -651,9 +651,9 @@ const CreateImageWizard = ({ isEdit }: CreateImageWizardProps) => {
|
||||||
<FirewallStep />
|
<FirewallStep />
|
||||||
</WizardStep>,
|
</WizardStep>,
|
||||||
<WizardStep
|
<WizardStep
|
||||||
name="Systemd services"
|
name='Systemd services'
|
||||||
id="wizard-services"
|
id='wizard-services'
|
||||||
key="wizard-services"
|
key='wizard-services'
|
||||||
navItem={CustomStatusNavItem}
|
navItem={CustomStatusNavItem}
|
||||||
status={servicesValidation.disabledNext ? 'error' : 'default'}
|
status={servicesValidation.disabledNext ? 'error' : 'default'}
|
||||||
footer={
|
footer={
|
||||||
|
|
@ -666,9 +666,9 @@ const CreateImageWizard = ({ isEdit }: CreateImageWizardProps) => {
|
||||||
<ServicesStep />
|
<ServicesStep />
|
||||||
</WizardStep>,
|
</WizardStep>,
|
||||||
<WizardStep
|
<WizardStep
|
||||||
name="First boot script configuration"
|
name='First boot script configuration'
|
||||||
id="wizard-first-boot"
|
id='wizard-first-boot'
|
||||||
key="wizard-first-boot"
|
key='wizard-first-boot'
|
||||||
navItem={CustomStatusNavItem}
|
navItem={CustomStatusNavItem}
|
||||||
status={firstBootValidation.disabledNext ? 'error' : 'default'}
|
status={firstBootValidation.disabledNext ? 'error' : 'default'}
|
||||||
isHidden={!!process.env.IS_ON_PREMISE}
|
isHidden={!!process.env.IS_ON_PREMISE}
|
||||||
|
|
@ -684,8 +684,8 @@ const CreateImageWizard = ({ isEdit }: CreateImageWizardProps) => {
|
||||||
]}
|
]}
|
||||||
/>
|
/>
|
||||||
<WizardStep
|
<WizardStep
|
||||||
name="Details"
|
name='Details'
|
||||||
id="step-details"
|
id='step-details'
|
||||||
navItem={CustomStatusNavItem}
|
navItem={CustomStatusNavItem}
|
||||||
status={detailsValidation.disabledNext ? 'error' : 'default'}
|
status={detailsValidation.disabledNext ? 'error' : 'default'}
|
||||||
footer={
|
footer={
|
||||||
|
|
@ -697,8 +697,8 @@ const CreateImageWizard = ({ isEdit }: CreateImageWizardProps) => {
|
||||||
<DetailsStep />
|
<DetailsStep />
|
||||||
</WizardStep>
|
</WizardStep>
|
||||||
<WizardStep
|
<WizardStep
|
||||||
name="Review"
|
name='Review'
|
||||||
id="step-review"
|
id='step-review'
|
||||||
footer={<ReviewWizardFooter />}
|
footer={<ReviewWizardFooter />}
|
||||||
>
|
>
|
||||||
<ReviewStep />
|
<ReviewStep />
|
||||||
|
|
|
||||||
|
|
@ -154,21 +154,21 @@ const LabelInput = ({
|
||||||
<TextInputGroupUtilities>
|
<TextInputGroupUtilities>
|
||||||
<Button
|
<Button
|
||||||
icon={
|
icon={
|
||||||
<Icon status="info">
|
<Icon status='info'>
|
||||||
<PlusCircleIcon />
|
<PlusCircleIcon />
|
||||||
</Icon>
|
</Icon>
|
||||||
}
|
}
|
||||||
variant="plain"
|
variant='plain'
|
||||||
onClick={(e) => handleAddItem(e, inputValue)}
|
onClick={(e) => handleAddItem(e, inputValue)}
|
||||||
isDisabled={!inputValue}
|
isDisabled={!inputValue}
|
||||||
aria-label={ariaLabel}
|
aria-label={ariaLabel}
|
||||||
/>
|
/>
|
||||||
<Button
|
<Button
|
||||||
icon={<TimesIcon />}
|
icon={<TimesIcon />}
|
||||||
variant="plain"
|
variant='plain'
|
||||||
onClick={handleClear}
|
onClick={handleClear}
|
||||||
isDisabled={!inputValue}
|
isDisabled={!inputValue}
|
||||||
aria-label="Clear input"
|
aria-label='Clear input'
|
||||||
/>
|
/>
|
||||||
</TextInputGroupUtilities>
|
</TextInputGroupUtilities>
|
||||||
</TextInputGroup>
|
</TextInputGroup>
|
||||||
|
|
@ -185,7 +185,7 @@ const LabelInput = ({
|
||||||
<LabelGroup
|
<LabelGroup
|
||||||
categoryName={requiredCategoryName}
|
categoryName={requiredCategoryName}
|
||||||
numLabels={20}
|
numLabels={20}
|
||||||
className="pf-v6-u-mt-sm pf-v6-u-w-100"
|
className='pf-v6-u-mt-sm pf-v6-u-w-100'
|
||||||
>
|
>
|
||||||
{requiredList.map((item) => (
|
{requiredList.map((item) => (
|
||||||
<Label key={item} isCompact>
|
<Label key={item} isCompact>
|
||||||
|
|
@ -194,7 +194,7 @@ const LabelInput = ({
|
||||||
))}
|
))}
|
||||||
</LabelGroup>
|
</LabelGroup>
|
||||||
)}
|
)}
|
||||||
<LabelGroup numLabels={20} className="pf-v6-u-mt-sm pf-v6-u-w-100">
|
<LabelGroup numLabels={20} className='pf-v6-u-mt-sm pf-v6-u-w-100'>
|
||||||
{list?.map((item) => (
|
{list?.map((item) => (
|
||||||
<Label
|
<Label
|
||||||
key={item}
|
key={item}
|
||||||
|
|
|
||||||
|
|
@ -5,8 +5,8 @@ import { Alert } from '@patternfly/react-core';
|
||||||
const UsrSubDirectoriesDisabled = () => {
|
const UsrSubDirectoriesDisabled = () => {
|
||||||
return (
|
return (
|
||||||
<Alert
|
<Alert
|
||||||
variant="warning"
|
variant='warning'
|
||||||
title="Sub-directories for the /usr mount point are no longer supported"
|
title='Sub-directories for the /usr mount point are no longer supported'
|
||||||
isInline
|
isInline
|
||||||
>
|
>
|
||||||
Please note that including sub-directories in the /usr path is no longer
|
Please note that including sub-directories in the /usr path is no longer
|
||||||
|
|
|
||||||
|
|
@ -98,7 +98,7 @@ export const ValidatedInputAndTextArea = ({
|
||||||
)}
|
)}
|
||||||
{warning !== undefined && warning !== '' && (
|
{warning !== undefined && warning !== '' && (
|
||||||
<HelperText>
|
<HelperText>
|
||||||
<HelperTextItem variant="warning">{warning}</HelperTextItem>
|
<HelperTextItem variant='warning'>{warning}</HelperTextItem>
|
||||||
</HelperText>
|
</HelperText>
|
||||||
)}
|
)}
|
||||||
{validated === 'error' && hasError && (
|
{validated === 'error' && hasError && (
|
||||||
|
|
@ -125,7 +125,7 @@ const getValidationState = (
|
||||||
export const ErrorMessage = ({ errorMessage }: ErrorMessageProps) => {
|
export const ErrorMessage = ({ errorMessage }: ErrorMessageProps) => {
|
||||||
return (
|
return (
|
||||||
<HelperText>
|
<HelperText>
|
||||||
<HelperTextItem variant="error">{errorMessage}</HelperTextItem>
|
<HelperTextItem variant='error'>{errorMessage}</HelperTextItem>
|
||||||
</HelperText>
|
</HelperText>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
@ -158,7 +158,7 @@ export const ValidatedInput = ({
|
||||||
<TextInput
|
<TextInput
|
||||||
value={value}
|
value={value}
|
||||||
data-testid={dataTestId}
|
data-testid={dataTestId}
|
||||||
type="text"
|
type='text'
|
||||||
onChange={onChange!}
|
onChange={onChange!}
|
||||||
validated={handleValidation()}
|
validated={handleValidation()}
|
||||||
aria-label={ariaLabel || ''}
|
aria-label={ariaLabel || ''}
|
||||||
|
|
@ -167,7 +167,7 @@ export const ValidatedInput = ({
|
||||||
/>
|
/>
|
||||||
{!isPristine && !validator(value) && (
|
{!isPristine && !validator(value) && (
|
||||||
<HelperText>
|
<HelperText>
|
||||||
<HelperTextItem variant="error">{helperText}</HelperTextItem>
|
<HelperTextItem variant='error'>{helperText}</HelperTextItem>
|
||||||
</HelperText>
|
</HelperText>
|
||||||
)}
|
)}
|
||||||
</>
|
</>
|
||||||
|
|
|
||||||
|
|
@ -45,7 +45,7 @@ const DetailsStep = () => {
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Form>
|
<Form>
|
||||||
<Title headingLevel="h1" size="xl">
|
<Title headingLevel='h1' size='xl'>
|
||||||
Details
|
Details
|
||||||
</Title>
|
</Title>
|
||||||
<Content>
|
<Content>
|
||||||
|
|
@ -53,15 +53,15 @@ const DetailsStep = () => {
|
||||||
images created from this blueprint will use the name of the parent
|
images created from this blueprint will use the name of the parent
|
||||||
blueprint.
|
blueprint.
|
||||||
</Content>
|
</Content>
|
||||||
<FormGroup isRequired label="Blueprint name" fieldId="blueprint-name">
|
<FormGroup isRequired label='Blueprint name' fieldId='blueprint-name'>
|
||||||
<ValidatedInputAndTextArea
|
<ValidatedInputAndTextArea
|
||||||
ariaLabel="blueprint name"
|
ariaLabel='blueprint name'
|
||||||
dataTestId="blueprint"
|
dataTestId='blueprint'
|
||||||
value={blueprintName}
|
value={blueprintName}
|
||||||
onChange={handleNameChange}
|
onChange={handleNameChange}
|
||||||
placeholder="Add blueprint name"
|
placeholder='Add blueprint name'
|
||||||
stepValidation={stepValidation}
|
stepValidation={stepValidation}
|
||||||
fieldName="name"
|
fieldName='name'
|
||||||
isRequired={true}
|
isRequired={true}
|
||||||
/>
|
/>
|
||||||
<FormHelperText>
|
<FormHelperText>
|
||||||
|
|
@ -75,17 +75,17 @@ const DetailsStep = () => {
|
||||||
</FormGroup>
|
</FormGroup>
|
||||||
|
|
||||||
<FormGroup
|
<FormGroup
|
||||||
label="Blueprint description"
|
label='Blueprint description'
|
||||||
fieldId="blueprint-description-name"
|
fieldId='blueprint-description-name'
|
||||||
>
|
>
|
||||||
<ValidatedInputAndTextArea
|
<ValidatedInputAndTextArea
|
||||||
ariaLabel="blueprint description"
|
ariaLabel='blueprint description'
|
||||||
dataTestId="blueprint description"
|
dataTestId='blueprint description'
|
||||||
value={blueprintDescription}
|
value={blueprintDescription}
|
||||||
onChange={handleDescriptionChange}
|
onChange={handleDescriptionChange}
|
||||||
placeholder="Add description"
|
placeholder='Add description'
|
||||||
stepValidation={stepValidation}
|
stepValidation={stepValidation}
|
||||||
fieldName="description"
|
fieldName='description'
|
||||||
/>
|
/>
|
||||||
</FormGroup>
|
</FormGroup>
|
||||||
</Form>
|
</Form>
|
||||||
|
|
|
||||||
|
|
@ -16,13 +16,13 @@ const FileSystemAutomaticPartition = () => {
|
||||||
current supported configuration layout.
|
current supported configuration layout.
|
||||||
<br></br>
|
<br></br>
|
||||||
<Button
|
<Button
|
||||||
component="a"
|
component='a'
|
||||||
target="_blank"
|
target='_blank'
|
||||||
variant="link"
|
variant='link'
|
||||||
icon={<ExternalLinkAltIcon />}
|
icon={<ExternalLinkAltIcon />}
|
||||||
iconPosition="right"
|
iconPosition='right'
|
||||||
href={FILE_SYSTEM_CUSTOMIZATION_URL}
|
href={FILE_SYSTEM_CUSTOMIZATION_URL}
|
||||||
className="pf-v6-u-pl-0"
|
className='pf-v6-u-pl-0'
|
||||||
>
|
>
|
||||||
Customizing file systems during the image creation
|
Customizing file systems during the image creation
|
||||||
</Button>
|
</Button>
|
||||||
|
|
|
||||||
|
|
@ -72,13 +72,13 @@ const FileSystemConfiguration = () => {
|
||||||
order to conform to best practices and ensure functionality.
|
order to conform to best practices and ensure functionality.
|
||||||
<br></br>
|
<br></br>
|
||||||
<Button
|
<Button
|
||||||
component="a"
|
component='a'
|
||||||
target="_blank"
|
target='_blank'
|
||||||
variant="link"
|
variant='link'
|
||||||
icon={<ExternalLinkAltIcon />}
|
icon={<ExternalLinkAltIcon />}
|
||||||
iconPosition="right"
|
iconPosition='right'
|
||||||
href={FILE_SYSTEM_CUSTOMIZATION_URL}
|
href={FILE_SYSTEM_CUSTOMIZATION_URL}
|
||||||
className="pf-v6-u-pl-0"
|
className='pf-v6-u-pl-0'
|
||||||
>
|
>
|
||||||
Read more about manual configuration here
|
Read more about manual configuration here
|
||||||
</Button>
|
</Button>
|
||||||
|
|
@ -87,7 +87,7 @@ const FileSystemConfiguration = () => {
|
||||||
{(environments.includes('image-installer') ||
|
{(environments.includes('image-installer') ||
|
||||||
environments.includes('wsl')) && (
|
environments.includes('wsl')) && (
|
||||||
<Alert
|
<Alert
|
||||||
variant="warning"
|
variant='warning'
|
||||||
isInline
|
isInline
|
||||||
title={`Filesystem customizations are not applied to ${filteredTargets.join(
|
title={`Filesystem customizations are not applied to ${filteredTargets.join(
|
||||||
' and ',
|
' and ',
|
||||||
|
|
@ -97,8 +97,8 @@ const FileSystemConfiguration = () => {
|
||||||
<FileSystemTable />
|
<FileSystemTable />
|
||||||
<Content>
|
<Content>
|
||||||
<Button
|
<Button
|
||||||
className="pf-v6-u-text-align-left"
|
className='pf-v6-u-text-align-left'
|
||||||
variant="link"
|
variant='link'
|
||||||
icon={<PlusCircleIcon />}
|
icon={<PlusCircleIcon />}
|
||||||
onClick={handleAddPartition}
|
onClick={handleAddPartition}
|
||||||
>
|
>
|
||||||
|
|
|
||||||
|
|
@ -23,27 +23,27 @@ const FileSystemPartition = () => {
|
||||||
return (
|
return (
|
||||||
<FormGroup>
|
<FormGroup>
|
||||||
<Radio
|
<Radio
|
||||||
id="automatic file system config radio"
|
id='automatic file system config radio'
|
||||||
label={
|
label={
|
||||||
<>
|
<>
|
||||||
<Label isCompact color="blue">
|
<Label isCompact color='blue'>
|
||||||
Recommended
|
Recommended
|
||||||
</Label>{' '}
|
</Label>{' '}
|
||||||
Use automatic partitioning
|
Use automatic partitioning
|
||||||
</>
|
</>
|
||||||
}
|
}
|
||||||
name="sc-radio-automatic"
|
name='sc-radio-automatic'
|
||||||
description="Automatically partition your image to what is best, depending on the target environment(s)"
|
description='Automatically partition your image to what is best, depending on the target environment(s)'
|
||||||
isChecked={fileSystemConfigurationType === 'automatic'}
|
isChecked={fileSystemConfigurationType === 'automatic'}
|
||||||
onChange={() => {
|
onChange={() => {
|
||||||
dispatch(changeFileSystemConfigurationType('automatic'));
|
dispatch(changeFileSystemConfigurationType('automatic'));
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
<Radio
|
<Radio
|
||||||
id="manual file system config radio"
|
id='manual file system config radio'
|
||||||
label="Manually configure partitions"
|
label='Manually configure partitions'
|
||||||
name="fsc-radio-manual"
|
name='fsc-radio-manual'
|
||||||
description="Manually configure the file system of your image by adding, removing, and editing partitions"
|
description='Manually configure the file system of your image by adding, removing, and editing partitions'
|
||||||
isChecked={fileSystemConfigurationType === 'manual'}
|
isChecked={fileSystemConfigurationType === 'manual'}
|
||||||
onChange={() => {
|
onChange={() => {
|
||||||
dispatch(changeFileSystemConfigurationType('manual'));
|
dispatch(changeFileSystemConfigurationType('manual'));
|
||||||
|
|
|
||||||
|
|
@ -43,7 +43,7 @@ export const FileSystemContext = React.createContext<boolean>(true);
|
||||||
export const MinimumSizePopover = () => {
|
export const MinimumSizePopover = () => {
|
||||||
return (
|
return (
|
||||||
<Popover
|
<Popover
|
||||||
maxWidth="30rem"
|
maxWidth='30rem'
|
||||||
bodyContent={
|
bodyContent={
|
||||||
<Content>
|
<Content>
|
||||||
<Content>
|
<Content>
|
||||||
|
|
@ -55,10 +55,10 @@ export const MinimumSizePopover = () => {
|
||||||
>
|
>
|
||||||
<Button
|
<Button
|
||||||
icon={<HelpIcon />}
|
icon={<HelpIcon />}
|
||||||
variant="plain"
|
variant='plain'
|
||||||
aria-label="File system configuration info"
|
aria-label='File system configuration info'
|
||||||
aria-describedby="file-system-configuration-info"
|
aria-describedby='file-system-configuration-info'
|
||||||
className="popover-button pf-v6-u-p-0"
|
className='popover-button pf-v6-u-p-0'
|
||||||
/>
|
/>
|
||||||
</Popover>
|
</Popover>
|
||||||
);
|
);
|
||||||
|
|
@ -112,11 +112,11 @@ const Row = ({ partition, onDragEnd, onDragStart, onDrop }: RowPropTypes) => {
|
||||||
id: `draggable-row-${partition.id}`,
|
id: `draggable-row-${partition.id}`,
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
<Td className="pf-m-width-20">
|
<Td className='pf-m-width-20'>
|
||||||
<MountpointPrefix partition={partition} />
|
<MountpointPrefix partition={partition} />
|
||||||
{!isPristine && stepValidation.errors[`mountpoint-${partition.id}`] && (
|
{!isPristine && stepValidation.errors[`mountpoint-${partition.id}`] && (
|
||||||
<Alert
|
<Alert
|
||||||
variant="danger"
|
variant='danger'
|
||||||
isInline
|
isInline
|
||||||
isPlain
|
isPlain
|
||||||
title={stepValidation.errors[`mountpoint-${partition.id}`]}
|
title={stepValidation.errors[`mountpoint-${partition.id}`]}
|
||||||
|
|
@ -142,7 +142,7 @@ const Row = ({ partition, onDragEnd, onDragStart, onDrop }: RowPropTypes) => {
|
||||||
</Td>
|
</Td>
|
||||||
<Td width={10}>
|
<Td width={10}>
|
||||||
<Button
|
<Button
|
||||||
variant="link"
|
variant='link'
|
||||||
icon={<MinusCircleIcon />}
|
icon={<MinusCircleIcon />}
|
||||||
onClick={() => handleRemovePartition(partition.id)}
|
onClick={() => handleRemovePartition(partition.id)}
|
||||||
isDisabled={partition.mountpoint === '/'}
|
isDisabled={partition.mountpoint === '/'}
|
||||||
|
|
@ -234,7 +234,7 @@ const MountpointSuffix = ({ partition }: MountpointSuffixPropTypes) => {
|
||||||
return (
|
return (
|
||||||
<TextInput
|
<TextInput
|
||||||
value={suffix}
|
value={suffix}
|
||||||
type="text"
|
type='text'
|
||||||
onChange={(event: React.FormEvent, newValue) => {
|
onChange={(event: React.FormEvent, newValue) => {
|
||||||
const mountpoint = prefix + normalizeSuffix(newValue);
|
const mountpoint = prefix + normalizeSuffix(newValue);
|
||||||
dispatch(
|
dispatch(
|
||||||
|
|
@ -244,7 +244,7 @@ const MountpointSuffix = ({ partition }: MountpointSuffixPropTypes) => {
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
}}
|
}}
|
||||||
aria-label="mountpoint suffix"
|
aria-label='mountpoint suffix'
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
@ -274,7 +274,7 @@ const MinimumSize = ({ partition }: MinimumSizePropTypes) => {
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<ValidatedInputAndTextArea
|
<ValidatedInputAndTextArea
|
||||||
ariaLabel="minimum partition size"
|
ariaLabel='minimum partition size'
|
||||||
value={partition.min_size}
|
value={partition.min_size}
|
||||||
isDisabled={partition.unit === 'B'}
|
isDisabled={partition.unit === 'B'}
|
||||||
warning={
|
warning={
|
||||||
|
|
@ -282,10 +282,10 @@ const MinimumSize = ({ partition }: MinimumSizePropTypes) => {
|
||||||
? 'The Wizard only supports KiB, MiB, or GiB. Adjust or keep the current value.'
|
? 'The Wizard only supports KiB, MiB, or GiB. Adjust or keep the current value.'
|
||||||
: ''
|
: ''
|
||||||
}
|
}
|
||||||
type="text"
|
type='text'
|
||||||
stepValidation={stepValidation}
|
stepValidation={stepValidation}
|
||||||
fieldName={`min-size-${partition.id}`}
|
fieldName={`min-size-${partition.id}`}
|
||||||
placeholder="File system"
|
placeholder='File system'
|
||||||
onChange={(event, minSize) => {
|
onChange={(event, minSize) => {
|
||||||
if (minSize === '' || /^\d+$/.test(minSize)) {
|
if (minSize === '' || /^\d+$/.test(minSize)) {
|
||||||
dispatch(
|
dispatch(
|
||||||
|
|
@ -497,20 +497,20 @@ const FileSystemTable = () => {
|
||||||
return (
|
return (
|
||||||
<Table
|
<Table
|
||||||
className={isDragging ? styles.modifiers.dragOver : ''}
|
className={isDragging ? styles.modifiers.dragOver : ''}
|
||||||
aria-label="File system table"
|
aria-label='File system table'
|
||||||
variant="compact"
|
variant='compact'
|
||||||
>
|
>
|
||||||
<Thead>
|
<Thead>
|
||||||
<Tr>
|
<Tr>
|
||||||
<Th aria-label="Drag mount point" />
|
<Th aria-label='Drag mount point' />
|
||||||
<Th>Mount point</Th>
|
<Th>Mount point</Th>
|
||||||
<Th aria-label="Suffix">Suffix</Th>
|
<Th aria-label='Suffix'>Suffix</Th>
|
||||||
<Th>Type</Th>
|
<Th>Type</Th>
|
||||||
<Th>
|
<Th>
|
||||||
Minimum size <MinimumSizePopover />
|
Minimum size <MinimumSizePopover />
|
||||||
</Th>
|
</Th>
|
||||||
<Th aria-label="Unit">Unit</Th>
|
<Th aria-label='Unit'>Unit</Th>
|
||||||
<Th aria-label="Remove mount point" />
|
<Th aria-label='Remove mount point' />
|
||||||
</Tr>
|
</Tr>
|
||||||
</Thead>
|
</Thead>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,7 @@ const FileSystemStep = () => {
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Form>
|
<Form>
|
||||||
<Title headingLevel="h1" size="xl">
|
<Title headingLevel='h1' size='xl'>
|
||||||
File system configuration
|
File system configuration
|
||||||
</Title>
|
</Title>
|
||||||
<Content>Define the partitioning of the image.</Content>
|
<Content>Define the partitioning of the image.</Content>
|
||||||
|
|
|
||||||
|
|
@ -18,17 +18,17 @@ const PortsInput = () => {
|
||||||
const stepValidation = useFirewallValidation();
|
const stepValidation = useFirewallValidation();
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<FormGroup label="Ports">
|
<FormGroup label='Ports'>
|
||||||
<LabelInput
|
<LabelInput
|
||||||
ariaLabel="Add ports"
|
ariaLabel='Add ports'
|
||||||
placeholder="Add ports"
|
placeholder='Add ports'
|
||||||
validator={isPortValid}
|
validator={isPortValid}
|
||||||
list={ports}
|
list={ports}
|
||||||
item="Port"
|
item='Port'
|
||||||
addAction={addPort}
|
addAction={addPort}
|
||||||
removeAction={removePort}
|
removeAction={removePort}
|
||||||
stepValidation={stepValidation}
|
stepValidation={stepValidation}
|
||||||
fieldName="ports"
|
fieldName='ports'
|
||||||
/>
|
/>
|
||||||
</FormGroup>
|
</FormGroup>
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -22,30 +22,30 @@ const Services = () => {
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<FormGroup label="Enabled services">
|
<FormGroup label='Enabled services'>
|
||||||
<LabelInput
|
<LabelInput
|
||||||
ariaLabel="Add enabled service"
|
ariaLabel='Add enabled service'
|
||||||
placeholder="Add enabled service"
|
placeholder='Add enabled service'
|
||||||
validator={isServiceValid}
|
validator={isServiceValid}
|
||||||
list={enabledServices}
|
list={enabledServices}
|
||||||
item="Enabled service"
|
item='Enabled service'
|
||||||
addAction={addEnabledFirewallService}
|
addAction={addEnabledFirewallService}
|
||||||
removeAction={removeEnabledFirewallService}
|
removeAction={removeEnabledFirewallService}
|
||||||
stepValidation={stepValidation}
|
stepValidation={stepValidation}
|
||||||
fieldName="enabledServices"
|
fieldName='enabledServices'
|
||||||
/>
|
/>
|
||||||
</FormGroup>
|
</FormGroup>
|
||||||
<FormGroup label="Disabled services">
|
<FormGroup label='Disabled services'>
|
||||||
<LabelInput
|
<LabelInput
|
||||||
ariaLabel="Add disabled service"
|
ariaLabel='Add disabled service'
|
||||||
placeholder="Add disabled service"
|
placeholder='Add disabled service'
|
||||||
validator={isServiceValid}
|
validator={isServiceValid}
|
||||||
list={disabledServices}
|
list={disabledServices}
|
||||||
item="Disabled service"
|
item='Disabled service'
|
||||||
addAction={addDisabledFirewallService}
|
addAction={addDisabledFirewallService}
|
||||||
removeAction={removeDisabledFirewallService}
|
removeAction={removeDisabledFirewallService}
|
||||||
stepValidation={stepValidation}
|
stepValidation={stepValidation}
|
||||||
fieldName="disabledServices"
|
fieldName='disabledServices'
|
||||||
/>
|
/>
|
||||||
</FormGroup>
|
</FormGroup>
|
||||||
</>
|
</>
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ import Services from './components/Services';
|
||||||
const FirewallStep = () => {
|
const FirewallStep = () => {
|
||||||
return (
|
return (
|
||||||
<Form>
|
<Form>
|
||||||
<Title headingLevel="h1" size="xl">
|
<Title headingLevel='h1' size='xl'>
|
||||||
Firewall
|
Firewall
|
||||||
</Title>
|
</Title>
|
||||||
<Content>Customize firewall settings for your image.</Content>
|
<Content>Customize firewall settings for your image.</Content>
|
||||||
|
|
|
||||||
|
|
@ -53,7 +53,7 @@ const FirstBootStep = () => {
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Form>
|
<Form>
|
||||||
<Title headingLevel="h1" size="xl">
|
<Title headingLevel='h1' size='xl'>
|
||||||
First boot configuration
|
First boot configuration
|
||||||
</Title>
|
</Title>
|
||||||
<Content>
|
<Content>
|
||||||
|
|
@ -61,10 +61,10 @@ const FirstBootStep = () => {
|
||||||
boot.
|
boot.
|
||||||
</Content>
|
</Content>
|
||||||
<Alert
|
<Alert
|
||||||
variant="warning"
|
variant='warning'
|
||||||
isExpandable
|
isExpandable
|
||||||
isInline
|
isInline
|
||||||
title="Important: please do not include sensitive information"
|
title='Important: please do not include sensitive information'
|
||||||
>
|
>
|
||||||
<Content>
|
<Content>
|
||||||
Please ensure that your script does not contain any secrets,
|
Please ensure that your script does not contain any secrets,
|
||||||
|
|
@ -90,14 +90,14 @@ const FirstBootStep = () => {
|
||||||
dispatch(setFirstBootScript(code.replace('\r\n', '\n')));
|
dispatch(setFirstBootScript(code.replace('\r\n', '\n')));
|
||||||
}}
|
}}
|
||||||
code={selectedScript}
|
code={selectedScript}
|
||||||
height="35vh"
|
height='35vh'
|
||||||
emptyStateButton="Browse"
|
emptyStateButton='Browse'
|
||||||
emptyStateLink="Start from scratch"
|
emptyStateLink='Start from scratch'
|
||||||
/>
|
/>
|
||||||
{errors.script && (
|
{errors.script && (
|
||||||
<FormHelperText>
|
<FormHelperText>
|
||||||
<HelperText>
|
<HelperText>
|
||||||
<HelperTextItem variant="error">{errors.script}</HelperTextItem>
|
<HelperTextItem variant='error'>{errors.script}</HelperTextItem>
|
||||||
</HelperText>
|
</HelperText>
|
||||||
</FormHelperText>
|
</FormHelperText>
|
||||||
)}
|
)}
|
||||||
|
|
|
||||||
|
|
@ -21,14 +21,14 @@ const HostnameInput = () => {
|
||||||
};
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<FormGroup label="Hostname">
|
<FormGroup label='Hostname'>
|
||||||
<ValidatedInputAndTextArea
|
<ValidatedInputAndTextArea
|
||||||
ariaLabel="hostname input"
|
ariaLabel='hostname input'
|
||||||
value={hostname}
|
value={hostname}
|
||||||
onChange={handleChange}
|
onChange={handleChange}
|
||||||
placeholder="Add a hostname"
|
placeholder='Add a hostname'
|
||||||
stepValidation={stepValidation}
|
stepValidation={stepValidation}
|
||||||
fieldName="hostname"
|
fieldName='hostname'
|
||||||
/>
|
/>
|
||||||
</FormGroup>
|
</FormGroup>
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ import HostnameInput from './components/HostnameInput';
|
||||||
const HostnameStep = () => {
|
const HostnameStep = () => {
|
||||||
return (
|
return (
|
||||||
<Form>
|
<Form>
|
||||||
<Title headingLevel="h1" size="xl">
|
<Title headingLevel='h1' size='xl'>
|
||||||
Hostname
|
Hostname
|
||||||
</Title>
|
</Title>
|
||||||
<Content>Select a hostname for your image.</Content>
|
<Content>Select a hostname for your image.</Content>
|
||||||
|
|
|
||||||
|
|
@ -60,14 +60,14 @@ const ArchSelect = () => {
|
||||||
ref={toggleRef}
|
ref={toggleRef}
|
||||||
onClick={onToggleClick}
|
onClick={onToggleClick}
|
||||||
isExpanded={isOpen}
|
isExpanded={isOpen}
|
||||||
data-testid="arch_select"
|
data-testid='arch_select'
|
||||||
>
|
>
|
||||||
{arch}
|
{arch}
|
||||||
</MenuToggle>
|
</MenuToggle>
|
||||||
);
|
);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<FormGroup isRequired={true} label="Architecture">
|
<FormGroup isRequired={true} label='Architecture'>
|
||||||
<Select
|
<Select
|
||||||
isOpen={isOpen}
|
isOpen={isOpen}
|
||||||
selected={arch}
|
selected={arch}
|
||||||
|
|
|
||||||
|
|
@ -8,11 +8,11 @@ import { DEVELOPERS_URL } from '../../../../../constants';
|
||||||
const DeveloperProgramButton = () => {
|
const DeveloperProgramButton = () => {
|
||||||
return (
|
return (
|
||||||
<Button
|
<Button
|
||||||
component="a"
|
component='a'
|
||||||
target="_blank"
|
target='_blank'
|
||||||
variant="link"
|
variant='link'
|
||||||
icon={<ExternalLinkAltIcon />}
|
icon={<ExternalLinkAltIcon />}
|
||||||
iconPosition="right"
|
iconPosition='right'
|
||||||
isInline
|
isInline
|
||||||
href={DEVELOPERS_URL}
|
href={DEVELOPERS_URL}
|
||||||
>
|
>
|
||||||
|
|
@ -24,7 +24,7 @@ const DeveloperProgramButton = () => {
|
||||||
const CentOSAcknowledgement = () => {
|
const CentOSAcknowledgement = () => {
|
||||||
return (
|
return (
|
||||||
<Alert
|
<Alert
|
||||||
variant="info"
|
variant='info'
|
||||||
isPlain
|
isPlain
|
||||||
isInline
|
isInline
|
||||||
title={
|
title={
|
||||||
|
|
|
||||||
|
|
@ -117,7 +117,7 @@ export const chartMajorVersionCfg = {
|
||||||
export const MajorReleasesLifecyclesChart = () => {
|
export const MajorReleasesLifecyclesChart = () => {
|
||||||
return (
|
return (
|
||||||
<Panel>
|
<Panel>
|
||||||
<PanelMain maxHeight="10rem">
|
<PanelMain maxHeight='10rem'>
|
||||||
<Bar
|
<Bar
|
||||||
options={chartMajorVersionCfg.options}
|
options={chartMajorVersionCfg.options}
|
||||||
data={chartMajorVersionCfg.data}
|
data={chartMajorVersionCfg.data}
|
||||||
|
|
@ -147,16 +147,16 @@ const ReleaseLifecycle = () => {
|
||||||
isExpanded={isExpanded}
|
isExpanded={isExpanded}
|
||||||
isIndented
|
isIndented
|
||||||
>
|
>
|
||||||
<FormGroup label="Release lifecycle">
|
<FormGroup label='Release lifecycle'>
|
||||||
<MajorReleasesLifecyclesChart />
|
<MajorReleasesLifecyclesChart />
|
||||||
</FormGroup>
|
</FormGroup>
|
||||||
<br />
|
<br />
|
||||||
<Button
|
<Button
|
||||||
component="a"
|
component='a'
|
||||||
target="_blank"
|
target='_blank'
|
||||||
variant="link"
|
variant='link'
|
||||||
icon={<ExternalLinkAltIcon />}
|
icon={<ExternalLinkAltIcon />}
|
||||||
iconPosition="right"
|
iconPosition='right'
|
||||||
isInline
|
isInline
|
||||||
href={RELEASE_LIFECYCLE_URL}
|
href={RELEASE_LIFECYCLE_URL}
|
||||||
>
|
>
|
||||||
|
|
|
||||||
|
|
@ -127,7 +127,7 @@ const ReleaseSelect = () => {
|
||||||
ref={toggleRef}
|
ref={toggleRef}
|
||||||
onClick={onToggleClick}
|
onClick={onToggleClick}
|
||||||
isExpanded={isOpen}
|
isExpanded={isOpen}
|
||||||
data-testid="release_select"
|
data-testid='release_select'
|
||||||
style={
|
style={
|
||||||
{
|
{
|
||||||
maxWidth: '100%',
|
maxWidth: '100%',
|
||||||
|
|
@ -139,7 +139,7 @@ const ReleaseSelect = () => {
|
||||||
);
|
);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<FormGroup isRequired={true} label="Release">
|
<FormGroup isRequired={true} label='Release'>
|
||||||
<Select
|
<Select
|
||||||
isOpen={isOpen}
|
isOpen={isOpen}
|
||||||
onOpenChange={(isOpen) => setIsOpen(isOpen)}
|
onOpenChange={(isOpen) => setIsOpen(isOpen)}
|
||||||
|
|
@ -160,7 +160,7 @@ const ReleaseSelect = () => {
|
||||||
ev.stopPropagation();
|
ev.stopPropagation();
|
||||||
handleExpand();
|
handleExpand();
|
||||||
}}
|
}}
|
||||||
value="loader"
|
value='loader'
|
||||||
isLoadButton
|
isLoadButton
|
||||||
>
|
>
|
||||||
Show options for further development of RHEL
|
Show options for further development of RHEL
|
||||||
|
|
|
||||||
|
|
@ -76,11 +76,11 @@ const TargetEnvironmentCard = ({
|
||||||
// the logos don't display in cockpit,
|
// the logos don't display in cockpit,
|
||||||
// so we can just hide them
|
// so we can just hide them
|
||||||
<FlexItem>
|
<FlexItem>
|
||||||
<img className="provider-icon" src={imageSrc} alt={imageAlt} />
|
<img className='provider-icon' src={imageSrc} alt={imageAlt} />
|
||||||
</FlexItem>
|
</FlexItem>
|
||||||
)}
|
)}
|
||||||
<FlexItem>
|
<FlexItem>
|
||||||
<Title headingLevel="h5" size="md">
|
<Title headingLevel='h5' size='md'>
|
||||||
{title}
|
{title}
|
||||||
</Title>
|
</Title>
|
||||||
</FlexItem>
|
</FlexItem>
|
||||||
|
|
@ -144,8 +144,8 @@ const TargetEnvironment = () => {
|
||||||
if (isFetching) {
|
if (isFetching) {
|
||||||
return (
|
return (
|
||||||
<EmptyState
|
<EmptyState
|
||||||
titleText="Loading target environments"
|
titleText='Loading target environments'
|
||||||
headingLevel="h6"
|
headingLevel='h6'
|
||||||
icon={Spinner}
|
icon={Spinner}
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
|
|
@ -155,7 +155,7 @@ const TargetEnvironment = () => {
|
||||||
return (
|
return (
|
||||||
<Alert
|
<Alert
|
||||||
title="Couldn't fetch target environments"
|
title="Couldn't fetch target environments"
|
||||||
variant="danger"
|
variant='danger'
|
||||||
isInline
|
isInline
|
||||||
>
|
>
|
||||||
Target environments couldn't be loaded, please refresh the page or
|
Target environments couldn't be loaded, please refresh the page or
|
||||||
|
|
@ -167,17 +167,17 @@ const TargetEnvironment = () => {
|
||||||
return (
|
return (
|
||||||
<FormGroup
|
<FormGroup
|
||||||
isRequired={true}
|
isRequired={true}
|
||||||
label="Select target environments"
|
label='Select target environments'
|
||||||
data-testid="target-select"
|
data-testid='target-select'
|
||||||
>
|
>
|
||||||
{publicCloudsSupported() && (
|
{publicCloudsSupported() && (
|
||||||
<FormGroup label={<small>Public cloud</small>}>
|
<FormGroup label={<small>Public cloud</small>}>
|
||||||
<Gallery hasGutter>
|
<Gallery hasGutter>
|
||||||
{supportedEnvironments?.includes('aws') && (
|
{supportedEnvironments?.includes('aws') && (
|
||||||
<TargetEnvironmentCard
|
<TargetEnvironmentCard
|
||||||
title="Amazon Web Services"
|
title='Amazon Web Services'
|
||||||
imageSrc={'/apps/frontend-assets/partners-icons/aws.svg'}
|
imageSrc={'/apps/frontend-assets/partners-icons/aws.svg'}
|
||||||
imageAlt="Amazon Web Services logo"
|
imageAlt='Amazon Web Services logo'
|
||||||
handleOnClick={() => handleToggleEnvironment('aws')}
|
handleOnClick={() => handleToggleEnvironment('aws')}
|
||||||
onMouseEnter={() => prefetchSources({ provider: 'aws' })}
|
onMouseEnter={() => prefetchSources({ provider: 'aws' })}
|
||||||
isClicked={environments.includes('aws')}
|
isClicked={environments.includes('aws')}
|
||||||
|
|
@ -185,11 +185,11 @@ const TargetEnvironment = () => {
|
||||||
)}
|
)}
|
||||||
{supportedEnvironments?.includes('gcp') && (
|
{supportedEnvironments?.includes('gcp') && (
|
||||||
<TargetEnvironmentCard
|
<TargetEnvironmentCard
|
||||||
title="Google Cloud Platform"
|
title='Google Cloud Platform'
|
||||||
imageSrc={
|
imageSrc={
|
||||||
'/apps/frontend-assets/partners-icons/google-cloud-short.svg'
|
'/apps/frontend-assets/partners-icons/google-cloud-short.svg'
|
||||||
}
|
}
|
||||||
imageAlt="Google Cloud Platform logo"
|
imageAlt='Google Cloud Platform logo'
|
||||||
handleOnClick={() => handleToggleEnvironment('gcp')}
|
handleOnClick={() => handleToggleEnvironment('gcp')}
|
||||||
onMouseEnter={() => prefetchSources({ provider: 'gcp' })}
|
onMouseEnter={() => prefetchSources({ provider: 'gcp' })}
|
||||||
isClicked={environments.includes('gcp')}
|
isClicked={environments.includes('gcp')}
|
||||||
|
|
@ -197,11 +197,11 @@ const TargetEnvironment = () => {
|
||||||
)}
|
)}
|
||||||
{supportedEnvironments?.includes('azure') && (
|
{supportedEnvironments?.includes('azure') && (
|
||||||
<TargetEnvironmentCard
|
<TargetEnvironmentCard
|
||||||
title="Microsoft Azure"
|
title='Microsoft Azure'
|
||||||
imageSrc={
|
imageSrc={
|
||||||
'/apps/frontend-assets/partners-icons/microsoft-azure-short.svg'
|
'/apps/frontend-assets/partners-icons/microsoft-azure-short.svg'
|
||||||
}
|
}
|
||||||
imageAlt="Microsoft Azure logo"
|
imageAlt='Microsoft Azure logo'
|
||||||
handleOnClick={() => handleToggleEnvironment('azure')}
|
handleOnClick={() => handleToggleEnvironment('azure')}
|
||||||
onMouseEnter={() => prefetchSources({ provider: 'azure' })}
|
onMouseEnter={() => prefetchSources({ provider: 'azure' })}
|
||||||
isClicked={environments.includes('azure')}
|
isClicked={environments.includes('azure')}
|
||||||
|
|
@ -209,11 +209,11 @@ const TargetEnvironment = () => {
|
||||||
)}
|
)}
|
||||||
{supportedEnvironments?.includes('oci') && (
|
{supportedEnvironments?.includes('oci') && (
|
||||||
<TargetEnvironmentCard
|
<TargetEnvironmentCard
|
||||||
title="Oracle Cloud Infrastructure"
|
title='Oracle Cloud Infrastructure'
|
||||||
imageSrc={
|
imageSrc={
|
||||||
'/apps/frontend-assets/partners-icons/oracle-short.svg'
|
'/apps/frontend-assets/partners-icons/oracle-short.svg'
|
||||||
}
|
}
|
||||||
imageAlt="Oracle Cloud Infrastructure logo"
|
imageAlt='Oracle Cloud Infrastructure logo'
|
||||||
handleOnClick={() => handleToggleEnvironment('oci')}
|
handleOnClick={() => handleToggleEnvironment('oci')}
|
||||||
isClicked={environments.includes('oci')}
|
isClicked={environments.includes('oci')}
|
||||||
/>
|
/>
|
||||||
|
|
@ -225,19 +225,19 @@ const TargetEnvironment = () => {
|
||||||
supportedEnvironments?.includes('vsphere-ova')) && (
|
supportedEnvironments?.includes('vsphere-ova')) && (
|
||||||
<FormGroup
|
<FormGroup
|
||||||
label={<small>Private cloud</small>}
|
label={<small>Private cloud</small>}
|
||||||
className="pf-v6-u-mt-sm"
|
className='pf-v6-u-mt-sm'
|
||||||
>
|
>
|
||||||
{supportedEnvironments.includes('vsphere-ova') && (
|
{supportedEnvironments.includes('vsphere-ova') && (
|
||||||
<Checkbox
|
<Checkbox
|
||||||
name="vsphere-checkbox-ova"
|
name='vsphere-checkbox-ova'
|
||||||
aria-label="VMware vSphere checkbox OVA"
|
aria-label='VMware vSphere checkbox OVA'
|
||||||
id="vsphere-checkbox-ova"
|
id='vsphere-checkbox-ova'
|
||||||
label={
|
label={
|
||||||
<>
|
<>
|
||||||
VMware vSphere - Open virtualization format (.ova)
|
VMware vSphere - Open virtualization format (.ova)
|
||||||
<Popover
|
<Popover
|
||||||
maxWidth="30rem"
|
maxWidth='30rem'
|
||||||
position="right"
|
position='right'
|
||||||
bodyContent={
|
bodyContent={
|
||||||
<Content>
|
<Content>
|
||||||
<Content>
|
<Content>
|
||||||
|
|
@ -252,9 +252,9 @@ const TargetEnvironment = () => {
|
||||||
>
|
>
|
||||||
<Button
|
<Button
|
||||||
icon={<HelpIcon />}
|
icon={<HelpIcon />}
|
||||||
className="pf-v6-u-pl-sm pf-v6-u-pt-0 pf-v6-u-pb-0"
|
className='pf-v6-u-pl-sm pf-v6-u-pt-0 pf-v6-u-pb-0'
|
||||||
variant="plain"
|
variant='plain'
|
||||||
aria-label="About OVA file"
|
aria-label='About OVA file'
|
||||||
isInline
|
isInline
|
||||||
/>
|
/>
|
||||||
</Popover>
|
</Popover>
|
||||||
|
|
@ -268,16 +268,16 @@ const TargetEnvironment = () => {
|
||||||
)}
|
)}
|
||||||
{supportedEnvironments.includes('vsphere') && (
|
{supportedEnvironments.includes('vsphere') && (
|
||||||
<Checkbox
|
<Checkbox
|
||||||
className="pf-v6-u-mt-sm"
|
className='pf-v6-u-mt-sm'
|
||||||
name="vsphere-checkbox-vmdk"
|
name='vsphere-checkbox-vmdk'
|
||||||
aria-label="VMware vSphere checkbox VMDK"
|
aria-label='VMware vSphere checkbox VMDK'
|
||||||
id="vsphere-checkbox-vmdk"
|
id='vsphere-checkbox-vmdk'
|
||||||
label={
|
label={
|
||||||
<>
|
<>
|
||||||
VMware vSphere - Virtual disk (.vmdk)
|
VMware vSphere - Virtual disk (.vmdk)
|
||||||
<Popover
|
<Popover
|
||||||
maxWidth="30rem"
|
maxWidth='30rem'
|
||||||
position="right"
|
position='right'
|
||||||
bodyContent={
|
bodyContent={
|
||||||
<Content>
|
<Content>
|
||||||
<Content>
|
<Content>
|
||||||
|
|
@ -291,9 +291,9 @@ const TargetEnvironment = () => {
|
||||||
>
|
>
|
||||||
<Button
|
<Button
|
||||||
icon={<HelpIcon />}
|
icon={<HelpIcon />}
|
||||||
className="pf-v6-u-pl-sm pf-v6-u-pt-0 pf-v6-u-pb-0"
|
className='pf-v6-u-pl-sm pf-v6-u-pt-0 pf-v6-u-pb-0'
|
||||||
variant="plain"
|
variant='plain'
|
||||||
aria-label="About VMDK file"
|
aria-label='About VMDK file'
|
||||||
isInline
|
isInline
|
||||||
/>
|
/>
|
||||||
</Popover>
|
</Popover>
|
||||||
|
|
@ -310,26 +310,26 @@ const TargetEnvironment = () => {
|
||||||
<FormGroup label={<small>Other</small>}>
|
<FormGroup label={<small>Other</small>}>
|
||||||
{supportedEnvironments?.includes('guest-image') && (
|
{supportedEnvironments?.includes('guest-image') && (
|
||||||
<Checkbox
|
<Checkbox
|
||||||
label="Virtualization - Guest image (.qcow2)"
|
label='Virtualization - Guest image (.qcow2)'
|
||||||
isChecked={environments.includes('guest-image')}
|
isChecked={environments.includes('guest-image')}
|
||||||
onChange={() => {
|
onChange={() => {
|
||||||
handleToggleEnvironment('guest-image');
|
handleToggleEnvironment('guest-image');
|
||||||
}}
|
}}
|
||||||
aria-label="Virtualization guest image checkbox"
|
aria-label='Virtualization guest image checkbox'
|
||||||
id="checkbox-guest-image"
|
id='checkbox-guest-image'
|
||||||
name="Virtualization guest image"
|
name='Virtualization guest image'
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
{supportedEnvironments?.includes('image-installer') && (
|
{supportedEnvironments?.includes('image-installer') && (
|
||||||
<Checkbox
|
<Checkbox
|
||||||
label="Bare metal - Installer (.iso)"
|
label='Bare metal - Installer (.iso)'
|
||||||
isChecked={environments.includes('image-installer')}
|
isChecked={environments.includes('image-installer')}
|
||||||
onChange={() => {
|
onChange={() => {
|
||||||
handleToggleEnvironment('image-installer');
|
handleToggleEnvironment('image-installer');
|
||||||
}}
|
}}
|
||||||
aria-label="Bare metal installer checkbox"
|
aria-label='Bare metal installer checkbox'
|
||||||
id="checkbox-image-installer"
|
id='checkbox-image-installer'
|
||||||
name="Bare metal installer"
|
name='Bare metal installer'
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
{supportedEnvironments?.includes('wsl') && (
|
{supportedEnvironments?.includes('wsl') && (
|
||||||
|
|
@ -338,8 +338,8 @@ const TargetEnvironment = () => {
|
||||||
<>
|
<>
|
||||||
WSL - Windows Subsystem for Linux (.wsl)
|
WSL - Windows Subsystem for Linux (.wsl)
|
||||||
<Popover
|
<Popover
|
||||||
maxWidth="30rem"
|
maxWidth='30rem'
|
||||||
position="right"
|
position='right'
|
||||||
headerContent={
|
headerContent={
|
||||||
<Content>
|
<Content>
|
||||||
<Content>
|
<Content>
|
||||||
|
|
@ -360,13 +360,13 @@ const TargetEnvironment = () => {
|
||||||
}
|
}
|
||||||
footerContent={
|
footerContent={
|
||||||
<Button
|
<Button
|
||||||
component="a"
|
component='a'
|
||||||
target="_blank"
|
target='_blank'
|
||||||
variant="link"
|
variant='link'
|
||||||
icon={<ExternalLinkAltIcon />}
|
icon={<ExternalLinkAltIcon />}
|
||||||
iconPosition="right"
|
iconPosition='right'
|
||||||
isInline
|
isInline
|
||||||
href="https://access.redhat.com/articles/7115538"
|
href='https://access.redhat.com/articles/7115538'
|
||||||
>
|
>
|
||||||
Learn more about Red Hat's WSL support
|
Learn more about Red Hat's WSL support
|
||||||
</Button>
|
</Button>
|
||||||
|
|
@ -374,9 +374,9 @@ const TargetEnvironment = () => {
|
||||||
>
|
>
|
||||||
<Button
|
<Button
|
||||||
icon={<HelpIcon />}
|
icon={<HelpIcon />}
|
||||||
className="pf-v6-u-pl-sm pf-v6-u-pt-0 pf-v6-u-pb-0"
|
className='pf-v6-u-pl-sm pf-v6-u-pt-0 pf-v6-u-pb-0'
|
||||||
variant="plain"
|
variant='plain'
|
||||||
aria-label="About WSL file"
|
aria-label='About WSL file'
|
||||||
isInline
|
isInline
|
||||||
/>
|
/>
|
||||||
</Popover>
|
</Popover>
|
||||||
|
|
@ -386,9 +386,9 @@ const TargetEnvironment = () => {
|
||||||
onChange={() => {
|
onChange={() => {
|
||||||
handleToggleEnvironment('wsl');
|
handleToggleEnvironment('wsl');
|
||||||
}}
|
}}
|
||||||
aria-label="windows subsystem for linux checkbox"
|
aria-label='windows subsystem for linux checkbox'
|
||||||
id="checkbox-wsl"
|
id='checkbox-wsl'
|
||||||
name="WSL"
|
name='WSL'
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
</FormGroup>
|
</FormGroup>
|
||||||
|
|
|
||||||
|
|
@ -35,7 +35,7 @@ const ImageOutputStep = () => {
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Form>
|
<Form>
|
||||||
<Title headingLevel="h1" size="xl">
|
<Title headingLevel='h1' size='xl'>
|
||||||
Image output
|
Image output
|
||||||
</Title>
|
</Title>
|
||||||
<Content>
|
<Content>
|
||||||
|
|
|
||||||
|
|
@ -39,19 +39,19 @@ const KernelArguments = () => {
|
||||||
);
|
);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<FormGroup isRequired={false} label="Append">
|
<FormGroup isRequired={false} label='Append'>
|
||||||
<LabelInput
|
<LabelInput
|
||||||
ariaLabel="Add kernel argument"
|
ariaLabel='Add kernel argument'
|
||||||
placeholder="Add kernel argument"
|
placeholder='Add kernel argument'
|
||||||
validator={isKernelArgumentValid}
|
validator={isKernelArgumentValid}
|
||||||
list={kernelAppend.filter((arg) => !requiredByOpenSCAP.includes(arg))}
|
list={kernelAppend.filter((arg) => !requiredByOpenSCAP.includes(arg))}
|
||||||
requiredList={requiredByOpenSCAP}
|
requiredList={requiredByOpenSCAP}
|
||||||
requiredCategoryName="Required by OpenSCAP"
|
requiredCategoryName='Required by OpenSCAP'
|
||||||
item="Kernel argument"
|
item='Kernel argument'
|
||||||
addAction={addKernelArg}
|
addAction={addKernelArg}
|
||||||
removeAction={removeKernelArg}
|
removeAction={removeKernelArg}
|
||||||
stepValidation={stepValidation}
|
stepValidation={stepValidation}
|
||||||
fieldName="kernelAppend"
|
fieldName='kernelAppend'
|
||||||
/>
|
/>
|
||||||
</FormGroup>
|
</FormGroup>
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -113,7 +113,7 @@ const KernelName = () => {
|
||||||
const toggle = (toggleRef: React.Ref<MenuToggleElement>) => (
|
const toggle = (toggleRef: React.Ref<MenuToggleElement>) => (
|
||||||
<MenuToggle
|
<MenuToggle
|
||||||
ref={toggleRef}
|
ref={toggleRef}
|
||||||
variant="typeahead"
|
variant='typeahead'
|
||||||
onClick={onToggleClick}
|
onClick={onToggleClick}
|
||||||
isExpanded={isOpen}
|
isExpanded={isOpen}
|
||||||
>
|
>
|
||||||
|
|
@ -122,8 +122,8 @@ const KernelName = () => {
|
||||||
value={kernel ? kernel : inputValue}
|
value={kernel ? kernel : inputValue}
|
||||||
onClick={onInputClick}
|
onClick={onInputClick}
|
||||||
onChange={onTextInputChange}
|
onChange={onTextInputChange}
|
||||||
autoComplete="off"
|
autoComplete='off'
|
||||||
placeholder="Select kernel package"
|
placeholder='Select kernel package'
|
||||||
isExpanded={isOpen}
|
isExpanded={isOpen}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
|
|
@ -131,9 +131,9 @@ const KernelName = () => {
|
||||||
<TextInputGroupUtilities>
|
<TextInputGroupUtilities>
|
||||||
<Button
|
<Button
|
||||||
icon={<TimesIcon />}
|
icon={<TimesIcon />}
|
||||||
variant="plain"
|
variant='plain'
|
||||||
onClick={onClearButtonClick}
|
onClick={onClearButtonClick}
|
||||||
aria-label="Clear input"
|
aria-label='Clear input'
|
||||||
/>
|
/>
|
||||||
</TextInputGroupUtilities>
|
</TextInputGroupUtilities>
|
||||||
)}
|
)}
|
||||||
|
|
@ -145,12 +145,12 @@ const KernelName = () => {
|
||||||
<>
|
<>
|
||||||
{kernel && !initialOptions.includes(kernel) && (
|
{kernel && !initialOptions.includes(kernel) && (
|
||||||
<Alert
|
<Alert
|
||||||
title="Custom kernel packages cannot be validated and can cause build issues."
|
title='Custom kernel packages cannot be validated and can cause build issues.'
|
||||||
isInline
|
isInline
|
||||||
variant="warning"
|
variant='warning'
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
<FormGroup isRequired={false} label="Name">
|
<FormGroup isRequired={false} label='Name'>
|
||||||
<Select
|
<Select
|
||||||
isScrollable
|
isScrollable
|
||||||
isOpen={isOpen}
|
isOpen={isOpen}
|
||||||
|
|
|
||||||
|
|
@ -13,15 +13,15 @@ const KernelStep = () => {
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Form>
|
<Form>
|
||||||
<Title headingLevel="h1" size="xl">
|
<Title headingLevel='h1' size='xl'>
|
||||||
Kernel
|
Kernel
|
||||||
</Title>
|
</Title>
|
||||||
<Content>Customize kernel name and kernel arguments.</Content>
|
<Content>Customize kernel name and kernel arguments.</Content>
|
||||||
{environments.includes('wsl') && (
|
{environments.includes('wsl') && (
|
||||||
<Alert
|
<Alert
|
||||||
variant="warning"
|
variant='warning'
|
||||||
isInline
|
isInline
|
||||||
title="Kernel customizations are not applied to Windows Subsystem for Linux images"
|
title='Kernel customizations are not applied to Windows Subsystem for Linux images'
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
<KernelName />
|
<KernelName />
|
||||||
|
|
|
||||||
|
|
@ -98,7 +98,7 @@ const KeyboardDropDown = () => {
|
||||||
const toggle = (toggleRef: React.Ref<MenuToggleElement>) => (
|
const toggle = (toggleRef: React.Ref<MenuToggleElement>) => (
|
||||||
<MenuToggle
|
<MenuToggle
|
||||||
ref={toggleRef}
|
ref={toggleRef}
|
||||||
variant="typeahead"
|
variant='typeahead'
|
||||||
onClick={onToggleClick}
|
onClick={onToggleClick}
|
||||||
isExpanded={isOpen}
|
isExpanded={isOpen}
|
||||||
>
|
>
|
||||||
|
|
@ -107,8 +107,8 @@ const KeyboardDropDown = () => {
|
||||||
value={keyboard ? keyboard : inputValue}
|
value={keyboard ? keyboard : inputValue}
|
||||||
onClick={onInputClick}
|
onClick={onInputClick}
|
||||||
onChange={onTextInputChange}
|
onChange={onTextInputChange}
|
||||||
autoComplete="off"
|
autoComplete='off'
|
||||||
placeholder="Select a keyboard"
|
placeholder='Select a keyboard'
|
||||||
isExpanded={isOpen}
|
isExpanded={isOpen}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
|
|
@ -116,9 +116,9 @@ const KeyboardDropDown = () => {
|
||||||
<TextInputGroupUtilities>
|
<TextInputGroupUtilities>
|
||||||
<Button
|
<Button
|
||||||
icon={<TimesIcon />}
|
icon={<TimesIcon />}
|
||||||
variant="plain"
|
variant='plain'
|
||||||
onClick={onClearButtonClick}
|
onClick={onClearButtonClick}
|
||||||
aria-label="Clear input"
|
aria-label='Clear input'
|
||||||
/>
|
/>
|
||||||
</TextInputGroupUtilities>
|
</TextInputGroupUtilities>
|
||||||
)}
|
)}
|
||||||
|
|
@ -127,7 +127,7 @@ const KeyboardDropDown = () => {
|
||||||
);
|
);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<FormGroup isRequired={false} label="Keyboard">
|
<FormGroup isRequired={false} label='Keyboard'>
|
||||||
<Select
|
<Select
|
||||||
isScrollable
|
isScrollable
|
||||||
isOpen={isOpen}
|
isOpen={isOpen}
|
||||||
|
|
|
||||||
|
|
@ -130,7 +130,7 @@ const LanguagesDropDown = () => {
|
||||||
const toggle = (toggleRef: React.Ref<MenuToggleElement>) => (
|
const toggle = (toggleRef: React.Ref<MenuToggleElement>) => (
|
||||||
<MenuToggle
|
<MenuToggle
|
||||||
ref={toggleRef}
|
ref={toggleRef}
|
||||||
variant="typeahead"
|
variant='typeahead'
|
||||||
onClick={onToggleClick}
|
onClick={onToggleClick}
|
||||||
isExpanded={isOpen}
|
isExpanded={isOpen}
|
||||||
>
|
>
|
||||||
|
|
@ -139,17 +139,17 @@ const LanguagesDropDown = () => {
|
||||||
value={inputValue}
|
value={inputValue}
|
||||||
onClick={onInputClick}
|
onClick={onInputClick}
|
||||||
onChange={onTextInputChange}
|
onChange={onTextInputChange}
|
||||||
autoComplete="off"
|
autoComplete='off'
|
||||||
placeholder="Select a language"
|
placeholder='Select a language'
|
||||||
isExpanded={isOpen}
|
isExpanded={isOpen}
|
||||||
/>
|
/>
|
||||||
{inputValue && (
|
{inputValue && (
|
||||||
<TextInputGroupUtilities>
|
<TextInputGroupUtilities>
|
||||||
<Button
|
<Button
|
||||||
icon={<TimesIcon />}
|
icon={<TimesIcon />}
|
||||||
variant="plain"
|
variant='plain'
|
||||||
onClick={onClearButtonClick}
|
onClick={onClearButtonClick}
|
||||||
aria-label="Clear input"
|
aria-label='Clear input'
|
||||||
/>
|
/>
|
||||||
</TextInputGroupUtilities>
|
</TextInputGroupUtilities>
|
||||||
)}
|
)}
|
||||||
|
|
@ -158,7 +158,7 @@ const LanguagesDropDown = () => {
|
||||||
);
|
);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<FormGroup isRequired={false} label="Languages">
|
<FormGroup isRequired={false} label='Languages'>
|
||||||
<Select
|
<Select
|
||||||
isScrollable
|
isScrollable
|
||||||
isOpen={isOpen}
|
isOpen={isOpen}
|
||||||
|
|
@ -198,7 +198,7 @@ const LanguagesDropDown = () => {
|
||||||
)}`}</HelperTextItem>
|
)}`}</HelperTextItem>
|
||||||
</HelperText>
|
</HelperText>
|
||||||
)}
|
)}
|
||||||
<LabelGroup numLabels={5} className="pf-v6-u-mt-sm pf-v6-u-w-100">
|
<LabelGroup numLabels={5} className='pf-v6-u-mt-sm pf-v6-u-w-100'>
|
||||||
{languages?.map((lang) => (
|
{languages?.map((lang) => (
|
||||||
<Label
|
<Label
|
||||||
key={lang}
|
key={lang}
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ import LanguagesDropDown from './components/LanguagesDropDown';
|
||||||
const LocaleStep = () => {
|
const LocaleStep = () => {
|
||||||
return (
|
return (
|
||||||
<Form>
|
<Form>
|
||||||
<Title headingLevel="h1" size="xl">
|
<Title headingLevel='h1' size='xl'>
|
||||||
Locale
|
Locale
|
||||||
</Title>
|
</Title>
|
||||||
<Content>Select the locale for your image.</Content>
|
<Content>Select the locale for your image.</Content>
|
||||||
|
|
|
||||||
|
|
@ -24,7 +24,7 @@ const Oscap = ({ majorVersion }: OscapPropTypes) => {
|
||||||
|
|
||||||
if (majorVersion === '10' && complianceType === 'openscap') {
|
if (majorVersion === '10' && complianceType === 'openscap') {
|
||||||
return (
|
return (
|
||||||
<Alert title="OpenSCAP Security Profiles for RHEL 10 Not Yet Available">
|
<Alert title='OpenSCAP Security Profiles for RHEL 10 Not Yet Available'>
|
||||||
OpenSCAP security profiles aren’t available for RHEL 10 in Image Builder
|
OpenSCAP security profiles aren’t available for RHEL 10 in Image Builder
|
||||||
yet. Support is on the way—check back soon for updates.
|
yet. Support is on the way—check back soon for updates.
|
||||||
</Alert>
|
</Alert>
|
||||||
|
|
@ -35,9 +35,9 @@ const Oscap = ({ majorVersion }: OscapPropTypes) => {
|
||||||
<>
|
<>
|
||||||
{environments.includes('wsl') && (
|
{environments.includes('wsl') && (
|
||||||
<Alert
|
<Alert
|
||||||
variant="warning"
|
variant='warning'
|
||||||
isInline
|
isInline
|
||||||
title="OpenSCAP profiles are not compatible with WSL images."
|
title='OpenSCAP profiles are not compatible with WSL images.'
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
{complianceType === 'openscap' ? <ProfileSelector /> : <PolicySelector />}
|
{complianceType === 'openscap' ? <ProfileSelector /> : <PolicySelector />}
|
||||||
|
|
|
||||||
|
|
@ -5,11 +5,11 @@ import { Form, FormGroup, Spinner, Title } from '@patternfly/react-core';
|
||||||
const OscapOnPremSpinner = () => {
|
const OscapOnPremSpinner = () => {
|
||||||
return (
|
return (
|
||||||
<Form>
|
<Form>
|
||||||
<Title headingLevel="h1" size="xl">
|
<Title headingLevel='h1' size='xl'>
|
||||||
OpenSCAP profile
|
OpenSCAP profile
|
||||||
</Title>
|
</Title>
|
||||||
<FormGroup>
|
<FormGroup>
|
||||||
<Spinner size="xl" />
|
<Spinner size='xl' />
|
||||||
</FormGroup>
|
</FormGroup>
|
||||||
</Form>
|
</Form>
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@ import {
|
||||||
const OscapOnPremWarning = () => {
|
const OscapOnPremWarning = () => {
|
||||||
return (
|
return (
|
||||||
<Form>
|
<Form>
|
||||||
<Title headingLevel="h1" size="xl">
|
<Title headingLevel='h1' size='xl'>
|
||||||
OpenSCAP profile
|
OpenSCAP profile
|
||||||
</Title>
|
</Title>
|
||||||
<FormGroup>
|
<FormGroup>
|
||||||
|
|
@ -23,17 +23,17 @@ const OscapOnPremWarning = () => {
|
||||||
'0 var(--pf-v6-c-toolbar__content--PaddingRight) 0 var(--pf-v6-c-toolbar__content--PaddingLeft)',
|
'0 var(--pf-v6-c-toolbar__content--PaddingRight) 0 var(--pf-v6-c-toolbar__content--PaddingLeft)',
|
||||||
}}
|
}}
|
||||||
isInline
|
isInline
|
||||||
variant="warning"
|
variant='warning'
|
||||||
title="The packages required to apply security profiles by using OpenSCAP are missing on this host. Install them with the following command"
|
title='The packages required to apply security profiles by using OpenSCAP are missing on this host. Install them with the following command'
|
||||||
/>
|
/>
|
||||||
</FormGroup>
|
</FormGroup>
|
||||||
<FormGroup>
|
<FormGroup>
|
||||||
<CodeBlock>
|
<CodeBlock>
|
||||||
<CodeBlockCode>
|
<CodeBlockCode>
|
||||||
<ClipboardCopy
|
<ClipboardCopy
|
||||||
hoverTip="Copy"
|
hoverTip='Copy'
|
||||||
clickTip="Copied"
|
clickTip='Copied'
|
||||||
variant="inline-compact"
|
variant='inline-compact'
|
||||||
>
|
>
|
||||||
sudo dnf install openscap-scanner scap-security-guide
|
sudo dnf install openscap-scanner scap-security-guide
|
||||||
</ClipboardCopy>
|
</ClipboardCopy>
|
||||||
|
|
|
||||||
|
|
@ -79,14 +79,14 @@ export const OscapProfileInformation = ({
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
{(isFetchingOscapProfileInfo || isFetchingPolicyInfo) && (
|
{(isFetchingOscapProfileInfo || isFetchingPolicyInfo) && (
|
||||||
<Spinner size="lg" />
|
<Spinner size='lg' />
|
||||||
)}
|
)}
|
||||||
{isSuccessOscapProfileInfo && (
|
{isSuccessOscapProfileInfo && (
|
||||||
<>
|
<>
|
||||||
<Content component={ContentVariants.dl} className="review-step-dl">
|
<Content component={ContentVariants.dl} className='review-step-dl'>
|
||||||
<Content
|
<Content
|
||||||
component={ContentVariants.dt}
|
component={ContentVariants.dt}
|
||||||
className="pf-v6-u-min-width"
|
className='pf-v6-u-min-width'
|
||||||
>
|
>
|
||||||
Profile description
|
Profile description
|
||||||
</Content>
|
</Content>
|
||||||
|
|
@ -95,19 +95,19 @@ export const OscapProfileInformation = ({
|
||||||
</Content>
|
</Content>
|
||||||
<Content
|
<Content
|
||||||
component={ContentVariants.dt}
|
component={ContentVariants.dt}
|
||||||
className="pf-v6-u-min-width"
|
className='pf-v6-u-min-width'
|
||||||
>
|
>
|
||||||
Reference ID
|
Reference ID
|
||||||
</Content>
|
</Content>
|
||||||
<Content
|
<Content
|
||||||
data-testid="oscap-profile-info-ref-id"
|
data-testid='oscap-profile-info-ref-id'
|
||||||
component={ContentVariants.dd}
|
component={ContentVariants.dd}
|
||||||
>
|
>
|
||||||
{oscapProfile?.profile_id}
|
{oscapProfile?.profile_id}
|
||||||
</Content>
|
</Content>
|
||||||
<Content
|
<Content
|
||||||
component={ContentVariants.dt}
|
component={ContentVariants.dt}
|
||||||
className="pf-v6-u-min-width"
|
className='pf-v6-u-min-width'
|
||||||
>
|
>
|
||||||
Packages
|
Packages
|
||||||
</Content>
|
</Content>
|
||||||
|
|
@ -120,7 +120,7 @@ export const OscapProfileInformation = ({
|
||||||
</Content>
|
</Content>
|
||||||
<Content
|
<Content
|
||||||
component={ContentVariants.dt}
|
component={ContentVariants.dt}
|
||||||
className="pf-v5-u-min-width"
|
className='pf-v5-u-min-width'
|
||||||
>
|
>
|
||||||
Kernel arguments
|
Kernel arguments
|
||||||
</Content>
|
</Content>
|
||||||
|
|
@ -133,7 +133,7 @@ export const OscapProfileInformation = ({
|
||||||
</Content>
|
</Content>
|
||||||
<Content
|
<Content
|
||||||
component={ContentVariants.dt}
|
component={ContentVariants.dt}
|
||||||
className="pf-v5-u-min-width"
|
className='pf-v5-u-min-width'
|
||||||
>
|
>
|
||||||
Enabled services
|
Enabled services
|
||||||
</Content>
|
</Content>
|
||||||
|
|
@ -146,7 +146,7 @@ export const OscapProfileInformation = ({
|
||||||
</Content>
|
</Content>
|
||||||
<Content
|
<Content
|
||||||
component={ContentVariants.dt}
|
component={ContentVariants.dt}
|
||||||
className="pf-v5-u-min-width"
|
className='pf-v5-u-min-width'
|
||||||
>
|
>
|
||||||
Disabled services
|
Disabled services
|
||||||
</Content>
|
</Content>
|
||||||
|
|
@ -165,10 +165,10 @@ export const OscapProfileInformation = ({
|
||||||
{isSuccessPolicyInfo && (
|
{isSuccessPolicyInfo && (
|
||||||
<>
|
<>
|
||||||
<Content>
|
<Content>
|
||||||
<Content component={ContentVariants.dl} className="review-step-dl">
|
<Content component={ContentVariants.dl} className='review-step-dl'>
|
||||||
<Content
|
<Content
|
||||||
component={ContentVariants.dt}
|
component={ContentVariants.dt}
|
||||||
className="pf-v6-u-min-width"
|
className='pf-v6-u-min-width'
|
||||||
>
|
>
|
||||||
Policy description:
|
Policy description:
|
||||||
</Content>
|
</Content>
|
||||||
|
|
@ -177,7 +177,7 @@ export const OscapProfileInformation = ({
|
||||||
</Content>
|
</Content>
|
||||||
<Content
|
<Content
|
||||||
component={ContentVariants.dt}
|
component={ContentVariants.dt}
|
||||||
className="pf-v6-u-min-width"
|
className='pf-v6-u-min-width'
|
||||||
>
|
>
|
||||||
Business objective:
|
Business objective:
|
||||||
</Content>
|
</Content>
|
||||||
|
|
@ -186,7 +186,7 @@ export const OscapProfileInformation = ({
|
||||||
</Content>
|
</Content>
|
||||||
<Content
|
<Content
|
||||||
component={ContentVariants.dt}
|
component={ContentVariants.dt}
|
||||||
className="pf-v6-u-min-width"
|
className='pf-v6-u-min-width'
|
||||||
>
|
>
|
||||||
Policy type:
|
Policy type:
|
||||||
</Content>
|
</Content>
|
||||||
|
|
@ -195,7 +195,7 @@ export const OscapProfileInformation = ({
|
||||||
</Content>
|
</Content>
|
||||||
<Content
|
<Content
|
||||||
component={ContentVariants.dt}
|
component={ContentVariants.dt}
|
||||||
className="pf-v6-u-min-width"
|
className='pf-v6-u-min-width'
|
||||||
>
|
>
|
||||||
Reference ID:
|
Reference ID:
|
||||||
</Content>
|
</Content>
|
||||||
|
|
|
||||||
|
|
@ -198,7 +198,7 @@ const PolicySelector = () => {
|
||||||
|
|
||||||
const res = [
|
const res = [
|
||||||
<SelectOption
|
<SelectOption
|
||||||
key="compliance-none-option"
|
key='compliance-none-option'
|
||||||
value={{ toString: () => 'None', compareTo: () => false }}
|
value={{ toString: () => 'None', compareTo: () => false }}
|
||||||
>
|
>
|
||||||
None
|
None
|
||||||
|
|
@ -216,7 +216,7 @@ const PolicySelector = () => {
|
||||||
|
|
||||||
const toggleCompliance = (toggleRef: React.Ref<MenuToggleElement>) => (
|
const toggleCompliance = (toggleRef: React.Ref<MenuToggleElement>) => (
|
||||||
<MenuToggle
|
<MenuToggle
|
||||||
ouiaId="compliancePolicySelect"
|
ouiaId='compliancePolicySelect'
|
||||||
ref={toggleRef}
|
ref={toggleRef}
|
||||||
onClick={() => setIsOpen(!isOpen)}
|
onClick={() => setIsOpen(!isOpen)}
|
||||||
isExpanded={isOpen}
|
isExpanded={isOpen}
|
||||||
|
|
@ -232,7 +232,7 @@ const PolicySelector = () => {
|
||||||
);
|
);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<FormGroup label="Policy">
|
<FormGroup label='Policy'>
|
||||||
<Select
|
<Select
|
||||||
isScrollable
|
isScrollable
|
||||||
isOpen={isOpen}
|
isOpen={isOpen}
|
||||||
|
|
|
||||||
|
|
@ -279,9 +279,9 @@ const ProfileSelector = () => {
|
||||||
|
|
||||||
const toggleOpenSCAP = (toggleRef: React.Ref<MenuToggleElement>) => (
|
const toggleOpenSCAP = (toggleRef: React.Ref<MenuToggleElement>) => (
|
||||||
<MenuToggle
|
<MenuToggle
|
||||||
data-testid="profileSelect"
|
data-testid='profileSelect'
|
||||||
ref={toggleRef}
|
ref={toggleRef}
|
||||||
variant="typeahead"
|
variant='typeahead'
|
||||||
onClick={() => setIsOpen(!isOpen)}
|
onClick={() => setIsOpen(!isOpen)}
|
||||||
isExpanded={isOpen}
|
isExpanded={isOpen}
|
||||||
isDisabled={!isSuccess || hasWslTargetOnly}
|
isDisabled={!isSuccess || hasWslTargetOnly}
|
||||||
|
|
@ -297,8 +297,8 @@ const ProfileSelector = () => {
|
||||||
onClick={onInputClick}
|
onClick={onInputClick}
|
||||||
onChange={onTextInputChange}
|
onChange={onTextInputChange}
|
||||||
onKeyDown={onKeyDown}
|
onKeyDown={onKeyDown}
|
||||||
autoComplete="off"
|
autoComplete='off'
|
||||||
placeholder="None"
|
placeholder='None'
|
||||||
isExpanded={isOpen}
|
isExpanded={isOpen}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
|
|
@ -306,9 +306,9 @@ const ProfileSelector = () => {
|
||||||
<TextInputGroupUtilities>
|
<TextInputGroupUtilities>
|
||||||
<Button
|
<Button
|
||||||
icon={<TimesIcon />}
|
icon={<TimesIcon />}
|
||||||
variant="plain"
|
variant='plain'
|
||||||
onClick={handleClear}
|
onClick={handleClear}
|
||||||
aria-label="Clear input"
|
aria-label='Clear input'
|
||||||
/>
|
/>
|
||||||
</TextInputGroupUtilities>
|
</TextInputGroupUtilities>
|
||||||
)}
|
)}
|
||||||
|
|
@ -317,7 +317,7 @@ const ProfileSelector = () => {
|
||||||
);
|
);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<FormGroup label="Profile">
|
<FormGroup label='Profile'>
|
||||||
<Select
|
<Select
|
||||||
isScrollable
|
isScrollable
|
||||||
isOpen={isOpen}
|
isOpen={isOpen}
|
||||||
|
|
@ -332,14 +332,14 @@ const ProfileSelector = () => {
|
||||||
>
|
>
|
||||||
<SelectList>
|
<SelectList>
|
||||||
{isFetching && (
|
{isFetching && (
|
||||||
<SelectOption value="loader">
|
<SelectOption value='loader'>
|
||||||
<Spinner size="lg" />
|
<Spinner size='lg' />
|
||||||
</SelectOption>
|
</SelectOption>
|
||||||
)}
|
)}
|
||||||
{selectOptions.length > 0 &&
|
{selectOptions.length > 0 &&
|
||||||
[
|
[
|
||||||
<SelectOption
|
<SelectOption
|
||||||
key="oscap-none-option"
|
key='oscap-none-option'
|
||||||
value={{ toString: () => 'None', compareTo: () => false }}
|
value={{ toString: () => 'None', compareTo: () => false }}
|
||||||
>
|
>
|
||||||
None
|
None
|
||||||
|
|
@ -367,8 +367,8 @@ const ProfileSelector = () => {
|
||||||
</Select>
|
</Select>
|
||||||
{isError && (
|
{isError && (
|
||||||
<Alert
|
<Alert
|
||||||
title="Error fetching the profiles"
|
title='Error fetching the profiles'
|
||||||
variant="danger"
|
variant='danger'
|
||||||
isPlain
|
isPlain
|
||||||
isInline
|
isInline
|
||||||
>
|
>
|
||||||
|
|
|
||||||
|
|
@ -107,7 +107,7 @@ const OscapContent = () => {
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Form>
|
<Form>
|
||||||
<Title headingLevel="h1" size="xl">
|
<Title headingLevel='h1' size='xl'>
|
||||||
{complianceEnabled ? 'Compliance' : 'OpenSCAP profile'}
|
{complianceEnabled ? 'Compliance' : 'OpenSCAP profile'}
|
||||||
</Title>
|
</Title>
|
||||||
<Content>
|
<Content>
|
||||||
|
|
@ -118,16 +118,16 @@ const OscapContent = () => {
|
||||||
registered RHEL systems to a selected policy or profile.
|
registered RHEL systems to a selected policy or profile.
|
||||||
</Content>
|
</Content>
|
||||||
{complianceEnabled && (
|
{complianceEnabled && (
|
||||||
<ToggleGroup aria-label="Default with single selectable">
|
<ToggleGroup aria-label='Default with single selectable'>
|
||||||
<ToggleGroupItem
|
<ToggleGroupItem
|
||||||
text="Compliance policies"
|
text='Compliance policies'
|
||||||
buttonId="toggle-group-compliance"
|
buttonId='toggle-group-compliance'
|
||||||
isSelected={complianceType === 'compliance'}
|
isSelected={complianceType === 'compliance'}
|
||||||
onChange={() => handleTypeChange('compliance')}
|
onChange={() => handleTypeChange('compliance')}
|
||||||
/>
|
/>
|
||||||
<ToggleGroupItem
|
<ToggleGroupItem
|
||||||
text="OpenSCAP profiles"
|
text='OpenSCAP profiles'
|
||||||
buttonId="toggle-group-openscap"
|
buttonId='toggle-group-openscap'
|
||||||
isSelected={complianceType === 'openscap'}
|
isSelected={complianceType === 'openscap'}
|
||||||
onChange={() => handleTypeChange('openscap')}
|
onChange={() => handleTypeChange('openscap')}
|
||||||
/>
|
/>
|
||||||
|
|
@ -136,7 +136,7 @@ const OscapContent = () => {
|
||||||
{Array.isArray(policies?.data) &&
|
{Array.isArray(policies?.data) &&
|
||||||
policies.data.length === 0 &&
|
policies.data.length === 0 &&
|
||||||
complianceType === 'compliance' && (
|
complianceType === 'compliance' && (
|
||||||
<Alert variant="info" isInline title="No compliance policies created">
|
<Alert variant='info' isInline title='No compliance policies created'>
|
||||||
<p>
|
<p>
|
||||||
Currently there are no compliance policies in your environment. To
|
Currently there are no compliance policies in your environment. To
|
||||||
help you get started, select one of the default policies below and
|
help you get started, select one of the default policies below and
|
||||||
|
|
@ -144,7 +144,7 @@ const OscapContent = () => {
|
||||||
policy or to create a new one, you must go through Insights
|
policy or to create a new one, you must go through Insights
|
||||||
Compliance.
|
Compliance.
|
||||||
</p>
|
</p>
|
||||||
<AlertActionLink component="a" href={COMPLIANCE_URL}>
|
<AlertActionLink component='a' href={COMPLIANCE_URL}>
|
||||||
Save blueprint and navigate to Insights Compliance
|
Save blueprint and navigate to Insights Compliance
|
||||||
</AlertActionLink>
|
</AlertActionLink>
|
||||||
</Alert>
|
</Alert>
|
||||||
|
|
|
||||||
|
|
@ -149,7 +149,7 @@ const PackageRecommendations = () => {
|
||||||
};
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Panel variant="bordered" className="panel-border">
|
<Panel variant='bordered' className='panel-border'>
|
||||||
<PanelMain>
|
<PanelMain>
|
||||||
<PanelMainBody>
|
<PanelMainBody>
|
||||||
<ExpandableSection
|
<ExpandableSection
|
||||||
|
|
@ -166,7 +166,7 @@ const PackageRecommendations = () => {
|
||||||
<Content component={ContentVariants.small}>
|
<Content component={ContentVariants.small}>
|
||||||
<em>Powered by RHEL Lightspeed</em>{' '}
|
<em>Powered by RHEL Lightspeed</em>{' '}
|
||||||
<Popover
|
<Popover
|
||||||
maxWidth="30rem"
|
maxWidth='30rem'
|
||||||
// overrides the expandable behaviour to allow placing
|
// overrides the expandable behaviour to allow placing
|
||||||
// a popover there
|
// a popover there
|
||||||
onShow={() => setIsExpanded(false)}
|
onShow={() => setIsExpanded(false)}
|
||||||
|
|
@ -194,11 +194,11 @@ const PackageRecommendations = () => {
|
||||||
{packages.length === 0 && (
|
{packages.length === 0 && (
|
||||||
<>Select packages to generate recommendations.</>
|
<>Select packages to generate recommendations.</>
|
||||||
)}
|
)}
|
||||||
{isLoading && <Spinner size="lg" />}
|
{isLoading && <Spinner size='lg' />}
|
||||||
{isError && (
|
{isError && (
|
||||||
<Alert
|
<Alert
|
||||||
title="Recommendations couldn't be fetched"
|
title="Recommendations couldn't be fetched"
|
||||||
variant="danger"
|
variant='danger'
|
||||||
isPlain
|
isPlain
|
||||||
isInline
|
isInline
|
||||||
>
|
>
|
||||||
|
|
@ -219,15 +219,15 @@ const PackageRecommendations = () => {
|
||||||
blueprint.
|
blueprint.
|
||||||
</Content>
|
</Content>
|
||||||
</Content>
|
</Content>
|
||||||
<Table variant="compact">
|
<Table variant='compact'>
|
||||||
<Thead>
|
<Thead>
|
||||||
<Tr>
|
<Tr>
|
||||||
<Th width={35}>Package name</Th>
|
<Th width={35}>Package name</Th>
|
||||||
<Th width={45}>Description</Th>
|
<Th width={45}>Description</Th>
|
||||||
<Th width={20}>
|
<Th width={20}>
|
||||||
<Button
|
<Button
|
||||||
variant="link"
|
variant='link'
|
||||||
component="a"
|
component='a'
|
||||||
onClick={() => addAllPackages()}
|
onClick={() => addAllPackages()}
|
||||||
isInline
|
isInline
|
||||||
>
|
>
|
||||||
|
|
@ -242,7 +242,7 @@ const PackageRecommendations = () => {
|
||||||
<Td>{pkg}</Td>
|
<Td>{pkg}</Td>
|
||||||
{isLoadingDescriptions && (
|
{isLoadingDescriptions && (
|
||||||
<Td>
|
<Td>
|
||||||
<Spinner size="md" />
|
<Spinner size='md' />
|
||||||
</Td>
|
</Td>
|
||||||
)}
|
)}
|
||||||
{isSuccessDescriptions && (
|
{isSuccessDescriptions && (
|
||||||
|
|
@ -254,8 +254,8 @@ const PackageRecommendations = () => {
|
||||||
)}
|
)}
|
||||||
<Td>
|
<Td>
|
||||||
<Button
|
<Button
|
||||||
variant="link"
|
variant='link'
|
||||||
component="a"
|
component='a'
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
analytics.track(
|
analytics.track(
|
||||||
`${AMPLITUDE_MODULE_NAME} - Recommended Package Added`,
|
`${AMPLITUDE_MODULE_NAME} - Recommended Package Added`,
|
||||||
|
|
|
||||||
|
|
@ -447,9 +447,9 @@ const Packages = () => {
|
||||||
<Td colSpan={5}>
|
<Td colSpan={5}>
|
||||||
<Bullseye>
|
<Bullseye>
|
||||||
<EmptyState
|
<EmptyState
|
||||||
headingLevel="h4"
|
headingLevel='h4'
|
||||||
icon={SearchIcon}
|
icon={SearchIcon}
|
||||||
titleText="The search value is too short"
|
titleText='The search value is too short'
|
||||||
variant={EmptyStateVariant.sm}
|
variant={EmptyStateVariant.sm}
|
||||||
>
|
>
|
||||||
<EmptyStateBody>
|
<EmptyStateBody>
|
||||||
|
|
@ -470,14 +470,14 @@ const Packages = () => {
|
||||||
<Td colSpan={5}>
|
<Td colSpan={5}>
|
||||||
<Bullseye>
|
<Bullseye>
|
||||||
<EmptyState
|
<EmptyState
|
||||||
headingLevel="h4"
|
headingLevel='h4'
|
||||||
titleText="No selected packages in Other repos"
|
titleText='No selected packages in Other repos'
|
||||||
variant={EmptyStateVariant.sm}
|
variant={EmptyStateVariant.sm}
|
||||||
>
|
>
|
||||||
<EmptyStateBody>
|
<EmptyStateBody>
|
||||||
Try looking under "
|
Try looking under "
|
||||||
<Button
|
<Button
|
||||||
variant="link"
|
variant='link'
|
||||||
onClick={() => setActiveTabKey(Repos.INCLUDED)}
|
onClick={() => setActiveTabKey(Repos.INCLUDED)}
|
||||||
isInline
|
isInline
|
||||||
>
|
>
|
||||||
|
|
@ -501,8 +501,8 @@ const Packages = () => {
|
||||||
<Td colSpan={5}>
|
<Td colSpan={5}>
|
||||||
<Bullseye>
|
<Bullseye>
|
||||||
<EmptyState
|
<EmptyState
|
||||||
headingLevel="h4"
|
headingLevel='h4'
|
||||||
titleText="No results found"
|
titleText='No results found'
|
||||||
icon={SearchIcon}
|
icon={SearchIcon}
|
||||||
variant={EmptyStateVariant.sm}
|
variant={EmptyStateVariant.sm}
|
||||||
>
|
>
|
||||||
|
|
@ -514,7 +514,7 @@ const Packages = () => {
|
||||||
<EmptyStateActions>
|
<EmptyStateActions>
|
||||||
{!process.env.IS_ON_PREMISE && (
|
{!process.env.IS_ON_PREMISE && (
|
||||||
<Button
|
<Button
|
||||||
variant="primary"
|
variant='primary'
|
||||||
onClick={() => setActiveTabKey(Repos.OTHER)}
|
onClick={() => setActiveTabKey(Repos.OTHER)}
|
||||||
>
|
>
|
||||||
Search other repositories
|
Search other repositories
|
||||||
|
|
@ -523,12 +523,12 @@ const Packages = () => {
|
||||||
</EmptyStateActions>
|
</EmptyStateActions>
|
||||||
<EmptyStateActions>
|
<EmptyStateActions>
|
||||||
<Button
|
<Button
|
||||||
className="pf-v6-u-pt-md"
|
className='pf-v6-u-pt-md'
|
||||||
variant="link"
|
variant='link'
|
||||||
isInline
|
isInline
|
||||||
component="a"
|
component='a'
|
||||||
target="_blank"
|
target='_blank'
|
||||||
iconPosition="right"
|
iconPosition='right'
|
||||||
icon={<ExternalLinkAltIcon />}
|
icon={<ExternalLinkAltIcon />}
|
||||||
href={CONTENT_URL}
|
href={CONTENT_URL}
|
||||||
>
|
>
|
||||||
|
|
@ -549,8 +549,8 @@ const Packages = () => {
|
||||||
<Td colSpan={5}>
|
<Td colSpan={5}>
|
||||||
<Bullseye>
|
<Bullseye>
|
||||||
<EmptyState
|
<EmptyState
|
||||||
headingLevel="h4"
|
headingLevel='h4'
|
||||||
titleText="No results found"
|
titleText='No results found'
|
||||||
icon={SearchIcon}
|
icon={SearchIcon}
|
||||||
variant={EmptyStateVariant.sm}
|
variant={EmptyStateVariant.sm}
|
||||||
>
|
>
|
||||||
|
|
@ -558,10 +558,10 @@ const Packages = () => {
|
||||||
No packages found in known repositories. If you know of a
|
No packages found in known repositories. If you know of a
|
||||||
repository containing this packages, add it to{' '}
|
repository containing this packages, add it to{' '}
|
||||||
<Button
|
<Button
|
||||||
variant="link"
|
variant='link'
|
||||||
isInline
|
isInline
|
||||||
component="a"
|
component='a'
|
||||||
target="_blank"
|
target='_blank'
|
||||||
href={CONTENT_URL}
|
href={CONTENT_URL}
|
||||||
>
|
>
|
||||||
your repositories
|
your repositories
|
||||||
|
|
@ -582,11 +582,11 @@ const Packages = () => {
|
||||||
<Modal
|
<Modal
|
||||||
isOpen={isRepoModalOpen}
|
isOpen={isRepoModalOpen}
|
||||||
onClose={handleCloseModalToggle}
|
onClose={handleCloseModalToggle}
|
||||||
width="50%"
|
width='50%'
|
||||||
>
|
>
|
||||||
<ModalHeader
|
<ModalHeader
|
||||||
title="Custom repositories will be added to your image"
|
title='Custom repositories will be added to your image'
|
||||||
titleIconVariant="warning"
|
titleIconVariant='warning'
|
||||||
/>
|
/>
|
||||||
<ModalBody>
|
<ModalBody>
|
||||||
You have selected packages that belong to custom repositories. By
|
You have selected packages that belong to custom repositories. By
|
||||||
|
|
@ -596,10 +596,10 @@ const Packages = () => {
|
||||||
<br />
|
<br />
|
||||||
The repositories will also get enabled in{' '}
|
The repositories will also get enabled in{' '}
|
||||||
<Button
|
<Button
|
||||||
component="a"
|
component='a'
|
||||||
target="_blank"
|
target='_blank'
|
||||||
variant="link"
|
variant='link'
|
||||||
iconPosition="right"
|
iconPosition='right'
|
||||||
isInline
|
isInline
|
||||||
icon={<ExternalLinkAltIcon />}
|
icon={<ExternalLinkAltIcon />}
|
||||||
href={CONTENT_URL}
|
href={CONTENT_URL}
|
||||||
|
|
@ -608,7 +608,7 @@ const Packages = () => {
|
||||||
</Button>{' '}
|
</Button>{' '}
|
||||||
if they were not enabled yet:
|
if they were not enabled yet:
|
||||||
<br />
|
<br />
|
||||||
<Table variant="compact">
|
<Table variant='compact'>
|
||||||
<Thead>
|
<Thead>
|
||||||
<Tr>
|
<Tr>
|
||||||
{isSelectingPackage ? (
|
{isSelectingPackage ? (
|
||||||
|
|
@ -639,15 +639,15 @@ const Packages = () => {
|
||||||
</ModalBody>
|
</ModalBody>
|
||||||
<ModalFooter>
|
<ModalFooter>
|
||||||
<Button
|
<Button
|
||||||
key="add"
|
key='add'
|
||||||
variant="primary"
|
variant='primary'
|
||||||
isLoading={createLoading}
|
isLoading={createLoading}
|
||||||
isDisabled={createLoading}
|
isDisabled={createLoading}
|
||||||
onClick={handleConfirmModalToggle}
|
onClick={handleConfirmModalToggle}
|
||||||
>
|
>
|
||||||
Add listed repositories
|
Add listed repositories
|
||||||
</Button>
|
</Button>
|
||||||
<Button key="back" variant="link" onClick={handleCloseModalToggle}>
|
<Button key='back' variant='link' onClick={handleCloseModalToggle}>
|
||||||
Back
|
Back
|
||||||
</Button>
|
</Button>
|
||||||
</ModalFooter>
|
</ModalFooter>
|
||||||
|
|
@ -1168,21 +1168,21 @@ const Packages = () => {
|
||||||
switch (true) {
|
switch (true) {
|
||||||
case differenceInDays < 0:
|
case differenceInDays < 0:
|
||||||
icon = (
|
icon = (
|
||||||
<Icon status="danger" isInline>
|
<Icon status='danger' isInline>
|
||||||
<ExclamationCircleIcon />
|
<ExclamationCircleIcon />
|
||||||
</Icon>
|
</Icon>
|
||||||
);
|
);
|
||||||
break;
|
break;
|
||||||
case differenceInDays <= 365:
|
case differenceInDays <= 365:
|
||||||
icon = (
|
icon = (
|
||||||
<Icon status="warning" isInline>
|
<Icon status='warning' isInline>
|
||||||
<ExclamationTriangleIcon />
|
<ExclamationTriangleIcon />
|
||||||
</Icon>
|
</Icon>
|
||||||
);
|
);
|
||||||
break;
|
break;
|
||||||
case differenceInDays > 365:
|
case differenceInDays > 365:
|
||||||
icon = (
|
icon = (
|
||||||
<Icon status="success" isInline>
|
<Icon status='success' isInline>
|
||||||
<CheckCircleIcon />
|
<CheckCircleIcon />
|
||||||
</Icon>
|
</Icon>
|
||||||
);
|
);
|
||||||
|
|
@ -1211,7 +1211,7 @@ const Packages = () => {
|
||||||
key={`${grp.name}-${rowIndex}`}
|
key={`${grp.name}-${rowIndex}`}
|
||||||
isExpanded={isGroupExpanded(grp.name)}
|
isExpanded={isGroupExpanded(grp.name)}
|
||||||
>
|
>
|
||||||
<Tr data-testid="package-row">
|
<Tr data-testid='package-row'>
|
||||||
<Td
|
<Td
|
||||||
expand={{
|
expand={{
|
||||||
rowIndex: rowIndex,
|
rowIndex: rowIndex,
|
||||||
|
|
@ -1232,8 +1232,8 @@ const Packages = () => {
|
||||||
<Td>
|
<Td>
|
||||||
@{grp.name}
|
@{grp.name}
|
||||||
<Popover
|
<Popover
|
||||||
minWidth="25rem"
|
minWidth='25rem'
|
||||||
headerContent="Included packages"
|
headerContent='Included packages'
|
||||||
bodyContent={
|
bodyContent={
|
||||||
<div
|
<div
|
||||||
style={
|
style={
|
||||||
|
|
@ -1244,8 +1244,8 @@ const Packages = () => {
|
||||||
>
|
>
|
||||||
{grp.package_list.length > 0 ? (
|
{grp.package_list.length > 0 ? (
|
||||||
<Table
|
<Table
|
||||||
variant="compact"
|
variant='compact'
|
||||||
data-testid="group-included-packages-table"
|
data-testid='group-included-packages-table'
|
||||||
>
|
>
|
||||||
<Tbody>
|
<Tbody>
|
||||||
{grp.package_list.map((pkg) => (
|
{grp.package_list.map((pkg) => (
|
||||||
|
|
@ -1262,11 +1262,11 @@ const Packages = () => {
|
||||||
}
|
}
|
||||||
>
|
>
|
||||||
<Button
|
<Button
|
||||||
icon={<HelpIcon className="pf-v6-u-ml-xs" />}
|
icon={<HelpIcon className='pf-v6-u-ml-xs' />}
|
||||||
variant="plain"
|
variant='plain'
|
||||||
aria-label="About included packages"
|
aria-label='About included packages'
|
||||||
component="span"
|
component='span'
|
||||||
className="pf-v6-u-p-0"
|
className='pf-v6-u-p-0'
|
||||||
isInline
|
isInline
|
||||||
/>
|
/>
|
||||||
</Popover>
|
</Popover>
|
||||||
|
|
@ -1311,7 +1311,7 @@ const Packages = () => {
|
||||||
key={`${pkg.name}-${rowIndex}`}
|
key={`${pkg.name}-${rowIndex}`}
|
||||||
isExpanded={isPkgExpanded(pkg)}
|
isExpanded={isPkgExpanded(pkg)}
|
||||||
>
|
>
|
||||||
<Tr data-testid="package-row">
|
<Tr data-testid='package-row'>
|
||||||
<Td
|
<Td
|
||||||
expand={{
|
expand={{
|
||||||
rowIndex: rowIndex,
|
rowIndex: rowIndex,
|
||||||
|
|
@ -1434,11 +1434,11 @@ const Packages = () => {
|
||||||
|
|
||||||
const PackagesTable = () => {
|
const PackagesTable = () => {
|
||||||
return (
|
return (
|
||||||
<Table variant="compact" data-testid="packages-table">
|
<Table variant='compact' data-testid='packages-table'>
|
||||||
<Thead>
|
<Thead>
|
||||||
<Tr>
|
<Tr>
|
||||||
<Th aria-label="Expanded" />
|
<Th aria-label='Expanded' />
|
||||||
<Th aria-label="Selected" />
|
<Th aria-label='Selected' />
|
||||||
<Th sort={getSortParams(0)} width={30}>
|
<Th sort={getSortParams(0)} width={30}>
|
||||||
Name
|
Name
|
||||||
</Th>
|
</Th>
|
||||||
|
|
@ -1463,10 +1463,10 @@ const Packages = () => {
|
||||||
<ToolbarContent>
|
<ToolbarContent>
|
||||||
<ToolbarItem>
|
<ToolbarItem>
|
||||||
<SearchInput
|
<SearchInput
|
||||||
type="text"
|
type='text'
|
||||||
placeholder="Search packages"
|
placeholder='Search packages'
|
||||||
aria-label="Search packages"
|
aria-label='Search packages'
|
||||||
data-testid="packages-search-input"
|
data-testid='packages-search-input'
|
||||||
value={searchTerm}
|
value={searchTerm}
|
||||||
onChange={handleSearch}
|
onChange={handleSearch}
|
||||||
onClear={() => handleClear()}
|
onClear={() => handleClear()}
|
||||||
|
|
@ -1475,8 +1475,8 @@ const Packages = () => {
|
||||||
<ToolbarItem>
|
<ToolbarItem>
|
||||||
<ToggleGroup>
|
<ToggleGroup>
|
||||||
<ToggleGroupItem
|
<ToggleGroupItem
|
||||||
text="Available"
|
text='Available'
|
||||||
buttonId="toggle-available"
|
buttonId='toggle-available'
|
||||||
isSelected={toggleSelected === 'toggle-available'}
|
isSelected={toggleSelected === 'toggle-available'}
|
||||||
onChange={handleFilterToggleClick}
|
onChange={handleFilterToggleClick}
|
||||||
/>
|
/>
|
||||||
|
|
@ -1488,15 +1488,15 @@ const Packages = () => {
|
||||||
? ` (${packages.length + groups.length})`
|
? ` (${packages.length + groups.length})`
|
||||||
: ' (100+)'
|
: ' (100+)'
|
||||||
}`}
|
}`}
|
||||||
buttonId="toggle-selected"
|
buttonId='toggle-selected'
|
||||||
isSelected={toggleSelected === 'toggle-selected'}
|
isSelected={toggleSelected === 'toggle-selected'}
|
||||||
onChange={handleFilterToggleClick}
|
onChange={handleFilterToggleClick}
|
||||||
/>
|
/>
|
||||||
</ToggleGroup>
|
</ToggleGroup>
|
||||||
</ToolbarItem>
|
</ToolbarItem>
|
||||||
<ToolbarItem variant="pagination">
|
<ToolbarItem variant='pagination'>
|
||||||
<Pagination
|
<Pagination
|
||||||
data-testid="packages-pagination-top"
|
data-testid='packages-pagination-top'
|
||||||
itemCount={
|
itemCount={
|
||||||
searchTerm === '' && toggleSelected === 'toggle-available'
|
searchTerm === '' && toggleSelected === 'toggle-available'
|
||||||
? 0
|
? 0
|
||||||
|
|
@ -1517,7 +1517,7 @@ const Packages = () => {
|
||||||
<ToolbarContent>
|
<ToolbarContent>
|
||||||
<CustomHelperText
|
<CustomHelperText
|
||||||
hide={!debouncedSearchTermLengthOf1 || debouncedSearchTermIsGroup}
|
hide={!debouncedSearchTermLengthOf1 || debouncedSearchTermIsGroup}
|
||||||
textValue="The search value must be greater than 1 character"
|
textValue='The search value must be greater than 1 character'
|
||||||
/>
|
/>
|
||||||
</ToolbarContent>
|
</ToolbarContent>
|
||||||
</Stack>
|
</Stack>
|
||||||
|
|
@ -1526,26 +1526,26 @@ const Packages = () => {
|
||||||
<Tabs
|
<Tabs
|
||||||
activeKey={activeTabKey}
|
activeKey={activeTabKey}
|
||||||
onSelect={handleTabClick}
|
onSelect={handleTabClick}
|
||||||
aria-label="Repositories tabs on packages step"
|
aria-label='Repositories tabs on packages step'
|
||||||
>
|
>
|
||||||
<Tab
|
<Tab
|
||||||
eventKey="included-repos"
|
eventKey='included-repos'
|
||||||
title={<TabTitleText>Included repos</TabTitleText>}
|
title={<TabTitleText>Included repos</TabTitleText>}
|
||||||
actions={<IncludedReposPopover />}
|
actions={<IncludedReposPopover />}
|
||||||
aria-label="Included repositories"
|
aria-label='Included repositories'
|
||||||
/>
|
/>
|
||||||
{!process.env.IS_ON_PREMISE && (
|
{!process.env.IS_ON_PREMISE && (
|
||||||
<Tab
|
<Tab
|
||||||
eventKey="other-repos"
|
eventKey='other-repos'
|
||||||
title={<TabTitleText>Other repos</TabTitleText>}
|
title={<TabTitleText>Other repos</TabTitleText>}
|
||||||
actions={<OtherReposPopover />}
|
actions={<OtherReposPopover />}
|
||||||
aria-label="Other repositories"
|
aria-label='Other repositories'
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
</Tabs>
|
</Tabs>
|
||||||
<PackagesTable />
|
<PackagesTable />
|
||||||
<Pagination
|
<Pagination
|
||||||
data-testid="packages-pagination-bottom"
|
data-testid='packages-pagination-bottom'
|
||||||
itemCount={
|
itemCount={
|
||||||
searchTerm === '' && toggleSelected === 'toggle-available'
|
searchTerm === '' && toggleSelected === 'toggle-available'
|
||||||
? 0
|
? 0
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@ import { HelpIcon } from '@patternfly/react-icons';
|
||||||
const PackageInfoNotAvailablePopover = () => {
|
const PackageInfoNotAvailablePopover = () => {
|
||||||
return (
|
return (
|
||||||
<Popover
|
<Popover
|
||||||
headerContent="Package description"
|
headerContent='Package description'
|
||||||
bodyContent={
|
bodyContent={
|
||||||
<Content>
|
<Content>
|
||||||
<Content>
|
<Content>
|
||||||
|
|
@ -22,9 +22,9 @@ const PackageInfoNotAvailablePopover = () => {
|
||||||
>
|
>
|
||||||
<Button
|
<Button
|
||||||
icon={<HelpIcon />}
|
icon={<HelpIcon />}
|
||||||
variant="plain"
|
variant='plain'
|
||||||
aria-label="Package description"
|
aria-label='Package description'
|
||||||
className="pf-v6-u-pl-sm pf-v6-u-pt-0 pf-v6-u-pb-0"
|
className='pf-v6-u-pl-sm pf-v6-u-pt-0 pf-v6-u-pb-0'
|
||||||
/>
|
/>
|
||||||
</Popover>
|
</Popover>
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -17,10 +17,10 @@ export const IncludedReposPopover = () => {
|
||||||
>
|
>
|
||||||
<Button
|
<Button
|
||||||
icon={<HelpIcon />}
|
icon={<HelpIcon />}
|
||||||
variant="plain"
|
variant='plain'
|
||||||
aria-label="About included repositories"
|
aria-label='About included repositories'
|
||||||
component="span"
|
component='span'
|
||||||
size="sm"
|
size='sm'
|
||||||
isInline
|
isInline
|
||||||
/>
|
/>
|
||||||
</Popover>
|
</Popover>
|
||||||
|
|
@ -41,10 +41,10 @@ export const OtherReposPopover = () => {
|
||||||
>
|
>
|
||||||
<Button
|
<Button
|
||||||
icon={<HelpIcon />}
|
icon={<HelpIcon />}
|
||||||
variant="plain"
|
variant='plain'
|
||||||
aria-label="About other repositories"
|
aria-label='About other repositories'
|
||||||
component="span"
|
component='span'
|
||||||
size="sm"
|
size='sm'
|
||||||
isInline
|
isInline
|
||||||
/>
|
/>
|
||||||
</Popover>
|
</Popover>
|
||||||
|
|
|
||||||
|
|
@ -13,21 +13,21 @@ const PackagesStep = () => {
|
||||||
const distribution = useAppSelector(selectDistribution);
|
const distribution = useAppSelector(selectDistribution);
|
||||||
return (
|
return (
|
||||||
<Form>
|
<Form>
|
||||||
<Title headingLevel="h1" size="xl">
|
<Title headingLevel='h1' size='xl'>
|
||||||
Additional packages
|
Additional packages
|
||||||
</Title>
|
</Title>
|
||||||
<Content>
|
<Content>
|
||||||
Blueprints created with Images include all required packages.
|
Blueprints created with Images include all required packages.
|
||||||
</Content>
|
</Content>
|
||||||
{!process.env.IS_ON_PREMISE && (
|
{!process.env.IS_ON_PREMISE && (
|
||||||
<Alert variant="info" isInline title="Search for package groups">
|
<Alert variant='info' isInline title='Search for package groups'>
|
||||||
Search for package groups by starting your search with the
|
Search for package groups by starting your search with the
|
||||||
'@' character. A single '@' as search input lists
|
'@' character. A single '@' as search input lists
|
||||||
all available package groups.
|
all available package groups.
|
||||||
</Alert>
|
</Alert>
|
||||||
)}
|
)}
|
||||||
{process.env.IS_ON_PREMISE && (
|
{process.env.IS_ON_PREMISE && (
|
||||||
<Alert variant="info" isInline title="Searching for packages">
|
<Alert variant='info' isInline title='Searching for packages'>
|
||||||
Search for exact matches by specifying the whole package name, or glob
|
Search for exact matches by specifying the whole package name, or glob
|
||||||
using asterisk wildcards (*) before or after the package name.
|
using asterisk wildcards (*) before or after the package name.
|
||||||
</Alert>
|
</Alert>
|
||||||
|
|
|
||||||
|
|
@ -32,7 +32,7 @@ const ActivationKeyInformation = (): JSX.Element => {
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
{isFetchingActivationKeyInfo && <Spinner size="lg" />}
|
{isFetchingActivationKeyInfo && <Spinner size='lg' />}
|
||||||
{isSuccessActivationKeyInfo && (
|
{isSuccessActivationKeyInfo && (
|
||||||
<Content>
|
<Content>
|
||||||
<Content component={ContentVariants.dl}>
|
<Content component={ContentVariants.dl}>
|
||||||
|
|
@ -65,29 +65,29 @@ const ActivationKeyInformation = (): JSX.Element => {
|
||||||
>
|
>
|
||||||
<Button
|
<Button
|
||||||
icon={<HelpIcon />}
|
icon={<HelpIcon />}
|
||||||
variant="plain"
|
variant='plain'
|
||||||
aria-label="About additional repositories"
|
aria-label='About additional repositories'
|
||||||
className="pf-v6-u-pl-sm pf-v6-u-pt-0 pf-v6-u-pb-0"
|
className='pf-v6-u-pl-sm pf-v6-u-pt-0 pf-v6-u-pb-0'
|
||||||
/>
|
/>
|
||||||
</Popover>
|
</Popover>
|
||||||
</Content>
|
</Content>
|
||||||
<Content
|
<Content
|
||||||
component={ContentVariants.dd}
|
component={ContentVariants.dd}
|
||||||
className="pf-v6-u-display-flex pf-v6-u-align-items-flex-end"
|
className='pf-v6-u-display-flex pf-v6-u-align-items-flex-end'
|
||||||
>
|
>
|
||||||
{activationKeyInfo?.body?.additionalRepositories &&
|
{activationKeyInfo?.body?.additionalRepositories &&
|
||||||
activationKeyInfo?.body?.additionalRepositories?.length > 0 ? (
|
activationKeyInfo?.body?.additionalRepositories?.length > 0 ? (
|
||||||
<Popover
|
<Popover
|
||||||
position="right"
|
position='right'
|
||||||
minWidth="30rem"
|
minWidth='30rem'
|
||||||
bodyContent={
|
bodyContent={
|
||||||
<Content>
|
<Content>
|
||||||
<Content component={ContentVariants.h3}>
|
<Content component={ContentVariants.h3}>
|
||||||
Additional repositories
|
Additional repositories
|
||||||
</Content>
|
</Content>
|
||||||
<Table
|
<Table
|
||||||
aria-label="Additional repositories table"
|
aria-label='Additional repositories table'
|
||||||
variant="compact"
|
variant='compact'
|
||||||
>
|
>
|
||||||
<Thead>
|
<Thead>
|
||||||
<Tr>
|
<Tr>
|
||||||
|
|
@ -108,9 +108,9 @@ const ActivationKeyInformation = (): JSX.Element => {
|
||||||
}
|
}
|
||||||
>
|
>
|
||||||
<Button
|
<Button
|
||||||
variant="link"
|
variant='link'
|
||||||
aria-label="Show additional repositories"
|
aria-label='Show additional repositories'
|
||||||
className="pf-v6-u-pl-0 pf-v6-u-pt-0 pf-v6-u-pb-0"
|
className='pf-v6-u-pl-0 pf-v6-u-pt-0 pf-v6-u-pb-0'
|
||||||
>
|
>
|
||||||
{activationKeyInfo.body?.additionalRepositories?.length}{' '}
|
{activationKeyInfo.body?.additionalRepositories?.length}{' '}
|
||||||
repositories
|
repositories
|
||||||
|
|
@ -131,8 +131,8 @@ const ActivationKeyInformation = (): JSX.Element => {
|
||||||
</Content>
|
</Content>
|
||||||
<br />
|
<br />
|
||||||
<Alert
|
<Alert
|
||||||
title="Information about the activation key unavailable"
|
title='Information about the activation key unavailable'
|
||||||
variant="danger"
|
variant='danger'
|
||||||
isPlain
|
isPlain
|
||||||
isInline
|
isInline
|
||||||
>
|
>
|
||||||
|
|
|
||||||
|
|
@ -207,15 +207,15 @@ const ActivationKeysList = () => {
|
||||||
|
|
||||||
if (isFetchingActivationKeys) {
|
if (isFetchingActivationKeys) {
|
||||||
selectOptionsElement.push(
|
selectOptionsElement.push(
|
||||||
<SelectOption key="Fetching" value="loader">
|
<SelectOption key='Fetching' value='loader'>
|
||||||
<Spinner size="md" />
|
<Spinner size='md' />
|
||||||
</SelectOption>,
|
</SelectOption>,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isSuccessActivationKeys && selectOptions.length === 0) {
|
if (isSuccessActivationKeys && selectOptions.length === 0) {
|
||||||
selectOptionsElement.push(
|
selectOptionsElement.push(
|
||||||
<SelectOption key="no_results" value="no_results" isDisabled>
|
<SelectOption key='no_results' value='no_results' isDisabled>
|
||||||
No results found
|
No results found
|
||||||
</SelectOption>,
|
</SelectOption>,
|
||||||
);
|
);
|
||||||
|
|
@ -227,11 +227,11 @@ const ActivationKeysList = () => {
|
||||||
const toggle = (toggleRef: React.Ref<MenuToggleElement>) => (
|
const toggle = (toggleRef: React.Ref<MenuToggleElement>) => (
|
||||||
<MenuToggle
|
<MenuToggle
|
||||||
ref={toggleRef}
|
ref={toggleRef}
|
||||||
variant="typeahead"
|
variant='typeahead'
|
||||||
onClick={handleToggle}
|
onClick={handleToggle}
|
||||||
onKeyDown={handleKeyDown}
|
onKeyDown={handleKeyDown}
|
||||||
isExpanded={isOpen}
|
isExpanded={isOpen}
|
||||||
data-testid="activation-key-select"
|
data-testid='activation-key-select'
|
||||||
isDisabled={
|
isDisabled={
|
||||||
!isSuccessActivationKeys ||
|
!isSuccessActivationKeys ||
|
||||||
registrationType === 'register-later' ||
|
registrationType === 'register-later' ||
|
||||||
|
|
@ -250,8 +250,8 @@ const ActivationKeysList = () => {
|
||||||
}
|
}
|
||||||
onClick={handleToggle}
|
onClick={handleToggle}
|
||||||
onChange={onTextInputChange}
|
onChange={onTextInputChange}
|
||||||
autoComplete="off"
|
autoComplete='off'
|
||||||
placeholder="Select activation key"
|
placeholder='Select activation key'
|
||||||
isExpanded={isOpen}
|
isExpanded={isOpen}
|
||||||
/>
|
/>
|
||||||
</TextInputGroup>
|
</TextInputGroup>
|
||||||
|
|
@ -260,7 +260,7 @@ const ActivationKeysList = () => {
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<FormGroup label="Activation key to use for this image">
|
<FormGroup label='Activation key to use for this image'>
|
||||||
<Select
|
<Select
|
||||||
isScrollable
|
isScrollable
|
||||||
isOpen={isOpen}
|
isOpen={isOpen}
|
||||||
|
|
@ -283,8 +283,8 @@ const ActivationKeysList = () => {
|
||||||
</FormGroup>
|
</FormGroup>
|
||||||
{isErrorActivationKeys && (
|
{isErrorActivationKeys && (
|
||||||
<Alert
|
<Alert
|
||||||
title="Activation keys unavailable"
|
title='Activation keys unavailable'
|
||||||
variant="danger"
|
variant='danger'
|
||||||
isPlain
|
isPlain
|
||||||
isInline
|
isInline
|
||||||
>
|
>
|
||||||
|
|
|
||||||
|
|
@ -8,11 +8,11 @@ import { ACTIVATION_KEYS_URL } from '../../../../../constants';
|
||||||
const ManageKeysButton = () => {
|
const ManageKeysButton = () => {
|
||||||
return (
|
return (
|
||||||
<Button
|
<Button
|
||||||
component="a"
|
component='a'
|
||||||
target="_blank"
|
target='_blank'
|
||||||
variant="link"
|
variant='link'
|
||||||
icon={<ExternalLinkAltIcon />}
|
icon={<ExternalLinkAltIcon />}
|
||||||
iconPosition="right"
|
iconPosition='right'
|
||||||
isInline
|
isInline
|
||||||
href={ACTIVATION_KEYS_URL}
|
href={ACTIVATION_KEYS_URL}
|
||||||
>
|
>
|
||||||
|
|
|
||||||
|
|
@ -21,9 +21,9 @@ import {
|
||||||
const InsightsPopover = () => {
|
const InsightsPopover = () => {
|
||||||
return (
|
return (
|
||||||
<Popover
|
<Popover
|
||||||
headerContent="About Red Hat Insights"
|
headerContent='About Red Hat Insights'
|
||||||
position="right"
|
position='right'
|
||||||
minWidth="30rem"
|
minWidth='30rem'
|
||||||
bodyContent={
|
bodyContent={
|
||||||
<Content>
|
<Content>
|
||||||
<Content>
|
<Content>
|
||||||
|
|
@ -33,11 +33,11 @@ const InsightsPopover = () => {
|
||||||
in downtime.
|
in downtime.
|
||||||
</Content>
|
</Content>
|
||||||
<Button
|
<Button
|
||||||
component="a"
|
component='a'
|
||||||
target="_blank"
|
target='_blank'
|
||||||
variant="link"
|
variant='link'
|
||||||
icon={<ExternalLinkAltIcon />}
|
icon={<ExternalLinkAltIcon />}
|
||||||
iconPosition="right"
|
iconPosition='right'
|
||||||
isInline
|
isInline
|
||||||
href={INSIGHTS_URL}
|
href={INSIGHTS_URL}
|
||||||
>
|
>
|
||||||
|
|
@ -48,9 +48,9 @@ const InsightsPopover = () => {
|
||||||
>
|
>
|
||||||
<Button
|
<Button
|
||||||
icon={<HelpIcon />}
|
icon={<HelpIcon />}
|
||||||
variant="plain"
|
variant='plain'
|
||||||
className="pf-v6-u-pl-sm pf-v6-u-pt-0 pf-v6-u-pb-0"
|
className='pf-v6-u-pl-sm pf-v6-u-pt-0 pf-v6-u-pb-0'
|
||||||
aria-label="About remote host configuration (rhc)"
|
aria-label='About remote host configuration (rhc)'
|
||||||
isInline
|
isInline
|
||||||
/>
|
/>
|
||||||
</Popover>
|
</Popover>
|
||||||
|
|
@ -60,9 +60,9 @@ const InsightsPopover = () => {
|
||||||
const RhcPopover = () => {
|
const RhcPopover = () => {
|
||||||
return (
|
return (
|
||||||
<Popover
|
<Popover
|
||||||
headerContent="About remote host configuration (rhc)"
|
headerContent='About remote host configuration (rhc)'
|
||||||
position="right"
|
position='right'
|
||||||
minWidth="30rem"
|
minWidth='30rem'
|
||||||
bodyContent={
|
bodyContent={
|
||||||
<Content>
|
<Content>
|
||||||
<Content>
|
<Content>
|
||||||
|
|
@ -71,11 +71,11 @@ const RhcPopover = () => {
|
||||||
to use the Red Hat Insights Remediations service.
|
to use the Red Hat Insights Remediations service.
|
||||||
</Content>
|
</Content>
|
||||||
<Button
|
<Button
|
||||||
component="a"
|
component='a'
|
||||||
target="_blank"
|
target='_blank'
|
||||||
variant="link"
|
variant='link'
|
||||||
icon={<ExternalLinkAltIcon />}
|
icon={<ExternalLinkAltIcon />}
|
||||||
iconPosition="right"
|
iconPosition='right'
|
||||||
isInline
|
isInline
|
||||||
href={RHC_URL}
|
href={RHC_URL}
|
||||||
>
|
>
|
||||||
|
|
@ -86,9 +86,9 @@ const RhcPopover = () => {
|
||||||
>
|
>
|
||||||
<Button
|
<Button
|
||||||
icon={<HelpIcon />}
|
icon={<HelpIcon />}
|
||||||
variant="plain"
|
variant='plain'
|
||||||
className="pf-v6-u-pl-sm pf-v6-u-pt-0 pf-v6-u-pb-0"
|
className='pf-v6-u-pl-sm pf-v6-u-pt-0 pf-v6-u-pb-0'
|
||||||
aria-label="About remote host configuration (rhc)"
|
aria-label='About remote host configuration (rhc)'
|
||||||
isInline
|
isInline
|
||||||
/>
|
/>
|
||||||
</Popover>
|
</Popover>
|
||||||
|
|
@ -108,9 +108,9 @@ const Registration = () => {
|
||||||
);
|
);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<FormGroup label="Registration method">
|
<FormGroup label='Registration method'>
|
||||||
<Radio
|
<Radio
|
||||||
label="Automatically register and enable advanced capabilities"
|
label='Automatically register and enable advanced capabilities'
|
||||||
isChecked={
|
isChecked={
|
||||||
registrationType === 'register-now' ||
|
registrationType === 'register-now' ||
|
||||||
registrationType === 'register-now-insights' ||
|
registrationType === 'register-now-insights' ||
|
||||||
|
|
@ -121,13 +121,13 @@ const Registration = () => {
|
||||||
dispatch(changeRegistrationType('register-now-rhc'));
|
dispatch(changeRegistrationType('register-now-rhc'));
|
||||||
}
|
}
|
||||||
}}
|
}}
|
||||||
id="register-system-now"
|
id='register-system-now'
|
||||||
name="register-system-now"
|
name='register-system-now'
|
||||||
autoFocus
|
autoFocus
|
||||||
description={
|
description={
|
||||||
<Button
|
<Button
|
||||||
component="a"
|
component='a'
|
||||||
variant="link"
|
variant='link'
|
||||||
isDisabled={!registrationType.startsWith('register-now')}
|
isDisabled={!registrationType.startsWith('register-now')}
|
||||||
isInline
|
isInline
|
||||||
onClick={() => setShowOptions(!showOptions)}
|
onClick={() => setShowOptions(!showOptions)}
|
||||||
|
|
@ -138,7 +138,7 @@ const Registration = () => {
|
||||||
body={
|
body={
|
||||||
showOptions && (
|
showOptions && (
|
||||||
<Checkbox
|
<Checkbox
|
||||||
className="pf-v6-u-ml-lg"
|
className='pf-v6-u-ml-lg'
|
||||||
label={
|
label={
|
||||||
<>
|
<>
|
||||||
Enable predictive analytics and management capabilities
|
Enable predictive analytics and management capabilities
|
||||||
|
|
@ -156,8 +156,8 @@ const Registration = () => {
|
||||||
dispatch(changeRegistrationType('register-now'));
|
dispatch(changeRegistrationType('register-now'));
|
||||||
}
|
}
|
||||||
}}
|
}}
|
||||||
id="register-system-now-insights"
|
id='register-system-now-insights'
|
||||||
name="register-system-insights"
|
name='register-system-insights'
|
||||||
body={
|
body={
|
||||||
<Checkbox
|
<Checkbox
|
||||||
label={
|
label={
|
||||||
|
|
@ -175,8 +175,8 @@ const Registration = () => {
|
||||||
dispatch(changeRegistrationType('register-now-insights'));
|
dispatch(changeRegistrationType('register-now-insights'));
|
||||||
}
|
}
|
||||||
}}
|
}}
|
||||||
id="register-system-now-rhc"
|
id='register-system-now-rhc'
|
||||||
name="register-system-rhc"
|
name='register-system-rhc'
|
||||||
/>
|
/>
|
||||||
}
|
}
|
||||||
/>
|
/>
|
||||||
|
|
@ -184,25 +184,25 @@ const Registration = () => {
|
||||||
}
|
}
|
||||||
/>
|
/>
|
||||||
<Radio
|
<Radio
|
||||||
label="Register later"
|
label='Register later'
|
||||||
isChecked={registrationType === 'register-later'}
|
isChecked={registrationType === 'register-later'}
|
||||||
onChange={() => {
|
onChange={() => {
|
||||||
dispatch(changeRegistrationType('register-later'));
|
dispatch(changeRegistrationType('register-later'));
|
||||||
setShowOptions(false);
|
setShowOptions(false);
|
||||||
}}
|
}}
|
||||||
id="register-later"
|
id='register-later'
|
||||||
name="register-later"
|
name='register-later'
|
||||||
/>
|
/>
|
||||||
{isSatelliteRegistrationEnabled && (
|
{isSatelliteRegistrationEnabled && (
|
||||||
<Radio
|
<Radio
|
||||||
label="Register with Satellite"
|
label='Register with Satellite'
|
||||||
isChecked={registrationType === 'register-satellite'}
|
isChecked={registrationType === 'register-satellite'}
|
||||||
onChange={() => {
|
onChange={() => {
|
||||||
dispatch(changeRegistrationType('register-satellite'));
|
dispatch(changeRegistrationType('register-satellite'));
|
||||||
setShowOptions(false);
|
setShowOptions(false);
|
||||||
}}
|
}}
|
||||||
id="register-satellite"
|
id='register-satellite'
|
||||||
name="register-satellite"
|
name='register-satellite'
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
</FormGroup>
|
</FormGroup>
|
||||||
|
|
|
||||||
|
|
@ -50,10 +50,10 @@ const SatelliteRegistration = () => {
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<SatelliteRegistrationCommand />
|
<SatelliteRegistrationCommand />
|
||||||
<FormGroup label="Certificate authority (CA) for Satellite">
|
<FormGroup label='Certificate authority (CA) for Satellite'>
|
||||||
<FileUpload
|
<FileUpload
|
||||||
id="text-file-with-restrictions-example"
|
id='text-file-with-restrictions-example'
|
||||||
type="text"
|
type='text'
|
||||||
value={caCertificate || ''}
|
value={caCertificate || ''}
|
||||||
filename={caCertificate ? 'CA detected' : ''}
|
filename={caCertificate ? 'CA detected' : ''}
|
||||||
onDataChange={handleDataChange}
|
onDataChange={handleDataChange}
|
||||||
|
|
@ -69,7 +69,7 @@ const SatelliteRegistration = () => {
|
||||||
onDropRejected: handleFileRejected,
|
onDropRejected: handleFileRejected,
|
||||||
}}
|
}}
|
||||||
validated={isRejected ? 'error' : validated}
|
validated={isRejected ? 'error' : validated}
|
||||||
browseButtonText="Upload"
|
browseButtonText='Upload'
|
||||||
allowEditingUploadedText={true}
|
allowEditingUploadedText={true}
|
||||||
/>
|
/>
|
||||||
<FormHelperText>
|
<FormHelperText>
|
||||||
|
|
|
||||||
|
|
@ -37,22 +37,22 @@ const SatelliteRegistrationCommand = () => {
|
||||||
};
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<FormGroup label="Registration command from Satellite" isRequired>
|
<FormGroup label='Registration command from Satellite' isRequired>
|
||||||
<ValidatedInputAndTextArea
|
<ValidatedInputAndTextArea
|
||||||
inputType={'textArea'}
|
inputType={'textArea'}
|
||||||
ariaLabel="registration command"
|
ariaLabel='registration command'
|
||||||
value={registrationCommand || ''}
|
value={registrationCommand || ''}
|
||||||
onChange={handleChange}
|
onChange={handleChange}
|
||||||
placeholder="Registration command"
|
placeholder='Registration command'
|
||||||
stepValidation={stepValidation}
|
stepValidation={stepValidation}
|
||||||
fieldName="command"
|
fieldName='command'
|
||||||
warning={stepValidation.errors.expired}
|
warning={stepValidation.errors.expired}
|
||||||
/>
|
/>
|
||||||
<FormHelperText>
|
<FormHelperText>
|
||||||
<HelperText>
|
<HelperText>
|
||||||
<HelperTextItem>
|
<HelperTextItem>
|
||||||
To generate command from Satellite, follow the{' '}
|
To generate command from Satellite, follow the{' '}
|
||||||
<a href={registrationDocs} target="_blank" rel="noreferrer">
|
<a href={registrationDocs} target='_blank' rel='noreferrer'>
|
||||||
documentation
|
documentation
|
||||||
</a>
|
</a>
|
||||||
.
|
.
|
||||||
|
|
|
||||||
|
|
@ -41,14 +41,14 @@ const RegistrationStep = () => {
|
||||||
const registrationType = useAppSelector(selectRegistrationType);
|
const registrationType = useAppSelector(selectRegistrationType);
|
||||||
return (
|
return (
|
||||||
<Form>
|
<Form>
|
||||||
<Title headingLevel="h1" size="xl">
|
<Title headingLevel='h1' size='xl'>
|
||||||
Register systems using this image
|
Register systems using this image
|
||||||
</Title>
|
</Title>
|
||||||
<FormGroup label="Organization ID">
|
<FormGroup label='Organization ID'>
|
||||||
<ClipboardCopy
|
<ClipboardCopy
|
||||||
hoverTip="Copy to clipboard"
|
hoverTip='Copy to clipboard'
|
||||||
clickTip="Successfully copied to clipboard!"
|
clickTip='Successfully copied to clipboard!'
|
||||||
variant="inline-compact"
|
variant='inline-compact'
|
||||||
>
|
>
|
||||||
{orgId || ''}
|
{orgId || ''}
|
||||||
</ClipboardCopy>
|
</ClipboardCopy>
|
||||||
|
|
@ -71,7 +71,7 @@ const RegistrationStep = () => {
|
||||||
registrationType !== 'register-satellite' && (
|
registrationType !== 'register-satellite' && (
|
||||||
<FormGroup
|
<FormGroup
|
||||||
label={'Selected activation key'}
|
label={'Selected activation key'}
|
||||||
data-testid="selected-activation-key"
|
data-testid='selected-activation-key'
|
||||||
>
|
>
|
||||||
<ActivationKeyInformation />
|
<ActivationKeyInformation />
|
||||||
</FormGroup>
|
</FormGroup>
|
||||||
|
|
|
||||||
|
|
@ -507,8 +507,8 @@ const Repositories = () => {
|
||||||
if (!isTemplateSelected) {
|
if (!isTemplateSelected) {
|
||||||
return (
|
return (
|
||||||
<Grid>
|
<Grid>
|
||||||
<Modal isOpen={modalOpen} onClose={onClose} variant="small">
|
<Modal isOpen={modalOpen} onClose={onClose} variant='small'>
|
||||||
<ModalHeader title="Are you sure?" titleIconVariant="warning" />
|
<ModalHeader title='Are you sure?' titleIconVariant='warning' />
|
||||||
<ModalBody>
|
<ModalBody>
|
||||||
You are removing a previously added repository.
|
You are removing a previously added repository.
|
||||||
<br />
|
<br />
|
||||||
|
|
@ -516,18 +516,18 @@ const Repositories = () => {
|
||||||
from them.
|
from them.
|
||||||
</ModalBody>
|
</ModalBody>
|
||||||
<ModalFooter>
|
<ModalFooter>
|
||||||
<Button key="remove" variant="primary" onClick={handleRemoveAnyway}>
|
<Button key='remove' variant='primary' onClick={handleRemoveAnyway}>
|
||||||
Remove anyway
|
Remove anyway
|
||||||
</Button>
|
</Button>
|
||||||
<Button key="back" variant="link" onClick={onClose}>
|
<Button key='back' variant='link' onClick={onClose}>
|
||||||
Back
|
Back
|
||||||
</Button>
|
</Button>
|
||||||
</ModalFooter>
|
</ModalFooter>
|
||||||
</Modal>
|
</Modal>
|
||||||
{wizardMode === 'edit' && (
|
{wizardMode === 'edit' && (
|
||||||
<Alert
|
<Alert
|
||||||
title="Removing previously added repositories may lead to issues with selected packages"
|
title='Removing previously added repositories may lead to issues with selected packages'
|
||||||
variant="warning"
|
variant='warning'
|
||||||
isPlain
|
isPlain
|
||||||
isInline
|
isInline
|
||||||
/>
|
/>
|
||||||
|
|
@ -554,8 +554,8 @@ const Repositories = () => {
|
||||||
</ToolbarItem>
|
</ToolbarItem>
|
||||||
<ToolbarItem>
|
<ToolbarItem>
|
||||||
<SearchInput
|
<SearchInput
|
||||||
placeholder="Filter repositories"
|
placeholder='Filter repositories'
|
||||||
aria-label="Filter repositories"
|
aria-label='Filter repositories'
|
||||||
onChange={handleFilterRepositories}
|
onChange={handleFilterRepositories}
|
||||||
value={filterValue}
|
value={filterValue}
|
||||||
onClear={() => setFilterValue('')}
|
onClear={() => setFilterValue('')}
|
||||||
|
|
@ -563,7 +563,7 @@ const Repositories = () => {
|
||||||
</ToolbarItem>
|
</ToolbarItem>
|
||||||
<ToolbarItem>
|
<ToolbarItem>
|
||||||
<Button
|
<Button
|
||||||
variant="primary"
|
variant='primary'
|
||||||
isInline
|
isInline
|
||||||
onClick={() => refresh()}
|
onClick={() => refresh()}
|
||||||
isLoading={isFetching}
|
isLoading={isFetching}
|
||||||
|
|
@ -572,19 +572,19 @@ const Repositories = () => {
|
||||||
</Button>
|
</Button>
|
||||||
</ToolbarItem>
|
</ToolbarItem>
|
||||||
<ToolbarItem>
|
<ToolbarItem>
|
||||||
<ToggleGroup aria-label="Filter repositories list">
|
<ToggleGroup aria-label='Filter repositories list'>
|
||||||
<ToggleGroupItem
|
<ToggleGroupItem
|
||||||
text="All"
|
text='All'
|
||||||
aria-label="All repositories"
|
aria-label='All repositories'
|
||||||
buttonId="toggle-group-all"
|
buttonId='toggle-group-all'
|
||||||
isSelected={toggleSelected === 'toggle-group-all'}
|
isSelected={toggleSelected === 'toggle-group-all'}
|
||||||
onChange={() => handleToggleClick('toggle-group-all')}
|
onChange={() => handleToggleClick('toggle-group-all')}
|
||||||
/>
|
/>
|
||||||
<ToggleGroupItem
|
<ToggleGroupItem
|
||||||
text="Selected"
|
text='Selected'
|
||||||
isDisabled={!selected.size}
|
isDisabled={!selected.size}
|
||||||
aria-label="Selected repositories"
|
aria-label='Selected repositories'
|
||||||
buttonId="toggle-group-selected"
|
buttonId='toggle-group-selected'
|
||||||
isSelected={toggleSelected === 'toggle-group-selected'}
|
isSelected={toggleSelected === 'toggle-group-selected'}
|
||||||
onChange={() => handleToggleClick('toggle-group-selected')}
|
onChange={() => handleToggleClick('toggle-group-selected')}
|
||||||
/>
|
/>
|
||||||
|
|
@ -605,10 +605,10 @@ const Repositories = () => {
|
||||||
refetch={refresh}
|
refetch={refresh}
|
||||||
/>
|
/>
|
||||||
) : (
|
) : (
|
||||||
<Table variant="compact">
|
<Table variant='compact'>
|
||||||
<Thead>
|
<Thead>
|
||||||
<Tr>
|
<Tr>
|
||||||
<Th aria-label="Selected" />
|
<Th aria-label='Selected' />
|
||||||
<Th width={45}>Name</Th>
|
<Th width={45}>Name</Th>
|
||||||
<Th width={15}>Architecture</Th>
|
<Th width={15}>Architecture</Th>
|
||||||
<Th>Version</Th>
|
<Th>Version</Th>
|
||||||
|
|
@ -656,11 +656,11 @@ const Repositories = () => {
|
||||||
<>
|
<>
|
||||||
<br />
|
<br />
|
||||||
<Button
|
<Button
|
||||||
component="a"
|
component='a'
|
||||||
target="_blank"
|
target='_blank'
|
||||||
variant="link"
|
variant='link'
|
||||||
icon={<ExternalLinkAltIcon />}
|
icon={<ExternalLinkAltIcon />}
|
||||||
iconPosition="right"
|
iconPosition='right'
|
||||||
isInline
|
isInline
|
||||||
href={url}
|
href={url}
|
||||||
>
|
>
|
||||||
|
|
@ -706,7 +706,7 @@ const Repositories = () => {
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<Alert
|
<Alert
|
||||||
variant="info"
|
variant='info'
|
||||||
isInline
|
isInline
|
||||||
title={
|
title={
|
||||||
<>
|
<>
|
||||||
|
|
@ -714,9 +714,9 @@ const Repositories = () => {
|
||||||
and have been added automatically. If you do not want these
|
and have been added automatically. If you do not want these
|
||||||
repositories in your image, you can{' '}
|
repositories in your image, you can{' '}
|
||||||
<Button
|
<Button
|
||||||
component="a"
|
component='a'
|
||||||
target="_blank"
|
target='_blank'
|
||||||
variant="link"
|
variant='link'
|
||||||
isInline
|
isInline
|
||||||
icon={<ExternalLinkAltIcon />}
|
icon={<ExternalLinkAltIcon />}
|
||||||
href={`${TEMPLATES_URL}/${templateUuid}/edit`}
|
href={`${TEMPLATES_URL}/${templateUuid}/edit`}
|
||||||
|
|
@ -731,10 +731,10 @@ const Repositories = () => {
|
||||||
<Grid>
|
<Grid>
|
||||||
<Panel>
|
<Panel>
|
||||||
<PanelMain>
|
<PanelMain>
|
||||||
<Table variant="compact">
|
<Table variant='compact'>
|
||||||
<Thead>
|
<Thead>
|
||||||
<Tr>
|
<Tr>
|
||||||
<Th aria-label="Selected" />
|
<Th aria-label='Selected' />
|
||||||
<Th width={45}>Name</Th>
|
<Th width={45}>Name</Th>
|
||||||
<Th width={15}>Architecture</Th>
|
<Th width={15}>Architecture</Th>
|
||||||
<Th>Version</Th>
|
<Th>Version</Th>
|
||||||
|
|
@ -774,11 +774,11 @@ const Repositories = () => {
|
||||||
<>
|
<>
|
||||||
<br />
|
<br />
|
||||||
<Button
|
<Button
|
||||||
component="a"
|
component='a'
|
||||||
target="_blank"
|
target='_blank'
|
||||||
variant="link"
|
variant='link'
|
||||||
icon={<ExternalLinkAltIcon />}
|
icon={<ExternalLinkAltIcon />}
|
||||||
iconPosition="right"
|
iconPosition='right'
|
||||||
isInline
|
isInline
|
||||||
href={url}
|
href={url}
|
||||||
>
|
>
|
||||||
|
|
|
||||||
|
|
@ -63,10 +63,10 @@ const RepositoriesStatus = ({
|
||||||
if (repoStatus === 'Valid') {
|
if (repoStatus === 'Valid') {
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<Icon status="success">
|
<Icon status='success'>
|
||||||
<CheckCircleIcon />
|
<CheckCircleIcon />
|
||||||
</Icon>{' '}
|
</Icon>{' '}
|
||||||
<span className="pf-v6-u-font-weight-bold pf-v6-u-text-color-status-success">
|
<span className='pf-v6-u-font-weight-bold pf-v6-u-text-color-status-success'>
|
||||||
{repoStatus}
|
{repoStatus}
|
||||||
</span>
|
</span>
|
||||||
</>
|
</>
|
||||||
|
|
@ -75,19 +75,19 @@ const RepositoriesStatus = ({
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<Popover
|
<Popover
|
||||||
position="bottom"
|
position='bottom'
|
||||||
minWidth="30rem"
|
minWidth='30rem'
|
||||||
bodyContent={
|
bodyContent={
|
||||||
<>
|
<>
|
||||||
<Alert
|
<Alert
|
||||||
variant={repoStatus === 'Invalid' ? 'danger' : 'warning'}
|
variant={repoStatus === 'Invalid' ? 'danger' : 'warning'}
|
||||||
title={repoStatus}
|
title={repoStatus}
|
||||||
className="pf-v6-u-pb-sm"
|
className='pf-v6-u-pb-sm'
|
||||||
isInline
|
isInline
|
||||||
isPlain
|
isPlain
|
||||||
/>
|
/>
|
||||||
{repoUrl ? (
|
{repoUrl ? (
|
||||||
<p className="pf-v6-u-pb-md">Cannot fetch {repoUrl}</p>
|
<p className='pf-v6-u-pb-md'>Cannot fetch {repoUrl}</p>
|
||||||
) : (
|
) : (
|
||||||
''
|
''
|
||||||
)}
|
)}
|
||||||
|
|
@ -123,10 +123,10 @@ const RepositoriesStatus = ({
|
||||||
</>
|
</>
|
||||||
)}
|
)}
|
||||||
<Button
|
<Button
|
||||||
component="a"
|
component='a'
|
||||||
target="_blank"
|
target='_blank'
|
||||||
variant="link"
|
variant='link'
|
||||||
iconPosition="right"
|
iconPosition='right'
|
||||||
isInline
|
isInline
|
||||||
icon={<ExternalLinkAltIcon />}
|
icon={<ExternalLinkAltIcon />}
|
||||||
href={CONTENT_URL}
|
href={CONTENT_URL}
|
||||||
|
|
@ -136,23 +136,23 @@ const RepositoriesStatus = ({
|
||||||
</>
|
</>
|
||||||
}
|
}
|
||||||
>
|
>
|
||||||
<Button variant="link" className="pf-v6-u-p-0 pf-v6-u-font-size-sm">
|
<Button variant='link' className='pf-v6-u-p-0 pf-v6-u-font-size-sm'>
|
||||||
{repoStatus === 'Invalid' && (
|
{repoStatus === 'Invalid' && (
|
||||||
<>
|
<>
|
||||||
<Icon status="danger">
|
<Icon status='danger'>
|
||||||
<ExclamationCircleIcon />
|
<ExclamationCircleIcon />
|
||||||
</Icon>{' '}
|
</Icon>{' '}
|
||||||
<span className="pf-v6-u-font-weight-bold pf-v6-u-text-color-status-danger failure-button">
|
<span className='pf-v6-u-font-weight-bold pf-v6-u-text-color-status-danger failure-button'>
|
||||||
{repoStatus}
|
{repoStatus}
|
||||||
</span>
|
</span>
|
||||||
</>
|
</>
|
||||||
)}
|
)}
|
||||||
{repoStatus === 'Unavailable' && (
|
{repoStatus === 'Unavailable' && (
|
||||||
<>
|
<>
|
||||||
<Icon status="warning">
|
<Icon status='warning'>
|
||||||
<ExclamationTriangleIcon />
|
<ExclamationTriangleIcon />
|
||||||
</Icon>{' '}
|
</Icon>{' '}
|
||||||
<span className="pf-v6-u-font-weight-bold pf-v6-u-text-color-status-warning failure-button">
|
<span className='pf-v6-u-font-weight-bold pf-v6-u-text-color-status-warning failure-button'>
|
||||||
{repoStatus}
|
{repoStatus}
|
||||||
</span>
|
</span>
|
||||||
</>
|
</>
|
||||||
|
|
@ -165,7 +165,7 @@ const RepositoriesStatus = ({
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<Spinner isInline />{' '}
|
<Spinner isInline />{' '}
|
||||||
<span className="pf-v6-u-font-weight-bold pf-v6-u-text-color-status-info">
|
<span className='pf-v6-u-font-weight-bold pf-v6-u-text-color-status-info'>
|
||||||
{repoStatus}
|
{repoStatus}
|
||||||
</span>
|
</span>
|
||||||
</>
|
</>
|
||||||
|
|
|
||||||
|
|
@ -8,8 +8,8 @@ import { CONTENT_URL } from '../../../../constants';
|
||||||
const RepositoryUnavailable = ({ quantity }: { quantity: number }) => {
|
const RepositoryUnavailable = ({ quantity }: { quantity: number }) => {
|
||||||
return (
|
return (
|
||||||
<Alert
|
<Alert
|
||||||
variant="warning"
|
variant='warning'
|
||||||
title="Previously added custom repository unavailable"
|
title='Previously added custom repository unavailable'
|
||||||
isInline
|
isInline
|
||||||
>
|
>
|
||||||
{quantity > 1
|
{quantity > 1
|
||||||
|
|
@ -20,10 +20,10 @@ const RepositoryUnavailable = ({ quantity }: { quantity: number }) => {
|
||||||
<br />
|
<br />
|
||||||
<br />
|
<br />
|
||||||
<Button
|
<Button
|
||||||
component="a"
|
component='a'
|
||||||
target="_blank"
|
target='_blank'
|
||||||
variant="link"
|
variant='link'
|
||||||
iconPosition="right"
|
iconPosition='right'
|
||||||
isInline
|
isInline
|
||||||
icon={<ExternalLinkAltIcon />}
|
icon={<ExternalLinkAltIcon />}
|
||||||
href={CONTENT_URL}
|
href={CONTENT_URL}
|
||||||
|
|
|
||||||
|
|
@ -46,15 +46,15 @@ export function BulkSelect({
|
||||||
<Dropdown
|
<Dropdown
|
||||||
toggle={(toggleRef: React.Ref<MenuToggleElement>) => (
|
toggle={(toggleRef: React.Ref<MenuToggleElement>) => (
|
||||||
<MenuToggle
|
<MenuToggle
|
||||||
id="bulk-select-toggle"
|
id='bulk-select-toggle'
|
||||||
data-testid="bulk-select-toggle"
|
data-testid='bulk-select-toggle'
|
||||||
ref={toggleRef}
|
ref={toggleRef}
|
||||||
isDisabled={isDisabled}
|
isDisabled={isDisabled}
|
||||||
splitButtonItems={[
|
splitButtonItems={[
|
||||||
<MenuToggleCheckbox
|
<MenuToggleCheckbox
|
||||||
id="bulk-select-checkbox"
|
id='bulk-select-checkbox'
|
||||||
key="split-checkbox"
|
key='split-checkbox'
|
||||||
aria-label="Select all"
|
aria-label='Select all'
|
||||||
isChecked={allChecked || someChecked ? null : false}
|
isChecked={allChecked || someChecked ? null : false}
|
||||||
onClick={handleSelectPage}
|
onClick={handleSelectPage}
|
||||||
/>,
|
/>,
|
||||||
|
|
@ -68,7 +68,7 @@ export function BulkSelect({
|
||||||
>
|
>
|
||||||
<DropdownList>
|
<DropdownList>
|
||||||
<DropdownItem
|
<DropdownItem
|
||||||
key="none"
|
key='none'
|
||||||
isDisabled={!selected.size}
|
isDisabled={!selected.size}
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
deselectAll();
|
deselectAll();
|
||||||
|
|
@ -76,7 +76,7 @@ export function BulkSelect({
|
||||||
}}
|
}}
|
||||||
>{`Clear all (${selected.size} items)`}</DropdownItem>
|
>{`Clear all (${selected.size} items)`}</DropdownItem>
|
||||||
<DropdownItem
|
<DropdownItem
|
||||||
key="page"
|
key='page'
|
||||||
isDisabled={!contentList.length}
|
isDisabled={!contentList.length}
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
handleSelectPage();
|
handleSelectPage();
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,7 @@ type EmptyProps = {
|
||||||
const Empty = ({ hasFilterValue, refetch }: EmptyProps) => {
|
const Empty = ({ hasFilterValue, refetch }: EmptyProps) => {
|
||||||
return (
|
return (
|
||||||
<EmptyState
|
<EmptyState
|
||||||
headingLevel="h4"
|
headingLevel='h4'
|
||||||
icon={RepositoryIcon}
|
icon={RepositoryIcon}
|
||||||
titleText={
|
titleText={
|
||||||
hasFilterValue
|
hasFilterValue
|
||||||
|
|
@ -36,15 +36,15 @@ const Empty = ({ hasFilterValue, refetch }: EmptyProps) => {
|
||||||
</EmptyStateBody>
|
</EmptyStateBody>
|
||||||
<EmptyStateFooter>
|
<EmptyStateFooter>
|
||||||
<Button
|
<Button
|
||||||
variant="primary"
|
variant='primary'
|
||||||
component="a"
|
component='a'
|
||||||
target="_blank"
|
target='_blank'
|
||||||
href={CONTENT_URL}
|
href={CONTENT_URL}
|
||||||
className="pf-v6-u-mr-sm"
|
className='pf-v6-u-mr-sm'
|
||||||
>
|
>
|
||||||
Go to repositories
|
Go to repositories
|
||||||
</Button>
|
</Button>
|
||||||
<Button variant="secondary" isInline onClick={() => refetch()}>
|
<Button variant='secondary' isInline onClick={() => refetch()}>
|
||||||
Refresh
|
Refresh
|
||||||
</Button>
|
</Button>
|
||||||
</EmptyStateFooter>
|
</EmptyStateFooter>
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@ import { Alert } from '@patternfly/react-core';
|
||||||
|
|
||||||
export const Error = () => {
|
export const Error = () => {
|
||||||
return (
|
return (
|
||||||
<Alert title="Repositories unavailable" variant="danger" isPlain isInline>
|
<Alert title='Repositories unavailable' variant='danger' isPlain isInline>
|
||||||
Repositories cannot be reached, try again later.
|
Repositories cannot be reached, try again later.
|
||||||
</Alert>
|
</Alert>
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -6,9 +6,9 @@ export const Loading = () => {
|
||||||
return (
|
return (
|
||||||
<Bullseye>
|
<Bullseye>
|
||||||
<EmptyState
|
<EmptyState
|
||||||
headingLevel="h4"
|
headingLevel='h4'
|
||||||
icon={Spinner}
|
icon={Spinner}
|
||||||
titleText="Loading"
|
titleText='Loading'
|
||||||
></EmptyState>
|
></EmptyState>
|
||||||
</Bullseye>
|
</Bullseye>
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -8,10 +8,10 @@ import { CONTENT_URL } from '../../../../../constants';
|
||||||
const ManageRepositoriesButton = () => {
|
const ManageRepositoriesButton = () => {
|
||||||
return (
|
return (
|
||||||
<Button
|
<Button
|
||||||
component="a"
|
component='a'
|
||||||
target="_blank"
|
target='_blank'
|
||||||
variant="link"
|
variant='link'
|
||||||
iconPosition="right"
|
iconPosition='right'
|
||||||
isInline
|
isInline
|
||||||
icon={<ExternalLinkAltIcon />}
|
icon={<ExternalLinkAltIcon />}
|
||||||
href={CONTENT_URL}
|
href={CONTENT_URL}
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@ const UploadRepositoryLabel = () => {
|
||||||
}
|
}
|
||||||
>
|
>
|
||||||
<Label
|
<Label
|
||||||
variant="outline"
|
variant='outline'
|
||||||
isCompact
|
isCompact
|
||||||
icon={<UploadIcon />}
|
icon={<UploadIcon />}
|
||||||
style={{ marginLeft: '8px' }}
|
style={{ marginLeft: '8px' }}
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@ const RepositoriesStep = () => {
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Form>
|
<Form>
|
||||||
<Title headingLevel="h1" size="xl">
|
<Title headingLevel='h1' size='xl'>
|
||||||
Custom repositories
|
Custom repositories
|
||||||
</Title>
|
</Title>
|
||||||
<Content>
|
<Content>
|
||||||
|
|
@ -30,7 +30,7 @@ const RepositoriesStep = () => {
|
||||||
{packages.length && recommendedRepos.length ? (
|
{packages.length && recommendedRepos.length ? (
|
||||||
<Alert
|
<Alert
|
||||||
title="Why can't I remove a selected repository?"
|
title="Why can't I remove a selected repository?"
|
||||||
variant="info"
|
variant='info'
|
||||||
isInline
|
isInline
|
||||||
>
|
>
|
||||||
EPEL repository cannot be removed, because packages from it were
|
EPEL repository cannot be removed, because packages from it were
|
||||||
|
|
|
||||||
|
|
@ -142,8 +142,8 @@ export const CreateSaveButton = ({
|
||||||
};
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Modal isOpen={showModal} onClose={handleClose} width="50%">
|
<Modal isOpen={showModal} onClose={handleClose} width='50%'>
|
||||||
<ModalHeader title="Save time by building images" />
|
<ModalHeader title='Save time by building images' />
|
||||||
<ModalBody>
|
<ModalBody>
|
||||||
Building blueprints and images doesn't need to be a two step
|
Building blueprints and images doesn't need to be a two step
|
||||||
process. To build images simultaneously, use the dropdown arrow to the
|
process. To build images simultaneously, use the dropdown arrow to the
|
||||||
|
|
@ -151,9 +151,9 @@ export const CreateSaveButton = ({
|
||||||
</ModalBody>
|
</ModalBody>
|
||||||
<ModalFooter>
|
<ModalFooter>
|
||||||
<Button
|
<Button
|
||||||
key="back"
|
key='back'
|
||||||
variant="primary"
|
variant='primary'
|
||||||
data-testid="close-button-saveandbuild-modal"
|
data-testid='close-button-saveandbuild-modal'
|
||||||
onClick={handleClose}
|
onClick={handleClose}
|
||||||
>
|
>
|
||||||
Close
|
Close
|
||||||
|
|
@ -201,7 +201,7 @@ export const CreateSaveButton = ({
|
||||||
{showModal && <SaveAndBuildImagesModal />}
|
{showModal && <SaveAndBuildImagesModal />}
|
||||||
<MenuToggleAction
|
<MenuToggleAction
|
||||||
onClick={onClick}
|
onClick={onClick}
|
||||||
id="wizard-create-save-btn"
|
id='wizard-create-save-btn'
|
||||||
isDisabled={isDisabled}
|
isDisabled={isDisabled}
|
||||||
>
|
>
|
||||||
<Flex display={{ default: 'inlineFlex' }}>
|
<Flex display={{ default: 'inlineFlex' }}>
|
||||||
|
|
@ -212,7 +212,7 @@ export const CreateSaveButton = ({
|
||||||
{ '--pf-v6-c-spinner--Color': '#fff' } as React.CSSProperties
|
{ '--pf-v6-c-spinner--Color': '#fff' } as React.CSSProperties
|
||||||
}
|
}
|
||||||
isInline
|
isInline
|
||||||
size="md"
|
size='md'
|
||||||
/>
|
/>
|
||||||
</FlexItem>
|
</FlexItem>
|
||||||
)}
|
)}
|
||||||
|
|
|
||||||
|
|
@ -150,7 +150,7 @@ export const EditSaveButton = ({
|
||||||
return (
|
return (
|
||||||
<MenuToggleAction
|
<MenuToggleAction
|
||||||
onClick={onSave}
|
onClick={onSave}
|
||||||
id="wizard-edit-save-btn"
|
id='wizard-edit-save-btn'
|
||||||
isDisabled={isDisabled}
|
isDisabled={isDisabled}
|
||||||
>
|
>
|
||||||
<Flex display={{ default: 'inlineFlex' }}>
|
<Flex display={{ default: 'inlineFlex' }}>
|
||||||
|
|
@ -161,7 +161,7 @@ export const EditSaveButton = ({
|
||||||
{ '--pf-v6-c-spinner--Color': '#fff' } as React.CSSProperties
|
{ '--pf-v6-c-spinner--Color': '#fff' } as React.CSSProperties
|
||||||
}
|
}
|
||||||
isInline
|
isInline
|
||||||
size="md"
|
size='md'
|
||||||
/>
|
/>
|
||||||
</FlexItem>
|
</FlexItem>
|
||||||
)}
|
)}
|
||||||
|
|
|
||||||
|
|
@ -71,7 +71,7 @@ const ReviewWizardFooter = () => {
|
||||||
onOpenChange={(isOpen: boolean) => setIsOpen(isOpen)}
|
onOpenChange={(isOpen: boolean) => setIsOpen(isOpen)}
|
||||||
toggle={(toggleRef: React.Ref<MenuToggleElement>) => (
|
toggle={(toggleRef: React.Ref<MenuToggleElement>) => (
|
||||||
<MenuToggle
|
<MenuToggle
|
||||||
variant="primary"
|
variant='primary'
|
||||||
ref={toggleRef}
|
ref={toggleRef}
|
||||||
onClick={onToggleClick}
|
onClick={onToggleClick}
|
||||||
isExpanded={isOpen}
|
isExpanded={isOpen}
|
||||||
|
|
@ -80,7 +80,7 @@ const ReviewWizardFooter = () => {
|
||||||
composeId
|
composeId
|
||||||
? [
|
? [
|
||||||
<EditSaveButton
|
<EditSaveButton
|
||||||
key="wizard-edit-save-btn"
|
key='wizard-edit-save-btn'
|
||||||
getBlueprintPayload={getBlueprintPayload}
|
getBlueprintPayload={getBlueprintPayload}
|
||||||
setIsOpen={setIsOpen}
|
setIsOpen={setIsOpen}
|
||||||
blueprintId={composeId}
|
blueprintId={composeId}
|
||||||
|
|
@ -89,7 +89,7 @@ const ReviewWizardFooter = () => {
|
||||||
]
|
]
|
||||||
: [
|
: [
|
||||||
<CreateSaveButton
|
<CreateSaveButton
|
||||||
key="wizard-create-save-btn"
|
key='wizard-create-save-btn'
|
||||||
getBlueprintPayload={getBlueprintPayload}
|
getBlueprintPayload={getBlueprintPayload}
|
||||||
setIsOpen={setIsOpen}
|
setIsOpen={setIsOpen}
|
||||||
isDisabled={!isValid}
|
isDisabled={!isValid}
|
||||||
|
|
@ -115,10 +115,10 @@ const ReviewWizardFooter = () => {
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
</Dropdown>
|
</Dropdown>
|
||||||
<Button variant="secondary" onClick={goToPrevStep}>
|
<Button variant='secondary' onClick={goToPrevStep}>
|
||||||
Back
|
Back
|
||||||
</Button>
|
</Button>
|
||||||
<Button variant="link" onClick={close}>
|
<Button variant='link' onClick={close}>
|
||||||
Cancel
|
Cancel
|
||||||
</Button>
|
</Button>
|
||||||
</Flex>
|
</Flex>
|
||||||
|
|
|
||||||
|
|
@ -150,12 +150,12 @@ const Review = () => {
|
||||||
return (
|
return (
|
||||||
<Button
|
<Button
|
||||||
icon={<ArrowRightIcon />}
|
icon={<ArrowRightIcon />}
|
||||||
variant="link"
|
variant='link'
|
||||||
aria-label={ariaLabel}
|
aria-label={ariaLabel}
|
||||||
data-testid={testId}
|
data-testid={testId}
|
||||||
component="span"
|
component='span'
|
||||||
onClick={() => revisitStep(stepId)}
|
onClick={() => revisitStep(stepId)}
|
||||||
className="pf-v6-u-p-0 pf-v6-u-font-weight-bold"
|
className='pf-v6-u-p-0 pf-v6-u-font-weight-bold'
|
||||||
isInline
|
isInline
|
||||||
>
|
>
|
||||||
Revisit step
|
Revisit step
|
||||||
|
|
@ -172,9 +172,9 @@ const Review = () => {
|
||||||
<Split hasGutter>
|
<Split hasGutter>
|
||||||
<SplitItem
|
<SplitItem
|
||||||
isFilled
|
isFilled
|
||||||
className="pf-v6-u-min-width pf-v6-u-text-align-start"
|
className='pf-v6-u-min-width pf-v6-u-text-align-start'
|
||||||
>
|
>
|
||||||
<Button variant="link" component="span" isInline>
|
<Button variant='link' component='span' isInline>
|
||||||
{label}
|
{label}
|
||||||
</Button>
|
</Button>
|
||||||
</SplitItem>
|
</SplitItem>
|
||||||
|
|
@ -202,7 +202,7 @@ const Review = () => {
|
||||||
}
|
}
|
||||||
isExpanded={isExpandedImageOutput}
|
isExpanded={isExpandedImageOutput}
|
||||||
isIndented
|
isIndented
|
||||||
data-testid="image-output-expandable"
|
data-testid='image-output-expandable'
|
||||||
>
|
>
|
||||||
<ImageOutputList />
|
<ImageOutputList />
|
||||||
</ExpandableSection>
|
</ExpandableSection>
|
||||||
|
|
@ -217,7 +217,7 @@ const Review = () => {
|
||||||
}
|
}
|
||||||
isExpanded={isExpandedTargetEnvs}
|
isExpanded={isExpandedTargetEnvs}
|
||||||
isIndented
|
isIndented
|
||||||
data-testid="target-environments-expandable"
|
data-testid='target-environments-expandable'
|
||||||
>
|
>
|
||||||
<Stack hasGutter>
|
<Stack hasGutter>
|
||||||
{environments.includes('aws') && (
|
{environments.includes('aws') && (
|
||||||
|
|
@ -304,7 +304,7 @@ const Review = () => {
|
||||||
}
|
}
|
||||||
isExpanded={isExpandedRegistration}
|
isExpanded={isExpandedRegistration}
|
||||||
isIndented
|
isIndented
|
||||||
data-testid="registration-expandable"
|
data-testid='registration-expandable'
|
||||||
>
|
>
|
||||||
{registrationType === 'register-later' && <RegisterLaterList />}
|
{registrationType === 'register-later' && <RegisterLaterList />}
|
||||||
{registrationType === 'register-satellite' && (
|
{registrationType === 'register-satellite' && (
|
||||||
|
|
@ -325,7 +325,7 @@ const Review = () => {
|
||||||
}
|
}
|
||||||
isExpanded={isExpandedOscapDetail}
|
isExpanded={isExpandedOscapDetail}
|
||||||
isIndented
|
isIndented
|
||||||
data-testid="oscap-detail-expandable"
|
data-testid='oscap-detail-expandable'
|
||||||
>
|
>
|
||||||
<OscapList />
|
<OscapList />
|
||||||
</ExpandableSection>
|
</ExpandableSection>
|
||||||
|
|
@ -342,7 +342,7 @@ const Review = () => {
|
||||||
}
|
}
|
||||||
isExpanded={isExpandedComplianceDetail}
|
isExpanded={isExpandedComplianceDetail}
|
||||||
isIndented
|
isIndented
|
||||||
data-testid="compliance-detail-expandable"
|
data-testid='compliance-detail-expandable'
|
||||||
>
|
>
|
||||||
<OscapList />
|
<OscapList />
|
||||||
</ExpandableSection>
|
</ExpandableSection>
|
||||||
|
|
@ -357,7 +357,7 @@ const Review = () => {
|
||||||
onToggle={(_event, isExpandedFSC) => onToggleFSC(isExpandedFSC)}
|
onToggle={(_event, isExpandedFSC) => onToggleFSC(isExpandedFSC)}
|
||||||
isExpanded={isExpandedFSC}
|
isExpanded={isExpandedFSC}
|
||||||
isIndented
|
isIndented
|
||||||
data-testid="file-system-configuration-expandable"
|
data-testid='file-system-configuration-expandable'
|
||||||
>
|
>
|
||||||
<FSCList />
|
<FSCList />
|
||||||
</ExpandableSection>
|
</ExpandableSection>
|
||||||
|
|
@ -373,7 +373,7 @@ const Review = () => {
|
||||||
}
|
}
|
||||||
isExpanded={isExpandedContent}
|
isExpanded={isExpandedContent}
|
||||||
isIndented
|
isIndented
|
||||||
data-testid="content-expandable"
|
data-testid='content-expandable'
|
||||||
>
|
>
|
||||||
<ContentList />
|
<ContentList />
|
||||||
</ExpandableSection>
|
</ExpandableSection>
|
||||||
|
|
@ -387,7 +387,7 @@ const Review = () => {
|
||||||
onToggle={(_event, isExpandedUsers) => onToggleUsers(isExpandedUsers)}
|
onToggle={(_event, isExpandedUsers) => onToggleUsers(isExpandedUsers)}
|
||||||
isExpanded={isExpandedUsers}
|
isExpanded={isExpandedUsers}
|
||||||
isIndented
|
isIndented
|
||||||
data-testid="users-expandable"
|
data-testid='users-expandable'
|
||||||
>
|
>
|
||||||
<UsersList />
|
<UsersList />
|
||||||
</ExpandableSection>
|
</ExpandableSection>
|
||||||
|
|
@ -404,7 +404,7 @@ const Review = () => {
|
||||||
}
|
}
|
||||||
isExpanded={isExpandedTimezone}
|
isExpanded={isExpandedTimezone}
|
||||||
isIndented
|
isIndented
|
||||||
data-testid="timezone-expandable"
|
data-testid='timezone-expandable'
|
||||||
>
|
>
|
||||||
<TimezoneList />
|
<TimezoneList />
|
||||||
</ExpandableSection>
|
</ExpandableSection>
|
||||||
|
|
@ -422,7 +422,7 @@ const Review = () => {
|
||||||
}
|
}
|
||||||
isExpanded={isExpandedLocale}
|
isExpanded={isExpandedLocale}
|
||||||
isIndented
|
isIndented
|
||||||
data-testid="locale-expandable"
|
data-testid='locale-expandable'
|
||||||
>
|
>
|
||||||
<LocaleList />
|
<LocaleList />
|
||||||
</ExpandableSection>
|
</ExpandableSection>
|
||||||
|
|
@ -439,7 +439,7 @@ const Review = () => {
|
||||||
}
|
}
|
||||||
isExpanded={isExpandedHostname}
|
isExpanded={isExpandedHostname}
|
||||||
isIndented
|
isIndented
|
||||||
data-testid="hostname-expandable"
|
data-testid='hostname-expandable'
|
||||||
>
|
>
|
||||||
<HostnameList />
|
<HostnameList />
|
||||||
</ExpandableSection>
|
</ExpandableSection>
|
||||||
|
|
@ -456,7 +456,7 @@ const Review = () => {
|
||||||
}
|
}
|
||||||
isExpanded={isExpandedKernel}
|
isExpanded={isExpandedKernel}
|
||||||
isIndented
|
isIndented
|
||||||
data-testid="kernel-expandable"
|
data-testid='kernel-expandable'
|
||||||
>
|
>
|
||||||
<KernelList />
|
<KernelList />
|
||||||
</ExpandableSection>
|
</ExpandableSection>
|
||||||
|
|
@ -475,7 +475,7 @@ const Review = () => {
|
||||||
}
|
}
|
||||||
isExpanded={isExpandedFirewall}
|
isExpanded={isExpandedFirewall}
|
||||||
isIndented
|
isIndented
|
||||||
data-testid="firewall-expandable"
|
data-testid='firewall-expandable'
|
||||||
>
|
>
|
||||||
<FirewallList />
|
<FirewallList />
|
||||||
</ExpandableSection>
|
</ExpandableSection>
|
||||||
|
|
@ -494,7 +494,7 @@ const Review = () => {
|
||||||
}
|
}
|
||||||
isExpanded={isExpandedServices}
|
isExpanded={isExpandedServices}
|
||||||
isIndented
|
isIndented
|
||||||
data-testid="services-expandable"
|
data-testid='services-expandable'
|
||||||
>
|
>
|
||||||
<ServicesList />
|
<ServicesList />
|
||||||
</ExpandableSection>
|
</ExpandableSection>
|
||||||
|
|
@ -510,7 +510,7 @@ const Review = () => {
|
||||||
}
|
}
|
||||||
isExpanded={isExpandableFirstBoot}
|
isExpanded={isExpandableFirstBoot}
|
||||||
isIndented
|
isIndented
|
||||||
data-testid="firstboot-expandable"
|
data-testid='firstboot-expandable'
|
||||||
>
|
>
|
||||||
<FirstBootList />
|
<FirstBootList />
|
||||||
</ExpandableSection>
|
</ExpandableSection>
|
||||||
|
|
@ -526,7 +526,7 @@ const Review = () => {
|
||||||
}
|
}
|
||||||
isExpanded={isExpandedImageDetail}
|
isExpanded={isExpandedImageDetail}
|
||||||
isIndented
|
isIndented
|
||||||
data-testid="image-details-expandable"
|
data-testid='image-details-expandable'
|
||||||
>
|
>
|
||||||
<DetailsList />
|
<DetailsList />
|
||||||
</ExpandableSection>
|
</ExpandableSection>
|
||||||
|
|
|
||||||
|
|
@ -46,10 +46,10 @@ const RepoName = ({ repoUuid }: repoPropType) => {
|
||||||
const errorLoading = () => {
|
const errorLoading = () => {
|
||||||
return (
|
return (
|
||||||
<Alert
|
<Alert
|
||||||
variant="danger"
|
variant='danger'
|
||||||
isInline
|
isInline
|
||||||
isPlain
|
isPlain
|
||||||
title="Error loading repository name"
|
title='Error loading repository name'
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
@ -67,7 +67,7 @@ const RepoName = ({ repoUuid }: repoPropType) => {
|
||||||
*/}
|
*/}
|
||||||
{isSuccess && data?.data?.[0]?.name && <p>{data.data[0].name}</p>}
|
{isSuccess && data?.data?.[0]?.name && <p>{data.data[0].name}</p>}
|
||||||
{isSuccess && !data?.data?.[0]?.name && errorLoading()}
|
{isSuccess && !data?.data?.[0]?.name && errorLoading()}
|
||||||
{isFetching && <Spinner size="md" />}
|
{isFetching && <Spinner size='md' />}
|
||||||
{isError && errorLoading()}
|
{isError && errorLoading()}
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
|
|
@ -77,8 +77,8 @@ export const FSReviewTable = () => {
|
||||||
const partitions = useAppSelector(selectPartitions);
|
const partitions = useAppSelector(selectPartitions);
|
||||||
return (
|
return (
|
||||||
<Panel isScrollable>
|
<Panel isScrollable>
|
||||||
<PanelMain maxHeight="30ch">
|
<PanelMain maxHeight='30ch'>
|
||||||
<Table aria-label="File system configuration table" variant="compact">
|
<Table aria-label='File system configuration table' variant='compact'>
|
||||||
<Thead>
|
<Thead>
|
||||||
<Tr>
|
<Tr>
|
||||||
<Th>Mount point</Th>
|
<Th>Mount point</Th>
|
||||||
|
|
@ -89,9 +89,9 @@ export const FSReviewTable = () => {
|
||||||
<Tbody>
|
<Tbody>
|
||||||
{partitions.map((partition, partitionIndex) => (
|
{partitions.map((partition, partitionIndex) => (
|
||||||
<Tr key={partitionIndex}>
|
<Tr key={partitionIndex}>
|
||||||
<Td className="pf-m-width-30">{partition.mountpoint}</Td>
|
<Td className='pf-m-width-30'>{partition.mountpoint}</Td>
|
||||||
<Td className="pf-m-width-30">xfs</Td>
|
<Td className='pf-m-width-30'>xfs</Td>
|
||||||
<Td className="pf-m-width-30">
|
<Td className='pf-m-width-30'>
|
||||||
{parseInt(partition.min_size).toString()} {partition.unit}
|
{parseInt(partition.min_size).toString()} {partition.unit}
|
||||||
</Td>
|
</Td>
|
||||||
</Tr>
|
</Tr>
|
||||||
|
|
@ -105,7 +105,7 @@ export const FSReviewTable = () => {
|
||||||
|
|
||||||
const Error = () => {
|
const Error = () => {
|
||||||
return (
|
return (
|
||||||
<Alert title="Repositories unavailable" variant="danger" isPlain isInline>
|
<Alert title='Repositories unavailable' variant='danger' isPlain isInline>
|
||||||
Repositories cannot be reached, try again later.
|
Repositories cannot be reached, try again later.
|
||||||
</Alert>
|
</Alert>
|
||||||
);
|
);
|
||||||
|
|
@ -114,9 +114,9 @@ const Error = () => {
|
||||||
const Loading = () => {
|
const Loading = () => {
|
||||||
return (
|
return (
|
||||||
<EmptyState
|
<EmptyState
|
||||||
headingLevel="h4"
|
headingLevel='h4'
|
||||||
icon={Spinner}
|
icon={Spinner}
|
||||||
titleText="Loading"
|
titleText='Loading'
|
||||||
></EmptyState>
|
></EmptyState>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
@ -164,8 +164,8 @@ export const SnapshotTable = ({
|
||||||
(isLoading && <Loading />) ||
|
(isLoading && <Loading />) ||
|
||||||
(isSuccess && (
|
(isSuccess && (
|
||||||
<Panel isScrollable>
|
<Panel isScrollable>
|
||||||
<PanelMain maxHeight="30ch">
|
<PanelMain maxHeight='30ch'>
|
||||||
<Table aria-label="Packages table" variant="compact">
|
<Table aria-label='Packages table' variant='compact'>
|
||||||
<Thead>
|
<Thead>
|
||||||
<Tr>
|
<Tr>
|
||||||
<Th>Name</Th>
|
<Th>Name</Th>
|
||||||
|
|
@ -184,7 +184,7 @@ export const SnapshotTable = ({
|
||||||
? stringToDateToMMDDYYYY(last_snapshot.created_at)
|
? stringToDateToMMDDYYYY(last_snapshot.created_at)
|
||||||
: 'N/A'
|
: 'N/A'
|
||||||
}
|
}
|
||||||
variant="warning"
|
variant='warning'
|
||||||
isPlain
|
isPlain
|
||||||
isInline
|
isInline
|
||||||
/>
|
/>
|
||||||
|
|
@ -210,8 +210,8 @@ export const PackagesTable = () => {
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Panel isScrollable>
|
<Panel isScrollable>
|
||||||
<PanelMain maxHeight="30ch">
|
<PanelMain maxHeight='30ch'>
|
||||||
<Table aria-label="Packages table" variant="compact">
|
<Table aria-label='Packages table' variant='compact'>
|
||||||
<Thead>
|
<Thead>
|
||||||
<Tr>
|
<Tr>
|
||||||
<Th>Name</Th>
|
<Th>Name</Th>
|
||||||
|
|
@ -248,8 +248,8 @@ export const RepositoriesTable = () => {
|
||||||
);
|
);
|
||||||
return (
|
return (
|
||||||
<Panel isScrollable>
|
<Panel isScrollable>
|
||||||
<PanelMain maxHeight="30ch">
|
<PanelMain maxHeight='30ch'>
|
||||||
<Table aria-label="Custom repositories table" variant="compact">
|
<Table aria-label='Custom repositories table' variant='compact'>
|
||||||
<Thead>
|
<Thead>
|
||||||
<Tr>
|
<Tr>
|
||||||
<Th>Name</Th>
|
<Th>Name</Th>
|
||||||
|
|
@ -258,14 +258,14 @@ export const RepositoriesTable = () => {
|
||||||
<Tbody>
|
<Tbody>
|
||||||
{repositoriesList.map((repo, repoIndex) => (
|
{repositoriesList.map((repo, repoIndex) => (
|
||||||
<Tr key={repoIndex + 1}>
|
<Tr key={repoIndex + 1}>
|
||||||
<Td className="pf-m-width-60">
|
<Td className='pf-m-width-60'>
|
||||||
<RepoName repoUuid={repo.id} />
|
<RepoName repoUuid={repo.id} />
|
||||||
</Td>
|
</Td>
|
||||||
</Tr>
|
</Tr>
|
||||||
))}
|
))}
|
||||||
{recommendedRepositoriesList.length > 0 && (
|
{recommendedRepositoriesList.length > 0 && (
|
||||||
<Tr key={0}>
|
<Tr key={0}>
|
||||||
<Td className="pf-m-width-60">
|
<Td className='pf-m-width-60'>
|
||||||
EPEL {getEpelVersionForDistribution(distribution)} Everything
|
EPEL {getEpelVersionForDistribution(distribution)} Everything
|
||||||
x86_64
|
x86_64
|
||||||
</Td>
|
</Td>
|
||||||
|
|
|
||||||
|
|
@ -92,8 +92,8 @@ import ActivationKeyInformation from '../Registration/components/ActivationKeyIn
|
||||||
|
|
||||||
const ExpirationWarning = () => {
|
const ExpirationWarning = () => {
|
||||||
return (
|
return (
|
||||||
<Content className="pf-v6-u-font-size-sm pf-v6-u-text-color-status-warning">
|
<Content className='pf-v6-u-font-size-sm pf-v6-u-text-color-status-warning'>
|
||||||
<Icon status="warning" isInline>
|
<Icon status='warning' isInline>
|
||||||
<ExclamationTriangleIcon />
|
<ExclamationTriangleIcon />
|
||||||
</Icon>{' '}
|
</Icon>{' '}
|
||||||
Expires 14 days after creation
|
Expires 14 days after creation
|
||||||
|
|
@ -110,7 +110,7 @@ export const ImageOutputList = () => {
|
||||||
<Content>
|
<Content>
|
||||||
{(distribution === RHEL_8 || distribution === RHEL_9) && (
|
{(distribution === RHEL_8 || distribution === RHEL_9) && (
|
||||||
<>
|
<>
|
||||||
<Content component="p" className="pf-v6-u-font-size-sm">
|
<Content component='p' className='pf-v6-u-font-size-sm'>
|
||||||
{RELEASES.get(distribution)} will be supported through{' '}
|
{RELEASES.get(distribution)} will be supported through{' '}
|
||||||
{toMonthAndYear(
|
{toMonthAndYear(
|
||||||
distribution === RHEL_8
|
distribution === RHEL_8
|
||||||
|
|
@ -126,20 +126,20 @@ export const ImageOutputList = () => {
|
||||||
. Consider building an image with {RELEASES.get(RHEL_10)} to extend
|
. Consider building an image with {RELEASES.get(RHEL_10)} to extend
|
||||||
the support period.
|
the support period.
|
||||||
</Content>
|
</Content>
|
||||||
<FormGroup label="Release lifecycle">
|
<FormGroup label='Release lifecycle'>
|
||||||
<MajorReleasesLifecyclesChart />
|
<MajorReleasesLifecyclesChart />
|
||||||
</FormGroup>
|
</FormGroup>
|
||||||
<br />
|
<br />
|
||||||
</>
|
</>
|
||||||
)}
|
)}
|
||||||
<Content component={ContentVariants.dl} className="review-step-dl">
|
<Content component={ContentVariants.dl} className='review-step-dl'>
|
||||||
<Content component={ContentVariants.dt} className="pf-v6-u-min-width">
|
<Content component={ContentVariants.dt} className='pf-v6-u-min-width'>
|
||||||
Release
|
Release
|
||||||
</Content>
|
</Content>
|
||||||
<Content component={ContentVariants.dd}>
|
<Content component={ContentVariants.dd}>
|
||||||
{releases.get(distribution)}
|
{releases.get(distribution)}
|
||||||
</Content>
|
</Content>
|
||||||
<Content component={ContentVariants.dt} className="pf-v6-u-min-width">
|
<Content component={ContentVariants.dt} className='pf-v6-u-min-width'>
|
||||||
Architecture
|
Architecture
|
||||||
</Content>
|
</Content>
|
||||||
<Content component={ContentVariants.dd}>{arch}</Content>
|
<Content component={ContentVariants.dd}>{arch}</Content>
|
||||||
|
|
@ -155,8 +155,8 @@ export const FSCList = () => {
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Content>
|
<Content>
|
||||||
<Content component={ContentVariants.dl} className="review-step-dl">
|
<Content component={ContentVariants.dl} className='review-step-dl'>
|
||||||
<Content component={ContentVariants.dt} className="pf-v6-u-min-width">
|
<Content component={ContentVariants.dt} className='pf-v6-u-min-width'>
|
||||||
Configuration type
|
Configuration type
|
||||||
</Content>
|
</Content>
|
||||||
<Content component={ContentVariants.dd}>
|
<Content component={ContentVariants.dd}>
|
||||||
|
|
@ -165,17 +165,17 @@ export const FSCList = () => {
|
||||||
<>
|
<>
|
||||||
{' '}
|
{' '}
|
||||||
<Popover
|
<Popover
|
||||||
position="bottom"
|
position='bottom'
|
||||||
headerContent="Partitions"
|
headerContent='Partitions'
|
||||||
hasAutoWidth
|
hasAutoWidth
|
||||||
minWidth="30rem"
|
minWidth='30rem'
|
||||||
bodyContent={<FSReviewTable />}
|
bodyContent={<FSReviewTable />}
|
||||||
>
|
>
|
||||||
<Button
|
<Button
|
||||||
variant="link"
|
variant='link'
|
||||||
aria-label="File system configuration info"
|
aria-label='File system configuration info'
|
||||||
aria-describedby="file-system-configuration-info"
|
aria-describedby='file-system-configuration-info'
|
||||||
className="pf-v6-u-pt-0 pf-v6-u-pb-0"
|
className='pf-v6-u-pt-0 pf-v6-u-pb-0'
|
||||||
>
|
>
|
||||||
View partitions
|
View partitions
|
||||||
</Button>
|
</Button>
|
||||||
|
|
@ -241,8 +241,8 @@ export const TargetEnvAWSList = () => {
|
||||||
return (
|
return (
|
||||||
<Content>
|
<Content>
|
||||||
<Content component={ContentVariants.h3}>{targetOptions.aws}</Content>
|
<Content component={ContentVariants.h3}>{targetOptions.aws}</Content>
|
||||||
<Content component={ContentVariants.dl} className="review-step-dl">
|
<Content component={ContentVariants.dl} className='review-step-dl'>
|
||||||
<Content component={ContentVariants.dt} className="pf-v6-u-min-width">
|
<Content component={ContentVariants.dt} className='pf-v6-u-min-width'>
|
||||||
Image type
|
Image type
|
||||||
</Content>
|
</Content>
|
||||||
<Content component={ContentVariants.dd}>
|
<Content component={ContentVariants.dd}>
|
||||||
|
|
@ -250,17 +250,17 @@ export const TargetEnvAWSList = () => {
|
||||||
<br />
|
<br />
|
||||||
<ExpirationWarning />
|
<ExpirationWarning />
|
||||||
</Content>
|
</Content>
|
||||||
<Content component={ContentVariants.dt} className="pf-v6-u-min-width">
|
<Content component={ContentVariants.dt} className='pf-v6-u-min-width'>
|
||||||
Shared to account
|
Shared to account
|
||||||
</Content>
|
</Content>
|
||||||
<Content component={ContentVariants.dd}>{awsAccountId}</Content>
|
<Content component={ContentVariants.dd}>{awsAccountId}</Content>
|
||||||
<Content component={ContentVariants.dt} className="pf-v6-u-min-width">
|
<Content component={ContentVariants.dt} className='pf-v6-u-min-width'>
|
||||||
{awsShareMethod === 'sources' ? 'Source' : null}
|
{awsShareMethod === 'sources' ? 'Source' : null}
|
||||||
</Content>
|
</Content>
|
||||||
<Content component={ContentVariants.dd}>
|
<Content component={ContentVariants.dd}>
|
||||||
{isSuccess && awsShareMethod === 'sources' ? source?.name : null}
|
{isSuccess && awsShareMethod === 'sources' ? source?.name : null}
|
||||||
</Content>
|
</Content>
|
||||||
<Content component={ContentVariants.dt} className="pf-v6-u-min-width">
|
<Content component={ContentVariants.dt} className='pf-v6-u-min-width'>
|
||||||
Default region
|
Default region
|
||||||
</Content>
|
</Content>
|
||||||
<Content component={ContentVariants.dd}>
|
<Content component={ContentVariants.dd}>
|
||||||
|
|
@ -278,8 +278,8 @@ export const TargetEnvGCPList = () => {
|
||||||
return (
|
return (
|
||||||
<Content>
|
<Content>
|
||||||
<Content component={ContentVariants.h3}>{targetOptions.gcp}</Content>
|
<Content component={ContentVariants.h3}>{targetOptions.gcp}</Content>
|
||||||
<Content component={ContentVariants.dl} className="review-step-dl">
|
<Content component={ContentVariants.dl} className='review-step-dl'>
|
||||||
<Content component={ContentVariants.dt} className="pf-v6-u-min-width">
|
<Content component={ContentVariants.dt} className='pf-v6-u-min-width'>
|
||||||
Image type
|
Image type
|
||||||
</Content>
|
</Content>
|
||||||
<Content component={ContentVariants.dd}>
|
<Content component={ContentVariants.dd}>
|
||||||
|
|
@ -292,7 +292,7 @@ export const TargetEnvGCPList = () => {
|
||||||
<>
|
<>
|
||||||
<Content
|
<Content
|
||||||
component={ContentVariants.dt}
|
component={ContentVariants.dt}
|
||||||
className="pf-v6-u-min-width"
|
className='pf-v6-u-min-width'
|
||||||
>
|
>
|
||||||
Shared with
|
Shared with
|
||||||
</Content>
|
</Content>
|
||||||
|
|
@ -305,7 +305,7 @@ export const TargetEnvGCPList = () => {
|
||||||
<>
|
<>
|
||||||
<Content
|
<Content
|
||||||
component={ContentVariants.dt}
|
component={ContentVariants.dt}
|
||||||
className="pf-v6-u-min-width"
|
className='pf-v6-u-min-width'
|
||||||
>
|
>
|
||||||
Account type
|
Account type
|
||||||
</Content>
|
</Content>
|
||||||
|
|
@ -320,7 +320,7 @@ export const TargetEnvGCPList = () => {
|
||||||
</Content>
|
</Content>
|
||||||
<Content
|
<Content
|
||||||
component={ContentVariants.dt}
|
component={ContentVariants.dt}
|
||||||
className="pf-v6-u-min-width"
|
className='pf-v6-u-min-width'
|
||||||
>
|
>
|
||||||
{accountType === 'domain' ? 'Domain' : 'Principal'}
|
{accountType === 'domain' ? 'Domain' : 'Principal'}
|
||||||
</Content>
|
</Content>
|
||||||
|
|
@ -347,8 +347,8 @@ export const TargetEnvAzureList = () => {
|
||||||
return (
|
return (
|
||||||
<Content>
|
<Content>
|
||||||
<Content component={ContentVariants.h3}>{targetOptions.azure}</Content>
|
<Content component={ContentVariants.h3}>{targetOptions.azure}</Content>
|
||||||
<Content component={ContentVariants.dl} className="review-step-dl">
|
<Content component={ContentVariants.dl} className='review-step-dl'>
|
||||||
<Content component={ContentVariants.dt} className="pf-v6-u-min-width">
|
<Content component={ContentVariants.dt} className='pf-v6-u-min-width'>
|
||||||
Image type
|
Image type
|
||||||
</Content>
|
</Content>
|
||||||
<Content component={ContentVariants.dd}>
|
<Content component={ContentVariants.dd}>
|
||||||
|
|
@ -360,7 +360,7 @@ export const TargetEnvAzureList = () => {
|
||||||
<>
|
<>
|
||||||
<Content
|
<Content
|
||||||
component={ContentVariants.dt}
|
component={ContentVariants.dt}
|
||||||
className="pf-v6-u-min-width"
|
className='pf-v6-u-min-width'
|
||||||
>
|
>
|
||||||
Azure Source
|
Azure Source
|
||||||
</Content>
|
</Content>
|
||||||
|
|
@ -377,14 +377,14 @@ export const TargetEnvAzureList = () => {
|
||||||
<>
|
<>
|
||||||
<Content
|
<Content
|
||||||
component={ContentVariants.dt}
|
component={ContentVariants.dt}
|
||||||
className="pf-v6-u-min-width"
|
className='pf-v6-u-min-width'
|
||||||
>
|
>
|
||||||
Azure tenant ID
|
Azure tenant ID
|
||||||
</Content>
|
</Content>
|
||||||
<Content component={ContentVariants.dd}>{tenantId}</Content>
|
<Content component={ContentVariants.dd}>{tenantId}</Content>
|
||||||
<Content
|
<Content
|
||||||
component={ContentVariants.dt}
|
component={ContentVariants.dt}
|
||||||
className="pf-v6-u-min-width"
|
className='pf-v6-u-min-width'
|
||||||
>
|
>
|
||||||
Subscription ID
|
Subscription ID
|
||||||
</Content>
|
</Content>
|
||||||
|
|
@ -402,8 +402,8 @@ export const TargetEnvOciList = () => {
|
||||||
return (
|
return (
|
||||||
<Content>
|
<Content>
|
||||||
<Content component={ContentVariants.h3}>{targetOptions.oci}</Content>
|
<Content component={ContentVariants.h3}>{targetOptions.oci}</Content>
|
||||||
<Content component={ContentVariants.dl} className="review-step-dl">
|
<Content component={ContentVariants.dl} className='review-step-dl'>
|
||||||
<Content component={ContentVariants.dt} className="pf-v6-u-min-width">
|
<Content component={ContentVariants.dt} className='pf-v6-u-min-width'>
|
||||||
Object Storage URL
|
Object Storage URL
|
||||||
</Content>
|
</Content>
|
||||||
<Content component={ContentVariants.dd}>
|
<Content component={ContentVariants.dd}>
|
||||||
|
|
@ -417,8 +417,8 @@ export const TargetEnvOciList = () => {
|
||||||
export const TargetEnvOtherList = () => {
|
export const TargetEnvOtherList = () => {
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<Content component={ContentVariants.dl} className="review-step-dl">
|
<Content component={ContentVariants.dl} className='review-step-dl'>
|
||||||
<Content component={ContentVariants.dt} className="pf-v6-u-min-width">
|
<Content component={ContentVariants.dt} className='pf-v6-u-min-width'>
|
||||||
Image type
|
Image type
|
||||||
</Content>
|
</Content>
|
||||||
<Content component={ContentVariants.dd}>
|
<Content component={ContentVariants.dd}>
|
||||||
|
|
@ -505,17 +505,17 @@ export const ContentList = () => {
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<Content>
|
<Content>
|
||||||
<Content component={ContentVariants.dl} className="review-step-dl">
|
<Content component={ContentVariants.dl} className='review-step-dl'>
|
||||||
<>
|
<>
|
||||||
<Content
|
<Content
|
||||||
component={ContentVariants.dt}
|
component={ContentVariants.dt}
|
||||||
className="pf-v6-u-min-width"
|
className='pf-v6-u-min-width'
|
||||||
>
|
>
|
||||||
Repeatable build
|
Repeatable build
|
||||||
</Content>
|
</Content>
|
||||||
<Content component={ContentVariants.dd}>
|
<Content component={ContentVariants.dd}>
|
||||||
<Popover
|
<Popover
|
||||||
position="bottom"
|
position='bottom'
|
||||||
headerContent={
|
headerContent={
|
||||||
useLatest
|
useLatest
|
||||||
? 'Use the latest repository content'
|
? 'Use the latest repository content'
|
||||||
|
|
@ -526,16 +526,16 @@ export const ContentList = () => {
|
||||||
)}`
|
)}`
|
||||||
}
|
}
|
||||||
hasAutoWidth
|
hasAutoWidth
|
||||||
minWidth="60rem"
|
minWidth='60rem'
|
||||||
bodyContent={
|
bodyContent={
|
||||||
<SnapshotTable snapshotForDate={data?.data || []} />
|
<SnapshotTable snapshotForDate={data?.data || []} />
|
||||||
}
|
}
|
||||||
>
|
>
|
||||||
<Button
|
<Button
|
||||||
variant="link"
|
variant='link'
|
||||||
isInline
|
isInline
|
||||||
aria-label="Snapshot method"
|
aria-label='Snapshot method'
|
||||||
className="popover-button pf-v6-u-p-0"
|
className='popover-button pf-v6-u-p-0'
|
||||||
isDisabled={noRepositoriesSelected || isLoading || isError}
|
isDisabled={noRepositoriesSelected || isLoading || isError}
|
||||||
isLoading={isLoading}
|
isLoading={isLoading}
|
||||||
>
|
>
|
||||||
|
|
@ -544,32 +544,32 @@ export const ContentList = () => {
|
||||||
</Popover>
|
</Popover>
|
||||||
{!useLatest && !isLoading && isSuccess && hasSnapshotDateAfter ? (
|
{!useLatest && !isLoading && isSuccess && hasSnapshotDateAfter ? (
|
||||||
<Alert
|
<Alert
|
||||||
variant="warning"
|
variant='warning'
|
||||||
isInline
|
isInline
|
||||||
isPlain
|
isPlain
|
||||||
title="A snapshot for this date is not available for some repositories."
|
title='A snapshot for this date is not available for some repositories.'
|
||||||
/>
|
/>
|
||||||
) : (
|
) : (
|
||||||
''
|
''
|
||||||
)}
|
)}
|
||||||
</Content>
|
</Content>
|
||||||
</>
|
</>
|
||||||
<Content component={ContentVariants.dt} className="pf-v6-u-min-width">
|
<Content component={ContentVariants.dt} className='pf-v6-u-min-width'>
|
||||||
Custom repositories
|
Custom repositories
|
||||||
</Content>
|
</Content>
|
||||||
<Content component={ContentVariants.dd}>
|
<Content component={ContentVariants.dd}>
|
||||||
{customRepositories?.length + recommendedRepositories.length > 0 ? (
|
{customRepositories?.length + recommendedRepositories.length > 0 ? (
|
||||||
<Popover
|
<Popover
|
||||||
position="bottom"
|
position='bottom'
|
||||||
headerContent="Custom repositories"
|
headerContent='Custom repositories'
|
||||||
hasAutoWidth
|
hasAutoWidth
|
||||||
minWidth="30rem"
|
minWidth='30rem'
|
||||||
bodyContent={<RepositoriesTable />}
|
bodyContent={<RepositoriesTable />}
|
||||||
>
|
>
|
||||||
<Button
|
<Button
|
||||||
variant="link"
|
variant='link'
|
||||||
aria-label="About custom repositories"
|
aria-label='About custom repositories'
|
||||||
className="popover-button pf-v6-u-p-0"
|
className='popover-button pf-v6-u-p-0'
|
||||||
>
|
>
|
||||||
{customRepositories?.length +
|
{customRepositories?.length +
|
||||||
recommendedRepositories.length || 0}
|
recommendedRepositories.length || 0}
|
||||||
|
|
@ -579,22 +579,22 @@ export const ContentList = () => {
|
||||||
0
|
0
|
||||||
)}
|
)}
|
||||||
</Content>
|
</Content>
|
||||||
<Content component={ContentVariants.dt} className="pf-v6-u-min-width">
|
<Content component={ContentVariants.dt} className='pf-v6-u-min-width'>
|
||||||
Additional packages
|
Additional packages
|
||||||
</Content>
|
</Content>
|
||||||
<Content component={ContentVariants.dd}>
|
<Content component={ContentVariants.dd}>
|
||||||
{packages?.length > 0 || groups?.length > 0 ? (
|
{packages?.length > 0 || groups?.length > 0 ? (
|
||||||
<Popover
|
<Popover
|
||||||
position="bottom"
|
position='bottom'
|
||||||
headerContent="Additional packages"
|
headerContent='Additional packages'
|
||||||
hasAutoWidth
|
hasAutoWidth
|
||||||
minWidth="60rem"
|
minWidth='60rem'
|
||||||
bodyContent={<PackagesTable />}
|
bodyContent={<PackagesTable />}
|
||||||
>
|
>
|
||||||
<Button
|
<Button
|
||||||
variant="link"
|
variant='link'
|
||||||
aria-label="About packages"
|
aria-label='About packages'
|
||||||
className="popover-button pf-v6-u-p-0"
|
className='popover-button pf-v6-u-p-0'
|
||||||
>
|
>
|
||||||
{packages?.length + groups?.length}
|
{packages?.length + groups?.length}
|
||||||
</Button>
|
</Button>
|
||||||
|
|
@ -607,8 +607,8 @@ export const ContentList = () => {
|
||||||
</Content>
|
</Content>
|
||||||
{duplicatePackages.length > 0 && (
|
{duplicatePackages.length > 0 && (
|
||||||
<Alert
|
<Alert
|
||||||
title="Can not guarantee where some selected packages will come from"
|
title='Can not guarantee where some selected packages will come from'
|
||||||
variant="warning"
|
variant='warning'
|
||||||
isInline
|
isInline
|
||||||
>
|
>
|
||||||
Some of the packages added to this image belong to multiple added
|
Some of the packages added to this image belong to multiple added
|
||||||
|
|
@ -623,8 +623,8 @@ export const ContentList = () => {
|
||||||
export const RegisterLaterList = () => {
|
export const RegisterLaterList = () => {
|
||||||
return (
|
return (
|
||||||
<Content>
|
<Content>
|
||||||
<Content component={ContentVariants.dl} className="review-step-dl">
|
<Content component={ContentVariants.dl} className='review-step-dl'>
|
||||||
<Content component={ContentVariants.dt} className="pf-v6-u-min-width">
|
<Content component={ContentVariants.dt} className='pf-v6-u-min-width'>
|
||||||
Registration type
|
Registration type
|
||||||
</Content>
|
</Content>
|
||||||
<Content component={ContentVariants.dd}>
|
<Content component={ContentVariants.dd}>
|
||||||
|
|
@ -638,8 +638,8 @@ export const RegisterLaterList = () => {
|
||||||
export const RegisterSatelliteList = () => {
|
export const RegisterSatelliteList = () => {
|
||||||
return (
|
return (
|
||||||
<Content>
|
<Content>
|
||||||
<Content component={ContentVariants.dl} className="review-step-dl">
|
<Content component={ContentVariants.dl} className='review-step-dl'>
|
||||||
<Content component={ContentVariants.dt} className="pf-v6-u-min-width">
|
<Content component={ContentVariants.dt} className='pf-v6-u-min-width'>
|
||||||
Register Satellite
|
Register Satellite
|
||||||
</Content>
|
</Content>
|
||||||
<Content component={ContentVariants.dd}>Enabled</Content>
|
<Content component={ContentVariants.dd}>Enabled</Content>
|
||||||
|
|
@ -662,37 +662,37 @@ export const RegisterNowList = () => {
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<Content>
|
<Content>
|
||||||
<Content component={ContentVariants.dl} className="review-step-dl">
|
<Content component={ContentVariants.dl} className='review-step-dl'>
|
||||||
<Content component={ContentVariants.dt} className="pf-v6-u-min-width">
|
<Content component={ContentVariants.dt} className='pf-v6-u-min-width'>
|
||||||
Registration type
|
Registration type
|
||||||
</Content>
|
</Content>
|
||||||
<Content
|
<Content
|
||||||
component={ContentVariants.dd}
|
component={ContentVariants.dd}
|
||||||
data-testid="review-registration"
|
data-testid='review-registration'
|
||||||
>
|
>
|
||||||
<Content component="ul" isPlainList>
|
<Content component='ul' isPlainList>
|
||||||
{registrationType?.startsWith('register-now') && (
|
{registrationType?.startsWith('register-now') && (
|
||||||
<Content component="li">
|
<Content component='li'>
|
||||||
Register with Red Hat Subscription Manager (RHSM)
|
Register with Red Hat Subscription Manager (RHSM)
|
||||||
<br />
|
<br />
|
||||||
</Content>
|
</Content>
|
||||||
)}
|
)}
|
||||||
{(registrationType === 'register-now-insights' ||
|
{(registrationType === 'register-now-insights' ||
|
||||||
registrationType === 'register-now-rhc') && (
|
registrationType === 'register-now-rhc') && (
|
||||||
<Content component="li">
|
<Content component='li'>
|
||||||
Connect to Red Hat Insights
|
Connect to Red Hat Insights
|
||||||
<br />
|
<br />
|
||||||
</Content>
|
</Content>
|
||||||
)}
|
)}
|
||||||
{registrationType === 'register-now-rhc' && (
|
{registrationType === 'register-now-rhc' && (
|
||||||
<Content component="li">
|
<Content component='li'>
|
||||||
Use remote host configuration (rhc) utility
|
Use remote host configuration (rhc) utility
|
||||||
<br />
|
<br />
|
||||||
</Content>
|
</Content>
|
||||||
)}
|
)}
|
||||||
</Content>
|
</Content>
|
||||||
</Content>
|
</Content>
|
||||||
<Content component={ContentVariants.dt} className="pf-v6-u-min-width">
|
<Content component={ContentVariants.dt} className='pf-v6-u-min-width'>
|
||||||
Activation key
|
Activation key
|
||||||
</Content>
|
</Content>
|
||||||
<Content component={ContentVariants.dd}>
|
<Content component={ContentVariants.dd}>
|
||||||
|
|
@ -702,8 +702,8 @@ export const RegisterNowList = () => {
|
||||||
</Content>
|
</Content>
|
||||||
{isError && (
|
{isError && (
|
||||||
<Alert
|
<Alert
|
||||||
title="Information about the activation key unavailable"
|
title='Information about the activation key unavailable'
|
||||||
variant="danger"
|
variant='danger'
|
||||||
isPlain
|
isPlain
|
||||||
isInline
|
isInline
|
||||||
>
|
>
|
||||||
|
|
@ -721,12 +721,12 @@ export const DetailsList = () => {
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Content>
|
<Content>
|
||||||
<Content component={ContentVariants.dl} className="review-step-dl">
|
<Content component={ContentVariants.dl} className='review-step-dl'>
|
||||||
{blueprintName && (
|
{blueprintName && (
|
||||||
<>
|
<>
|
||||||
<Content
|
<Content
|
||||||
component={ContentVariants.dt}
|
component={ContentVariants.dt}
|
||||||
className="pf-v6-u-min-width"
|
className='pf-v6-u-min-width'
|
||||||
>
|
>
|
||||||
Blueprint name
|
Blueprint name
|
||||||
</Content>
|
</Content>
|
||||||
|
|
@ -737,7 +737,7 @@ export const DetailsList = () => {
|
||||||
<>
|
<>
|
||||||
<Content
|
<Content
|
||||||
component={ContentVariants.dt}
|
component={ContentVariants.dt}
|
||||||
className="pf-v6-u-min-width"
|
className='pf-v6-u-min-width'
|
||||||
>
|
>
|
||||||
Description
|
Description
|
||||||
</Content>
|
</Content>
|
||||||
|
|
@ -761,14 +761,14 @@ export const TimezoneList = () => {
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<Content component={ContentVariants.dl} className="review-step-dl">
|
<Content component={ContentVariants.dl} className='review-step-dl'>
|
||||||
<Content component={ContentVariants.dt} className="pf-v6-u-min-width">
|
<Content component={ContentVariants.dt} className='pf-v6-u-min-width'>
|
||||||
Timezone
|
Timezone
|
||||||
</Content>
|
</Content>
|
||||||
<Content component={ContentVariants.dd}>
|
<Content component={ContentVariants.dd}>
|
||||||
{timezone ? timezone : 'None'}
|
{timezone ? timezone : 'None'}
|
||||||
</Content>
|
</Content>
|
||||||
<Content component={ContentVariants.dt} className="pf-v6-u-min-width">
|
<Content component={ContentVariants.dt} className='pf-v6-u-min-width'>
|
||||||
NTP servers
|
NTP servers
|
||||||
</Content>
|
</Content>
|
||||||
<Content component={ContentVariants.dd}>
|
<Content component={ContentVariants.dd}>
|
||||||
|
|
@ -788,30 +788,30 @@ export const UsersList = () => {
|
||||||
<Content
|
<Content
|
||||||
key={user.name}
|
key={user.name}
|
||||||
component={ContentVariants.dl}
|
component={ContentVariants.dl}
|
||||||
className="review-step-dl"
|
className='review-step-dl'
|
||||||
>
|
>
|
||||||
<Content component={ContentVariants.dt} className="pf-v6-u-min-width">
|
<Content component={ContentVariants.dt} className='pf-v6-u-min-width'>
|
||||||
Username
|
Username
|
||||||
</Content>
|
</Content>
|
||||||
<Content component={ContentVariants.dd} className="pf-v6-u-min-width">
|
<Content component={ContentVariants.dd} className='pf-v6-u-min-width'>
|
||||||
{user.name ? user.name : 'None'}
|
{user.name ? user.name : 'None'}
|
||||||
</Content>
|
</Content>
|
||||||
<Content component={ContentVariants.dt} className="pf-v6-u-min-width">
|
<Content component={ContentVariants.dt} className='pf-v6-u-min-width'>
|
||||||
Password
|
Password
|
||||||
</Content>
|
</Content>
|
||||||
<Content component={ContentVariants.dd} className="pf-v6-u-min-width">
|
<Content component={ContentVariants.dd} className='pf-v6-u-min-width'>
|
||||||
{user.password || user.hasPassword ? '●'.repeat(8) : 'None'}
|
{user.password || user.hasPassword ? '●'.repeat(8) : 'None'}
|
||||||
</Content>
|
</Content>
|
||||||
<Content component={ContentVariants.dt} className="pf-v6-u-min-width">
|
<Content component={ContentVariants.dt} className='pf-v6-u-min-width'>
|
||||||
SSH key
|
SSH key
|
||||||
</Content>
|
</Content>
|
||||||
<Content component={ContentVariants.dd} className="pf-v6-u-min-width">
|
<Content component={ContentVariants.dd} className='pf-v6-u-min-width'>
|
||||||
{user.ssh_key ? user.ssh_key : 'None'}
|
{user.ssh_key ? user.ssh_key : 'None'}
|
||||||
</Content>
|
</Content>
|
||||||
<Content component={ContentVariants.dt} className="pf-v6-u-min-width">
|
<Content component={ContentVariants.dt} className='pf-v6-u-min-width'>
|
||||||
Administrator
|
Administrator
|
||||||
</Content>
|
</Content>
|
||||||
<Content component={ContentVariants.dd} className="pf-v6-u-min-width">
|
<Content component={ContentVariants.dd} className='pf-v6-u-min-width'>
|
||||||
{user.isAdministrator ? 'True' : 'False'}
|
{user.isAdministrator ? 'True' : 'False'}
|
||||||
</Content>
|
</Content>
|
||||||
</Content>
|
</Content>
|
||||||
|
|
@ -826,14 +826,14 @@ export const LocaleList = () => {
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Content>
|
<Content>
|
||||||
<Content component={ContentVariants.dl} className="review-step-dl">
|
<Content component={ContentVariants.dl} className='review-step-dl'>
|
||||||
<Content component={ContentVariants.dt} className="pf-v6-u-min-width">
|
<Content component={ContentVariants.dt} className='pf-v6-u-min-width'>
|
||||||
Languages
|
Languages
|
||||||
</Content>
|
</Content>
|
||||||
<Content component={ContentVariants.dd}>
|
<Content component={ContentVariants.dd}>
|
||||||
{languages && languages.length > 0 ? languages.join(', ') : 'None'}
|
{languages && languages.length > 0 ? languages.join(', ') : 'None'}
|
||||||
</Content>
|
</Content>
|
||||||
<Content component={ContentVariants.dt} className="pf-v6-u-min-width">
|
<Content component={ContentVariants.dt} className='pf-v6-u-min-width'>
|
||||||
Keyboard
|
Keyboard
|
||||||
</Content>
|
</Content>
|
||||||
<Content component={ContentVariants.dd}>
|
<Content component={ContentVariants.dd}>
|
||||||
|
|
@ -849,8 +849,8 @@ export const HostnameList = () => {
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Content>
|
<Content>
|
||||||
<Content component={ContentVariants.dl} className="review-step-dl">
|
<Content component={ContentVariants.dl} className='review-step-dl'>
|
||||||
<Content component={ContentVariants.dt} className="pf-v6-u-min-width">
|
<Content component={ContentVariants.dt} className='pf-v6-u-min-width'>
|
||||||
Hostname
|
Hostname
|
||||||
</Content>
|
</Content>
|
||||||
<Content component={ContentVariants.dd}>
|
<Content component={ContentVariants.dd}>
|
||||||
|
|
@ -866,14 +866,14 @@ export const KernelList = () => {
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Content>
|
<Content>
|
||||||
<Content component={ContentVariants.dl} className="review-step-dl">
|
<Content component={ContentVariants.dl} className='review-step-dl'>
|
||||||
<Content component={ContentVariants.dt} className="pf-v6-u-min-width">
|
<Content component={ContentVariants.dt} className='pf-v6-u-min-width'>
|
||||||
Name
|
Name
|
||||||
</Content>
|
</Content>
|
||||||
<Content component={ContentVariants.dd}>
|
<Content component={ContentVariants.dd}>
|
||||||
{kernel.name ? kernel.name : 'None'}
|
{kernel.name ? kernel.name : 'None'}
|
||||||
</Content>
|
</Content>
|
||||||
<Content component={ContentVariants.dt} className="pf-v6-u-min-width">
|
<Content component={ContentVariants.dt} className='pf-v6-u-min-width'>
|
||||||
Append
|
Append
|
||||||
</Content>
|
</Content>
|
||||||
<Content component={ContentVariants.dd}>
|
<Content component={ContentVariants.dd}>
|
||||||
|
|
@ -895,8 +895,8 @@ export const FirewallList = () => {
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Content>
|
<Content>
|
||||||
<Content component={ContentVariants.dl} className="review-step-dl">
|
<Content component={ContentVariants.dl} className='review-step-dl'>
|
||||||
<Content component={ContentVariants.dt} className="pf-v6-u-min-width">
|
<Content component={ContentVariants.dt} className='pf-v6-u-min-width'>
|
||||||
Ports
|
Ports
|
||||||
</Content>
|
</Content>
|
||||||
<Content component={ContentVariants.dd}>
|
<Content component={ContentVariants.dd}>
|
||||||
|
|
@ -908,7 +908,7 @@ export const FirewallList = () => {
|
||||||
'None'
|
'None'
|
||||||
)}
|
)}
|
||||||
</Content>
|
</Content>
|
||||||
<Content component={ContentVariants.dt} className="pf-v6-u-min-width">
|
<Content component={ContentVariants.dt} className='pf-v6-u-min-width'>
|
||||||
Enabled services
|
Enabled services
|
||||||
</Content>
|
</Content>
|
||||||
<Content component={ContentVariants.dd}>
|
<Content component={ContentVariants.dd}>
|
||||||
|
|
@ -922,7 +922,7 @@ export const FirewallList = () => {
|
||||||
'None'
|
'None'
|
||||||
)}
|
)}
|
||||||
</Content>
|
</Content>
|
||||||
<Content component={ContentVariants.dt} className="pf-v6-u-min-width">
|
<Content component={ContentVariants.dt} className='pf-v6-u-min-width'>
|
||||||
Disabled services
|
Disabled services
|
||||||
</Content>
|
</Content>
|
||||||
<Content component={ContentVariants.dd}>
|
<Content component={ContentVariants.dd}>
|
||||||
|
|
@ -946,8 +946,8 @@ export const ServicesList = () => {
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Content>
|
<Content>
|
||||||
<Content component={ContentVariants.dl} className="review-step-dl">
|
<Content component={ContentVariants.dl} className='review-step-dl'>
|
||||||
<Content component={ContentVariants.dt} className="pf-v6-u-min-width">
|
<Content component={ContentVariants.dt} className='pf-v6-u-min-width'>
|
||||||
Enabled
|
Enabled
|
||||||
</Content>
|
</Content>
|
||||||
<Content component={ContentVariants.dd}>
|
<Content component={ContentVariants.dd}>
|
||||||
|
|
@ -959,7 +959,7 @@ export const ServicesList = () => {
|
||||||
'None'
|
'None'
|
||||||
)}
|
)}
|
||||||
</Content>
|
</Content>
|
||||||
<Content component={ContentVariants.dt} className="pf-v6-u-min-width">
|
<Content component={ContentVariants.dt} className='pf-v6-u-min-width'>
|
||||||
Disabled
|
Disabled
|
||||||
</Content>
|
</Content>
|
||||||
<Content component={ContentVariants.dd}>
|
<Content component={ContentVariants.dd}>
|
||||||
|
|
@ -971,7 +971,7 @@ export const ServicesList = () => {
|
||||||
'None'
|
'None'
|
||||||
)}
|
)}
|
||||||
</Content>
|
</Content>
|
||||||
<Content component={ContentVariants.dt} className="pf-v6-u-min-width">
|
<Content component={ContentVariants.dt} className='pf-v6-u-min-width'>
|
||||||
Masked
|
Masked
|
||||||
</Content>
|
</Content>
|
||||||
<Content component={ContentVariants.dd}>
|
<Content component={ContentVariants.dd}>
|
||||||
|
|
@ -993,8 +993,8 @@ export const FirstBootList = () => {
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Content>
|
<Content>
|
||||||
<Content component={ContentVariants.dl} className="review-step-dl">
|
<Content component={ContentVariants.dl} className='review-step-dl'>
|
||||||
<Content component={ContentVariants.dt} className="pf-v6-u-min-width">
|
<Content component={ContentVariants.dt} className='pf-v6-u-min-width'>
|
||||||
First boot script
|
First boot script
|
||||||
</Content>
|
</Content>
|
||||||
<Content component={ContentVariants.dd}>
|
<Content component={ContentVariants.dd}>
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,7 @@ const ReviewStep = () => {
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Form>
|
<Form>
|
||||||
<Title headingLevel="h1" size="xl">
|
<Title headingLevel='h1' size='xl'>
|
||||||
Review {blueprintName} blueprint
|
Review {blueprintName} blueprint
|
||||||
</Title>
|
</Title>
|
||||||
{blueprintDescription && <Content>{blueprintDescription}</Content>}
|
{blueprintDescription && <Content>{blueprintDescription}</Content>}
|
||||||
|
|
|
||||||
|
|
@ -54,56 +54,56 @@ const ServicesInput = () => {
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<FormGroup isRequired={false} label="Enabled services">
|
<FormGroup isRequired={false} label='Enabled services'>
|
||||||
<LabelInput
|
<LabelInput
|
||||||
ariaLabel="Add enabled service"
|
ariaLabel='Add enabled service'
|
||||||
placeholder="Add enabled service"
|
placeholder='Add enabled service'
|
||||||
validator={isServiceValid}
|
validator={isServiceValid}
|
||||||
list={enabledServices.filter(
|
list={enabledServices.filter(
|
||||||
(service) => !enabledRequiredByOpenSCAP.includes(service),
|
(service) => !enabledRequiredByOpenSCAP.includes(service),
|
||||||
)}
|
)}
|
||||||
requiredList={enabledRequiredByOpenSCAP}
|
requiredList={enabledRequiredByOpenSCAP}
|
||||||
requiredCategoryName="Required by OpenSCAP"
|
requiredCategoryName='Required by OpenSCAP'
|
||||||
item="Enabled service"
|
item='Enabled service'
|
||||||
addAction={addEnabledService}
|
addAction={addEnabledService}
|
||||||
removeAction={removeEnabledService}
|
removeAction={removeEnabledService}
|
||||||
stepValidation={stepValidation}
|
stepValidation={stepValidation}
|
||||||
fieldName="enabledSystemdServices"
|
fieldName='enabledSystemdServices'
|
||||||
/>
|
/>
|
||||||
</FormGroup>
|
</FormGroup>
|
||||||
<FormGroup isRequired={false} label="Disabled services">
|
<FormGroup isRequired={false} label='Disabled services'>
|
||||||
<LabelInput
|
<LabelInput
|
||||||
ariaLabel="Add disabled service"
|
ariaLabel='Add disabled service'
|
||||||
placeholder="Add disabled service"
|
placeholder='Add disabled service'
|
||||||
validator={isServiceValid}
|
validator={isServiceValid}
|
||||||
list={disabledServices.filter(
|
list={disabledServices.filter(
|
||||||
(service) =>
|
(service) =>
|
||||||
!oscapProfileInfo?.services?.disabled?.includes(service),
|
!oscapProfileInfo?.services?.disabled?.includes(service),
|
||||||
)}
|
)}
|
||||||
requiredList={disabledRequiredByOpenSCAP}
|
requiredList={disabledRequiredByOpenSCAP}
|
||||||
requiredCategoryName="Required by OpenSCAP"
|
requiredCategoryName='Required by OpenSCAP'
|
||||||
item="Disabled service"
|
item='Disabled service'
|
||||||
addAction={addDisabledService}
|
addAction={addDisabledService}
|
||||||
removeAction={removeDisabledService}
|
removeAction={removeDisabledService}
|
||||||
stepValidation={stepValidation}
|
stepValidation={stepValidation}
|
||||||
fieldName="disabledSystemdServices"
|
fieldName='disabledSystemdServices'
|
||||||
/>
|
/>
|
||||||
</FormGroup>
|
</FormGroup>
|
||||||
<FormGroup isRequired={false} label="Masked services">
|
<FormGroup isRequired={false} label='Masked services'>
|
||||||
<LabelInput
|
<LabelInput
|
||||||
ariaLabel="Add masked service"
|
ariaLabel='Add masked service'
|
||||||
placeholder="Add masked service"
|
placeholder='Add masked service'
|
||||||
validator={isServiceValid}
|
validator={isServiceValid}
|
||||||
list={maskedServices.filter(
|
list={maskedServices.filter(
|
||||||
(service) => !oscapProfileInfo?.services?.masked?.includes(service),
|
(service) => !oscapProfileInfo?.services?.masked?.includes(service),
|
||||||
)}
|
)}
|
||||||
requiredList={maskedRequiredByOpenSCAP}
|
requiredList={maskedRequiredByOpenSCAP}
|
||||||
requiredCategoryName="Required by OpenSCAP"
|
requiredCategoryName='Required by OpenSCAP'
|
||||||
item="Masked service"
|
item='Masked service'
|
||||||
addAction={addMaskedService}
|
addAction={addMaskedService}
|
||||||
removeAction={removeMaskedService}
|
removeAction={removeMaskedService}
|
||||||
stepValidation={stepValidation}
|
stepValidation={stepValidation}
|
||||||
fieldName="maskedSystemdServices"
|
fieldName='maskedSystemdServices'
|
||||||
/>
|
/>
|
||||||
</FormGroup>
|
</FormGroup>
|
||||||
</>
|
</>
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ import ServicesInput from './components/ServicesInputs';
|
||||||
const ServicesStep = () => {
|
const ServicesStep = () => {
|
||||||
return (
|
return (
|
||||||
<Form>
|
<Form>
|
||||||
<Title headingLevel="h1" size="xl">
|
<Title headingLevel='h1' size='xl'>
|
||||||
Systemd services
|
Systemd services
|
||||||
</Title>
|
</Title>
|
||||||
<Content>Enable, disable and mask systemd services.</Content>
|
<Content>Enable, disable and mask systemd services.</Content>
|
||||||
|
|
|
||||||
|
|
@ -63,28 +63,28 @@ export default function Snapshot() {
|
||||||
<>
|
<>
|
||||||
<FormGroup>
|
<FormGroup>
|
||||||
<Radio
|
<Radio
|
||||||
id="use latest snapshot radio"
|
id='use latest snapshot radio'
|
||||||
name="use-latest-snapshot"
|
name='use-latest-snapshot'
|
||||||
label="Disable repeatable build"
|
label='Disable repeatable build'
|
||||||
description="Use the newest repository content available when building this image"
|
description='Use the newest repository content available when building this image'
|
||||||
isChecked={selectedOption === 'latest'}
|
isChecked={selectedOption === 'latest'}
|
||||||
onChange={() => handleOptionChange('latest')}
|
onChange={() => handleOptionChange('latest')}
|
||||||
/>
|
/>
|
||||||
<Radio
|
<Radio
|
||||||
id="use snapshot date radio"
|
id='use snapshot date radio'
|
||||||
name="use-snapshot-date"
|
name='use-snapshot-date'
|
||||||
label="Enable repeatable build"
|
label='Enable repeatable build'
|
||||||
description="Build this image with the repository content of a selected date"
|
description='Build this image with the repository content of a selected date'
|
||||||
isChecked={selectedOption === 'snapshotDate'}
|
isChecked={selectedOption === 'snapshotDate'}
|
||||||
onChange={() => handleOptionChange('snapshotDate')}
|
onChange={() => handleOptionChange('snapshotDate')}
|
||||||
/>
|
/>
|
||||||
{isTemplatesEnabled ? (
|
{isTemplatesEnabled ? (
|
||||||
<Radio
|
<Radio
|
||||||
id="use content template radio"
|
id='use content template radio'
|
||||||
ouiaId="use-content-template-radio"
|
ouiaId='use-content-template-radio'
|
||||||
name="use-content-template"
|
name='use-content-template'
|
||||||
label="Use a content template"
|
label='Use a content template'
|
||||||
description="Select a content template and build this image with repository snapshots included in that template"
|
description='Select a content template and build this image with repository snapshots included in that template'
|
||||||
isChecked={selectedOption === 'template'}
|
isChecked={selectedOption === 'template'}
|
||||||
onChange={() => handleOptionChange('template')}
|
onChange={() => handleOptionChange('template')}
|
||||||
/>
|
/>
|
||||||
|
|
@ -95,7 +95,7 @@ export default function Snapshot() {
|
||||||
|
|
||||||
{selectedOption === 'latest' ? (
|
{selectedOption === 'latest' ? (
|
||||||
<>
|
<>
|
||||||
<Title headingLevel="h1" size="xl">
|
<Title headingLevel='h1' size='xl'>
|
||||||
Use latest content
|
Use latest content
|
||||||
</Title>
|
</Title>
|
||||||
<Grid>
|
<Grid>
|
||||||
|
|
@ -107,21 +107,21 @@ export default function Snapshot() {
|
||||||
</>
|
</>
|
||||||
) : selectedOption === 'snapshotDate' ? (
|
) : selectedOption === 'snapshotDate' ? (
|
||||||
<>
|
<>
|
||||||
<Title headingLevel="h1" size="xl">
|
<Title headingLevel='h1' size='xl'>
|
||||||
Use a snapshot
|
Use a snapshot
|
||||||
</Title>
|
</Title>
|
||||||
<FormGroup label="Select snapshot date" isRequired>
|
<FormGroup label='Select snapshot date' isRequired>
|
||||||
<Flex
|
<Flex
|
||||||
direction={{ default: 'row' }}
|
direction={{ default: 'row' }}
|
||||||
alignContent={{ default: 'alignContentCenter' }}
|
alignContent={{ default: 'alignContentCenter' }}
|
||||||
>
|
>
|
||||||
<DatePicker
|
<DatePicker
|
||||||
id="snapshot-date-picker"
|
id='snapshot-date-picker'
|
||||||
name="pick-snapshot-date"
|
name='pick-snapshot-date'
|
||||||
value={snapshotDate ? snapshotDate.split('T')[0] : ''}
|
value={snapshotDate ? snapshotDate.split('T')[0] : ''}
|
||||||
required
|
required
|
||||||
requiredDateOptions={{ isRequired: true }}
|
requiredDateOptions={{ isRequired: true }}
|
||||||
placeholder="YYYY-MM-DD"
|
placeholder='YYYY-MM-DD'
|
||||||
validators={[
|
validators={[
|
||||||
(date: Date) => {
|
(date: Date) => {
|
||||||
if (!isSnapshotDateValid(date)) {
|
if (!isSnapshotDateValid(date)) {
|
||||||
|
|
@ -134,7 +134,7 @@ export default function Snapshot() {
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<Button
|
<Button
|
||||||
variant="link"
|
variant='link'
|
||||||
onClick={async () => {
|
onClick={async () => {
|
||||||
//Patternfly DatePicker seems to only clear error text if value is reset to '',
|
//Patternfly DatePicker seems to only clear error text if value is reset to '',
|
||||||
// if you have an invalid date (2000-01-010000) and try to reset it, it must be set to '' first
|
// if you have an invalid date (2000-01-010000) and try to reset it, it must be set to '' first
|
||||||
|
|
@ -154,7 +154,7 @@ export default function Snapshot() {
|
||||||
</>
|
</>
|
||||||
) : isTemplatesEnabled && selectedOption === 'template' ? (
|
) : isTemplatesEnabled && selectedOption === 'template' ? (
|
||||||
<>
|
<>
|
||||||
<Title headingLevel="h1" size="xl">
|
<Title headingLevel='h1' size='xl'>
|
||||||
Use a content template
|
Use a content template
|
||||||
</Title>
|
</Title>
|
||||||
<Templates />
|
<Templates />
|
||||||
|
|
|
||||||
|
|
@ -86,7 +86,7 @@ const Templates = () => {
|
||||||
<Panel>
|
<Panel>
|
||||||
{templateList.length > 0 ? (
|
{templateList.length > 0 ? (
|
||||||
<Button
|
<Button
|
||||||
variant="primary"
|
variant='primary'
|
||||||
isInline
|
isInline
|
||||||
onClick={() => refresh()}
|
onClick={() => refresh()}
|
||||||
isLoading={isFetching}
|
isLoading={isFetching}
|
||||||
|
|
@ -109,10 +109,10 @@ const Templates = () => {
|
||||||
onPerPageSelect={handlePerPageSelect}
|
onPerPageSelect={handlePerPageSelect}
|
||||||
isCompact
|
isCompact
|
||||||
/>
|
/>
|
||||||
<Table variant="compact">
|
<Table variant='compact'>
|
||||||
<Thead>
|
<Thead>
|
||||||
<Tr>
|
<Tr>
|
||||||
<Th aria-label="Selected" />
|
<Th aria-label='Selected' />
|
||||||
<Th width={15}>Name</Th>
|
<Th width={15}>Name</Th>
|
||||||
<Th width={50}>Description</Th>
|
<Th width={50}>Description</Th>
|
||||||
<Th width={15}>Snapshot date</Th>
|
<Th width={15}>Snapshot date</Th>
|
||||||
|
|
|
||||||
|
|
@ -19,9 +19,9 @@ const TemplatesEmpty = ({ refetch }: TemplatesEmptyProps) => {
|
||||||
const GoToTemplatesButton = () => {
|
const GoToTemplatesButton = () => {
|
||||||
return (
|
return (
|
||||||
<Button
|
<Button
|
||||||
component="a"
|
component='a'
|
||||||
target="_blank"
|
target='_blank'
|
||||||
variant="link"
|
variant='link'
|
||||||
icon={<ExternalLinkAltIcon />}
|
icon={<ExternalLinkAltIcon />}
|
||||||
href={TEMPLATES_URL}
|
href={TEMPLATES_URL}
|
||||||
>
|
>
|
||||||
|
|
@ -32,7 +32,7 @@ const TemplatesEmpty = ({ refetch }: TemplatesEmptyProps) => {
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<EmptyState
|
<EmptyState
|
||||||
headingLevel="h4"
|
headingLevel='h4'
|
||||||
titleText={'No content templates'}
|
titleText={'No content templates'}
|
||||||
variant={EmptyStateVariant.lg}
|
variant={EmptyStateVariant.lg}
|
||||||
>
|
>
|
||||||
|
|
@ -42,7 +42,7 @@ const TemplatesEmpty = ({ refetch }: TemplatesEmptyProps) => {
|
||||||
</EmptyStateBody>
|
</EmptyStateBody>
|
||||||
<EmptyStateFooter>
|
<EmptyStateFooter>
|
||||||
<GoToTemplatesButton />
|
<GoToTemplatesButton />
|
||||||
<Button variant="secondary" isInline onClick={() => refetch()}>
|
<Button variant='secondary' isInline onClick={() => refetch()}>
|
||||||
Refresh
|
Refresh
|
||||||
</Button>
|
</Button>
|
||||||
</EmptyStateFooter>
|
</EmptyStateFooter>
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@ import ManageRepositoriesButton from '../Repositories/components/ManageRepositor
|
||||||
export default function SnapshotStep() {
|
export default function SnapshotStep() {
|
||||||
return (
|
return (
|
||||||
<Form>
|
<Form>
|
||||||
<Title headingLevel="h1" size="xl">
|
<Title headingLevel='h1' size='xl'>
|
||||||
Repeatable build
|
Repeatable build
|
||||||
</Title>
|
</Title>
|
||||||
<Content>
|
<Content>
|
||||||
|
|
|
||||||
|
|
@ -32,17 +32,17 @@ export const AwsAccountId = () => {
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<FormGroup label="Associated account ID" isRequired>
|
<FormGroup label='Associated account ID' isRequired>
|
||||||
<TextInput
|
<TextInput
|
||||||
readOnlyVariant="default"
|
readOnlyVariant='default'
|
||||||
isRequired
|
isRequired
|
||||||
id="aws-account-id"
|
id='aws-account-id'
|
||||||
value={sourceId && data ? (data.aws?.account_id ?? '') : ''}
|
value={sourceId && data ? (data.aws?.account_id ?? '') : ''}
|
||||||
aria-label="aws account id"
|
aria-label='aws account id'
|
||||||
/>
|
/>
|
||||||
</FormGroup>
|
</FormGroup>
|
||||||
<HelperText>
|
<HelperText>
|
||||||
<HelperTextItem component="div" variant="default">
|
<HelperTextItem component='div' variant='default'>
|
||||||
This is the account associated with the source.
|
This is the account associated with the source.
|
||||||
</HelperTextItem>
|
</HelperTextItem>
|
||||||
</HelperText>
|
</HelperText>
|
||||||
|
|
|
||||||
|
|
@ -120,15 +120,15 @@ export const AwsSourcesSelect = () => {
|
||||||
|
|
||||||
if (isFetching) {
|
if (isFetching) {
|
||||||
selectOptionsElement.push(
|
selectOptionsElement.push(
|
||||||
<SelectOption key="fetching" value="loader">
|
<SelectOption key='fetching' value='loader'>
|
||||||
<Spinner size="lg" />
|
<Spinner size='lg' />
|
||||||
</SelectOption>,
|
</SelectOption>,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isSuccess && selectOptions.length === 0) {
|
if (isSuccess && selectOptions.length === 0) {
|
||||||
selectOptionsElement.push(
|
selectOptionsElement.push(
|
||||||
<SelectOption key="no_results" value="no_results" isDisabled>
|
<SelectOption key='no_results' value='no_results' isDisabled>
|
||||||
No results found
|
No results found
|
||||||
</SelectOption>,
|
</SelectOption>,
|
||||||
);
|
);
|
||||||
|
|
@ -140,7 +140,7 @@ export const AwsSourcesSelect = () => {
|
||||||
const toggle = (toggleRef: React.Ref<MenuToggleElement>) => (
|
const toggle = (toggleRef: React.Ref<MenuToggleElement>) => (
|
||||||
<MenuToggle
|
<MenuToggle
|
||||||
ref={toggleRef}
|
ref={toggleRef}
|
||||||
variant="typeahead"
|
variant='typeahead'
|
||||||
onClick={handleToggle}
|
onClick={handleToggle}
|
||||||
isExpanded={isOpen}
|
isExpanded={isOpen}
|
||||||
isDisabled={!isSuccess || isLoading}
|
isDisabled={!isSuccess || isLoading}
|
||||||
|
|
@ -150,8 +150,8 @@ export const AwsSourcesSelect = () => {
|
||||||
value={chosenSource?.name ? chosenSource.name : inputValue}
|
value={chosenSource?.name ? chosenSource.name : inputValue}
|
||||||
onClick={onInputClick}
|
onClick={onInputClick}
|
||||||
onChange={onTextInputChange}
|
onChange={onTextInputChange}
|
||||||
autoComplete="off"
|
autoComplete='off'
|
||||||
placeholder="Select source"
|
placeholder='Select source'
|
||||||
isExpanded={isOpen}
|
isExpanded={isOpen}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
|
|
@ -159,9 +159,9 @@ export const AwsSourcesSelect = () => {
|
||||||
<TextInputGroupUtilities>
|
<TextInputGroupUtilities>
|
||||||
<Button
|
<Button
|
||||||
icon={<TimesIcon />}
|
icon={<TimesIcon />}
|
||||||
variant="plain"
|
variant='plain'
|
||||||
onClick={handleClear}
|
onClick={handleClear}
|
||||||
aria-label="Clear input"
|
aria-label='Clear input'
|
||||||
/>
|
/>
|
||||||
</TextInputGroupUtilities>
|
</TextInputGroupUtilities>
|
||||||
)}
|
)}
|
||||||
|
|
@ -171,7 +171,7 @@ export const AwsSourcesSelect = () => {
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<FormGroup isRequired label={'Source name'} data-testid="sources">
|
<FormGroup isRequired label={'Source name'} data-testid='sources'>
|
||||||
<Select
|
<Select
|
||||||
isScrollable
|
isScrollable
|
||||||
isOpen={isOpen}
|
isOpen={isOpen}
|
||||||
|
|
|
||||||
|
|
@ -41,11 +41,11 @@ export type AwsShareMethod = 'manual' | 'sources';
|
||||||
const SourcesButton = () => {
|
const SourcesButton = () => {
|
||||||
return (
|
return (
|
||||||
<Button
|
<Button
|
||||||
component="a"
|
component='a'
|
||||||
target="_blank"
|
target='_blank'
|
||||||
variant="link"
|
variant='link'
|
||||||
icon={<ExternalLinkAltIcon />}
|
icon={<ExternalLinkAltIcon />}
|
||||||
iconPosition="right"
|
iconPosition='right'
|
||||||
isInline
|
isInline
|
||||||
href={'settings/sources'}
|
href={'settings/sources'}
|
||||||
>
|
>
|
||||||
|
|
@ -111,7 +111,7 @@ const Aws = () => {
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Form>
|
<Form>
|
||||||
<Title headingLevel="h1" size="xl">
|
<Title headingLevel='h1' size='xl'>
|
||||||
Target environment - Amazon Web Services
|
Target environment - Amazon Web Services
|
||||||
</Title>
|
</Title>
|
||||||
<Content>
|
<Content>
|
||||||
|
|
@ -125,12 +125,12 @@ const Aws = () => {
|
||||||
access the image, copy the image, which will be shared to your
|
access the image, copy the image, which will be shared to your
|
||||||
account by Red Hat, to your own AWS account.
|
account by Red Hat, to your own AWS account.
|
||||||
</Content>
|
</Content>
|
||||||
<FormGroup label="Share method:">
|
<FormGroup label='Share method:'>
|
||||||
<Radio
|
<Radio
|
||||||
id="radio-with-description"
|
id='radio-with-description'
|
||||||
label="Use an account configured from Sources."
|
label='Use an account configured from Sources.'
|
||||||
name="radio-7"
|
name='radio-7'
|
||||||
description="Use a configured source to launch environments directly from the console."
|
description='Use a configured source to launch environments directly from the console.'
|
||||||
isChecked={shareMethod === 'sources'}
|
isChecked={shareMethod === 'sources'}
|
||||||
onChange={() => {
|
onChange={() => {
|
||||||
dispatch(changeAwsSourceId(undefined));
|
dispatch(changeAwsSourceId(undefined));
|
||||||
|
|
@ -140,9 +140,9 @@ const Aws = () => {
|
||||||
autoFocus
|
autoFocus
|
||||||
/>
|
/>
|
||||||
<Radio
|
<Radio
|
||||||
id="radio"
|
id='radio'
|
||||||
label="Manually enter an account ID."
|
label='Manually enter an account ID.'
|
||||||
name="radio-8"
|
name='radio-8'
|
||||||
isChecked={shareMethod === 'manual'}
|
isChecked={shareMethod === 'manual'}
|
||||||
onChange={() => {
|
onChange={() => {
|
||||||
dispatch(changeAwsSourceId(undefined));
|
dispatch(changeAwsSourceId(undefined));
|
||||||
|
|
@ -160,16 +160,16 @@ const Aws = () => {
|
||||||
<SourcesButton />
|
<SourcesButton />
|
||||||
<Gallery hasGutter>
|
<Gallery hasGutter>
|
||||||
<GalleryItem>
|
<GalleryItem>
|
||||||
<FormGroup label="Default region" isRequired>
|
<FormGroup label='Default region' isRequired>
|
||||||
<TextInput
|
<TextInput
|
||||||
readOnlyVariant="default"
|
readOnlyVariant='default'
|
||||||
isRequired
|
isRequired
|
||||||
id="someid"
|
id='someid'
|
||||||
value="us-east-1"
|
value='us-east-1'
|
||||||
/>
|
/>
|
||||||
</FormGroup>
|
</FormGroup>
|
||||||
<HelperText>
|
<HelperText>
|
||||||
<HelperTextItem component="div" variant="default">
|
<HelperTextItem component='div' variant='default'>
|
||||||
Images are built in the default region but can be copied to
|
Images are built in the default region but can be copied to
|
||||||
other regions later.
|
other regions later.
|
||||||
</HelperTextItem>
|
</HelperTextItem>
|
||||||
|
|
@ -184,25 +184,25 @@ const Aws = () => {
|
||||||
{shareMethod === 'manual' && (
|
{shareMethod === 'manual' && (
|
||||||
<>
|
<>
|
||||||
{!process.env.IS_ON_PREMISE && (
|
{!process.env.IS_ON_PREMISE && (
|
||||||
<FormGroup label="AWS account ID" isRequired>
|
<FormGroup label='AWS account ID' isRequired>
|
||||||
<ValidatedInput
|
<ValidatedInput
|
||||||
ariaLabel="aws account id"
|
ariaLabel='aws account id'
|
||||||
value={shareWithAccount || ''}
|
value={shareWithAccount || ''}
|
||||||
validator={isAwsAccountIdValid}
|
validator={isAwsAccountIdValid}
|
||||||
onChange={(_event, value) =>
|
onChange={(_event, value) =>
|
||||||
dispatch(changeAwsAccountId(value))
|
dispatch(changeAwsAccountId(value))
|
||||||
}
|
}
|
||||||
helperText="Should be 12 characters long."
|
helperText='Should be 12 characters long.'
|
||||||
/>
|
/>
|
||||||
</FormGroup>
|
</FormGroup>
|
||||||
)}
|
)}
|
||||||
<FormGroup label="Default region" isRequired>
|
<FormGroup label='Default region' isRequired>
|
||||||
{!process.env.IS_ON_PREMISE && (
|
{!process.env.IS_ON_PREMISE && (
|
||||||
<TextInput
|
<TextInput
|
||||||
value={'us-east-1'}
|
value={'us-east-1'}
|
||||||
type="text"
|
type='text'
|
||||||
aria-label="default region"
|
aria-label='default region'
|
||||||
readOnlyVariant="default"
|
readOnlyVariant='default'
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
{process.env.IS_ON_PREMISE && (
|
{process.env.IS_ON_PREMISE && (
|
||||||
|
|
|
||||||
|
|
@ -15,9 +15,9 @@ export const AzureAuthButton = () => {
|
||||||
return (
|
return (
|
||||||
<FormGroup>
|
<FormGroup>
|
||||||
<Button
|
<Button
|
||||||
component="a"
|
component='a'
|
||||||
target="_blank"
|
target='_blank'
|
||||||
variant="secondary"
|
variant='secondary'
|
||||||
isDisabled={!guidRegex.test(tenantId)}
|
isDisabled={!guidRegex.test(tenantId)}
|
||||||
href={
|
href={
|
||||||
'https://login.microsoftonline.com/' +
|
'https://login.microsoftonline.com/' +
|
||||||
|
|
|
||||||
|
|
@ -31,16 +31,16 @@ export const AzureHyperVSelect = () => {
|
||||||
|
|
||||||
const selectOptions = [
|
const selectOptions = [
|
||||||
<SelectOption
|
<SelectOption
|
||||||
key="V1"
|
key='V1'
|
||||||
value="V1"
|
value='V1'
|
||||||
description="Hyper V Generation 1 (BIOS)"
|
description='Hyper V Generation 1 (BIOS)'
|
||||||
label="Hyper V Generation 1"
|
label='Hyper V Generation 1'
|
||||||
/>,
|
/>,
|
||||||
<SelectOption
|
<SelectOption
|
||||||
key="V2"
|
key='V2'
|
||||||
value="V2"
|
value='V2'
|
||||||
description="Hyper V Generation 2 (UEFI)"
|
description='Hyper V Generation 2 (UEFI)'
|
||||||
label="Hyper V Generation 2"
|
label='Hyper V Generation 2'
|
||||||
/>,
|
/>,
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
@ -56,7 +56,7 @@ export const AzureHyperVSelect = () => {
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<FormGroup isRequired label="HyperV Generation">
|
<FormGroup isRequired label='HyperV Generation'>
|
||||||
<Select
|
<Select
|
||||||
isScrollable
|
isScrollable
|
||||||
isOpen={isOpen}
|
isOpen={isOpen}
|
||||||
|
|
|
||||||
|
|
@ -103,7 +103,7 @@ export const AzureResourceGroups = () => {
|
||||||
const toggle = (toggleRef: React.Ref<MenuToggleElement>) => (
|
const toggle = (toggleRef: React.Ref<MenuToggleElement>) => (
|
||||||
<MenuToggle
|
<MenuToggle
|
||||||
ref={toggleRef}
|
ref={toggleRef}
|
||||||
variant="typeahead"
|
variant='typeahead'
|
||||||
onClick={() => setIsOpen(!isOpen)}
|
onClick={() => setIsOpen(!isOpen)}
|
||||||
isExpanded={isOpen}
|
isExpanded={isOpen}
|
||||||
isDisabled={!azureSource}
|
isDisabled={!azureSource}
|
||||||
|
|
@ -113,8 +113,8 @@ export const AzureResourceGroups = () => {
|
||||||
value={azureResourceGroup ? azureResourceGroup : inputValue}
|
value={azureResourceGroup ? azureResourceGroup : inputValue}
|
||||||
onClick={onInputClick}
|
onClick={onInputClick}
|
||||||
onChange={onTextInputChange}
|
onChange={onTextInputChange}
|
||||||
autoComplete="off"
|
autoComplete='off'
|
||||||
placeholder="Select resource group"
|
placeholder='Select resource group'
|
||||||
isExpanded={isOpen}
|
isExpanded={isOpen}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
|
|
@ -122,9 +122,9 @@ export const AzureResourceGroups = () => {
|
||||||
<TextInputGroupUtilities>
|
<TextInputGroupUtilities>
|
||||||
<Button
|
<Button
|
||||||
icon={<TimesIcon />}
|
icon={<TimesIcon />}
|
||||||
variant="plain"
|
variant='plain'
|
||||||
onClick={handleClear}
|
onClick={handleClear}
|
||||||
aria-label="Clear input"
|
aria-label='Clear input'
|
||||||
/>
|
/>
|
||||||
</TextInputGroupUtilities>
|
</TextInputGroupUtilities>
|
||||||
)}
|
)}
|
||||||
|
|
@ -146,8 +146,8 @@ export const AzureResourceGroups = () => {
|
||||||
>
|
>
|
||||||
<SelectList>
|
<SelectList>
|
||||||
{isFetching && (
|
{isFetching && (
|
||||||
<SelectOption value="loader">
|
<SelectOption value='loader'>
|
||||||
<Spinner size="lg" />
|
<Spinner size='lg' />
|
||||||
</SelectOption>
|
</SelectOption>
|
||||||
)}
|
)}
|
||||||
{selectOptions.length > 0 &&
|
{selectOptions.length > 0 &&
|
||||||
|
|
|
||||||
|
|
@ -151,7 +151,7 @@ export const AzureSourcesSelect = () => {
|
||||||
const toggle = (toggleRef: React.Ref<MenuToggleElement>) => (
|
const toggle = (toggleRef: React.Ref<MenuToggleElement>) => (
|
||||||
<MenuToggle
|
<MenuToggle
|
||||||
ref={toggleRef}
|
ref={toggleRef}
|
||||||
variant="typeahead"
|
variant='typeahead'
|
||||||
onClick={handleToggle}
|
onClick={handleToggle}
|
||||||
isExpanded={isOpen}
|
isExpanded={isOpen}
|
||||||
isDisabled={!isSuccess}
|
isDisabled={!isSuccess}
|
||||||
|
|
@ -161,8 +161,8 @@ export const AzureSourcesSelect = () => {
|
||||||
value={selectedSource ? selectedSource : inputValue}
|
value={selectedSource ? selectedSource : inputValue}
|
||||||
onClick={onInputClick}
|
onClick={onInputClick}
|
||||||
onChange={onTextInputChange}
|
onChange={onTextInputChange}
|
||||||
autoComplete="off"
|
autoComplete='off'
|
||||||
placeholder="Select source"
|
placeholder='Select source'
|
||||||
isExpanded={isOpen}
|
isExpanded={isOpen}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
|
|
@ -170,9 +170,9 @@ export const AzureSourcesSelect = () => {
|
||||||
<TextInputGroupUtilities>
|
<TextInputGroupUtilities>
|
||||||
<Button
|
<Button
|
||||||
icon={<TimesIcon />}
|
icon={<TimesIcon />}
|
||||||
variant="plain"
|
variant='plain'
|
||||||
onClick={handleClear}
|
onClick={handleClear}
|
||||||
aria-label="Clear input"
|
aria-label='Clear input'
|
||||||
/>
|
/>
|
||||||
</TextInputGroupUtilities>
|
</TextInputGroupUtilities>
|
||||||
)}
|
)}
|
||||||
|
|
@ -194,8 +194,8 @@ export const AzureSourcesSelect = () => {
|
||||||
>
|
>
|
||||||
<SelectList>
|
<SelectList>
|
||||||
{isFetching && (
|
{isFetching && (
|
||||||
<SelectOption key="loading" value="loader">
|
<SelectOption key='loading' value='loader'>
|
||||||
<Spinner size="lg" />
|
<Spinner size='lg' />
|
||||||
</SelectOption>
|
</SelectOption>
|
||||||
)}
|
)}
|
||||||
{selectOptions.length > 0 &&
|
{selectOptions.length > 0 &&
|
||||||
|
|
|
||||||
|
|
@ -43,11 +43,11 @@ export type AzureShareMethod = 'manual' | 'sources';
|
||||||
const SourcesButton = () => {
|
const SourcesButton = () => {
|
||||||
return (
|
return (
|
||||||
<Button
|
<Button
|
||||||
component="a"
|
component='a'
|
||||||
target="_blank"
|
target='_blank'
|
||||||
variant="link"
|
variant='link'
|
||||||
icon={<ExternalLinkAltIcon />}
|
icon={<ExternalLinkAltIcon />}
|
||||||
iconPosition="right"
|
iconPosition='right'
|
||||||
isInline
|
isInline
|
||||||
href={'settings/sources'}
|
href={'settings/sources'}
|
||||||
>
|
>
|
||||||
|
|
@ -65,7 +65,7 @@ const Azure = () => {
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Form>
|
<Form>
|
||||||
<Title headingLevel="h1" size="xl">
|
<Title headingLevel='h1' size='xl'>
|
||||||
Target environment - Microsoft Azure
|
Target environment - Microsoft Azure
|
||||||
</Title>
|
</Title>
|
||||||
<Content>
|
<Content>
|
||||||
|
|
@ -81,11 +81,11 @@ const Azure = () => {
|
||||||
defining target by Source selection.
|
defining target by Source selection.
|
||||||
<br />
|
<br />
|
||||||
<Button
|
<Button
|
||||||
component="a"
|
component='a'
|
||||||
target="_blank"
|
target='_blank'
|
||||||
variant="link"
|
variant='link'
|
||||||
icon={<ExternalLinkAltIcon />}
|
icon={<ExternalLinkAltIcon />}
|
||||||
iconPosition="right"
|
iconPosition='right'
|
||||||
isInline
|
isInline
|
||||||
href={AZURE_AUTH_URL}
|
href={AZURE_AUTH_URL}
|
||||||
>
|
>
|
||||||
|
|
@ -93,12 +93,12 @@ const Azure = () => {
|
||||||
</Button>
|
</Button>
|
||||||
</Content>
|
</Content>
|
||||||
<AzureHyperVSelect />
|
<AzureHyperVSelect />
|
||||||
<FormGroup label="Share method:">
|
<FormGroup label='Share method:'>
|
||||||
<Radio
|
<Radio
|
||||||
id="radio-with-description"
|
id='radio-with-description'
|
||||||
label="Use an account configured from Sources."
|
label='Use an account configured from Sources.'
|
||||||
name="radio-7"
|
name='radio-7'
|
||||||
description="Use a configured source to launch environments directly from the console."
|
description='Use a configured source to launch environments directly from the console.'
|
||||||
isChecked={shareMethod === 'sources'}
|
isChecked={shareMethod === 'sources'}
|
||||||
onChange={() => {
|
onChange={() => {
|
||||||
dispatch(changeAzureSource(''));
|
dispatch(changeAzureSource(''));
|
||||||
|
|
@ -110,9 +110,9 @@ const Azure = () => {
|
||||||
autoFocus
|
autoFocus
|
||||||
/>
|
/>
|
||||||
<Radio
|
<Radio
|
||||||
id="radio"
|
id='radio'
|
||||||
label="Manually enter the account information."
|
label='Manually enter the account information.'
|
||||||
name="radio-8"
|
name='radio-8'
|
||||||
isChecked={shareMethod === 'manual'}
|
isChecked={shareMethod === 'manual'}
|
||||||
onChange={() => {
|
onChange={() => {
|
||||||
dispatch(changeAzureSource(''));
|
dispatch(changeAzureSource(''));
|
||||||
|
|
@ -129,24 +129,24 @@ const Azure = () => {
|
||||||
<SourcesButton />
|
<SourcesButton />
|
||||||
<Gallery hasGutter>
|
<Gallery hasGutter>
|
||||||
<GalleryItem>
|
<GalleryItem>
|
||||||
<FormGroup label="Azure tenant GUID" isRequired>
|
<FormGroup label='Azure tenant GUID' isRequired>
|
||||||
<TextInput
|
<TextInput
|
||||||
aria-label="Azure tenant GUID"
|
aria-label='Azure tenant GUID'
|
||||||
readOnlyVariant="default"
|
readOnlyVariant='default'
|
||||||
isRequired
|
isRequired
|
||||||
id="tenant id"
|
id='tenant id'
|
||||||
value={tenantId}
|
value={tenantId}
|
||||||
/>
|
/>
|
||||||
</FormGroup>
|
</FormGroup>
|
||||||
</GalleryItem>
|
</GalleryItem>
|
||||||
<GalleryItem>
|
<GalleryItem>
|
||||||
<FormGroup label="Subscription ID" isRequired>
|
<FormGroup label='Subscription ID' isRequired>
|
||||||
<TextInput
|
<TextInput
|
||||||
aria-label="Subscription ID"
|
aria-label='Subscription ID'
|
||||||
label="Subscription ID"
|
label='Subscription ID'
|
||||||
readOnlyVariant="default"
|
readOnlyVariant='default'
|
||||||
isRequired
|
isRequired
|
||||||
id="subscription id"
|
id='subscription id'
|
||||||
value={subscriptionId}
|
value={subscriptionId}
|
||||||
/>
|
/>
|
||||||
</FormGroup>
|
</FormGroup>
|
||||||
|
|
@ -158,36 +158,36 @@ const Azure = () => {
|
||||||
)}
|
)}
|
||||||
{shareMethod === 'manual' && (
|
{shareMethod === 'manual' && (
|
||||||
<>
|
<>
|
||||||
<FormGroup label="Azure tenant GUID" isRequired>
|
<FormGroup label='Azure tenant GUID' isRequired>
|
||||||
<ValidatedInput
|
<ValidatedInput
|
||||||
ariaLabel="Azure tenant GUID"
|
ariaLabel='Azure tenant GUID'
|
||||||
value={tenantId || ''}
|
value={tenantId || ''}
|
||||||
validator={isAzureTenantGUIDValid}
|
validator={isAzureTenantGUIDValid}
|
||||||
onChange={(_event, value) => dispatch(changeAzureTenantId(value))}
|
onChange={(_event, value) => dispatch(changeAzureTenantId(value))}
|
||||||
helperText="Please enter a valid tenant ID"
|
helperText='Please enter a valid tenant ID'
|
||||||
/>
|
/>
|
||||||
</FormGroup>
|
</FormGroup>
|
||||||
<AzureAuthButton />
|
<AzureAuthButton />
|
||||||
<FormGroup label="Subscription ID" isRequired>
|
<FormGroup label='Subscription ID' isRequired>
|
||||||
<ValidatedInput
|
<ValidatedInput
|
||||||
ariaLabel="subscription id"
|
ariaLabel='subscription id'
|
||||||
value={subscriptionId}
|
value={subscriptionId}
|
||||||
validator={isAzureSubscriptionIdValid}
|
validator={isAzureSubscriptionIdValid}
|
||||||
onChange={(_event, value) =>
|
onChange={(_event, value) =>
|
||||||
dispatch(changeAzureSubscriptionId(value))
|
dispatch(changeAzureSubscriptionId(value))
|
||||||
}
|
}
|
||||||
helperText="Please enter a valid subscription ID"
|
helperText='Please enter a valid subscription ID'
|
||||||
/>
|
/>
|
||||||
</FormGroup>
|
</FormGroup>
|
||||||
<FormGroup label="Resource group" isRequired>
|
<FormGroup label='Resource group' isRequired>
|
||||||
<ValidatedInput
|
<ValidatedInput
|
||||||
ariaLabel="resource group"
|
ariaLabel='resource group'
|
||||||
value={resourceGroup}
|
value={resourceGroup}
|
||||||
validator={isAzureResourceGroupValid}
|
validator={isAzureResourceGroupValid}
|
||||||
onChange={(_event, value) =>
|
onChange={(_event, value) =>
|
||||||
dispatch(changeAzureResourceGroup(value))
|
dispatch(changeAzureResourceGroup(value))
|
||||||
}
|
}
|
||||||
helperText="Resource group names only allow alphanumeric characters, periods, underscores, hyphens, and parenthesis and cannot end in a period"
|
helperText='Resource group names only allow alphanumeric characters, periods, underscores, hyphens, and parenthesis and cannot end in a period'
|
||||||
/>
|
/>
|
||||||
</FormGroup>
|
</FormGroup>
|
||||||
</>
|
</>
|
||||||
|
|
|
||||||
|
|
@ -38,18 +38,18 @@ const Gcp = () => {
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Form>
|
<Form>
|
||||||
<Title headingLevel="h1" size="xl">
|
<Title headingLevel='h1' size='xl'>
|
||||||
Target environment - Google Cloud Platform
|
Target environment - Google Cloud Platform
|
||||||
</Title>
|
</Title>
|
||||||
<Content>
|
<Content>
|
||||||
Select how to share your image. The image you create can be used to
|
Select how to share your image. The image you create can be used to
|
||||||
launch instances on GCP, regardless of which method you select.
|
launch instances on GCP, regardless of which method you select.
|
||||||
</Content>
|
</Content>
|
||||||
<FormGroup label="Select image sharing" isRequired>
|
<FormGroup label='Select image sharing' isRequired>
|
||||||
<Radio
|
<Radio
|
||||||
id="share-with-google"
|
id='share-with-google'
|
||||||
label="Share image with a Google account"
|
label='Share image with a Google account'
|
||||||
name="radio-1"
|
name='radio-1'
|
||||||
description={
|
description={
|
||||||
<Content component={ContentVariants.small}>
|
<Content component={ContentVariants.small}>
|
||||||
Your image will be uploaded to GCP and shared with the account you
|
Your image will be uploaded to GCP and shared with the account you
|
||||||
|
|
@ -65,9 +65,9 @@ const Gcp = () => {
|
||||||
autoFocus
|
autoFocus
|
||||||
/>
|
/>
|
||||||
<Radio
|
<Radio
|
||||||
id="share-with-insights"
|
id='share-with-insights'
|
||||||
label="Share image with Red Hat Insights only"
|
label='Share image with Red Hat Insights only'
|
||||||
name="radio-2"
|
name='radio-2'
|
||||||
description={
|
description={
|
||||||
<Content component={ContentVariants.small}>
|
<Content component={ContentVariants.small}>
|
||||||
Your image will be uploaded to GCP and shared with Red Hat
|
Your image will be uploaded to GCP and shared with Red Hat
|
||||||
|
|
@ -84,38 +84,38 @@ const Gcp = () => {
|
||||||
</FormGroup>
|
</FormGroup>
|
||||||
{shareMethod === 'withGoogle' && (
|
{shareMethod === 'withGoogle' && (
|
||||||
<>
|
<>
|
||||||
<FormGroup label="Account type" isRequired>
|
<FormGroup label='Account type' isRequired>
|
||||||
<Radio
|
<Radio
|
||||||
id="google-account"
|
id='google-account'
|
||||||
label="Google account"
|
label='Google account'
|
||||||
name="radio-3"
|
name='radio-3'
|
||||||
isChecked={accountType === 'user'}
|
isChecked={accountType === 'user'}
|
||||||
onChange={() => {
|
onChange={() => {
|
||||||
dispatch(changeGcpAccountType('user'));
|
dispatch(changeGcpAccountType('user'));
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
<Radio
|
<Radio
|
||||||
id="service-account"
|
id='service-account'
|
||||||
label="Service account"
|
label='Service account'
|
||||||
name="radio-4"
|
name='radio-4'
|
||||||
isChecked={accountType === 'serviceAccount'}
|
isChecked={accountType === 'serviceAccount'}
|
||||||
onChange={() => {
|
onChange={() => {
|
||||||
dispatch(changeGcpAccountType('serviceAccount'));
|
dispatch(changeGcpAccountType('serviceAccount'));
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
<Radio
|
<Radio
|
||||||
id="google-group"
|
id='google-group'
|
||||||
label="Google group"
|
label='Google group'
|
||||||
name="radio-5"
|
name='radio-5'
|
||||||
isChecked={accountType === 'group'}
|
isChecked={accountType === 'group'}
|
||||||
onChange={() => {
|
onChange={() => {
|
||||||
dispatch(changeGcpAccountType('group'));
|
dispatch(changeGcpAccountType('group'));
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
<Radio
|
<Radio
|
||||||
id="google-domain"
|
id='google-domain'
|
||||||
label="Google Workspace domain or Cloud Identity domain"
|
label='Google Workspace domain or Cloud Identity domain'
|
||||||
name="radio-6"
|
name='radio-6'
|
||||||
isChecked={accountType === 'domain'}
|
isChecked={accountType === 'domain'}
|
||||||
onChange={() => {
|
onChange={() => {
|
||||||
dispatch(changeGcpAccountType('domain'));
|
dispatch(changeGcpAccountType('domain'));
|
||||||
|
|
@ -131,12 +131,12 @@ const Gcp = () => {
|
||||||
isRequired
|
isRequired
|
||||||
>
|
>
|
||||||
<ValidatedInput
|
<ValidatedInput
|
||||||
ariaLabel="google principal"
|
ariaLabel='google principal'
|
||||||
dataTestId="principal"
|
dataTestId='principal'
|
||||||
value={gcpEmail || ''}
|
value={gcpEmail || ''}
|
||||||
validator={isGcpEmailValid}
|
validator={isGcpEmailValid}
|
||||||
onChange={(_event, value) => dispatch(changeGcpEmail(value))}
|
onChange={(_event, value) => dispatch(changeGcpEmail(value))}
|
||||||
helperText="Please enter a valid e-mail address."
|
helperText='Please enter a valid e-mail address.'
|
||||||
/>
|
/>
|
||||||
</FormGroup>
|
</FormGroup>
|
||||||
</>
|
</>
|
||||||
|
|
|
||||||
|
|
@ -18,17 +18,17 @@ const NtpServersInput = () => {
|
||||||
const stepValidation = useTimezoneValidation();
|
const stepValidation = useTimezoneValidation();
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<FormGroup isRequired={false} label="NTP servers">
|
<FormGroup isRequired={false} label='NTP servers'>
|
||||||
<LabelInput
|
<LabelInput
|
||||||
ariaLabel="Add NTP server"
|
ariaLabel='Add NTP server'
|
||||||
placeholder="Add NTP servers"
|
placeholder='Add NTP servers'
|
||||||
validator={isNtpServerValid}
|
validator={isNtpServerValid}
|
||||||
list={ntpServers}
|
list={ntpServers}
|
||||||
item="NTP server"
|
item='NTP server'
|
||||||
addAction={addNtpServer}
|
addAction={addNtpServer}
|
||||||
removeAction={removeNtpServer}
|
removeAction={removeNtpServer}
|
||||||
stepValidation={stepValidation}
|
stepValidation={stepValidation}
|
||||||
fieldName="ntpServers"
|
fieldName='ntpServers'
|
||||||
/>
|
/>
|
||||||
</FormGroup>
|
</FormGroup>
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -106,7 +106,7 @@ const TimezoneDropDown = () => {
|
||||||
const toggle = (toggleRef: React.Ref<MenuToggleElement>) => (
|
const toggle = (toggleRef: React.Ref<MenuToggleElement>) => (
|
||||||
<MenuToggle
|
<MenuToggle
|
||||||
ref={toggleRef}
|
ref={toggleRef}
|
||||||
variant="typeahead"
|
variant='typeahead'
|
||||||
onClick={onToggleClick}
|
onClick={onToggleClick}
|
||||||
isExpanded={isOpen}
|
isExpanded={isOpen}
|
||||||
>
|
>
|
||||||
|
|
@ -115,8 +115,8 @@ const TimezoneDropDown = () => {
|
||||||
value={timezone ? timezone : inputValue}
|
value={timezone ? timezone : inputValue}
|
||||||
onClick={onInputClick}
|
onClick={onInputClick}
|
||||||
onChange={onTextInputChange}
|
onChange={onTextInputChange}
|
||||||
autoComplete="off"
|
autoComplete='off'
|
||||||
placeholder="Select a timezone"
|
placeholder='Select a timezone'
|
||||||
isExpanded={isOpen}
|
isExpanded={isOpen}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
|
|
@ -124,9 +124,9 @@ const TimezoneDropDown = () => {
|
||||||
<TextInputGroupUtilities>
|
<TextInputGroupUtilities>
|
||||||
<Button
|
<Button
|
||||||
icon={<TimesIcon />}
|
icon={<TimesIcon />}
|
||||||
variant="plain"
|
variant='plain'
|
||||||
onClick={onClearButtonClick}
|
onClick={onClearButtonClick}
|
||||||
aria-label="Clear input"
|
aria-label='Clear input'
|
||||||
/>
|
/>
|
||||||
</TextInputGroupUtilities>
|
</TextInputGroupUtilities>
|
||||||
)}
|
)}
|
||||||
|
|
@ -135,7 +135,7 @@ const TimezoneDropDown = () => {
|
||||||
);
|
);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<FormGroup isRequired={false} label="Timezone">
|
<FormGroup isRequired={false} label='Timezone'>
|
||||||
<Select
|
<Select
|
||||||
isScrollable
|
isScrollable
|
||||||
isOpen={isOpen}
|
isOpen={isOpen}
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ import TimezoneDropDown from './components/TimezoneDropDown';
|
||||||
const TimezoneStep = () => {
|
const TimezoneStep = () => {
|
||||||
return (
|
return (
|
||||||
<Form>
|
<Form>
|
||||||
<Title headingLevel="h1" size="xl">
|
<Title headingLevel='h1' size='xl'>
|
||||||
Timezone
|
Timezone
|
||||||
</Title>
|
</Title>
|
||||||
<Content>Select a timezone for your image.</Content>
|
<Content>Select a timezone for your image.</Content>
|
||||||
|
|
|
||||||
|
|
@ -20,12 +20,12 @@ const EmptyUserState = () => {
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<EmptyState
|
<EmptyState
|
||||||
headingLevel="h4"
|
headingLevel='h4'
|
||||||
icon={UserIcon}
|
icon={UserIcon}
|
||||||
variant={EmptyStateVariant.lg}
|
variant={EmptyStateVariant.lg}
|
||||||
>
|
>
|
||||||
<EmptyStateFooter>
|
<EmptyStateFooter>
|
||||||
<Button variant="secondary" onClick={onAddUserClick}>
|
<Button variant='secondary' onClick={onAddUserClick}>
|
||||||
Add a user
|
Add a user
|
||||||
</Button>
|
</Button>
|
||||||
</EmptyStateFooter>
|
</EmptyStateFooter>
|
||||||
|
|
|
||||||
|
|
@ -53,17 +53,17 @@ const RemoveUserModal = ({
|
||||||
};
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Modal isOpen={isOpen} onClose={onClose} width="50%">
|
<Modal isOpen={isOpen} onClose={onClose} width='50%'>
|
||||||
<ModalHeader title={`Remove user${userName ? ` ${userName}` : ''}?`} />
|
<ModalHeader title={`Remove user${userName ? ` ${userName}` : ''}?`} />
|
||||||
<ModalBody>
|
<ModalBody>
|
||||||
This action is permanent and cannot be undone. Once deleted all
|
This action is permanent and cannot be undone. Once deleted all
|
||||||
information about the user will be lost.
|
information about the user will be lost.
|
||||||
</ModalBody>
|
</ModalBody>
|
||||||
<ModalFooter>
|
<ModalFooter>
|
||||||
<Button key="confirm" variant="primary" onClick={onConfirm}>
|
<Button key='confirm' variant='primary' onClick={onConfirm}>
|
||||||
Remove user
|
Remove user
|
||||||
</Button>
|
</Button>
|
||||||
<Button key="cancel" variant="link" onClick={onClose}>
|
<Button key='cancel' variant='link' onClick={onClose}>
|
||||||
Cancel
|
Cancel
|
||||||
</Button>
|
</Button>
|
||||||
</ModalFooter>
|
</ModalFooter>
|
||||||
|
|
|
||||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue