in dialogflow-cx/vpc-sc-demo/frontend/src/AssetPollToggle.js [364:526]
function ErrorDialog(props) {
let resourceName;
let responseType = null;
if (
props.error !== null &&
Object.hasOwn(props.error.response.data, 'status') &&
props.error.response.data.status === 'BLOCKED' &&
props.error.response.data.reason === 'POLICY_NOT_FOUND'
) {
responseType = 'ACCESS_POLICY_ERROR';
} else if (
props.error !== null &&
Object.hasOwn(props.error.response.data, 'status') &&
props.error.response.data.status === 'BLOCKED' &&
props.error.response.data.reason === 'UNKNOWN_PROJECT_ID'
) {
responseType = 'UNKNOWN_PROJECT_ID_ERROR';
} else if (
props.error !== null &&
props.error.response.data.errors[0]['diagnostic']['summary'] ===
'googleapi: Error 409: Your previous request to create the named bucket succeeded and you already own it., conflict'
) {
resourceName = `'${getBucket(props.dataModel)}'`;
responseType = 'RESOURCE_IMPORT';
} else if (
props.error !== null &&
props.error.response.data.errors[0] ===
'Error: Error acquiring the state lock'
) {
responseType = 'STATE_LOCK';
} else if (
props.error !== null &&
props.error.response.data.errors[0]['diagnostic']['summary'].includes(
'Location settings have to be initialized before creating the agent'
)
) {
responseType = 'AGENT_LOCATION_SETTINGS';
} else if (
props.error !== null &&
props.error.response.data.errors[0]['diagnostic']['summary'].includes(
'generic::already_exists'
)
) {
if (
props.target === 'module.vpc_network.google_compute_router_nat.nat_manual'
) {
resourceName = `'projects/${props.dataModel.projectData.project_id.current}/regions/${props.dataModel.projectData.region.current}/routers/nat-router/nat-config'`;
} else if (
props.target ===
'module.service_directory.google_service_directory_service.reverse_proxy'
) {
resourceName = `'projects/${props.dataModel.projectData.project_id.current}/locations/${props.dataModel.projectData.region.current}/namespaces/df-namespace/services/df-service'`;
} else if (
props.target ===
'module.service_directory.google_service_directory_endpoint.reverse_proxy'
) {
resourceName = `'projects/${props.dataModel.projectData.project_id.current}/locations/${props.dataModel.projectData.region.current}/namespaces/df-namespace/services/df-service/endpoints/df-endpoint'`;
} else if (
props.target ===
'module.webhook_agent.google_cloudfunctions_function.webhook'
) {
resourceName = `'projects/${props.dataModel.projectData.project_id.current}/locations/${props.dataModel.projectData.region.current}/functions/${props.dataModel.projectData.webhook_name.current}'`;
} else {
resourceName =
props.error.response.data.errors[0]['diagnostic']['summary'];
}
responseType = 'RESOURCE_IMPORT';
} else if (
props.error !== null &&
props.error.response.data.errors[0]['diagnostic']['summary'].includes(
'Must specify a title for access policy object'
)
) {
responseType = 'GENERIC';
} else if (props.error !== null) {
responseType = 'GENERIC';
}
useEffect(() => {
if (resourceName) {
props.setResourceName(resourceName);
}
}, [props, resourceName]);
useEffect(
() => {
if (responseType === 'ACCESS_POLICY_ERROR') {
props.dataModel.validAccessPolicy.set(false);
props.dataModel.accessPolicyTitleColor.set('error');
}
if (responseType === 'UNKNOWN_PROJECT_ID_ERROR') {
props.dataModel.validProjectId.set(null);
props.dataModel.projectIdColor.set('error');
}
},
/* eslint-disable react-hooks/exhaustive-deps */
[responseType]
/* eslint-enable react-hooks/exhaustive-deps */
);
if (responseType === 'STATE_LOCK') {
return (
<StateLockErrorDialog
open={props.open}
target={props.target}
error={props.error}
onClickCancel={props.onClickCancel}
/>
);
} else if (responseType === 'RESOURCE_IMPORT') {
return (
<ResourceImportDialog
open={props.open}
target={props.target}
error={props.error}
onClickCancel={props.onClickCancel}
onClickImport={props.onClickImport}
/>
);
} else if (responseType === 'AGENT_LOCATION_SETTINGS') {
return (
<AgentLocationSettingsDialog
open={props.open}
target={props.target}
error={props.error}
onClickCancel={props.onClickCancel}
region={props.dataModel.projectData.region.current}
project_id={props.dataModel.projectData.project_id.current}
/>
);
} else if (responseType === 'GENERIC') {
return (
<GenericErrorDialog
open={props.open}
target={props.target}
error={props.error}
onClickCancel={props.onClickCancel}
/>
);
} else if (responseType === 'ACCESS_POLICY_ERROR') {
return (
<AccessPolicyErrorDialog
open={props.open}
onClickCancel={props.onClickCancel}
error={props.error}
badAccessPolicyTitle={
props.dataModel.projectData.accessPolicyTitle.current
}
/>
);
} else if (responseType === 'UNKNOWN_PROJECT_ID_ERROR') {
return (
<ProjectIdErrorDialog
open={props.open}
onClickCancel={props.onClickCancel}
unknownProjectId={props.dataModel.projectData.project_id.current}
/>
);
} else if (responseType === null) {
return <></>;
}
}