Wizard: Integrate HyperV selection in Azure target options

This determines the generation the image will get registered as in
Azure. V2 supports UEFI and more instance types than V1.
This commit is contained in:
Sanne Raymaekers 2024-11-28 13:23:23 +01:00
parent b4e7fe8923
commit c1378a7913
3 changed files with 19 additions and 0 deletions

View file

@ -14,6 +14,7 @@ import {
import { ExternalLinkAltIcon } from '@patternfly/react-icons'; import { ExternalLinkAltIcon } from '@patternfly/react-icons';
import { AzureAuthButton } from './AzureAuthButton'; import { AzureAuthButton } from './AzureAuthButton';
import { AzureHyperVSelect } from './AzureHyperVSelect';
import { AzureResourceGroups } from './AzureResourceGroups'; import { AzureResourceGroups } from './AzureResourceGroups';
import { AzureSourcesSelect } from './AzureSourcesSelect'; import { AzureSourcesSelect } from './AzureSourcesSelect';
@ -91,6 +92,7 @@ const Azure = () => {
Learn more about OAuth 2.0 Learn more about OAuth 2.0
</Button> </Button>
</Text> </Text>
<AzureHyperVSelect />
<FormGroup label="Share method:"> <FormGroup label="Share method:">
<Radio <Radio
id="radio-with-description" id="radio-with-description"

View file

@ -46,6 +46,7 @@ import {
selectAzureSource, selectAzureSource,
selectAzureSubscriptionId, selectAzureSubscriptionId,
selectAzureTenantId, selectAzureTenantId,
selectAzureHyperVGeneration,
selectBaseUrl, selectBaseUrl,
selectBlueprintDescription, selectBlueprintDescription,
selectBlueprintName, selectBlueprintName,
@ -244,6 +245,7 @@ function commonRequestToState(
tenantId: azureUploadOptions?.tenant_id || '', tenantId: azureUploadOptions?.tenant_id || '',
subscriptionId: azureUploadOptions?.subscription_id || '', subscriptionId: azureUploadOptions?.subscription_id || '',
resourceGroup: azureUploadOptions?.resource_group, resourceGroup: azureUploadOptions?.resource_group,
hyperVGeneration: azureUploadOptions?.hyper_v_generation || 'V1',
}, },
gcp: { gcp: {
shareMethod: (gcpUploadOptions?.share_with_accounts shareMethod: (gcpUploadOptions?.share_with_accounts
@ -423,12 +425,14 @@ const getImageOptions = (
return { return {
source_id: selectAzureSource(state), source_id: selectAzureSource(state),
resource_group: selectAzureResourceGroup(state), resource_group: selectAzureResourceGroup(state),
hyper_v_generation: selectAzureHyperVGeneration(state),
}; };
else else
return { return {
tenant_id: selectAzureTenantId(state), tenant_id: selectAzureTenantId(state),
subscription_id: selectAzureSubscriptionId(state), subscription_id: selectAzureSubscriptionId(state),
resource_group: selectAzureResourceGroup(state), resource_group: selectAzureResourceGroup(state),
hyper_v_generation: selectAzureHyperVGeneration(state),
}; };
case 'gcp': { case 'gcp': {
let googleAccount: string = ''; let googleAccount: string = '';

View file

@ -63,6 +63,7 @@ export type wizardState = {
subscriptionId: string; subscriptionId: string;
source: string; source: string;
resourceGroup: string; resourceGroup: string;
hyperVGeneration: 'V1' | 'V2';
}; };
gcp: { gcp: {
shareMethod: GcpShareMethod; shareMethod: GcpShareMethod;
@ -136,6 +137,7 @@ export const initialState: wizardState = {
subscriptionId: '', subscriptionId: '',
source: '', source: '',
resourceGroup: '', resourceGroup: '',
hyperVGeneration: 'V2',
}, },
gcp: { gcp: {
shareMethod: 'withGoogle', shareMethod: 'withGoogle',
@ -242,6 +244,10 @@ export const selectAzureResourceGroup = (state: RootState) => {
return state.wizard.azure.resourceGroup; return state.wizard.azure.resourceGroup;
}; };
export const selectAzureHyperVGeneration = (state: RootState) => {
return state.wizard.azure.hyperVGeneration;
};
export const selectGcpShareMethod = (state: RootState) => { export const selectGcpShareMethod = (state: RootState) => {
return state.wizard.gcp.shareMethod; return state.wizard.gcp.shareMethod;
}; };
@ -406,6 +412,12 @@ export const wizardSlice = createSlice({
changeAzureResourceGroup: (state, action: PayloadAction<string>) => { changeAzureResourceGroup: (state, action: PayloadAction<string>) => {
state.azure.resourceGroup = action.payload; state.azure.resourceGroup = action.payload;
}, },
changeAzureHyperVGeneration: (
state,
action: PayloadAction<'V1' | 'V2'>
) => {
state.azure.hyperVGeneration = action.payload;
},
reinitializeAzure: (state) => { reinitializeAzure: (state) => {
state.azure.shareMethod = 'sources'; state.azure.shareMethod = 'sources';
state.azure.tenantId = ''; state.azure.tenantId = '';
@ -690,6 +702,7 @@ export const {
changeAzureSubscriptionId, changeAzureSubscriptionId,
changeAzureSource, changeAzureSource,
changeAzureResourceGroup, changeAzureResourceGroup,
changeAzureHyperVGeneration,
reinitializeAzure, reinitializeAzure,
changeGcpShareMethod, changeGcpShareMethod,
changeGcpAccountType, changeGcpAccountType,