import React from 'react'; import { Button, ClipboardCopy, ClipboardCopyVariant, Divider, Popover, Text, TextContent, } from '@patternfly/react-core'; import { ExternalLinkAltIcon } from '@patternfly/react-icons'; import PropTypes from 'prop-types'; import { useSelector } from 'react-redux'; import { useNavigate } from 'react-router-dom'; import { RegionsPopover } from './RegionsPopover'; import { selectImageById } from '../../store/composesSlice'; import { resolveRelPath } from '../../Utilities/path'; import BetaLabel from '../sharedComponents/BetaLabel'; const launchInstanceCommand = (uploadStatus) => { return `gcloud compute instances create ${uploadStatus.options.image_name}-instance --image-project ${uploadStatus.options.project_id} --image ${uploadStatus.options.image_name}`; }; const saveCopyCommand = (uploadStatus) => { return `gcloud compute images create ${uploadStatus.options.image_name}-copy --source-image-project ${uploadStatus.options.project_id} --source-image ${uploadStatus.options.image_name}`; }; const ImageLinkDirect = ({ imageId, isExpired, isInClonesTable }) => { const navigate = useNavigate(); const image = useSelector((state) => selectImageById(state, imageId)); const uploadStatus = image.uploadStatus; const fileExtensions = { vsphere: '.vmdk', 'vsphere-ova': '.ova', 'guest-image': '.qcow2', 'image-installer': '.iso', }; if (uploadStatus.type === 'aws') { const url = 'https://console.aws.amazon.com/ec2/v2/home?region=' + uploadStatus.options.region + '#LaunchInstanceWizard:ami=' + uploadStatus.options.ami; if (isInClonesTable) { return ( ); } else { return ; } } else if (uploadStatus.type === 'azure') { const createdInPreview = image?.uploadOptions?.source_id; const url = 'https://portal.azure.com/#@' + image.uploadOptions.tenant_id + '/resource/subscriptions/' + image.uploadOptions.subscription_id + '/resourceGroups/' + image.uploadOptions.resource_group + '/providers/Microsoft.Compute/images/' + uploadStatus.options.image_name; return createdInPreview ? ( Launch instance} bodyContent={ <> <>

This image was created using features only available in Preview.

} >
) : ( ); } else if (uploadStatus.type === 'gcp') { return (
Launch an instance {launchInstanceCommand(uploadStatus)}
Save a copy {saveCopyCommand(uploadStatus)} } >
); } else if (uploadStatus.type === 'aws.s3') { if (!isExpired) { return ( ); } else { return ( ); } } return null; }; ImageLinkDirect.propTypes = { imageId: PropTypes.string, isExpired: PropTypes.bool, isInClonesTable: PropTypes.bool, }; export default ImageLinkDirect;