mirror of
https://github.com/elastic/kibana.git
synced 2025-04-24 01:38:56 -04:00
[Fleet] Fix package policy validation (#123153)
This commit is contained in:
parent
c1b98ba7fb
commit
e721b2b8bc
3 changed files with 23 additions and 26 deletions
|
@ -162,23 +162,17 @@ export const validatePackagePolicy = (
|
|||
const streamVarDefs =
|
||||
streamVarDefsByDatasetAndInput[`${stream.data_stream.dataset}-${input.type}`];
|
||||
|
||||
// Validate stream-level config fields
|
||||
if (stream.vars) {
|
||||
streamValidationResults.vars = Object.entries(stream.vars).reduce(
|
||||
(results, [name, configEntry]) => {
|
||||
results[name] =
|
||||
streamVarDefs && streamVarDefs[name] && input.enabled && stream.enabled
|
||||
? validatePackagePolicyConfig(
|
||||
configEntry,
|
||||
streamVarDefs[name],
|
||||
name,
|
||||
safeLoadYaml
|
||||
)
|
||||
: null;
|
||||
return results;
|
||||
},
|
||||
{} as ValidationEntry
|
||||
);
|
||||
if (streamVarDefs && Object.keys(streamVarDefs).length) {
|
||||
streamValidationResults.vars = Object.keys(streamVarDefs).reduce((results, name) => {
|
||||
const configEntry = stream?.vars?.[name];
|
||||
|
||||
results[name] =
|
||||
input.enabled && stream.enabled
|
||||
? validatePackagePolicyConfig(configEntry, streamVarDefs[name], name, safeLoadYaml)
|
||||
: null;
|
||||
|
||||
return results;
|
||||
}, {} as ValidationEntry);
|
||||
}
|
||||
|
||||
inputValidationResults.streams![stream.data_stream.dataset] = streamValidationResults;
|
||||
|
@ -200,13 +194,15 @@ export const validatePackagePolicy = (
|
|||
};
|
||||
|
||||
export const validatePackagePolicyConfig = (
|
||||
configEntry: PackagePolicyConfigRecordEntry,
|
||||
configEntry: PackagePolicyConfigRecordEntry | undefined,
|
||||
varDef: RegistryVarsEntry,
|
||||
varName: string,
|
||||
safeLoadYaml: (yaml: string) => any
|
||||
): string[] | null => {
|
||||
const errors = [];
|
||||
const { value } = configEntry;
|
||||
|
||||
const value = configEntry?.value;
|
||||
|
||||
let parsedValue: any = value;
|
||||
|
||||
if (typeof value === 'string') {
|
||||
|
@ -253,10 +249,7 @@ export const validatePackagePolicyConfig = (
|
|||
})
|
||||
);
|
||||
}
|
||||
if (
|
||||
varDef.required &&
|
||||
(!parsedValue || (Array.isArray(parsedValue) && parsedValue.length === 0))
|
||||
) {
|
||||
if (varDef.required && Array.isArray(parsedValue) && parsedValue.length === 0) {
|
||||
errors.push(
|
||||
i18n.translate('xpack.fleet.packagePolicyValidation.requiredErrorMessage', {
|
||||
defaultMessage: '{fieldName} is required',
|
||||
|
|
|
@ -107,7 +107,10 @@ export const PackagePolicyInputStreamConfig: React.FunctionComponent<{
|
|||
<EuiFlexGroup direction="column" gutterSize="m">
|
||||
{requiredVars.map((varDef) => {
|
||||
const { name: varName, type: varType } = varDef;
|
||||
const { value, frozen } = packagePolicyInputStream.vars![varName];
|
||||
const varConfigEntry = packagePolicyInputStream.vars?.[varName];
|
||||
const value = varConfigEntry?.value;
|
||||
const frozen = varConfigEntry?.frozen ?? false;
|
||||
|
||||
return (
|
||||
<EuiFlexItem key={varName}>
|
||||
<PackagePolicyInputVarField
|
||||
|
@ -164,7 +167,8 @@ export const PackagePolicyInputStreamConfig: React.FunctionComponent<{
|
|||
{isShowingAdvanced
|
||||
? advancedVars.map((varDef) => {
|
||||
const { name: varName, type: varType } = varDef;
|
||||
const value = packagePolicyInputStream.vars![varName].value;
|
||||
const value = packagePolicyInputStream.vars?.[varName]?.value;
|
||||
|
||||
return (
|
||||
<EuiFlexItem key={varName}>
|
||||
<PackagePolicyInputVarField
|
||||
|
|
|
@ -46,7 +46,7 @@ export const PackagePolicyInputVarField: React.FunctionComponent<{
|
|||
if (multi) {
|
||||
return (
|
||||
<MultiTextInput
|
||||
value={value}
|
||||
value={value ?? []}
|
||||
onChange={onChange}
|
||||
onBlur={() => setIsDirty(true)}
|
||||
isDisabled={frozen}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue