Skip to content

Commit

Permalink
Merge branch '8.11' into 8-11-suggestion-for-including-soft-fail-indi…
Browse files Browse the repository at this point in the history
…cation-in-burning-specs-naming
  • Loading branch information
kibanamachine committed Dec 7, 2023
2 parents eb3f5c7 + d77cacc commit a221247
Show file tree
Hide file tree
Showing 9 changed files with 209 additions and 39 deletions.
51 changes: 51 additions & 0 deletions docs/CHANGELOG.asciidoc
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@

Review important information about the {kib} 8.x releases.

* <<release-notes-8.11.2>>
* <<release-notes-8.11.1>>
* <<release-notes-8.11.0>>
* <<release-notes-8.10.4>>
Expand Down Expand Up @@ -54,6 +55,56 @@ Review important information about the {kib} 8.x releases.
* <<release-notes-8.0.0-alpha1>>

--
[[release-notes-8.11.2]]
== {kib} 8.11.2

The 8.11.2 release includes the following bug fixes.

[float]
[[enhancement-v8.11.2]]
=== Enhancements
APM::
* Added `context_propagation_only` APM agent setting ({kibana-pull}170405[#170405]).
Elastic Security::
For the Elastic Security 8.11.2 release information, refer to {security-guide}/release-notes.html[_Elastic Security Solution Release Notes_].
Fleet::
* Improve UX for policy secrets ({kibana-pull}171405[#171405]).
Observability::
* Adds `date_formats` to SLI ingest pipeline template ({kibana-pull}172377[#172377]).
Platform::
* It is now possible to hot reload Kibana's TLS (`server.ssl`) configuration by updating it and then sending a `SIGHUP` signal to the Kibana process ({kibana-pull}171823[#171823]).

[float]
[[fixes-v8.11.2]]
=== Bug Fixes
Dashboard::
* Fixes reference extract method ({kibana-pull}171360[#171360]).
* Adds Dashboard title to browser tab title ({kibana-pull}171255[#171255]).
Elastic Security::
For the Elastic Security 8.11.2 release information, refer to {security-guide}/release-notes.html[_Elastic Security Solution Release Notes_].
Fleet::
* Support integration secrets in a local package registry with variables `secret: true` and `required: false` ({kibana-pull}172078[#172078]).
* Fixes agents metrics retrieval on the agent list page, previously displaying N/A for metrics for users with more than 10 agents. ({kibana-pull}172016[#172016]).
* Only add `time_series_metric` if TSDB is enabled ({kibana-pull}171712[#171712]).
* Fixes inability to upgrade agents from version 8.10.4 to version 8.11 ({kibana-pull}170974[#170974]).
Lens & Visualizations::
* Handle invalid values gracefully for static value operation in *Lens* ({kibana-pull}172198[#172198]).
* Make the dashboard SO lighter ({kibana-pull}172130[#172130]).
Machine Learning::
* Fixes blocked jobs polling interval ({kibana-pull}171878[#171878]).
Management::
* Fixes autocomplete to show suggestions even if user types in every letter ({kibana-pull}171952[#171952]).
* Fixes wrong autocomplete suggestions when using the slash symbol ({kibana-pull}171948[#171948]).
* Fixes clusters and shards table expanded row not updating when request is changed ({kibana-pull}171232[#171232]).
Maps::
* Fixes using `max_result_window` to set up a mapbox vector tile (MVT) size request leading to all results not showing ({kibana-pull}171344[#171344]).
Observability::
* Fixes the custom threshold document link ({kibana-pull}171125[#171125]).
SharedUX::
* Fixes custom branding for users without "Saved Object Management" privilege ({kibana-pull}171308[#171308]).
* Fixes the custom threshold document link ({kibana-pull}171125[#171125]).
Uptime::
* Fixes advanced fields broken for ICMP monitors ({kibana-pull}171161[#171161]).

[[release-notes-8.11.1]]
== {kib} 8.11.1
Expand Down

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
Expand Up @@ -66,5 +66,5 @@ export const logActionResponse = (
state: LogAwareState,
res: unknown
) => {
logger.debug(logMessagePrefix + `${state.controlState} RESPONSE`, res as LogMeta);
logger.debug(logMessagePrefix + `${state.controlState} RESPONSE`);
};
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ describe('migration v2', () => {
});

it('clean ups if migration fails', async () => {
const { runMigrations, client } = await setupNextMinor();
const { runMigrations /* , client */ } = await setupNextMinor();

await expect(runMigrations()).rejects.toThrowErrorMatchingInlineSnapshot(`
"Unable to complete saved object migrations for the [${defaultKibanaIndex}] index: Migrations failed. Reason: 1 corrupt saved object documents were found: corrupt:2baf4de0-a6d4-11ed-ba5a-39196fc76e60
Expand All @@ -63,7 +63,7 @@ describe('migration v2', () => {
);

expect(logRecordWithPit).toBeTruthy();

/* TEMPORARILY DISABLE
const pitId = logRecordWithPit.right.pitId;
expect(pitId).toBeTruthy();
Expand All @@ -75,6 +75,7 @@ describe('migration v2', () => {
})
// throws an exception that cannot search with closed PIT
).rejects.toThrow(/search_phase_execution_exception/);
*/
});

afterEach(async () => {
Expand Down
1 change: 1 addition & 0 deletions test/functional/page_objects/time_picker.ts
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@ export class TimePickerPageObject extends FtrService {
});
if (isVisible) {
await this.testSubjects.click('noDataPopoverDismissButton');
await this.testSubjects.waitForDeleted('noDataPopoverDismissButton');
}
}

Expand Down
144 changes: 141 additions & 3 deletions x-pack/plugins/fleet/server/services/secrets.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,11 +18,15 @@ import { elasticsearchServiceMock } from '@kbn/core-elasticsearch-server-mocks';

import { createAppContextStartContractMock } from '../mocks';

import type { NewPackagePolicy, PackageInfo } from '../types';
import type { NewPackagePolicy, PackageInfo, PackagePolicy, UpdatePackagePolicy } from '../types';

import { appContextService } from './app_context';

import { getPolicySecretPaths, diffSecretPaths, extractAndWriteSecrets } from './secrets';
import {
getPolicySecretPaths,
diffSecretPaths,
extractAndWriteSecrets,
extractAndUpdateSecrets,
} from './secrets';

describe('secrets', () => {
let mockContract: ReturnType<typeof createAppContextStartContractMock>;
Expand Down Expand Up @@ -915,4 +919,138 @@ describe('secrets', () => {
});
});
});

describe('extractAndUpdateSecrets', () => {
const esClientMock = elasticsearchServiceMock.createInternalClient();

esClientMock.transport.request.mockImplementation(async (req) => {
return {
id: uuidv4(),
};
});

beforeEach(() => {
esClientMock.transport.request.mockClear();
});

const mockIntegrationPackage = {
name: 'mock-package',
title: 'Mock package',
version: '0.0.0',
description: 'description',
type: 'integration',
status: 'not_installed',
vars: [
{ name: 'pkg-secret-1', type: 'text', secret: true, required: true },
{ name: 'pkg-secret-2', type: 'text', secret: true, required: false },
],
data_streams: [
{
dataset: 'somedataset',
streams: [
{
input: 'foo',
title: 'Foo',
},
],
},
],
policy_templates: [
{
name: 'pkgPolicy1',
title: 'Package policy 1',
description: 'test package policy',
inputs: [
{
type: 'foo',
title: 'Foo',
vars: [],
},
],
},
],
} as unknown as PackageInfo;

describe('when only required secret value is provided', () => {
it('returns single secret reference for required secret', async () => {
const oldPackagePolicy = {
vars: {
'pkg-secret-1': {
value: 'pkg-secret-1-val',
},
'pkg-secret-2': {},
},
inputs: [],
} as unknown as PackagePolicy;

const mockPackagePolicy = {
vars: {
'pkg-secret-1': {
value: 'pkg-secret-1-val-update',
},
'pkg-secret-2': {},
},
inputs: [],
} as unknown as UpdatePackagePolicy;

const result = await extractAndUpdateSecrets({
oldPackagePolicy,
packagePolicyUpdate: mockPackagePolicy,
packageInfo: mockIntegrationPackage,
esClient: esClientMock,
});

expect(esClientMock.transport.request).toHaveBeenCalledTimes(1);
expect(result.secretReferences).toHaveLength(1);
expect((result.packagePolicyUpdate.vars as any)['pkg-secret-1'].value.isSecretRef).toEqual(
true
);
expect((result.packagePolicyUpdate.vars as any)['pkg-secret-2'].value).toBeUndefined();
});
});

describe('when both required and optional secret values are provided', () => {
it('returns secret reference for both required and optional secret', async () => {
const oldPackagePolicy = {
vars: {
'pkg-secret-1': {
value: 'pkg-secret-1-val',
},
'pkg-secret-2': {
value: { id: '1234', isSecretRef: true },
},
},
inputs: [],
} as unknown as PackagePolicy;

const mockPackagePolicy = {
vars: {
'pkg-secret-1': {
value: 'pkg-secret-1-val-update',
},
'pkg-secret-2': {
value: 'pkg-secret-2-val-update',
},
},
inputs: [],
} as unknown as UpdatePackagePolicy;

const result = await extractAndUpdateSecrets({
oldPackagePolicy,
packagePolicyUpdate: mockPackagePolicy,
packageInfo: mockIntegrationPackage,
esClient: esClientMock,
});

expect(esClientMock.transport.request).toHaveBeenCalledTimes(2);
expect(result.secretReferences).toHaveLength(2);
expect((result.packagePolicyUpdate.vars as any)['pkg-secret-1'].value.isSecretRef).toEqual(
true
);
expect((result.packagePolicyUpdate.vars as any)['pkg-secret-2'].value.isSecretRef).toEqual(
true
);
});
});
});
});
5 changes: 3 additions & 2 deletions x-pack/plugins/fleet/server/services/secrets.ts
Original file line number Diff line number Diff line change
Expand Up @@ -259,13 +259,14 @@ export async function extractAndUpdateSecrets(opts: {

const { toCreate, toDelete, noChange } = diffSecretPaths(oldSecretPaths, updatedSecretPaths);

const secretsToCreate = toCreate.filter((secretPath) => !!secretPath.value.value);
const createdSecrets = await createSecrets({
esClient,
values: toCreate.map((secretPath) => secretPath.value.value),
values: secretsToCreate.map((secretPath) => secretPath.value.value),
});

const policyWithSecretRefs = JSON.parse(JSON.stringify(packagePolicyUpdate));
toCreate.forEach((secretPath, i) => {
secretsToCreate.forEach((secretPath, i) => {
set(policyWithSecretRefs, secretPath.path + '.value', toVarSecretRef(createdSecrets[i].id));
});

Expand Down
2 changes: 1 addition & 1 deletion x-pack/test/functional/page_objects/infra_home_page.ts
Original file line number Diff line number Diff line change
Expand Up @@ -369,7 +369,7 @@ export function InfraHomePageProvider({ getService, getPageObjects }: FtrProvide

async dismissDatePickerTooltip() {
const isTooltipOpen = await testSubjects.exists(`waffleDatePickerIntervalTooltip`, {
timeout: 1000,
timeout: 3000,
});

if (isTooltipOpen) {
Expand Down
14 changes: 8 additions & 6 deletions x-pack/test/functional/page_objects/lens_page.ts
Original file line number Diff line number Diff line change
Expand Up @@ -66,12 +66,14 @@ export function LensPageProvider({ getService, getPageObjects }: FtrProviderCont
* a range that has data in our dataset.
*/
async goToTimeRange(fromTime?: string, toTime?: string) {
await PageObjects.timePicker.ensureHiddenNoDataPopover();
fromTime = fromTime || PageObjects.timePicker.defaultStartTime;
toTime = toTime || PageObjects.timePicker.defaultEndTime;
await PageObjects.timePicker.setAbsoluteRange(fromTime, toTime);
// give some time for the update button tooltip to close
await PageObjects.common.sleep(500);
const from = fromTime || PageObjects.timePicker.defaultStartTime;
const to = toTime || PageObjects.timePicker.defaultEndTime;
await retry.try(async () => {
await PageObjects.timePicker.ensureHiddenNoDataPopover();
await PageObjects.timePicker.setAbsoluteRange(from, to);
// give some time for the update button tooltip to close
await PageObjects.common.sleep(500);
});
},

/**
Expand Down

0 comments on commit a221247

Please sign in to comment.