-
Notifications
You must be signed in to change notification settings - Fork 8.3k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[Fleet] Show pipelines and mappings editor for input packages (#154077)
## Summary Closes #153105 Show the pipelines and mappings editor for input packages. This can be seen when editing an input package integration policy. Previously this was hidden for input packages and any integration package which allowed datastream to be configured. I have tweaked this logic so that we check if the matching index template for a stream exists, if it does then show the editor. <img width="407" alt="Screenshot 2023-03-30 at 17 02 26" src="https://user-images.githubusercontent.com/3315046/228896543-192e5fc5-3dc3-4a0f-a08f-a7ff83555ef3.png"> This allows us to handle an edge case (which will become more common as input packages are rolled out) when integration package which has since been upgraded to an input package, for example: - user installs the custom logs integration package and sets dataset to helloworld - the `logs-helloworld` index template is not created as integration packages only create index templates on install (custom logs creates `logs-log.log`) - there is therefore no ingest pipeline `@custom` or `@package`component template to customize, we do not show the pipeline editor. - The user upgrades to an input package version of custom logs (coming in v2.0.0) there still isn't an index template because we do not create them on upgrade, so we still don't want to show the pipelines and mappings editor - Just checking for input package in this scenario would mean we showed the editor incorrectly I have opted to show the editors even if the stream is owned by another package e.g custom logs data is being sent to an nginx stream. ### Automated tests I have added cypress tests for checking that the mappings pipelines editors are shown for input packages. ### Manual test cases Here is version 2.0.0 of logs which is an input package: [log-2.0.0.zip](https://github.com/elastic/kibana/files/11113579/log-2.0.0.zip) it can be added to a deployment using curl: ``` curl -XPOST -H 'content-type: application/zip' -H 'kbn-xsrf: true' http://localhost:5601/mark/api/fleet/epm/packages -u elastic:changeme --data-binary @/path/to/log-2.0.0.zip ``` - Create a policy for an integration package which does not allow dataset to be configured (e.g Apache) - pipelines & editor should be visible when editing package policy - Create a policy for an integration package which does allow dataset to be configured (e.g custom logs 1.6.1) - pipelines & mappings editor should not be shown if dataset doesn't match the one installed by the package `logs.log` - Upgrade custom logs to the input package version (2.0.0) - pipelines and mappings editor still should not be shown --------- Co-authored-by: kibanamachine <[email protected]>
- Loading branch information
1 parent
7ce1a9a
commit b80f4fd
Showing
12 changed files
with
239 additions
and
15 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
98 changes: 98 additions & 0 deletions
98
x-pack/plugins/fleet/cypress/e2e/package_policy_real.cy.ts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,98 @@ | ||
/* | ||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one | ||
* or more contributor license agreements. Licensed under the Elastic License | ||
* 2.0; you may not use this file except in compliance with the Elastic License | ||
* 2.0. | ||
*/ | ||
|
||
import { | ||
ADD_INTEGRATION_POLICY_BTN, | ||
CREATE_PACKAGE_POLICY_SAVE_BTN, | ||
INTEGRATION_NAME_LINK, | ||
POLICY_EDITOR, | ||
} from '../screens/integrations'; | ||
import { EXISTING_HOSTS_TAB } from '../screens/fleet'; | ||
import { CONFIRM_MODAL } from '../screens/navigation'; | ||
|
||
const TEST_PACKAGE = 'input_package-1.0.0'; | ||
const agentPolicyId = 'test-input-package-policy'; | ||
const agentPolicyName = 'Test input package policy'; | ||
const inputPackagePolicyName = 'input-package-policy'; | ||
|
||
function editPackagePolicyandShowAdvanced() { | ||
cy.visit(`/app/integrations/detail/${TEST_PACKAGE}/policies`); | ||
|
||
cy.getBySel(INTEGRATION_NAME_LINK).contains(inputPackagePolicyName).click(); | ||
|
||
cy.get('button').contains('Change defaults').click(); | ||
cy.get('[data-test-subj^="advancedStreamOptionsToggle"]').click(); | ||
} | ||
describe('Input package create and edit package policy', () => { | ||
before(() => { | ||
cy.task('installTestPackage', TEST_PACKAGE); | ||
|
||
cy.request({ | ||
method: 'POST', | ||
url: `/api/fleet/agent_policies`, | ||
body: { | ||
id: agentPolicyId, | ||
name: agentPolicyName, | ||
description: 'desc', | ||
namespace: 'default', | ||
monitoring_enabled: [], | ||
}, | ||
headers: { 'kbn-xsrf': 'cypress' }, | ||
}); | ||
}); | ||
after(() => { | ||
// delete agent policy | ||
cy.request({ | ||
method: 'POST', | ||
url: `/api/fleet/agent_policies/delete`, | ||
headers: { 'kbn-xsrf': 'cypress' }, | ||
body: JSON.stringify({ | ||
agentPolicyId, | ||
}), | ||
}); | ||
cy.task('uninstallTestPackage', TEST_PACKAGE); | ||
}); | ||
it('should successfully create a package policy', () => { | ||
cy.visit(`/app/integrations/detail/${TEST_PACKAGE}/overview`); | ||
cy.getBySel(ADD_INTEGRATION_POLICY_BTN).click(); | ||
|
||
cy.getBySel(POLICY_EDITOR.POLICY_NAME_INPUT).click().clear().type(inputPackagePolicyName); | ||
cy.getBySel('multiTextInput-paths') | ||
.find('[data-test-subj="multiTextInputRow-0"]') | ||
.click() | ||
.type('/var/log/test.log'); | ||
|
||
cy.getBySel('multiTextInput-tags') | ||
.find('[data-test-subj="multiTextInputRow-0"]') | ||
.click() | ||
.type('tag1'); | ||
|
||
cy.getBySel(POLICY_EDITOR.DATASET_SELECT).click().type('testdataset'); | ||
|
||
cy.getBySel(EXISTING_HOSTS_TAB).click(); | ||
|
||
cy.getBySel(POLICY_EDITOR.AGENT_POLICY_SELECT).click().get(`#${agentPolicyId}`).click(); | ||
cy.wait(500); // wait for policy id to be set | ||
cy.getBySel(CREATE_PACKAGE_POLICY_SAVE_BTN).click(); | ||
|
||
cy.getBySel(CONFIRM_MODAL.CANCEL_BUTTON).click(); | ||
}); | ||
|
||
it('should show pipelines editor with link to pipeline', () => { | ||
editPackagePolicyandShowAdvanced(); | ||
cy.getBySel(POLICY_EDITOR.INSPECT_PIPELINES_BTN).click(); | ||
cy.getBySel(CONFIRM_MODAL.CONFIRM_BUTTON).click(); | ||
cy.get('body').should('not.contain', 'Pipeline not found'); | ||
cy.get('body').should('contain', '"managed_by": "fleet"'); | ||
}); | ||
it('should show mappings editor with link to create custom template', () => { | ||
editPackagePolicyandShowAdvanced(); | ||
cy.getBySel(POLICY_EDITOR.EDIT_MAPPINGS_BTN).click(); | ||
cy.getBySel(CONFIRM_MODAL.CONFIRM_BUTTON).click(); | ||
cy.get('body').should('contain', 'logs-testdataset@custom'); | ||
}); | ||
}); |
Binary file not shown.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.