Skip to content

Commit

Permalink
[SecuritySolution] Fixes deprecated use of Spaces API (elastic#118121)
Browse files Browse the repository at this point in the history
* Set up our app client in start() instead of setup()

We don't use it during setup, and since the spaces client is now only
available in start(), we need to respond accordingly.

* Move appClientFactory setup back into the setup phase

Albeit in the getStartServices callback, so it's really in the start
phase.

* Use spaces service from start contract in RequestContextFactory

The setup contract variants have been deprecated.

* Remove unused dependency from EndpointAppContextService

It no longer needs the appClientFactory, as that functionality is
provided through securitySolutionRequestContextFactory, which wraps an
instance of that client itself.
  • Loading branch information
rylnd authored and kpatticha committed Nov 10, 2021
1 parent ab47d96 commit f85d63a
Show file tree
Hide file tree
Showing 5 changed files with 15 additions and 23 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@ import {
getPackagePolicyDeleteCallback,
} from '../fleet_integration/fleet_integration';
import { ManifestManager } from './services/artifacts';
import { AppClientFactory } from '../client';
import { ConfigType } from '../config';
import { IRequestContextFactory } from '../request_context_factory';
import { LicenseService } from '../../common/license';
Expand All @@ -49,7 +48,6 @@ export type EndpointAppContextServiceStartContract = Partial<
logger: Logger;
endpointMetadataService: EndpointMetadataService;
manifestManager?: ManifestManager;
appClientFactory: AppClientFactory;
security: SecurityPluginStart;
alerting: AlertsPluginStartContract;
config: ConfigType;
Expand Down
4 changes: 0 additions & 4 deletions x-pack/plugins/security_solution/server/endpoint/mocks.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@ import {
createMockAgentService,
createArtifactsClientMock,
} from '../../../fleet/server/mocks';
import { AppClientFactory } from '../client';
import { createMockConfig } from '../lib/detection_engine/routes/__mocks__';
import {
EndpointAppContextService,
Expand Down Expand Up @@ -87,8 +86,6 @@ export const createMockEndpointAppContextServiceSetupContract =
export const createMockEndpointAppContextServiceStartContract =
(): jest.Mocked<EndpointAppContextServiceStartContract> => {
const config = createMockConfig();
const factory = new AppClientFactory();
factory.setup({ getSpaceId: () => 'mockSpace', config });

const casesClientMock = createCasesClientMock();
const savedObjectsStart = savedObjectsServiceMock.createStartContract();
Expand All @@ -107,7 +104,6 @@ export const createMockEndpointAppContextServiceStartContract =
packageService: createMockPackageService(),
logger: loggingSystemMock.create().get('mock_endpoint_app_context'),
manifestManager: getManifestManagerMock(),
appClientFactory: factory,
security: securityMock.createStart(),
alerting: alertsMock.createStart(),
config,
Expand Down
15 changes: 7 additions & 8 deletions x-pack/plugins/security_solution/server/plugin.ts
Original file line number Diff line number Diff line change
Expand Up @@ -130,15 +130,10 @@ export class Plugin implements ISecuritySolutionPlugin {
): SecuritySolutionPluginSetup {
this.logger.debug('plugin setup');

const { pluginContext, config, logger, appClientFactory } = this;
const { appClientFactory, pluginContext, config, logger } = this;
const experimentalFeatures = config.experimentalFeatures;
this.kibanaIndex = core.savedObjects.getKibanaIndex();

appClientFactory.setup({
getSpaceId: plugins.spaces?.spacesService?.getSpaceId,
config,
});

initSavedObjects(core.savedObjects);
initUiSettings(core.uiSettings, experimentalFeatures);

Expand Down Expand Up @@ -308,6 +303,11 @@ export class Plugin implements ISecuritySolutionPlugin {
}

core.getStartServices().then(([_, depsStart]) => {
appClientFactory.setup({
getSpaceId: depsStart.spaces?.spacesService?.getSpaceId,
config,
});

const securitySolutionSearchStrategy = securitySolutionSearchStrategyProvider(
depsStart.data,
endpointContext
Expand Down Expand Up @@ -339,7 +339,7 @@ export class Plugin implements ISecuritySolutionPlugin {
core: SecuritySolutionPluginCoreStartDependencies,
plugins: SecuritySolutionPluginStartDependencies
): SecuritySolutionPluginStart {
const { config, logger, appClientFactory } = this;
const { config, logger } = this;

const savedObjectsClient = new SavedObjectsClient(core.savedObjects.createInternalRepository());
const registerIngestCallback = plugins.fleet?.registerExternalCallback;
Expand Down Expand Up @@ -407,7 +407,6 @@ export class Plugin implements ISecuritySolutionPlugin {
plugins.fleet?.agentPolicyService!,
logger
),
appClientFactory,
security: plugins.security,
alerting: plugins.alerting,
config: this.config,
Expand Down
3 changes: 2 additions & 1 deletion x-pack/plugins/security_solution/server/plugin_contract.ts
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ import {
RuleRegistryPluginStartContract as RuleRegistryPluginStart,
} from '../../rule_registry/server';
import { SecurityPluginSetup, SecurityPluginStart } from '../../security/server';
import { SpacesPluginSetup } from '../../spaces/server';
import { SpacesPluginSetup, SpacesPluginStart } from '../../spaces/server';
import {
TaskManagerSetupContract as TaskManagerPluginSetup,
TaskManagerStartContract as TaskManagerPluginStart,
Expand Down Expand Up @@ -68,6 +68,7 @@ export interface SecuritySolutionPluginStartDependencies {
licensing: LicensingPluginStart;
ruleRegistry: RuleRegistryPluginStart;
security: SecurityPluginStart;
spaces?: SpacesPluginStart;
taskManager?: TaskManagerPluginStart;
telemetry?: TelemetryPluginStart;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,13 +36,7 @@ export class RequestContextFactory implements IRequestContextFactory {
private readonly appClientFactory: AppClientFactory;

constructor(private readonly options: ConstructorOptions) {
const { config, plugins } = options;

this.appClientFactory = new AppClientFactory();
this.appClientFactory.setup({
getSpaceId: plugins.spaces?.spacesService?.getSpaceId,
config,
});
}

public async create(
Expand All @@ -51,10 +45,14 @@ export class RequestContextFactory implements IRequestContextFactory {
): Promise<SecuritySolutionApiRequestHandlerContext> {
const { options, appClientFactory } = this;
const { config, core, plugins } = options;
const { lists, ruleRegistry, security, spaces } = plugins;
const { lists, ruleRegistry, security } = plugins;

const [, startPlugins] = await core.getStartServices();
const frameworkRequest = await buildFrameworkRequest(context, security, request);
appClientFactory.setup({
getSpaceId: startPlugins.spaces?.spacesService?.getSpaceId,
config,
});

return {
core: context.core,
Expand All @@ -65,7 +63,7 @@ export class RequestContextFactory implements IRequestContextFactory {

getAppClient: () => appClientFactory.create(request),

getSpaceId: () => spaces?.spacesService?.getSpaceId(request) || DEFAULT_SPACE_ID,
getSpaceId: () => startPlugins.spaces?.spacesService?.getSpaceId(request) || DEFAULT_SPACE_ID,

getRuleDataService: () => ruleRegistry.ruleDataService,

Expand Down

0 comments on commit f85d63a

Please sign in to comment.