Skip to content

Commit

Permalink
[Fleet] Fix policy upgrade from APM 0.3.0 to 0.4.0 (#110505)
Browse files Browse the repository at this point in the history
* 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 <[email protected]>
  • Loading branch information
kpollich and kibanamachine authored Aug 31, 2021
1 parent adde076 commit a49700f
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 6 deletions.
18 changes: 14 additions & 4 deletions x-pack/plugins/fleet/common/services/validate_package_policy.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}
Expand Down Expand Up @@ -138,7 +138,8 @@ export const validatePackagePolicy = (
results[name] = input.enabled
? validatePackagePolicyConfig(
configEntry,
inputVarDefsByPolicyTemplateAndType[inputKey][name]
inputVarDefsByPolicyTemplateAndType[inputKey][name],
name
)
: null;
return results;
Expand All @@ -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;
},
Expand All @@ -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;
Expand All @@ -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(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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)
)
)
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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',
Expand Down

0 comments on commit a49700f

Please sign in to comment.