[Fleet] Fix policy upgrade from APM 0.3.0 to 0.4.0 (#110505)
* Fix policy upgrade from APM 0.3.0 to 0.4.0 Add debug log + logic to skip over any package variables that have been removed from the base policy object. Issue was initially surfaced testing upgrade from APM integration v0.3.0 to v0.4.0. Ref #109907 * Fix type error in test * Remove translation for validation debug log Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com>
This commit is contained in:
parent
adde076d58
commit
a49700f95d
|
@ -75,7 +75,7 @@ export const validatePackagePolicy = (
|
|||
const packageVars = Object.entries(packagePolicy.vars || {});
|
||||
if (packageVars.length) {
|
||||
validationResults.vars = packageVars.reduce((results, [name, varEntry]) => {
|
||||
results[name] = validatePackagePolicyConfig(varEntry, packageVarsByName[name]);
|
||||
results[name] = validatePackagePolicyConfig(varEntry, packageVarsByName[name], name);
|
||||
return results;
|
||||
}, {} as ValidationEntry);
|
||||
}
|
||||
|
@ -138,7 +138,8 @@ export const validatePackagePolicy = (
|
|||
results[name] = input.enabled
|
||||
? validatePackagePolicyConfig(
|
||||
configEntry,
|
||||
inputVarDefsByPolicyTemplateAndType[inputKey][name]
|
||||
inputVarDefsByPolicyTemplateAndType[inputKey][name],
|
||||
name
|
||||
)
|
||||
: null;
|
||||
return results;
|
||||
|
@ -161,7 +162,7 @@ export const validatePackagePolicy = (
|
|||
(results, [name, configEntry]) => {
|
||||
results[name] =
|
||||
streamVarDefs && streamVarDefs[name] && input.enabled && stream.enabled
|
||||
? validatePackagePolicyConfig(configEntry, streamVarDefs[name])
|
||||
? validatePackagePolicyConfig(configEntry, streamVarDefs[name], name)
|
||||
: null;
|
||||
return results;
|
||||
},
|
||||
|
@ -183,12 +184,14 @@ export const validatePackagePolicy = (
|
|||
if (Object.entries(validationResults.inputs!).length === 0) {
|
||||
validationResults.inputs = null;
|
||||
}
|
||||
|
||||
return validationResults;
|
||||
};
|
||||
|
||||
export const validatePackagePolicyConfig = (
|
||||
configEntry: PackagePolicyConfigRecordEntry,
|
||||
varDef: RegistryVarsEntry
|
||||
varDef: RegistryVarsEntry,
|
||||
varName: string
|
||||
): string[] | null => {
|
||||
const errors = [];
|
||||
const { value } = configEntry;
|
||||
|
@ -198,6 +201,13 @@ export const validatePackagePolicyConfig = (
|
|||
parsedValue = value.trim();
|
||||
}
|
||||
|
||||
if (varDef === undefined) {
|
||||
// eslint-disable-next-line no-console
|
||||
console.debug(`No variable definition for ${varName} found`);
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
if (varDef.required) {
|
||||
if (parsedValue === undefined || (typeof parsedValue === 'string' && !parsedValue)) {
|
||||
errors.push(
|
||||
|
|
|
@ -22,7 +22,11 @@ export const hasInvalidButRequiredVar = (
|
|||
registryVar.required &&
|
||||
(!packagePolicyVars ||
|
||||
!packagePolicyVars[registryVar.name] ||
|
||||
validatePackagePolicyConfig(packagePolicyVars[registryVar.name], registryVar)?.length)
|
||||
validatePackagePolicyConfig(
|
||||
packagePolicyVars[registryVar.name],
|
||||
registryVar,
|
||||
registryVar.name
|
||||
)?.length)
|
||||
)
|
||||
)
|
||||
);
|
||||
|
|
|
@ -695,7 +695,7 @@ const UpgradeStatusCallout: React.FunctionComponent<{
|
|||
</EuiPortal>
|
||||
)}
|
||||
|
||||
{isReadyForUpgrade ? (
|
||||
{isReadyForUpgrade && currentPackagePolicy ? (
|
||||
<EuiCallOut
|
||||
title={i18n.translate('xpack.fleet.upgradePackagePolicy.statusCallOut.successTitle', {
|
||||
defaultMessage: 'Ready to upgrade',
|
||||
|
|
Loading…
Reference in a new issue