mirror of
https://github.com/elastic/kibana.git
synced 2025-04-25 02:09:32 -04:00
Add eslint rule to enforce/autofix import group order
This commit is contained in:
parent
cce6861b89
commit
f9be98d848
99 changed files with 196 additions and 179 deletions
15
.eslintrc.js
15
.eslintrc.js
|
@ -789,6 +789,21 @@ module.exports = {
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fleet overrides
|
||||||
|
*/
|
||||||
|
{
|
||||||
|
files: ['x-pack/plugins/fleet/**/*.{js,mjs,ts,tsx}'],
|
||||||
|
rules: {
|
||||||
|
'import/order': [
|
||||||
|
'warn',
|
||||||
|
{
|
||||||
|
groups: ['builtin', 'external', 'internal', 'parent'],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Security Solution overrides
|
* Security Solution overrides
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -5,8 +5,8 @@
|
||||||
* 2.0.
|
* 2.0.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { defaultPackages } from './epm';
|
|
||||||
import { AgentPolicy } from '../types';
|
import { AgentPolicy } from '../types';
|
||||||
|
import { defaultPackages } from './epm';
|
||||||
export const AGENT_POLICY_SAVED_OBJECT_TYPE = 'ingest-agent-policies';
|
export const AGENT_POLICY_SAVED_OBJECT_TYPE = 'ingest-agent-policies';
|
||||||
export const AGENT_POLICY_INDEX = '.fleet-policies';
|
export const AGENT_POLICY_INDEX = '.fleet-policies';
|
||||||
export const agentPolicyStatuses = {
|
export const agentPolicyStatuses = {
|
||||||
|
|
|
@ -5,8 +5,8 @@
|
||||||
* 2.0.
|
* 2.0.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { isAgentUpgradeable } from './is_agent_upgradeable';
|
|
||||||
import { Agent } from '../types/models/agent';
|
import { Agent } from '../types/models/agent';
|
||||||
|
import { isAgentUpgradeable } from './is_agent_upgradeable';
|
||||||
|
|
||||||
const getAgent = ({
|
const getAgent = ({
|
||||||
version,
|
version,
|
||||||
|
|
|
@ -5,8 +5,8 @@
|
||||||
* 2.0.
|
* 2.0.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { FullAgentPolicy } from './agent_policy';
|
|
||||||
import { AGENT_TYPE_EPHEMERAL, AGENT_TYPE_PERMANENT, AGENT_TYPE_TEMPORARY } from '../../constants';
|
import { AGENT_TYPE_EPHEMERAL, AGENT_TYPE_PERMANENT, AGENT_TYPE_TEMPORARY } from '../../constants';
|
||||||
|
import { FullAgentPolicy } from './agent_policy';
|
||||||
|
|
||||||
export type AgentType =
|
export type AgentType =
|
||||||
| typeof AGENT_TYPE_EPHEMERAL
|
| typeof AGENT_TYPE_EPHEMERAL
|
||||||
|
|
|
@ -14,6 +14,9 @@ import { FormattedMessage } from '@kbn/i18n/react';
|
||||||
import { i18n } from '@kbn/i18n';
|
import { i18n } from '@kbn/i18n';
|
||||||
import styled from 'styled-components';
|
import styled from 'styled-components';
|
||||||
import useObservable from 'react-use/lib/useObservable';
|
import useObservable from 'react-use/lib/useObservable';
|
||||||
|
import { FleetConfigType, FleetStartServices } from '../../plugin';
|
||||||
|
import { KibanaContextProvider } from '../../../../../../src/plugins/kibana_react/public';
|
||||||
|
import { EuiThemeProvider } from '../../../../../../src/plugins/kibana_react/common';
|
||||||
import {
|
import {
|
||||||
ConfigContext,
|
ConfigContext,
|
||||||
FleetStatusProvider,
|
FleetStatusProvider,
|
||||||
|
@ -34,10 +37,7 @@ import { DataStreamApp } from './sections/data_stream';
|
||||||
import { FleetApp } from './sections/agents';
|
import { FleetApp } from './sections/agents';
|
||||||
import { IngestManagerOverview } from './sections/overview';
|
import { IngestManagerOverview } from './sections/overview';
|
||||||
import { ProtectedRoute } from './index';
|
import { ProtectedRoute } from './index';
|
||||||
import { FleetConfigType, FleetStartServices } from '../../plugin';
|
|
||||||
import { UIExtensionsStorage } from './types';
|
import { UIExtensionsStorage } from './types';
|
||||||
import { KibanaContextProvider } from '../../../../../../src/plugins/kibana_react/public';
|
|
||||||
import { EuiThemeProvider } from '../../../../../../src/plugins/kibana_react/common';
|
|
||||||
import { UIExtensionsContext } from './hooks/use_ui_extension';
|
import { UIExtensionsContext } from './hooks/use_ui_extension';
|
||||||
|
|
||||||
const ErrorLayout = ({ children }: { children: JSX.Element }) => (
|
const ErrorLayout = ({ children }: { children: JSX.Element }) => (
|
||||||
|
|
|
@ -6,9 +6,9 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import React, { useState, useContext, useEffect } from 'react';
|
import React, { useState, useContext, useEffect } from 'react';
|
||||||
|
import { GetFleetStatusResponse } from '../types';
|
||||||
import { useConfig } from './use_config';
|
import { useConfig } from './use_config';
|
||||||
import { sendGetFleetStatus } from './use_request';
|
import { sendGetFleetStatus } from './use_request';
|
||||||
import { GetFleetStatusResponse } from '../types';
|
|
||||||
|
|
||||||
interface FleetStatusState {
|
interface FleetStatusState {
|
||||||
enabled: boolean;
|
enabled: boolean;
|
||||||
|
|
|
@ -5,12 +5,6 @@
|
||||||
* 2.0.
|
* 2.0.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import {
|
|
||||||
useRequest,
|
|
||||||
sendRequest,
|
|
||||||
useConditionalRequest,
|
|
||||||
SendConditionalRequestConfig,
|
|
||||||
} from './use_request';
|
|
||||||
import { agentPolicyRouteService } from '../../services';
|
import { agentPolicyRouteService } from '../../services';
|
||||||
import {
|
import {
|
||||||
GetAgentPoliciesRequest,
|
GetAgentPoliciesRequest,
|
||||||
|
@ -26,6 +20,12 @@ import {
|
||||||
DeleteAgentPolicyRequest,
|
DeleteAgentPolicyRequest,
|
||||||
DeleteAgentPolicyResponse,
|
DeleteAgentPolicyResponse,
|
||||||
} from '../../types';
|
} from '../../types';
|
||||||
|
import {
|
||||||
|
useRequest,
|
||||||
|
sendRequest,
|
||||||
|
useConditionalRequest,
|
||||||
|
SendConditionalRequestConfig,
|
||||||
|
} from './use_request';
|
||||||
|
|
||||||
export const useGetAgentPolicies = (query?: GetAgentPoliciesRequest['query']) => {
|
export const useGetAgentPolicies = (query?: GetAgentPoliciesRequest['query']) => {
|
||||||
return useRequest<GetAgentPoliciesResponse>({
|
return useRequest<GetAgentPoliciesResponse>({
|
||||||
|
|
|
@ -5,7 +5,6 @@
|
||||||
* 2.0.
|
* 2.0.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { useRequest, UseRequestConfig, sendRequest } from './use_request';
|
|
||||||
import { agentRouteService } from '../../services';
|
import { agentRouteService } from '../../services';
|
||||||
import {
|
import {
|
||||||
GetOneAgentResponse,
|
GetOneAgentResponse,
|
||||||
|
@ -30,6 +29,7 @@ import {
|
||||||
PostNewAgentActionRequest,
|
PostNewAgentActionRequest,
|
||||||
PostNewAgentActionResponse,
|
PostNewAgentActionResponse,
|
||||||
} from '../../types';
|
} from '../../types';
|
||||||
|
import { useRequest, UseRequestConfig, sendRequest } from './use_request';
|
||||||
|
|
||||||
type RequestOptions = Pick<Partial<UseRequestConfig>, 'pollIntervalMs'>;
|
type RequestOptions = Pick<Partial<UseRequestConfig>, 'pollIntervalMs'>;
|
||||||
|
|
||||||
|
|
|
@ -5,9 +5,9 @@
|
||||||
* 2.0.
|
* 2.0.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { sendRequest } from './use_request';
|
|
||||||
import { appRoutesService } from '../../services';
|
import { appRoutesService } from '../../services';
|
||||||
import { CheckPermissionsResponse } from '../../types';
|
import { CheckPermissionsResponse } from '../../types';
|
||||||
|
import { sendRequest } from './use_request';
|
||||||
|
|
||||||
export const sendGetPermissionsCheck = () => {
|
export const sendGetPermissionsCheck = () => {
|
||||||
return sendRequest<CheckPermissionsResponse>({
|
return sendRequest<CheckPermissionsResponse>({
|
||||||
|
|
|
@ -5,9 +5,9 @@
|
||||||
* 2.0.
|
* 2.0.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { useRequest } from './use_request';
|
|
||||||
import { dataStreamRouteService } from '../../services';
|
import { dataStreamRouteService } from '../../services';
|
||||||
import { GetDataStreamsResponse } from '../../types';
|
import { GetDataStreamsResponse } from '../../types';
|
||||||
|
import { useRequest } from './use_request';
|
||||||
|
|
||||||
export const useGetDataStreams = () => {
|
export const useGetDataStreams = () => {
|
||||||
return useRequest<GetDataStreamsResponse>({
|
return useRequest<GetDataStreamsResponse>({
|
||||||
|
|
|
@ -5,6 +5,12 @@
|
||||||
* 2.0.
|
* 2.0.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
import { enrollmentAPIKeyRouteService } from '../../services';
|
||||||
|
import {
|
||||||
|
GetOneEnrollmentAPIKeyResponse,
|
||||||
|
GetEnrollmentAPIKeysResponse,
|
||||||
|
GetEnrollmentAPIKeysRequest,
|
||||||
|
} from '../../types';
|
||||||
import {
|
import {
|
||||||
useRequest,
|
useRequest,
|
||||||
UseRequestConfig,
|
UseRequestConfig,
|
||||||
|
@ -12,12 +18,6 @@ import {
|
||||||
useConditionalRequest,
|
useConditionalRequest,
|
||||||
SendConditionalRequestConfig,
|
SendConditionalRequestConfig,
|
||||||
} from './use_request';
|
} from './use_request';
|
||||||
import { enrollmentAPIKeyRouteService } from '../../services';
|
|
||||||
import {
|
|
||||||
GetOneEnrollmentAPIKeyResponse,
|
|
||||||
GetEnrollmentAPIKeysResponse,
|
|
||||||
GetEnrollmentAPIKeysRequest,
|
|
||||||
} from '../../types';
|
|
||||||
|
|
||||||
type RequestOptions = Pick<Partial<UseRequestConfig>, 'pollIntervalMs'>;
|
type RequestOptions = Pick<Partial<UseRequestConfig>, 'pollIntervalMs'>;
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,6 @@
|
||||||
* 2.0.
|
* 2.0.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { useRequest, sendRequest } from './use_request';
|
|
||||||
import { epmRouteService } from '../../services';
|
import { epmRouteService } from '../../services';
|
||||||
import {
|
import {
|
||||||
GetCategoriesRequest,
|
GetCategoriesRequest,
|
||||||
|
@ -18,6 +17,7 @@ import {
|
||||||
DeletePackageResponse,
|
DeletePackageResponse,
|
||||||
} from '../../types';
|
} from '../../types';
|
||||||
import { GetStatsResponse } from '../../../../../common';
|
import { GetStatsResponse } from '../../../../../common';
|
||||||
|
import { useRequest, sendRequest } from './use_request';
|
||||||
|
|
||||||
export const useGetCategories = (query: GetCategoriesRequest['query'] = {}) => {
|
export const useGetCategories = (query: GetCategoriesRequest['query'] = {}) => {
|
||||||
return useRequest<GetCategoriesResponse>({
|
return useRequest<GetCategoriesResponse>({
|
||||||
|
|
|
@ -5,9 +5,9 @@
|
||||||
* 2.0.
|
* 2.0.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { sendRequest, useRequest } from './use_request';
|
|
||||||
import { outputRoutesService } from '../../services';
|
import { outputRoutesService } from '../../services';
|
||||||
import { PutOutputRequest, GetOutputsResponse } from '../../types';
|
import { PutOutputRequest, GetOutputsResponse } from '../../types';
|
||||||
|
import { sendRequest, useRequest } from './use_request';
|
||||||
|
|
||||||
export function useGetOutputs() {
|
export function useGetOutputs() {
|
||||||
return useRequest<GetOutputsResponse>({
|
return useRequest<GetOutputsResponse>({
|
||||||
|
|
|
@ -5,7 +5,6 @@
|
||||||
* 2.0.
|
* 2.0.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { sendRequest, useRequest } from './use_request';
|
|
||||||
import { packagePolicyRouteService } from '../../services';
|
import { packagePolicyRouteService } from '../../services';
|
||||||
import {
|
import {
|
||||||
CreatePackagePolicyRequest,
|
CreatePackagePolicyRequest,
|
||||||
|
@ -20,6 +19,7 @@ import {
|
||||||
GetPackagePoliciesResponse,
|
GetPackagePoliciesResponse,
|
||||||
GetOnePackagePolicyResponse,
|
GetOnePackagePolicyResponse,
|
||||||
} from '../../../../../common/types/rest_spec';
|
} from '../../../../../common/types/rest_spec';
|
||||||
|
import { sendRequest, useRequest } from './use_request';
|
||||||
|
|
||||||
export const sendCreatePackagePolicy = (body: CreatePackagePolicyRequest['body']) => {
|
export const sendCreatePackagePolicy = (body: CreatePackagePolicyRequest['body']) => {
|
||||||
return sendRequest<CreatePackagePolicyResponse>({
|
return sendRequest<CreatePackagePolicyResponse>({
|
||||||
|
|
|
@ -5,9 +5,9 @@
|
||||||
* 2.0.
|
* 2.0.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { sendRequest, useRequest } from './use_request';
|
|
||||||
import { settingsRoutesService } from '../../services';
|
import { settingsRoutesService } from '../../services';
|
||||||
import { PutSettingsResponse, PutSettingsRequest, GetSettingsResponse } from '../../types';
|
import { PutSettingsResponse, PutSettingsRequest, GetSettingsResponse } from '../../types';
|
||||||
|
import { sendRequest, useRequest } from './use_request';
|
||||||
|
|
||||||
export function useGetSettings() {
|
export function useGetSettings() {
|
||||||
return useRequest<GetSettingsResponse>({
|
return useRequest<GetSettingsResponse>({
|
||||||
|
|
|
@ -5,9 +5,9 @@
|
||||||
* 2.0.
|
* 2.0.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { sendRequest } from './use_request';
|
|
||||||
import { setupRouteService, fleetSetupRouteService } from '../../services';
|
import { setupRouteService, fleetSetupRouteService } from '../../services';
|
||||||
import { GetFleetStatusResponse } from '../../types';
|
import { GetFleetStatusResponse } from '../../types';
|
||||||
|
import { sendRequest } from './use_request';
|
||||||
|
|
||||||
export const sendSetup = () => {
|
export const sendSetup = () => {
|
||||||
return sendRequest({
|
return sendRequest({
|
||||||
|
|
|
@ -11,8 +11,8 @@ import { render as reactRender, RenderOptions, RenderResult, act } from '@testin
|
||||||
import { ScopedHistory } from '../../../../../../../src/core/public';
|
import { ScopedHistory } from '../../../../../../../src/core/public';
|
||||||
import { FleetAppContext } from '../app';
|
import { FleetAppContext } from '../app';
|
||||||
import { FleetConfigType } from '../../../plugin';
|
import { FleetConfigType } from '../../../plugin';
|
||||||
import { createConfigurationMock } from './plugin_configuration';
|
|
||||||
import { UIExtensionsStorage } from '../types';
|
import { UIExtensionsStorage } from '../types';
|
||||||
|
import { createConfigurationMock } from './plugin_configuration';
|
||||||
import { createStartMock } from './plugin_interfaces';
|
import { createStartMock } from './plugin_interfaces';
|
||||||
import { createStartServices } from './fleet_start_services';
|
import { createStartServices } from './fleet_start_services';
|
||||||
import { MockedFleetStart, MockedFleetStartServices } from './types';
|
import { MockedFleetStart, MockedFleetStartServices } from './types';
|
||||||
|
|
|
@ -9,9 +9,9 @@ import React from 'react';
|
||||||
import { I18nProvider } from '@kbn/i18n/react';
|
import { I18nProvider } from '@kbn/i18n/react';
|
||||||
import { MockedKeys } from '@kbn/utility-types/jest';
|
import { MockedKeys } from '@kbn/utility-types/jest';
|
||||||
import { coreMock } from '../../../../../../../src/core/public/mocks';
|
import { coreMock } from '../../../../../../../src/core/public/mocks';
|
||||||
import { createStartDepsMock } from './plugin_dependencies';
|
|
||||||
import { IStorage, Storage } from '../../../../../../../src/plugins/kibana_utils/public';
|
import { IStorage, Storage } from '../../../../../../../src/plugins/kibana_utils/public';
|
||||||
import { setHttpClient } from '../hooks/use_request';
|
import { setHttpClient } from '../hooks/use_request';
|
||||||
|
import { createStartDepsMock } from './plugin_dependencies';
|
||||||
import { MockedFleetStartServices } from './types';
|
import { MockedFleetStartServices } from './types';
|
||||||
|
|
||||||
// Taken from core. See: src/plugins/kibana_utils/public/storage/storage.test.ts
|
// Taken from core. See: src/plugins/kibana_utils/public/storage/storage.test.ts
|
||||||
|
|
|
@ -5,13 +5,13 @@
|
||||||
* 2.0.
|
* 2.0.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
import { Route } from 'react-router-dom';
|
||||||
|
import React from 'react';
|
||||||
|
import { act } from 'react-test-renderer';
|
||||||
import { createTestRendererMock, MockedFleetStartServices, TestRenderer } from '../../../mock';
|
import { createTestRendererMock, MockedFleetStartServices, TestRenderer } from '../../../mock';
|
||||||
import { PAGE_ROUTING_PATHS, pagePathGetters, PLUGIN_ID } from '../../../constants';
|
import { PAGE_ROUTING_PATHS, pagePathGetters, PLUGIN_ID } from '../../../constants';
|
||||||
import { Route } from 'react-router-dom';
|
|
||||||
import { CreatePackagePolicyPage } from './index';
|
|
||||||
import React from 'react';
|
|
||||||
import { CreatePackagePolicyRouteState } from '../../../types';
|
import { CreatePackagePolicyRouteState } from '../../../types';
|
||||||
import { act } from 'react-test-renderer';
|
import { CreatePackagePolicyPage } from './index';
|
||||||
|
|
||||||
describe('when on the package policy create page', () => {
|
describe('when on the package policy create page', () => {
|
||||||
const createPageUrlPath = pagePathGetters.add_integration_to_policy({ pkgkey: 'nginx-0.3.7' });
|
const createPageUrlPath = pagePathGetters.add_integration_to_policy({ pkgkey: 'nginx-0.3.7' });
|
||||||
|
|
|
@ -37,6 +37,12 @@ import {
|
||||||
} from '../../../hooks';
|
} from '../../../hooks';
|
||||||
import { Loading } from '../../../components';
|
import { Loading } from '../../../components';
|
||||||
import { ConfirmDeployAgentPolicyModal } from '../components';
|
import { ConfirmDeployAgentPolicyModal } from '../components';
|
||||||
|
import { useIntraAppState } from '../../../hooks/use_intra_app_state';
|
||||||
|
import { useUIExtension } from '../../../hooks/use_ui_extension';
|
||||||
|
import { ExtensionWrapper } from '../../../components/extension_wrapper';
|
||||||
|
import { PackagePolicyEditExtensionComponentProps } from '../../../types';
|
||||||
|
import { PLUGIN_ID } from '../../../../../../common/constants';
|
||||||
|
import { pkgKeyFromPackageInfo } from '../../../services/pkg_key_from_package_info';
|
||||||
import { CreatePackagePolicyPageLayout } from './components';
|
import { CreatePackagePolicyPageLayout } from './components';
|
||||||
import { CreatePackagePolicyFrom, PackagePolicyFormState } from './types';
|
import { CreatePackagePolicyFrom, PackagePolicyFormState } from './types';
|
||||||
import {
|
import {
|
||||||
|
@ -48,12 +54,6 @@ import { StepSelectPackage } from './step_select_package';
|
||||||
import { StepSelectAgentPolicy } from './step_select_agent_policy';
|
import { StepSelectAgentPolicy } from './step_select_agent_policy';
|
||||||
import { StepConfigurePackagePolicy } from './step_configure_package';
|
import { StepConfigurePackagePolicy } from './step_configure_package';
|
||||||
import { StepDefinePackagePolicy } from './step_define_package_policy';
|
import { StepDefinePackagePolicy } from './step_define_package_policy';
|
||||||
import { useIntraAppState } from '../../../hooks/use_intra_app_state';
|
|
||||||
import { useUIExtension } from '../../../hooks/use_ui_extension';
|
|
||||||
import { ExtensionWrapper } from '../../../components/extension_wrapper';
|
|
||||||
import { PackagePolicyEditExtensionComponentProps } from '../../../types';
|
|
||||||
import { PLUGIN_ID } from '../../../../../../common/constants';
|
|
||||||
import { pkgKeyFromPackageInfo } from '../../../services/pkg_key_from_package_info';
|
|
||||||
|
|
||||||
const StepsWithLessPadding = styled(EuiSteps)`
|
const StepsWithLessPadding = styled(EuiSteps)`
|
||||||
.euiStep__content {
|
.euiStep__content {
|
||||||
|
|
|
@ -21,8 +21,8 @@ import {
|
||||||
import { AgentPolicy, PackageInfo, PackagePolicy, NewPackagePolicy } from '../../../types';
|
import { AgentPolicy, PackageInfo, PackagePolicy, NewPackagePolicy } from '../../../types';
|
||||||
import { packageToPackagePolicyInputs } from '../../../services';
|
import { packageToPackagePolicyInputs } from '../../../services';
|
||||||
import { Loading } from '../../../components';
|
import { Loading } from '../../../components';
|
||||||
import { PackagePolicyValidationResults } from './services';
|
|
||||||
import { pkgKeyFromPackageInfo } from '../../../services/pkg_key_from_package_info';
|
import { pkgKeyFromPackageInfo } from '../../../services/pkg_key_from_package_info';
|
||||||
|
import { PackagePolicyValidationResults } from './services';
|
||||||
|
|
||||||
export const StepDefinePackagePolicy: React.FunctionComponent<{
|
export const StepDefinePackagePolicy: React.FunctionComponent<{
|
||||||
agentPolicy: AgentPolicy;
|
agentPolicy: AgentPolicy;
|
||||||
|
|
|
@ -33,10 +33,10 @@ import {
|
||||||
} from '../../../hooks';
|
} from '../../../hooks';
|
||||||
import { Loading, Error } from '../../../components';
|
import { Loading, Error } from '../../../components';
|
||||||
import { WithHeaderLayout } from '../../../layouts';
|
import { WithHeaderLayout } from '../../../layouts';
|
||||||
import { AgentPolicyRefreshContext, useGetAgentStatus, AgentStatusRefreshContext } from './hooks';
|
|
||||||
import { LinkedAgentCount, AgentPolicyActionMenu } from '../components';
|
import { LinkedAgentCount, AgentPolicyActionMenu } from '../components';
|
||||||
import { PackagePoliciesView, SettingsView } from './components';
|
|
||||||
import { useIntraAppState } from '../../../hooks/use_intra_app_state';
|
import { useIntraAppState } from '../../../hooks/use_intra_app_state';
|
||||||
|
import { AgentPolicyRefreshContext, useGetAgentStatus, AgentStatusRefreshContext } from './hooks';
|
||||||
|
import { PackagePoliciesView, SettingsView } from './components';
|
||||||
|
|
||||||
const Divider = styled.div`
|
const Divider = styled.div`
|
||||||
width: 0;
|
width: 0;
|
||||||
|
|
|
@ -5,9 +5,9 @@
|
||||||
* 2.0.
|
* 2.0.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
import url from 'url';
|
||||||
import React, { memo, useMemo, useState, useCallback, useEffect } from 'react';
|
import React, { memo, useMemo, useState, useCallback, useEffect } from 'react';
|
||||||
import styled from 'styled-components';
|
import styled from 'styled-components';
|
||||||
import url from 'url';
|
|
||||||
import { encode } from 'rison-node';
|
import { encode } from 'rison-node';
|
||||||
import { stringify } from 'query-string';
|
import { stringify } from 'query-string';
|
||||||
import {
|
import {
|
||||||
|
|
|
@ -8,8 +8,8 @@
|
||||||
import React, { memo, useState, useEffect } from 'react';
|
import React, { memo, useState, useEffect } from 'react';
|
||||||
import { EuiPopover, EuiFilterButton, EuiFilterSelectItem } from '@elastic/eui';
|
import { EuiPopover, EuiFilterButton, EuiFilterSelectItem } from '@elastic/eui';
|
||||||
import { i18n } from '@kbn/i18n';
|
import { i18n } from '@kbn/i18n';
|
||||||
import { ORDERED_FILTER_LOG_LEVELS, AGENT_LOG_INDEX_PATTERN, LOG_LEVEL_FIELD } from './constants';
|
|
||||||
import { useStartServices } from '../../../../../hooks';
|
import { useStartServices } from '../../../../../hooks';
|
||||||
|
import { ORDERED_FILTER_LOG_LEVELS, AGENT_LOG_INDEX_PATTERN, LOG_LEVEL_FIELD } from './constants';
|
||||||
|
|
||||||
function sortLogLevels(levels: string[]): string[] {
|
function sortLogLevels(levels: string[]): string[] {
|
||||||
return [
|
return [
|
||||||
|
|
|
@ -34,10 +34,10 @@ import {
|
||||||
} from '../../../hooks';
|
} from '../../../hooks';
|
||||||
import { WithHeaderLayout } from '../../../layouts';
|
import { WithHeaderLayout } from '../../../layouts';
|
||||||
import { AgentHealth } from '../components';
|
import { AgentHealth } from '../components';
|
||||||
import { AgentRefreshContext } from './hooks';
|
|
||||||
import { AgentLogs, AgentDetailsActionMenu, AgentDetailsContent } from './components';
|
|
||||||
import { useIntraAppState } from '../../../hooks/use_intra_app_state';
|
import { useIntraAppState } from '../../../hooks/use_intra_app_state';
|
||||||
import { isAgentUpgradeable } from '../../../services';
|
import { isAgentUpgradeable } from '../../../services';
|
||||||
|
import { AgentRefreshContext } from './hooks';
|
||||||
|
import { AgentLogs, AgentDetailsActionMenu, AgentDetailsContent } from './components';
|
||||||
|
|
||||||
export const AgentDetailsPage: React.FunctionComponent = () => {
|
export const AgentDetailsPage: React.FunctionComponent = () => {
|
||||||
const {
|
const {
|
||||||
|
|
|
@ -23,8 +23,8 @@ import { i18n } from '@kbn/i18n';
|
||||||
import { FormattedMessage } from '@kbn/i18n/react';
|
import { FormattedMessage } from '@kbn/i18n/react';
|
||||||
import { AgentPolicy } from '../../../../types';
|
import { AgentPolicy } from '../../../../types';
|
||||||
import { useStartServices, useLink, sendGetOneAgentPolicyFull } from '../../../../hooks';
|
import { useStartServices, useLink, sendGetOneAgentPolicyFull } from '../../../../hooks';
|
||||||
import { DownloadStep, AgentPolicySelectionStep } from './steps';
|
|
||||||
import { fullAgentPolicyToYaml, agentPolicyRouteService } from '../../../../services';
|
import { fullAgentPolicyToYaml, agentPolicyRouteService } from '../../../../services';
|
||||||
|
import { DownloadStep, AgentPolicySelectionStep } from './steps';
|
||||||
|
|
||||||
interface Props {
|
interface Props {
|
||||||
agentPolicies?: AgentPolicy[];
|
agentPolicies?: AgentPolicy[];
|
||||||
|
|
|
@ -9,8 +9,8 @@ import React from 'react';
|
||||||
import { EuiText, EuiButton, EuiSpacer } from '@elastic/eui';
|
import { EuiText, EuiButton, EuiSpacer } from '@elastic/eui';
|
||||||
import { FormattedMessage } from '@kbn/i18n/react';
|
import { FormattedMessage } from '@kbn/i18n/react';
|
||||||
import { i18n } from '@kbn/i18n';
|
import { i18n } from '@kbn/i18n';
|
||||||
import { EnrollmentStepAgentPolicy } from './agent_policy_selection';
|
|
||||||
import { AgentPolicy } from '../../../../types';
|
import { AgentPolicy } from '../../../../types';
|
||||||
|
import { EnrollmentStepAgentPolicy } from './agent_policy_selection';
|
||||||
|
|
||||||
export const DownloadStep = () => {
|
export const DownloadStep = () => {
|
||||||
return {
|
return {
|
||||||
|
|
|
@ -11,13 +11,13 @@ import { HashRouter as Router, Route, Switch, Redirect } from 'react-router-dom'
|
||||||
import { PAGE_ROUTING_PATHS } from '../../constants';
|
import { PAGE_ROUTING_PATHS } from '../../constants';
|
||||||
import { Loading, Error } from '../../components';
|
import { Loading, Error } from '../../components';
|
||||||
import { useConfig, useFleetStatus, useBreadcrumbs, useCapabilities } from '../../hooks';
|
import { useConfig, useFleetStatus, useBreadcrumbs, useCapabilities } from '../../hooks';
|
||||||
|
import { WithoutHeaderLayout } from '../../layouts';
|
||||||
import { AgentListPage } from './agent_list_page';
|
import { AgentListPage } from './agent_list_page';
|
||||||
import { SetupPage } from './setup_page';
|
import { SetupPage } from './setup_page';
|
||||||
import { AgentDetailsPage } from './agent_details_page';
|
import { AgentDetailsPage } from './agent_details_page';
|
||||||
import { NoAccessPage } from './error_pages/no_access';
|
import { NoAccessPage } from './error_pages/no_access';
|
||||||
import { EnrollmentTokenListPage } from './enrollment_token_list_page';
|
import { EnrollmentTokenListPage } from './enrollment_token_list_page';
|
||||||
import { ListLayout } from './components/list_layout';
|
import { ListLayout } from './components/list_layout';
|
||||||
import { WithoutHeaderLayout } from '../../layouts';
|
|
||||||
|
|
||||||
export const FleetApp: React.FunctionComponent = () => {
|
export const FleetApp: React.FunctionComponent = () => {
|
||||||
useBreadcrumbs('fleet');
|
useBreadcrumbs('fleet');
|
||||||
|
|
|
@ -22,8 +22,8 @@ import { FormattedMessage } from '@kbn/i18n/react';
|
||||||
import { Loading } from '../../../components';
|
import { Loading } from '../../../components';
|
||||||
import { PackageList } from '../../../types';
|
import { PackageList } from '../../../types';
|
||||||
import { useLocalSearch, searchIdField } from '../hooks';
|
import { useLocalSearch, searchIdField } from '../hooks';
|
||||||
import { PackageCard } from './package_card';
|
|
||||||
import { pkgKeyFromPackageInfo } from '../../../services/pkg_key_from_package_info';
|
import { pkgKeyFromPackageInfo } from '../../../services/pkg_key_from_package_info';
|
||||||
|
import { PackageCard } from './package_card';
|
||||||
|
|
||||||
interface ListProps {
|
interface ListProps {
|
||||||
isLoading?: boolean;
|
isLoading?: boolean;
|
||||||
|
|
|
@ -5,11 +5,10 @@
|
||||||
* 2.0.
|
* 2.0.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { createTestRendererMock, MockedFleetStartServices, TestRenderer } from '../../../../mock';
|
|
||||||
import { Detail } from './index';
|
|
||||||
import React, { lazy, memo } from 'react';
|
import React, { lazy, memo } from 'react';
|
||||||
import { PAGE_ROUTING_PATHS, pagePathGetters } from '../../../../constants';
|
|
||||||
import { Route } from 'react-router-dom';
|
import { Route } from 'react-router-dom';
|
||||||
|
import { act, cleanup } from '@testing-library/react';
|
||||||
|
import { PAGE_ROUTING_PATHS, pagePathGetters } from '../../../../constants';
|
||||||
import {
|
import {
|
||||||
GetAgentPoliciesResponse,
|
GetAgentPoliciesResponse,
|
||||||
GetFleetStatusResponse,
|
GetFleetStatusResponse,
|
||||||
|
@ -24,7 +23,8 @@ import {
|
||||||
fleetSetupRouteService,
|
fleetSetupRouteService,
|
||||||
packagePolicyRouteService,
|
packagePolicyRouteService,
|
||||||
} from '../../../../../../../common/services';
|
} from '../../../../../../../common/services';
|
||||||
import { act, cleanup } from '@testing-library/react';
|
import { createTestRendererMock, MockedFleetStartServices, TestRenderer } from '../../../../mock';
|
||||||
|
import { Detail } from './index';
|
||||||
|
|
||||||
describe('when on integration detail', () => {
|
describe('when on integration detail', () => {
|
||||||
const pkgkey = 'nginx-0.3.7';
|
const pkgkey = 'nginx-0.3.7';
|
||||||
|
|
|
@ -14,12 +14,12 @@ import {
|
||||||
EuiDescriptionListTitle,
|
EuiDescriptionListTitle,
|
||||||
EuiDescriptionListDescription,
|
EuiDescriptionListDescription,
|
||||||
} from '@elastic/eui';
|
} from '@elastic/eui';
|
||||||
import { OverviewPanel } from './overview_panel';
|
|
||||||
import { OverviewStats } from './overview_stats';
|
|
||||||
import { SO_SEARCH_LIMIT } from '../../../constants';
|
import { SO_SEARCH_LIMIT } from '../../../constants';
|
||||||
import { useLink, useGetPackagePolicies } from '../../../hooks';
|
import { useLink, useGetPackagePolicies } from '../../../hooks';
|
||||||
import { AgentPolicy } from '../../../types';
|
import { AgentPolicy } from '../../../types';
|
||||||
import { Loading } from '../../agents/components';
|
import { Loading } from '../../agents/components';
|
||||||
|
import { OverviewStats } from './overview_stats';
|
||||||
|
import { OverviewPanel } from './overview_panel';
|
||||||
|
|
||||||
export const OverviewPolicySection: React.FC<{ agentPolicies: AgentPolicy[] }> = ({
|
export const OverviewPolicySection: React.FC<{ agentPolicies: AgentPolicy[] }> = ({
|
||||||
agentPolicies,
|
agentPolicies,
|
||||||
|
|
|
@ -14,10 +14,10 @@ import {
|
||||||
EuiDescriptionListDescription,
|
EuiDescriptionListDescription,
|
||||||
EuiFlexItem,
|
EuiFlexItem,
|
||||||
} from '@elastic/eui';
|
} from '@elastic/eui';
|
||||||
import { OverviewPanel } from './overview_panel';
|
|
||||||
import { OverviewStats } from './overview_stats';
|
|
||||||
import { useLink, useGetAgentStatus } from '../../../hooks';
|
import { useLink, useGetAgentStatus } from '../../../hooks';
|
||||||
import { Loading } from '../../agents/components';
|
import { Loading } from '../../agents/components';
|
||||||
|
import { OverviewPanel } from './overview_panel';
|
||||||
|
import { OverviewStats } from './overview_stats';
|
||||||
|
|
||||||
export const OverviewAgentSection = () => {
|
export const OverviewAgentSection = () => {
|
||||||
const { getHref } = useLink();
|
const { getHref } = useLink();
|
||||||
|
|
|
@ -14,10 +14,10 @@ import {
|
||||||
EuiDescriptionListTitle,
|
EuiDescriptionListTitle,
|
||||||
EuiDescriptionListDescription,
|
EuiDescriptionListDescription,
|
||||||
} from '@elastic/eui';
|
} from '@elastic/eui';
|
||||||
import { OverviewPanel } from './overview_panel';
|
|
||||||
import { OverviewStats } from './overview_stats';
|
|
||||||
import { useLink, useGetDataStreams, useStartServices } from '../../../hooks';
|
import { useLink, useGetDataStreams, useStartServices } from '../../../hooks';
|
||||||
import { Loading } from '../../agents/components';
|
import { Loading } from '../../agents/components';
|
||||||
|
import { OverviewPanel } from './overview_panel';
|
||||||
|
import { OverviewStats } from './overview_stats';
|
||||||
|
|
||||||
export const OverviewDatastreamSection: React.FC = () => {
|
export const OverviewDatastreamSection: React.FC = () => {
|
||||||
const { getHref } = useLink();
|
const { getHref } = useLink();
|
||||||
|
|
|
@ -14,11 +14,11 @@ import {
|
||||||
EuiDescriptionListTitle,
|
EuiDescriptionListTitle,
|
||||||
EuiDescriptionListDescription,
|
EuiDescriptionListDescription,
|
||||||
} from '@elastic/eui';
|
} from '@elastic/eui';
|
||||||
import { OverviewPanel } from './overview_panel';
|
|
||||||
import { OverviewStats } from './overview_stats';
|
|
||||||
import { useLink, useGetPackages } from '../../../hooks';
|
import { useLink, useGetPackages } from '../../../hooks';
|
||||||
import { Loading } from '../../agents/components';
|
import { Loading } from '../../agents/components';
|
||||||
import { installationStatuses } from '../../../../../../common/constants';
|
import { installationStatuses } from '../../../../../../common/constants';
|
||||||
|
import { OverviewStats } from './overview_stats';
|
||||||
|
import { OverviewPanel } from './overview_panel';
|
||||||
|
|
||||||
export const OverviewIntegrationSection: React.FC = () => {
|
export const OverviewIntegrationSection: React.FC = () => {
|
||||||
const { getHref } = useLink();
|
const { getHref } = useLink();
|
||||||
|
|
|
@ -22,10 +22,10 @@ import {
|
||||||
import { Storage } from '../../../../src/plugins/kibana_utils/public';
|
import { Storage } from '../../../../src/plugins/kibana_utils/public';
|
||||||
import { LicensingPluginSetup } from '../../licensing/public';
|
import { LicensingPluginSetup } from '../../licensing/public';
|
||||||
import { PLUGIN_ID, CheckPermissionsResponse, PostIngestSetupResponse } from '../common';
|
import { PLUGIN_ID, CheckPermissionsResponse, PostIngestSetupResponse } from '../common';
|
||||||
import { BASE_PATH } from './applications/fleet/constants';
|
|
||||||
|
|
||||||
import { FleetConfigType } from '../common/types';
|
import { FleetConfigType } from '../common/types';
|
||||||
import { setupRouteService, appRoutesService } from '../common';
|
import { setupRouteService, appRoutesService } from '../common';
|
||||||
|
import { BASE_PATH } from './applications/fleet/constants';
|
||||||
import { licenseService } from './applications/fleet/hooks/use_license';
|
import { licenseService } from './applications/fleet/hooks/use_license';
|
||||||
import { setHttpClient } from './applications/fleet/hooks/use_request/use_request';
|
import { setHttpClient } from './applications/fleet/hooks/use_request/use_request';
|
||||||
import {
|
import {
|
||||||
|
|
|
@ -5,9 +5,9 @@
|
||||||
* 2.0.
|
* 2.0.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
import os from 'os';
|
||||||
import { createFlagError, run, ToolingLog } from '@kbn/dev-utils';
|
import { createFlagError, run, ToolingLog } from '@kbn/dev-utils';
|
||||||
import fetch from 'node-fetch';
|
import fetch from 'node-fetch';
|
||||||
import os from 'os';
|
|
||||||
import {
|
import {
|
||||||
Agent as _Agent,
|
Agent as _Agent,
|
||||||
PostAgentCheckinRequest,
|
PostAgentCheckinRequest,
|
||||||
|
|
|
@ -7,11 +7,11 @@
|
||||||
|
|
||||||
import { UsageCollectionSetup } from 'src/plugins/usage_collection/server';
|
import { UsageCollectionSetup } from 'src/plugins/usage_collection/server';
|
||||||
import { CoreSetup } from 'kibana/server';
|
import { CoreSetup } from 'kibana/server';
|
||||||
|
import { FleetConfigType } from '..';
|
||||||
import { getIsAgentsEnabled } from './config_collectors';
|
import { getIsAgentsEnabled } from './config_collectors';
|
||||||
import { AgentUsage, getAgentUsage } from './agent_collectors';
|
import { AgentUsage, getAgentUsage } from './agent_collectors';
|
||||||
import { getInternalClients } from './helpers';
|
import { getInternalClients } from './helpers';
|
||||||
import { PackageUsage, getPackageUsage } from './package_collectors';
|
import { PackageUsage, getPackageUsage } from './package_collectors';
|
||||||
import { FleetConfigType } from '..';
|
|
||||||
|
|
||||||
interface Usage {
|
interface Usage {
|
||||||
agents_enabled: boolean;
|
agents_enabled: boolean;
|
||||||
|
|
|
@ -7,12 +7,12 @@
|
||||||
|
|
||||||
import { schema, TypeOf } from '@kbn/config-schema';
|
import { schema, TypeOf } from '@kbn/config-schema';
|
||||||
import { PluginConfigDescriptor, PluginInitializerContext } from 'src/core/server';
|
import { PluginConfigDescriptor, PluginInitializerContext } from 'src/core/server';
|
||||||
import { FleetPlugin } from './plugin';
|
|
||||||
import {
|
import {
|
||||||
AGENT_POLICY_ROLLOUT_RATE_LIMIT_INTERVAL_MS,
|
AGENT_POLICY_ROLLOUT_RATE_LIMIT_INTERVAL_MS,
|
||||||
AGENT_POLICY_ROLLOUT_RATE_LIMIT_REQUEST_PER_INTERVAL,
|
AGENT_POLICY_ROLLOUT_RATE_LIMIT_REQUEST_PER_INTERVAL,
|
||||||
AGENT_POLLING_REQUEST_TIMEOUT_MS,
|
AGENT_POLLING_REQUEST_TIMEOUT_MS,
|
||||||
} from '../common';
|
} from '../common';
|
||||||
|
import { FleetPlugin } from './plugin';
|
||||||
|
|
||||||
export { default as apm } from 'elastic-apm-node';
|
export { default as apm } from 'elastic-apm-node';
|
||||||
export {
|
export {
|
||||||
|
|
|
@ -13,9 +13,9 @@ import {
|
||||||
import { coreMock } from '../../../../src/core/server/mocks';
|
import { coreMock } from '../../../../src/core/server/mocks';
|
||||||
import { licensingMock } from '../../../plugins/licensing/server/mocks';
|
import { licensingMock } from '../../../plugins/licensing/server/mocks';
|
||||||
|
|
||||||
import { FleetAppContext } from './plugin';
|
|
||||||
import { encryptedSavedObjectsMock } from '../../encrypted_saved_objects/server/mocks';
|
import { encryptedSavedObjectsMock } from '../../encrypted_saved_objects/server/mocks';
|
||||||
import { securityMock } from '../../security/server/mocks';
|
import { securityMock } from '../../security/server/mocks';
|
||||||
|
import { FleetAppContext } from './plugin';
|
||||||
import { PackagePolicyServiceInterface } from './services/package_policy';
|
import { PackagePolicyServiceInterface } from './services/package_policy';
|
||||||
import { AgentPolicyServiceInterface, AgentService } from './services';
|
import { AgentPolicyServiceInterface, AgentService } from './services';
|
||||||
|
|
||||||
|
|
|
@ -29,6 +29,13 @@ import {
|
||||||
} from '../../encrypted_saved_objects/server';
|
} from '../../encrypted_saved_objects/server';
|
||||||
import { SecurityPluginSetup, SecurityPluginStart } from '../../security/server';
|
import { SecurityPluginSetup, SecurityPluginStart } from '../../security/server';
|
||||||
import { PluginSetupContract as FeaturesPluginSetup } from '../../features/server';
|
import { PluginSetupContract as FeaturesPluginSetup } from '../../features/server';
|
||||||
|
import {
|
||||||
|
EsAssetReference,
|
||||||
|
FleetConfigType,
|
||||||
|
NewPackagePolicy,
|
||||||
|
UpdatePackagePolicy,
|
||||||
|
} from '../common';
|
||||||
|
import { CloudSetup } from '../../cloud/server';
|
||||||
import {
|
import {
|
||||||
PLUGIN_ID,
|
PLUGIN_ID,
|
||||||
OUTPUT_SAVED_OBJECT_TYPE,
|
OUTPUT_SAVED_OBJECT_TYPE,
|
||||||
|
@ -55,12 +62,6 @@ import {
|
||||||
registerSettingsRoutes,
|
registerSettingsRoutes,
|
||||||
registerAppRoutes,
|
registerAppRoutes,
|
||||||
} from './routes';
|
} from './routes';
|
||||||
import {
|
|
||||||
EsAssetReference,
|
|
||||||
FleetConfigType,
|
|
||||||
NewPackagePolicy,
|
|
||||||
UpdatePackagePolicy,
|
|
||||||
} from '../common';
|
|
||||||
import {
|
import {
|
||||||
appContextService,
|
appContextService,
|
||||||
licenseService,
|
licenseService,
|
||||||
|
@ -78,7 +79,6 @@ import {
|
||||||
listAgents,
|
listAgents,
|
||||||
getAgent,
|
getAgent,
|
||||||
} from './services/agents';
|
} from './services/agents';
|
||||||
import { CloudSetup } from '../../cloud/server';
|
|
||||||
import { agentCheckinState } from './services/agents/checkin/state';
|
import { agentCheckinState } from './services/agents/checkin/state';
|
||||||
import { registerFleetUsageCollector } from './collectors/register';
|
import { registerFleetUsageCollector } from './collectors/register';
|
||||||
import { getInstallation } from './services/epm/packages';
|
import { getInstallation } from './services/epm/packages';
|
||||||
|
|
|
@ -5,7 +5,6 @@
|
||||||
* 2.0.
|
* 2.0.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { postAgentAcksHandlerBuilder } from './acks_handlers';
|
|
||||||
import {
|
import {
|
||||||
ElasticsearchClient,
|
ElasticsearchClient,
|
||||||
KibanaResponseFactory,
|
KibanaResponseFactory,
|
||||||
|
@ -20,6 +19,7 @@ import {
|
||||||
import { PostAgentAcksResponse } from '../../../common/types/rest_spec';
|
import { PostAgentAcksResponse } from '../../../common/types/rest_spec';
|
||||||
import { AckEventSchema } from '../../types/models';
|
import { AckEventSchema } from '../../types/models';
|
||||||
import { AcksService } from '../../services/agents';
|
import { AcksService } from '../../services/agents';
|
||||||
|
import { postAgentAcksHandlerBuilder } from './acks_handlers';
|
||||||
|
|
||||||
describe('test acks schema', () => {
|
describe('test acks schema', () => {
|
||||||
it('validate that ack event schema expect action id', async () => {
|
it('validate that ack event schema expect action id', async () => {
|
||||||
|
|
|
@ -5,7 +5,6 @@
|
||||||
* 2.0.
|
* 2.0.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { NewAgentActionSchema } from '../../types/models';
|
|
||||||
import {
|
import {
|
||||||
ElasticsearchClient,
|
ElasticsearchClient,
|
||||||
KibanaResponseFactory,
|
KibanaResponseFactory,
|
||||||
|
@ -17,13 +16,14 @@ import {
|
||||||
savedObjectsClientMock,
|
savedObjectsClientMock,
|
||||||
httpServerMock,
|
httpServerMock,
|
||||||
} from 'src/core/server/mocks';
|
} from 'src/core/server/mocks';
|
||||||
|
import { NewAgentActionSchema } from '../../types/models';
|
||||||
import { ActionsService } from '../../services/agents';
|
import { ActionsService } from '../../services/agents';
|
||||||
import { AgentAction } from '../../../common/types/models';
|
import { AgentAction } from '../../../common/types/models';
|
||||||
import { postNewAgentActionHandlerBuilder } from './actions_handlers';
|
|
||||||
import {
|
import {
|
||||||
PostNewAgentActionRequest,
|
PostNewAgentActionRequest,
|
||||||
PostNewAgentActionResponse,
|
PostNewAgentActionResponse,
|
||||||
} from '../../../common/types/rest_spec';
|
} from '../../../common/types/rest_spec';
|
||||||
|
import { postNewAgentActionHandlerBuilder } from './actions_handlers';
|
||||||
|
|
||||||
describe('test actions handlers schema', () => {
|
describe('test actions handlers schema', () => {
|
||||||
it('validate that new agent actions schema is valid', async () => {
|
it('validate that new agent actions schema is valid', async () => {
|
||||||
|
|
|
@ -34,6 +34,9 @@ import {
|
||||||
PostAgentUpgradeRequestSchema,
|
PostAgentUpgradeRequestSchema,
|
||||||
PostBulkAgentUpgradeRequestSchema,
|
PostBulkAgentUpgradeRequestSchema,
|
||||||
} from '../../types';
|
} from '../../types';
|
||||||
|
import * as AgentService from '../../services/agents';
|
||||||
|
import { appContextService } from '../../services';
|
||||||
|
import { FleetConfigType } from '../..';
|
||||||
import {
|
import {
|
||||||
getAgentsHandler,
|
getAgentsHandler,
|
||||||
getAgentHandler,
|
getAgentHandler,
|
||||||
|
@ -47,11 +50,8 @@ import {
|
||||||
postBulkAgentsReassignHandler,
|
postBulkAgentsReassignHandler,
|
||||||
} from './handlers';
|
} from './handlers';
|
||||||
import { postAgentAcksHandlerBuilder } from './acks_handlers';
|
import { postAgentAcksHandlerBuilder } from './acks_handlers';
|
||||||
import * as AgentService from '../../services/agents';
|
|
||||||
import { postNewAgentActionHandlerBuilder } from './actions_handlers';
|
import { postNewAgentActionHandlerBuilder } from './actions_handlers';
|
||||||
import { appContextService } from '../../services';
|
|
||||||
import { postAgentUnenrollHandler, postBulkAgentsUnenrollHandler } from './unenroll_handler';
|
import { postAgentUnenrollHandler, postBulkAgentsUnenrollHandler } from './unenroll_handler';
|
||||||
import { FleetConfigType } from '../..';
|
|
||||||
import { postAgentUpgradeHandler, postBulkAgentsUpgradeHandler } from './upgrade_handler';
|
import { postAgentUpgradeHandler, postBulkAgentsUpgradeHandler } from './upgrade_handler';
|
||||||
|
|
||||||
const ajv = new Ajv({
|
const ajv = new Ajv({
|
||||||
|
|
|
@ -5,9 +5,9 @@
|
||||||
* 2.0.
|
* 2.0.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
import path from 'path';
|
||||||
import { TypeOf } from '@kbn/config-schema';
|
import { TypeOf } from '@kbn/config-schema';
|
||||||
import mime from 'mime-types';
|
import mime from 'mime-types';
|
||||||
import path from 'path';
|
|
||||||
import { RequestHandler, ResponseHeaders, KnownHeaders } from 'src/core/server';
|
import { RequestHandler, ResponseHeaders, KnownHeaders } from 'src/core/server';
|
||||||
import {
|
import {
|
||||||
GetInfoResponse,
|
GetInfoResponse,
|
||||||
|
|
|
@ -7,6 +7,17 @@
|
||||||
|
|
||||||
import { IRouter } from 'src/core/server';
|
import { IRouter } from 'src/core/server';
|
||||||
import { PLUGIN_ID, EPM_API_ROUTES } from '../../constants';
|
import { PLUGIN_ID, EPM_API_ROUTES } from '../../constants';
|
||||||
|
import {
|
||||||
|
GetCategoriesRequestSchema,
|
||||||
|
GetPackagesRequestSchema,
|
||||||
|
GetFileRequestSchema,
|
||||||
|
GetInfoRequestSchema,
|
||||||
|
InstallPackageFromRegistryRequestSchema,
|
||||||
|
InstallPackageByUploadRequestSchema,
|
||||||
|
DeletePackageRequestSchema,
|
||||||
|
BulkUpgradePackagesFromRegistryRequestSchema,
|
||||||
|
GetStatsRequestSchema,
|
||||||
|
} from '../../types';
|
||||||
import {
|
import {
|
||||||
getCategoriesHandler,
|
getCategoriesHandler,
|
||||||
getListHandler,
|
getListHandler,
|
||||||
|
@ -19,17 +30,6 @@ import {
|
||||||
bulkInstallPackagesFromRegistryHandler,
|
bulkInstallPackagesFromRegistryHandler,
|
||||||
getStatsHandler,
|
getStatsHandler,
|
||||||
} from './handlers';
|
} from './handlers';
|
||||||
import {
|
|
||||||
GetCategoriesRequestSchema,
|
|
||||||
GetPackagesRequestSchema,
|
|
||||||
GetFileRequestSchema,
|
|
||||||
GetInfoRequestSchema,
|
|
||||||
InstallPackageFromRegistryRequestSchema,
|
|
||||||
InstallPackageByUploadRequestSchema,
|
|
||||||
DeletePackageRequestSchema,
|
|
||||||
BulkUpgradePackagesFromRegistryRequestSchema,
|
|
||||||
GetStatsRequestSchema,
|
|
||||||
} from '../../types';
|
|
||||||
|
|
||||||
const MAX_FILE_SIZE_BYTES = 104857600; // 100MB
|
const MAX_FILE_SIZE_BYTES = 104857600; // 100MB
|
||||||
|
|
||||||
|
|
|
@ -6,12 +6,12 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { coreMock, httpServerMock, httpServiceMock } from 'src/core/server/mocks';
|
import { coreMock, httpServerMock, httpServiceMock } from 'src/core/server/mocks';
|
||||||
|
import { FleetConfigType } from '../index';
|
||||||
import {
|
import {
|
||||||
createLimitedPreAuthHandler,
|
createLimitedPreAuthHandler,
|
||||||
isLimitedRoute,
|
isLimitedRoute,
|
||||||
registerLimitedConcurrencyRoutes,
|
registerLimitedConcurrencyRoutes,
|
||||||
} from './limited_concurrency';
|
} from './limited_concurrency';
|
||||||
import { FleetConfigType } from '../index';
|
|
||||||
|
|
||||||
describe('registerLimitedConcurrencyRoutes', () => {
|
describe('registerLimitedConcurrencyRoutes', () => {
|
||||||
test(`doesn't call registerOnPreAuth if maxConcurrentConnections is 0`, async () => {
|
test(`doesn't call registerOnPreAuth if maxConcurrentConnections is 0`, async () => {
|
||||||
|
|
|
@ -7,12 +7,12 @@
|
||||||
|
|
||||||
import { IRouter } from 'src/core/server';
|
import { IRouter } from 'src/core/server';
|
||||||
import { PLUGIN_ID, OUTPUT_API_ROUTES } from '../../constants';
|
import { PLUGIN_ID, OUTPUT_API_ROUTES } from '../../constants';
|
||||||
import { getOneOuputHandler, getOutputsHandler, putOuputHandler } from './handler';
|
|
||||||
import {
|
import {
|
||||||
GetOneOutputRequestSchema,
|
GetOneOutputRequestSchema,
|
||||||
GetOutputsRequestSchema,
|
GetOutputsRequestSchema,
|
||||||
PutOutputRequestSchema,
|
PutOutputRequestSchema,
|
||||||
} from '../../types';
|
} from '../../types';
|
||||||
|
import { getOneOuputHandler, getOutputsHandler, putOuputHandler } from './handler';
|
||||||
|
|
||||||
export const registerRoutes = (router: IRouter) => {
|
export const registerRoutes = (router: IRouter) => {
|
||||||
router.get(
|
router.get(
|
||||||
|
|
|
@ -7,13 +7,13 @@
|
||||||
|
|
||||||
import { httpServerMock, httpServiceMock } from 'src/core/server/mocks';
|
import { httpServerMock, httpServiceMock } from 'src/core/server/mocks';
|
||||||
import { IRouter, KibanaRequest, RequestHandler, RouteConfig } from 'kibana/server';
|
import { IRouter, KibanaRequest, RequestHandler, RouteConfig } from 'kibana/server';
|
||||||
import { registerRoutes } from './index';
|
|
||||||
import { PACKAGE_POLICY_API_ROUTES } from '../../../common/constants';
|
import { PACKAGE_POLICY_API_ROUTES } from '../../../common/constants';
|
||||||
import { appContextService } from '../../services';
|
import { appContextService } from '../../services';
|
||||||
import { createAppContextStartContractMock, xpackMocks } from '../../mocks';
|
import { createAppContextStartContractMock, xpackMocks } from '../../mocks';
|
||||||
import { PackagePolicyServiceInterface, ExternalCallback } from '../..';
|
import { PackagePolicyServiceInterface, ExternalCallback } from '../..';
|
||||||
import { CreatePackagePolicyRequestSchema } from '../../types/rest_spec';
|
import { CreatePackagePolicyRequestSchema } from '../../types/rest_spec';
|
||||||
import { packagePolicyService } from '../../services';
|
import { packagePolicyService } from '../../services';
|
||||||
|
import { registerRoutes } from './index';
|
||||||
|
|
||||||
const packagePolicyServiceMock = packagePolicyService as jest.Mocked<PackagePolicyServiceInterface>;
|
const packagePolicyServiceMock = packagePolicyService as jest.Mocked<PackagePolicyServiceInterface>;
|
||||||
|
|
||||||
|
|
|
@ -9,9 +9,9 @@ import { httpServerMock } from 'src/core/server/mocks';
|
||||||
import { PostIngestSetupResponse } from '../../../common';
|
import { PostIngestSetupResponse } from '../../../common';
|
||||||
import { RegistryError } from '../../errors';
|
import { RegistryError } from '../../errors';
|
||||||
import { createAppContextStartContractMock, xpackMocks } from '../../mocks';
|
import { createAppContextStartContractMock, xpackMocks } from '../../mocks';
|
||||||
import { FleetSetupHandler } from './handlers';
|
|
||||||
import { appContextService } from '../../services/app_context';
|
import { appContextService } from '../../services/app_context';
|
||||||
import { setupIngestManager } from '../../services/setup';
|
import { setupIngestManager } from '../../services/setup';
|
||||||
|
import { FleetSetupHandler } from './handlers';
|
||||||
|
|
||||||
jest.mock('../../services/setup', () => {
|
jest.mock('../../services/setup', () => {
|
||||||
return {
|
return {
|
||||||
|
|
|
@ -9,8 +9,8 @@ import { IRouter } from 'src/core/server';
|
||||||
|
|
||||||
import { PLUGIN_ID, AGENTS_SETUP_API_ROUTES, SETUP_API_ROUTE } from '../../constants';
|
import { PLUGIN_ID, AGENTS_SETUP_API_ROUTES, SETUP_API_ROUTE } from '../../constants';
|
||||||
import { FleetConfigType } from '../../../common';
|
import { FleetConfigType } from '../../../common';
|
||||||
import { getFleetStatusHandler, createFleetSetupHandler, FleetSetupHandler } from './handlers';
|
|
||||||
import { PostFleetSetupRequestSchema } from '../../types';
|
import { PostFleetSetupRequestSchema } from '../../types';
|
||||||
|
import { getFleetStatusHandler, createFleetSetupHandler, FleetSetupHandler } from './handlers';
|
||||||
|
|
||||||
export const registerFleetSetupRoute = (router: IRouter) => {
|
export const registerFleetSetupRoute = (router: IRouter) => {
|
||||||
router.post(
|
router.post(
|
||||||
|
|
|
@ -7,11 +7,6 @@
|
||||||
|
|
||||||
import { SavedObjectsServiceSetup, SavedObjectsType } from 'kibana/server';
|
import { SavedObjectsServiceSetup, SavedObjectsType } from 'kibana/server';
|
||||||
import { EncryptedSavedObjectsPluginSetup } from '../../../encrypted_saved_objects/server';
|
import { EncryptedSavedObjectsPluginSetup } from '../../../encrypted_saved_objects/server';
|
||||||
import {
|
|
||||||
migratePackagePolicyToV7110,
|
|
||||||
migratePackagePolicyToV7120,
|
|
||||||
// @ts-expect-error
|
|
||||||
} from './security_solution';
|
|
||||||
import {
|
import {
|
||||||
OUTPUT_SAVED_OBJECT_TYPE,
|
OUTPUT_SAVED_OBJECT_TYPE,
|
||||||
AGENT_POLICY_SAVED_OBJECT_TYPE,
|
AGENT_POLICY_SAVED_OBJECT_TYPE,
|
||||||
|
@ -24,6 +19,11 @@ import {
|
||||||
ENROLLMENT_API_KEYS_SAVED_OBJECT_TYPE,
|
ENROLLMENT_API_KEYS_SAVED_OBJECT_TYPE,
|
||||||
GLOBAL_SETTINGS_SAVED_OBJECT_TYPE,
|
GLOBAL_SETTINGS_SAVED_OBJECT_TYPE,
|
||||||
} from '../constants';
|
} from '../constants';
|
||||||
|
import {
|
||||||
|
migratePackagePolicyToV7110,
|
||||||
|
migratePackagePolicyToV7120,
|
||||||
|
// @ts-expect-error
|
||||||
|
} from './security_solution';
|
||||||
import {
|
import {
|
||||||
migrateAgentToV7100,
|
migrateAgentToV7100,
|
||||||
migrateAgentEventToV7100,
|
migrateAgentEventToV7100,
|
||||||
|
|
|
@ -6,9 +6,9 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { elasticsearchServiceMock, savedObjectsClientMock } from 'src/core/server/mocks';
|
import { elasticsearchServiceMock, savedObjectsClientMock } from 'src/core/server/mocks';
|
||||||
|
import type { AgentPolicy, NewAgentPolicy, Output } from '../types';
|
||||||
import { agentPolicyService } from './agent_policy';
|
import { agentPolicyService } from './agent_policy';
|
||||||
import { agentPolicyUpdateEventHandler } from './agent_policy_update';
|
import { agentPolicyUpdateEventHandler } from './agent_policy_update';
|
||||||
import type { AgentPolicy, NewAgentPolicy, Output } from '../types';
|
|
||||||
|
|
||||||
function getSavedObjectMock(agentPolicyAttributes: any) {
|
function getSavedObjectMock(agentPolicyAttributes: any) {
|
||||||
const mock = savedObjectsClientMock.create();
|
const mock = savedObjectsClientMock.create();
|
||||||
|
|
|
@ -42,13 +42,13 @@ import {
|
||||||
AgentPolicyDeletionError,
|
AgentPolicyDeletionError,
|
||||||
IngestManagerError,
|
IngestManagerError,
|
||||||
} from '../errors';
|
} from '../errors';
|
||||||
|
import { getFullAgentPolicyKibanaConfig } from '../../common/services/full_agent_policy_kibana_config';
|
||||||
import { createAgentPolicyAction, listAgents } from './agents';
|
import { createAgentPolicyAction, listAgents } from './agents';
|
||||||
import { packagePolicyService } from './package_policy';
|
import { packagePolicyService } from './package_policy';
|
||||||
import { outputService } from './output';
|
import { outputService } from './output';
|
||||||
import { agentPolicyUpdateEventHandler } from './agent_policy_update';
|
import { agentPolicyUpdateEventHandler } from './agent_policy_update';
|
||||||
import { getSettings } from './settings';
|
import { getSettings } from './settings';
|
||||||
import { normalizeKuery, escapeSearchQueryPhrase } from './saved_object';
|
import { normalizeKuery, escapeSearchQueryPhrase } from './saved_object';
|
||||||
import { getFullAgentPolicyKibanaConfig } from '../../common/services/full_agent_policy_kibana_config';
|
|
||||||
import { isAgentsSetup } from './agents/setup';
|
import { isAgentsSetup } from './agents/setup';
|
||||||
import { appContextService } from './app_context';
|
import { appContextService } from './app_context';
|
||||||
|
|
||||||
|
|
|
@ -5,10 +5,10 @@
|
||||||
* 2.0.
|
* 2.0.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { createAgentAction } from './actions';
|
|
||||||
import { SavedObject } from 'kibana/server';
|
import { SavedObject } from 'kibana/server';
|
||||||
import { AgentAction } from '../../../common/types/models';
|
|
||||||
import { savedObjectsClientMock, elasticsearchServiceMock } from 'src/core/server/mocks';
|
import { savedObjectsClientMock, elasticsearchServiceMock } from 'src/core/server/mocks';
|
||||||
|
import { AgentAction } from '../../../common/types/models';
|
||||||
|
import { createAgentAction } from './actions';
|
||||||
|
|
||||||
describe('test agent actions services', () => {
|
describe('test agent actions services', () => {
|
||||||
it('should create a new action', async () => {
|
it('should create a new action', async () => {
|
||||||
|
|
|
@ -16,13 +16,13 @@ import {
|
||||||
FleetServerAgentAction,
|
FleetServerAgentAction,
|
||||||
} from '../../../common/types/models';
|
} from '../../../common/types/models';
|
||||||
import { AGENT_ACTION_SAVED_OBJECT_TYPE, AGENT_ACTIONS_INDEX } from '../../../common/constants';
|
import { AGENT_ACTION_SAVED_OBJECT_TYPE, AGENT_ACTIONS_INDEX } from '../../../common/constants';
|
||||||
|
import { appContextService } from '../app_context';
|
||||||
|
import { nodeTypes } from '../../../../../../src/plugins/data/common';
|
||||||
import {
|
import {
|
||||||
isAgentActionSavedObject,
|
isAgentActionSavedObject,
|
||||||
isPolicyActionSavedObject,
|
isPolicyActionSavedObject,
|
||||||
savedObjectToAgentAction,
|
savedObjectToAgentAction,
|
||||||
} from './saved_objects';
|
} from './saved_objects';
|
||||||
import { appContextService } from '../app_context';
|
|
||||||
import { nodeTypes } from '../../../../../../src/plugins/data/common';
|
|
||||||
|
|
||||||
const ONE_MONTH_IN_MS = 2592000000;
|
const ONE_MONTH_IN_MS = 2592000000;
|
||||||
|
|
||||||
|
|
|
@ -20,9 +20,9 @@ import {
|
||||||
} from '../../../types';
|
} from '../../../types';
|
||||||
|
|
||||||
import { AGENT_EVENT_SAVED_OBJECT_TYPE } from '../../../constants';
|
import { AGENT_EVENT_SAVED_OBJECT_TYPE } from '../../../constants';
|
||||||
import { agentCheckinState } from './state';
|
|
||||||
import { getAgentActionsForCheckin } from '../actions';
|
import { getAgentActionsForCheckin } from '../actions';
|
||||||
import { updateAgent } from '../crud';
|
import { updateAgent } from '../crud';
|
||||||
|
import { agentCheckinState } from './state';
|
||||||
|
|
||||||
export async function agentCheckin(
|
export async function agentCheckin(
|
||||||
soClient: SavedObjectsClientContract,
|
soClient: SavedObjectsClientContract,
|
||||||
|
|
|
@ -8,9 +8,9 @@
|
||||||
import { ElasticsearchClient, SavedObjectsClientContract } from 'src/core/server';
|
import { ElasticsearchClient, SavedObjectsClientContract } from 'src/core/server';
|
||||||
import { Agent } from '../../../types';
|
import { Agent } from '../../../types';
|
||||||
import { appContextService } from '../../app_context';
|
import { appContextService } from '../../app_context';
|
||||||
|
import { AGENT_UPDATE_LAST_CHECKIN_INTERVAL_MS } from '../../../constants';
|
||||||
import { agentCheckinStateConnectedAgentsFactory } from './state_connected_agents';
|
import { agentCheckinStateConnectedAgentsFactory } from './state_connected_agents';
|
||||||
import { agentCheckinStateNewActionsFactory } from './state_new_actions';
|
import { agentCheckinStateNewActionsFactory } from './state_new_actions';
|
||||||
import { AGENT_UPDATE_LAST_CHECKIN_INTERVAL_MS } from '../../../constants';
|
|
||||||
|
|
||||||
function agentCheckinStateFactory() {
|
function agentCheckinStateFactory() {
|
||||||
const agentConnected = agentCheckinStateConnectedAgentsFactory();
|
const agentConnected = agentCheckinStateConnectedAgentsFactory();
|
||||||
|
|
|
@ -8,13 +8,13 @@
|
||||||
import { ElasticsearchClient } from 'kibana/server';
|
import { ElasticsearchClient } from 'kibana/server';
|
||||||
import { savedObjectsClientMock } from 'src/core/server/mocks';
|
import { savedObjectsClientMock } from 'src/core/server/mocks';
|
||||||
import { take } from 'rxjs/operators';
|
import { take } from 'rxjs/operators';
|
||||||
|
import { getNewActionsSince } from '../actions';
|
||||||
|
import { Agent, AgentAction, AgentPolicyAction } from '../../../types';
|
||||||
|
import { outputType } from '../../../../common/constants';
|
||||||
import {
|
import {
|
||||||
createAgentActionFromPolicyAction,
|
createAgentActionFromPolicyAction,
|
||||||
createNewActionsSharedObservable,
|
createNewActionsSharedObservable,
|
||||||
} from './state_new_actions';
|
} from './state_new_actions';
|
||||||
import { getNewActionsSince } from '../actions';
|
|
||||||
import { Agent, AgentAction, AgentPolicyAction } from '../../../types';
|
|
||||||
import { outputType } from '../../../../common/constants';
|
|
||||||
|
|
||||||
jest.mock('../../app_context', () => ({
|
jest.mock('../../app_context', () => ({
|
||||||
appContextService: {
|
appContextService: {
|
||||||
|
|
|
@ -44,8 +44,8 @@ import {
|
||||||
getAgentPolicyActionByIds,
|
getAgentPolicyActionByIds,
|
||||||
} from '../actions';
|
} from '../actions';
|
||||||
import { appContextService } from '../../app_context';
|
import { appContextService } from '../../app_context';
|
||||||
import { toPromiseAbortable, AbortError, createRateLimiter } from './rxjs_utils';
|
|
||||||
import { getAgent, updateAgent } from '../crud';
|
import { getAgent, updateAgent } from '../crud';
|
||||||
|
import { toPromiseAbortable, AbortError, createRateLimiter } from './rxjs_utils';
|
||||||
|
|
||||||
function getInternalUserSOClient() {
|
function getInternalUserSOClient() {
|
||||||
const fakeRequest = ({
|
const fakeRequest = ({
|
||||||
|
|
|
@ -14,9 +14,9 @@ import { AGENT_SAVED_OBJECT_TYPE, AGENTS_INDEX } from '../../constants';
|
||||||
import { ESSearchHit } from '../../../../../typings/elasticsearch';
|
import { ESSearchHit } from '../../../../../typings/elasticsearch';
|
||||||
import { AgentSOAttributes, Agent, ListWithKuery } from '../../types';
|
import { AgentSOAttributes, Agent, ListWithKuery } from '../../types';
|
||||||
import { escapeSearchQueryPhrase, normalizeKuery } from '../saved_object';
|
import { escapeSearchQueryPhrase, normalizeKuery } from '../saved_object';
|
||||||
import { searchHitToAgent, agentSOAttributesToFleetServerAgentDoc } from './helpers';
|
|
||||||
import { appContextService } from '../../services';
|
import { appContextService } from '../../services';
|
||||||
import { esKuery, KueryNode } from '../../../../../../src/plugins/data/server';
|
import { esKuery, KueryNode } from '../../../../../../src/plugins/data/server';
|
||||||
|
import { searchHitToAgent, agentSOAttributesToFleetServerAgentDoc } from './helpers';
|
||||||
|
|
||||||
const ACTIVE_AGENT_CONDITION = 'active:true';
|
const ACTIVE_AGENT_CONDITION = 'active:true';
|
||||||
const INACTIVE_AGENT_CONDITION = `NOT (${ACTIVE_AGENT_CONDITION})`;
|
const INACTIVE_AGENT_CONDITION = `NOT (${ACTIVE_AGENT_CONDITION})`;
|
||||||
|
|
|
@ -12,9 +12,9 @@ import { isAgentUpgradeable } from '../../../common';
|
||||||
import { AGENT_SAVED_OBJECT_TYPE } from '../../constants';
|
import { AGENT_SAVED_OBJECT_TYPE } from '../../constants';
|
||||||
import { AgentSOAttributes, Agent, ListWithKuery } from '../../types';
|
import { AgentSOAttributes, Agent, ListWithKuery } from '../../types';
|
||||||
import { escapeSearchQueryPhrase, normalizeKuery, findAllSOs } from '../saved_object';
|
import { escapeSearchQueryPhrase, normalizeKuery, findAllSOs } from '../saved_object';
|
||||||
import { savedObjectToAgent } from './saved_objects';
|
|
||||||
import { appContextService } from '../../services';
|
import { appContextService } from '../../services';
|
||||||
import { esKuery, KueryNode } from '../../../../../../src/plugins/data/server';
|
import { esKuery, KueryNode } from '../../../../../../src/plugins/data/server';
|
||||||
|
import { savedObjectToAgent } from './saved_objects';
|
||||||
|
|
||||||
const ACTIVE_AGENT_CONDITION = `${AGENT_SAVED_OBJECT_TYPE}.attributes.active:true`;
|
const ACTIVE_AGENT_CONDITION = `${AGENT_SAVED_OBJECT_TYPE}.attributes.active:true`;
|
||||||
const INACTIVE_AGENT_CONDITION = `NOT (${ACTIVE_AGENT_CONDITION})`;
|
const INACTIVE_AGENT_CONDITION = `NOT (${ACTIVE_AGENT_CONDITION})`;
|
||||||
|
|
|
@ -13,12 +13,12 @@ import semverLte from 'semver/functions/lte';
|
||||||
|
|
||||||
import type { SavedObjectsClientContract } from 'src/core/server';
|
import type { SavedObjectsClientContract } from 'src/core/server';
|
||||||
import type { AgentType, Agent, AgentSOAttributes, FleetServerAgent } from '../../types';
|
import type { AgentType, Agent, AgentSOAttributes, FleetServerAgent } from '../../types';
|
||||||
import { savedObjectToAgent } from './saved_objects';
|
|
||||||
import { AGENT_SAVED_OBJECT_TYPE, AGENTS_INDEX } from '../../constants';
|
import { AGENT_SAVED_OBJECT_TYPE, AGENTS_INDEX } from '../../constants';
|
||||||
import { IngestManagerError } from '../../errors';
|
import { IngestManagerError } from '../../errors';
|
||||||
import * as APIKeyService from '../api_keys';
|
import * as APIKeyService from '../api_keys';
|
||||||
import { agentPolicyService } from '../../services';
|
import { agentPolicyService } from '../../services';
|
||||||
import { appContextService } from '../app_context';
|
import { appContextService } from '../app_context';
|
||||||
|
import { savedObjectToAgent } from './saved_objects';
|
||||||
|
|
||||||
export async function enroll(
|
export async function enroll(
|
||||||
soClient: SavedObjectsClientContract,
|
soClient: SavedObjectsClientContract,
|
||||||
|
|
|
@ -8,6 +8,7 @@
|
||||||
import type { SavedObjectsClientContract, ElasticsearchClient } from 'kibana/server';
|
import type { SavedObjectsClientContract, ElasticsearchClient } from 'kibana/server';
|
||||||
import Boom from '@hapi/boom';
|
import Boom from '@hapi/boom';
|
||||||
import { agentPolicyService } from '../agent_policy';
|
import { agentPolicyService } from '../agent_policy';
|
||||||
|
import { AgentReassignmentError } from '../../errors';
|
||||||
import {
|
import {
|
||||||
getAgents,
|
getAgents,
|
||||||
getAgentPolicyForAgent,
|
getAgentPolicyForAgent,
|
||||||
|
@ -15,7 +16,6 @@ import {
|
||||||
updateAgent,
|
updateAgent,
|
||||||
bulkUpdateAgents,
|
bulkUpdateAgents,
|
||||||
} from './crud';
|
} from './crud';
|
||||||
import { AgentReassignmentError } from '../../errors';
|
|
||||||
|
|
||||||
import { createAgentAction, bulkCreateAgentActions } from './actions';
|
import { createAgentAction, bulkCreateAgentActions } from './actions';
|
||||||
|
|
||||||
|
|
|
@ -6,10 +6,10 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { elasticsearchServiceMock, savedObjectsClientMock } from 'src/core/server/mocks';
|
import { elasticsearchServiceMock, savedObjectsClientMock } from 'src/core/server/mocks';
|
||||||
import { getAgentStatusById } from './status';
|
import { SavedObject } from 'kibana/server';
|
||||||
import { AGENT_TYPE_PERMANENT } from '../../../common/constants';
|
import { AGENT_TYPE_PERMANENT } from '../../../common/constants';
|
||||||
import { AgentSOAttributes } from '../../../common/types/models';
|
import { AgentSOAttributes } from '../../../common/types/models';
|
||||||
import { SavedObject } from 'kibana/server';
|
import { getAgentStatusById } from './status';
|
||||||
|
|
||||||
describe('Agent status service', () => {
|
describe('Agent status service', () => {
|
||||||
it('should return inactive when agent is not active', async () => {
|
it('should return inactive when agent is not active', async () => {
|
||||||
|
|
|
@ -7,7 +7,6 @@
|
||||||
|
|
||||||
import { ElasticsearchClient, SavedObjectsClientContract } from 'src/core/server';
|
import { ElasticsearchClient, SavedObjectsClientContract } from 'src/core/server';
|
||||||
import pMap from 'p-map';
|
import pMap from 'p-map';
|
||||||
import { getAgent, listAgents } from './crud';
|
|
||||||
import { AGENT_EVENT_SAVED_OBJECT_TYPE, AGENT_SAVED_OBJECT_TYPE } from '../../constants';
|
import { AGENT_EVENT_SAVED_OBJECT_TYPE, AGENT_SAVED_OBJECT_TYPE } from '../../constants';
|
||||||
import { AgentStatus } from '../../types';
|
import { AgentStatus } from '../../types';
|
||||||
|
|
||||||
|
@ -15,6 +14,7 @@ import { AgentStatusKueryHelper } from '../../../common/services';
|
||||||
import { esKuery, KueryNode } from '../../../../../../src/plugins/data/server';
|
import { esKuery, KueryNode } from '../../../../../../src/plugins/data/server';
|
||||||
import { normalizeKuery } from '../saved_object';
|
import { normalizeKuery } from '../saved_object';
|
||||||
import { appContextService } from '../app_context';
|
import { appContextService } from '../app_context';
|
||||||
|
import { getAgent, listAgents } from './crud';
|
||||||
import { removeSOAttributes } from './crud_fleet_server';
|
import { removeSOAttributes } from './crud_fleet_server';
|
||||||
|
|
||||||
export async function getAgentStatusById(
|
export async function getAgentStatusById(
|
||||||
|
|
|
@ -7,6 +7,7 @@
|
||||||
|
|
||||||
import { ElasticsearchClient, SavedObjectsClientContract } from 'src/core/server';
|
import { ElasticsearchClient, SavedObjectsClientContract } from 'src/core/server';
|
||||||
import * as APIKeyService from '../api_keys';
|
import * as APIKeyService from '../api_keys';
|
||||||
|
import { AgentUnenrollmentError } from '../../errors';
|
||||||
import { createAgentAction, bulkCreateAgentActions } from './actions';
|
import { createAgentAction, bulkCreateAgentActions } from './actions';
|
||||||
import {
|
import {
|
||||||
getAgent,
|
getAgent,
|
||||||
|
@ -16,7 +17,6 @@ import {
|
||||||
listAllAgents,
|
listAllAgents,
|
||||||
bulkUpdateAgents,
|
bulkUpdateAgents,
|
||||||
} from './crud';
|
} from './crud';
|
||||||
import { AgentUnenrollmentError } from '../../errors';
|
|
||||||
|
|
||||||
async function unenrollAgentIsAllowed(
|
async function unenrollAgentIsAllowed(
|
||||||
soClient: SavedObjectsClientContract,
|
soClient: SavedObjectsClientContract,
|
||||||
|
|
|
@ -6,8 +6,8 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { ElasticsearchClient, SavedObjectsClientContract } from 'src/core/server';
|
import { ElasticsearchClient, SavedObjectsClientContract } from 'src/core/server';
|
||||||
import { listAgents } from './crud';
|
|
||||||
import { AGENT_SAVED_OBJECT_TYPE } from '../../constants';
|
import { AGENT_SAVED_OBJECT_TYPE } from '../../constants';
|
||||||
|
import { listAgents } from './crud';
|
||||||
import { unenrollAgent } from './unenroll';
|
import { unenrollAgent } from './unenroll';
|
||||||
|
|
||||||
export async function unenrollForAgentPolicyId(
|
export async function unenrollForAgentPolicyId(
|
||||||
|
|
|
@ -10,6 +10,8 @@ import { AgentAction, AgentActionSOAttributes } from '../../types';
|
||||||
import { AGENT_ACTION_SAVED_OBJECT_TYPE } from '../../constants';
|
import { AGENT_ACTION_SAVED_OBJECT_TYPE } from '../../constants';
|
||||||
import { agentPolicyService } from '../../services';
|
import { agentPolicyService } from '../../services';
|
||||||
import { IngestManagerError } from '../../errors';
|
import { IngestManagerError } from '../../errors';
|
||||||
|
import { isAgentUpgradeable } from '../../../common/services';
|
||||||
|
import { appContextService } from '../app_context';
|
||||||
import { bulkCreateAgentActions, createAgentAction } from './actions';
|
import { bulkCreateAgentActions, createAgentAction } from './actions';
|
||||||
import {
|
import {
|
||||||
getAgents,
|
getAgents,
|
||||||
|
@ -18,8 +20,6 @@ import {
|
||||||
bulkUpdateAgents,
|
bulkUpdateAgents,
|
||||||
getAgentPolicyForAgent,
|
getAgentPolicyForAgent,
|
||||||
} from './crud';
|
} from './crud';
|
||||||
import { isAgentUpgradeable } from '../../../common/services';
|
|
||||||
import { appContextService } from '../app_context';
|
|
||||||
|
|
||||||
export async function sendUpgradeAgentAction({
|
export async function sendUpgradeAgentAction({
|
||||||
soClient,
|
soClient,
|
||||||
|
|
|
@ -13,9 +13,9 @@ import { SavedObjectsClientContract, ElasticsearchClient } from 'src/core/server
|
||||||
import { ESSearchResponse as SearchResponse } from '../../../../../typings/elasticsearch';
|
import { ESSearchResponse as SearchResponse } from '../../../../../typings/elasticsearch';
|
||||||
import { EnrollmentAPIKey, FleetServerEnrollmentAPIKey } from '../../types';
|
import { EnrollmentAPIKey, FleetServerEnrollmentAPIKey } from '../../types';
|
||||||
import { ENROLLMENT_API_KEYS_INDEX } from '../../constants';
|
import { ENROLLMENT_API_KEYS_INDEX } from '../../constants';
|
||||||
import { createAPIKey, invalidateAPIKeys } from './security';
|
|
||||||
import { agentPolicyService } from '../agent_policy';
|
import { agentPolicyService } from '../agent_policy';
|
||||||
import { escapeSearchQueryPhrase } from '../saved_object';
|
import { escapeSearchQueryPhrase } from '../saved_object';
|
||||||
|
import { createAPIKey, invalidateAPIKeys } from './security';
|
||||||
|
|
||||||
export async function listEnrollmentApiKeys(
|
export async function listEnrollmentApiKeys(
|
||||||
esClient: ElasticsearchClient,
|
esClient: ElasticsearchClient,
|
||||||
|
|
|
@ -10,10 +10,10 @@ import Boom from '@hapi/boom';
|
||||||
import { SavedObjectsClientContract, SavedObject } from 'src/core/server';
|
import { SavedObjectsClientContract, SavedObject } from 'src/core/server';
|
||||||
import { EnrollmentAPIKey, EnrollmentAPIKeySOAttributes } from '../../types';
|
import { EnrollmentAPIKey, EnrollmentAPIKeySOAttributes } from '../../types';
|
||||||
import { ENROLLMENT_API_KEYS_SAVED_OBJECT_TYPE } from '../../constants';
|
import { ENROLLMENT_API_KEYS_SAVED_OBJECT_TYPE } from '../../constants';
|
||||||
import { createAPIKey, invalidateAPIKeys } from './security';
|
|
||||||
import { agentPolicyService } from '../agent_policy';
|
import { agentPolicyService } from '../agent_policy';
|
||||||
import { appContextService } from '../app_context';
|
import { appContextService } from '../app_context';
|
||||||
import { normalizeKuery, escapeSearchQueryPhrase } from '../saved_object';
|
import { normalizeKuery, escapeSearchQueryPhrase } from '../saved_object';
|
||||||
|
import { createAPIKey, invalidateAPIKeys } from './security';
|
||||||
|
|
||||||
export async function listEnrollmentApiKeys(
|
export async function listEnrollmentApiKeys(
|
||||||
soClient: SavedObjectsClientContract,
|
soClient: SavedObjectsClientContract,
|
||||||
|
|
|
@ -5,8 +5,8 @@
|
||||||
* 2.0.
|
* 2.0.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { ArchiveEntry } from './index';
|
|
||||||
import { ArchivePackage, RegistryPackage } from '../../../../common';
|
import { ArchivePackage, RegistryPackage } from '../../../../common';
|
||||||
|
import { ArchiveEntry } from './index';
|
||||||
|
|
||||||
const archiveEntryCache: Map<ArchiveEntry['path'], ArchiveEntry['buffer']> = new Map();
|
const archiveEntryCache: Map<ArchiveEntry['path'], ArchiveEntry['buffer']> = new Map();
|
||||||
export const getArchiveEntry = (key: string) => archiveEntryCache.get(key);
|
export const getArchiveEntry = (key: string) => archiveEntryCache.get(key);
|
||||||
|
|
|
@ -19,9 +19,9 @@ import {
|
||||||
PackageAssetReference,
|
PackageAssetReference,
|
||||||
RegistryDataStream,
|
RegistryDataStream,
|
||||||
} from '../../../../common';
|
} from '../../../../common';
|
||||||
|
import { pkgToPkgKey } from '../registry';
|
||||||
import { ArchiveEntry, getArchiveEntry, setArchiveEntry, setArchiveFilelist } from './index';
|
import { ArchiveEntry, getArchiveEntry, setArchiveEntry, setArchiveFilelist } from './index';
|
||||||
import { parseAndVerifyPolicyTemplates, parseAndVerifyStreams } from './validation';
|
import { parseAndVerifyPolicyTemplates, parseAndVerifyStreams } from './validation';
|
||||||
import { pkgToPkgKey } from '../registry';
|
|
||||||
|
|
||||||
// could be anything, picked this from https://github.com/elastic/elastic-agent-client/issues/17
|
// could be anything, picked this from https://github.com/elastic/elastic-agent-client/issues/17
|
||||||
const MAX_ES_ASSET_BYTES = 4 * 1024 * 1024;
|
const MAX_ES_ASSET_BYTES = 4 * 1024 * 1024;
|
||||||
|
|
|
@ -17,8 +17,8 @@ import {
|
||||||
PackageSpecManifest,
|
PackageSpecManifest,
|
||||||
} from '../../../../common/types';
|
} from '../../../../common/types';
|
||||||
import { PackageInvalidArchiveError } from '../../../errors';
|
import { PackageInvalidArchiveError } from '../../../errors';
|
||||||
import { unpackBufferEntries } from './index';
|
|
||||||
import { pkgToPkgKey } from '../registry';
|
import { pkgToPkgKey } from '../registry';
|
||||||
|
import { unpackBufferEntries } from './index';
|
||||||
|
|
||||||
const MANIFESTS: Record<string, Buffer> = {};
|
const MANIFESTS: Record<string, Buffer> = {};
|
||||||
const MANIFEST_NAME = 'manifest.yml';
|
const MANIFEST_NAME = 'manifest.yml';
|
||||||
|
|
|
@ -14,9 +14,9 @@ import {
|
||||||
} from '../../../../../common/types/models';
|
} from '../../../../../common/types/models';
|
||||||
import { CallESAsCurrentUser } from '../../../../types';
|
import { CallESAsCurrentUser } from '../../../../types';
|
||||||
import { getInstallation } from '../../packages';
|
import { getInstallation } from '../../packages';
|
||||||
import { deleteIlmRefs, deleteIlms } from './remove';
|
|
||||||
import { saveInstalledEsRefs } from '../../packages/install';
|
import { saveInstalledEsRefs } from '../../packages/install';
|
||||||
import { getAsset } from '../transform/common';
|
import { getAsset } from '../transform/common';
|
||||||
|
import { deleteIlmRefs, deleteIlms } from './remove';
|
||||||
|
|
||||||
interface IlmInstallation {
|
interface IlmInstallation {
|
||||||
installationName: string;
|
installationName: string;
|
||||||
|
|
|
@ -7,8 +7,8 @@
|
||||||
|
|
||||||
import { readFileSync } from 'fs';
|
import { readFileSync } from 'fs';
|
||||||
import path from 'path';
|
import path from 'path';
|
||||||
import { rewriteIngestPipeline, getPipelineNameForInstallation } from './install';
|
|
||||||
import { RegistryDataStream } from '../../../../types';
|
import { RegistryDataStream } from '../../../../types';
|
||||||
|
import { rewriteIngestPipeline, getPipelineNameForInstallation } from './install';
|
||||||
|
|
||||||
test('a json-format pipeline with pipeline references is correctly rewritten', () => {
|
test('a json-format pipeline with pipeline references is correctly rewritten', () => {
|
||||||
const inputStandard = readFileSync(
|
const inputStandard = readFileSync(
|
||||||
|
|
|
@ -5,10 +5,10 @@
|
||||||
* 2.0.
|
* 2.0.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
import { elasticsearchServiceMock } from 'src/core/server/mocks';
|
||||||
import { RegistryDataStream } from '../../../../types';
|
import { RegistryDataStream } from '../../../../types';
|
||||||
import { Field } from '../../fields/field';
|
import { Field } from '../../fields/field';
|
||||||
|
|
||||||
import { elasticsearchServiceMock } from 'src/core/server/mocks';
|
|
||||||
import { installTemplate } from './install';
|
import { installTemplate } from './install';
|
||||||
|
|
||||||
test('tests installPackage to use correct priority and index_patterns for data stream with dataset_is_prefix not set', async () => {
|
test('tests installPackage to use correct priority and index_patterns for data stream with dataset_is_prefix not set', async () => {
|
||||||
|
|
|
@ -17,6 +17,8 @@ import {
|
||||||
import { CallESAsCurrentUser } from '../../../../types';
|
import { CallESAsCurrentUser } from '../../../../types';
|
||||||
import { Field, loadFieldsFromYaml, processFields } from '../../fields/field';
|
import { Field, loadFieldsFromYaml, processFields } from '../../fields/field';
|
||||||
import { getPipelineNameForInstallation } from '../ingest_pipeline/install';
|
import { getPipelineNameForInstallation } from '../ingest_pipeline/install';
|
||||||
|
import { getAsset, getPathParts } from '../../archive';
|
||||||
|
import { removeAssetsFromInstalledEsByType, saveInstalledEsRefs } from '../../packages/install';
|
||||||
import {
|
import {
|
||||||
generateMappings,
|
generateMappings,
|
||||||
generateTemplateName,
|
generateTemplateName,
|
||||||
|
@ -24,8 +26,6 @@ import {
|
||||||
getTemplate,
|
getTemplate,
|
||||||
getTemplatePriority,
|
getTemplatePriority,
|
||||||
} from './template';
|
} from './template';
|
||||||
import { getAsset, getPathParts } from '../../archive';
|
|
||||||
import { removeAssetsFromInstalledEsByType, saveInstalledEsRefs } from '../../packages/install';
|
|
||||||
|
|
||||||
export const installTemplates = async (
|
export const installTemplates = async (
|
||||||
installablePackage: InstallablePackage,
|
installablePackage: InstallablePackage,
|
||||||
|
|
|
@ -6,8 +6,8 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { readFileSync } from 'fs';
|
import { readFileSync } from 'fs';
|
||||||
import { safeLoad } from 'js-yaml';
|
|
||||||
import path from 'path';
|
import path from 'path';
|
||||||
|
import { safeLoad } from 'js-yaml';
|
||||||
import { RegistryDataStream } from '../../../../types';
|
import { RegistryDataStream } from '../../../../types';
|
||||||
import { Field, processFields } from '../../fields/field';
|
import { Field, processFields } from '../../fields/field';
|
||||||
import {
|
import {
|
||||||
|
|
|
@ -16,10 +16,10 @@ import {
|
||||||
} from '../../../../../common/types/models';
|
} from '../../../../../common/types/models';
|
||||||
import { CallESAsCurrentUser } from '../../../../types';
|
import { CallESAsCurrentUser } from '../../../../types';
|
||||||
import { getInstallation } from '../../packages';
|
import { getInstallation } from '../../packages';
|
||||||
import { deleteTransforms, deleteTransformRefs } from './remove';
|
|
||||||
import { getAsset } from './common';
|
|
||||||
import { appContextService } from '../../../app_context';
|
import { appContextService } from '../../../app_context';
|
||||||
import { isLegacyESClientError } from '../../../../errors';
|
import { isLegacyESClientError } from '../../../../errors';
|
||||||
|
import { deleteTransforms, deleteTransformRefs } from './remove';
|
||||||
|
import { getAsset } from './common';
|
||||||
|
|
||||||
interface TransformInstallation {
|
interface TransformInstallation {
|
||||||
installationName: string;
|
installationName: string;
|
||||||
|
|
|
@ -8,8 +8,8 @@
|
||||||
import { SavedObjectsClientContract } from 'kibana/server';
|
import { SavedObjectsClientContract } from 'kibana/server';
|
||||||
// eslint-disable-next-line @kbn/eslint/no-restricted-paths
|
// eslint-disable-next-line @kbn/eslint/no-restricted-paths
|
||||||
import { savedObjectsClientMock } from '../../../../../../../../src/core/server/saved_objects/service/saved_objects_client.mock';
|
import { savedObjectsClientMock } from '../../../../../../../../src/core/server/saved_objects/service/saved_objects_client.mock';
|
||||||
import { deleteTransformRefs } from './remove';
|
|
||||||
import { EsAssetReference } from '../../../../../common/types/models';
|
import { EsAssetReference } from '../../../../../common/types/models';
|
||||||
|
import { deleteTransformRefs } from './remove';
|
||||||
|
|
||||||
describe('test transform install', () => {
|
describe('test transform install', () => {
|
||||||
let savedObjectsClient: jest.Mocked<SavedObjectsClientContract>;
|
let savedObjectsClient: jest.Mocked<SavedObjectsClientContract>;
|
||||||
|
|
|
@ -5,6 +5,7 @@
|
||||||
* 2.0.
|
* 2.0.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
// eslint-disable-next-line import/order
|
||||||
import { createAppContextStartContractMock } from '../../../../mocks';
|
import { createAppContextStartContractMock } from '../../../../mocks';
|
||||||
|
|
||||||
jest.mock('../../packages/get', () => {
|
jest.mock('../../packages/get', () => {
|
||||||
|
@ -18,14 +19,14 @@ jest.mock('./common', () => {
|
||||||
});
|
});
|
||||||
|
|
||||||
import { errors as LegacyESErrors } from 'elasticsearch';
|
import { errors as LegacyESErrors } from 'elasticsearch';
|
||||||
import { installTransform } from './install';
|
|
||||||
import { ILegacyScopedClusterClient, SavedObject, SavedObjectsClientContract } from 'kibana/server';
|
import { ILegacyScopedClusterClient, SavedObject, SavedObjectsClientContract } from 'kibana/server';
|
||||||
import { ElasticsearchAssetType, Installation, RegistryPackage } from '../../../../types';
|
import { ElasticsearchAssetType, Installation, RegistryPackage } from '../../../../types';
|
||||||
import { getInstallation, getInstallationObject } from '../../packages';
|
import { getInstallation, getInstallationObject } from '../../packages';
|
||||||
import { getAsset } from './common';
|
|
||||||
// eslint-disable-next-line @kbn/eslint/no-restricted-paths
|
// eslint-disable-next-line @kbn/eslint/no-restricted-paths
|
||||||
import { savedObjectsClientMock } from '../../../../../../../../src/core/server/saved_objects/service/saved_objects_client.mock';
|
import { savedObjectsClientMock } from '../../../../../../../../src/core/server/saved_objects/service/saved_objects_client.mock';
|
||||||
import { appContextService } from '../../../app_context';
|
import { appContextService } from '../../../app_context';
|
||||||
|
import { getAsset } from './common';
|
||||||
|
import { installTransform } from './install';
|
||||||
|
|
||||||
describe('test transform install', () => {
|
describe('test transform install', () => {
|
||||||
let legacyScopedClusterClient: jest.Mocked<ILegacyScopedClusterClient>;
|
let legacyScopedClusterClient: jest.Mocked<ILegacyScopedClusterClient>;
|
||||||
|
|
|
@ -6,9 +6,9 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { readFileSync } from 'fs';
|
import { readFileSync } from 'fs';
|
||||||
|
import path from 'path';
|
||||||
import glob from 'glob';
|
import glob from 'glob';
|
||||||
import { safeLoad } from 'js-yaml';
|
import { safeLoad } from 'js-yaml';
|
||||||
import path from 'path';
|
|
||||||
import { Field, Fields, getField, processFields } from './field';
|
import { Field, Fields, getField, processFields } from './field';
|
||||||
|
|
||||||
// Add our own serialiser to just do JSON.stringify
|
// Add our own serialiser to just do JSON.stringify
|
||||||
|
|
|
@ -9,6 +9,7 @@ import path from 'path';
|
||||||
import { readFileSync } from 'fs';
|
import { readFileSync } from 'fs';
|
||||||
import glob from 'glob';
|
import glob from 'glob';
|
||||||
import { safeLoad } from 'js-yaml';
|
import { safeLoad } from 'js-yaml';
|
||||||
|
import { Fields, Field } from '../../fields/field';
|
||||||
import {
|
import {
|
||||||
flattenFields,
|
flattenFields,
|
||||||
dedupeFields,
|
dedupeFields,
|
||||||
|
@ -19,7 +20,6 @@ import {
|
||||||
createIndexPatternFields,
|
createIndexPatternFields,
|
||||||
createIndexPattern,
|
createIndexPattern,
|
||||||
} from './install';
|
} from './install';
|
||||||
import { Fields, Field } from '../../fields/field';
|
|
||||||
import { dupeFields } from './tests/test_data';
|
import { dupeFields } from './tests/test_data';
|
||||||
|
|
||||||
// Add our own serialiser to just do JSON.stringify
|
// Add our own serialiser to just do JSON.stringify
|
||||||
|
|
|
@ -27,12 +27,12 @@ import { installPipelines, deletePreviousPipelines } from '../elasticsearch/inge
|
||||||
import { installILMPolicy } from '../elasticsearch/ilm/install';
|
import { installILMPolicy } from '../elasticsearch/ilm/install';
|
||||||
import { installKibanaAssets, getKibanaAssets } from '../kibana/assets/install';
|
import { installKibanaAssets, getKibanaAssets } from '../kibana/assets/install';
|
||||||
import { updateCurrentWriteIndices } from '../elasticsearch/template/template';
|
import { updateCurrentWriteIndices } from '../elasticsearch/template/template';
|
||||||
import { deleteKibanaSavedObjectsAssets } from './remove';
|
|
||||||
import { installTransform } from '../elasticsearch/transform/install';
|
import { installTransform } from '../elasticsearch/transform/install';
|
||||||
import { createInstallation, saveKibanaAssetsRefs, updateVersion } from './install';
|
|
||||||
import { installIlmForDataStream } from '../elasticsearch/datastream_ilm/install';
|
import { installIlmForDataStream } from '../elasticsearch/datastream_ilm/install';
|
||||||
import { saveArchiveEntries } from '../archive/storage';
|
import { saveArchiveEntries } from '../archive/storage';
|
||||||
import { ConcurrentInstallOperationError } from '../../../errors';
|
import { ConcurrentInstallOperationError } from '../../../errors';
|
||||||
|
import { createInstallation, saveKibanaAssetsRefs, updateVersion } from './install';
|
||||||
|
import { deleteKibanaSavedObjectsAssets } from './remove';
|
||||||
|
|
||||||
// this is only exported for testing
|
// this is only exported for testing
|
||||||
// use a leading underscore to indicate it's not the supported path
|
// use a leading underscore to indicate it's not the supported path
|
||||||
|
|
|
@ -6,8 +6,8 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { InstallablePackage } from '../../../types';
|
import { InstallablePackage } from '../../../types';
|
||||||
import { getAssets } from './assets';
|
|
||||||
import { getArchiveFilelist } from '../archive/cache';
|
import { getArchiveFilelist } from '../archive/cache';
|
||||||
|
import { getAssets } from './assets';
|
||||||
|
|
||||||
jest.mock('../archive/cache', () => {
|
jest.mock('../archive/cache', () => {
|
||||||
return {
|
return {
|
||||||
|
|
|
@ -5,6 +5,7 @@
|
||||||
* 2.0.
|
* 2.0.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
// eslint-disable-next-line import/order
|
||||||
import { ElasticsearchAssetType, Installation, KibanaSavedObjectType } from '../../../types';
|
import { ElasticsearchAssetType, Installation, KibanaSavedObjectType } from '../../../types';
|
||||||
import { SavedObject, SavedObjectsClientContract } from 'src/core/server';
|
import { SavedObject, SavedObjectsClientContract } from 'src/core/server';
|
||||||
|
|
||||||
|
@ -12,15 +13,15 @@ jest.mock('./install');
|
||||||
jest.mock('./bulk_install_packages');
|
jest.mock('./bulk_install_packages');
|
||||||
jest.mock('./get');
|
jest.mock('./get');
|
||||||
|
|
||||||
import { bulkInstallPackages, isBulkInstallError } from './bulk_install_packages';
|
|
||||||
const { ensureInstalledDefaultPackages } = jest.requireActual('./install');
|
const { ensureInstalledDefaultPackages } = jest.requireActual('./install');
|
||||||
const { isBulkInstallError: actualIsBulkInstallError } = jest.requireActual(
|
const { isBulkInstallError: actualIsBulkInstallError } = jest.requireActual(
|
||||||
'./bulk_install_packages'
|
'./bulk_install_packages'
|
||||||
);
|
);
|
||||||
import { getInstallation } from './get';
|
|
||||||
import { savedObjectsClientMock } from 'src/core/server/mocks';
|
import { savedObjectsClientMock } from 'src/core/server/mocks';
|
||||||
import { appContextService } from '../../app_context';
|
import { appContextService } from '../../app_context';
|
||||||
import { createAppContextStartContractMock } from '../../../mocks';
|
import { createAppContextStartContractMock } from '../../../mocks';
|
||||||
|
import { getInstallation } from './get';
|
||||||
|
import { bulkInstallPackages, isBulkInstallError } from './bulk_install_packages';
|
||||||
|
|
||||||
// if we add this assertion, TS will type check the return value
|
// if we add this assertion, TS will type check the return value
|
||||||
// and the editor will also know about .mockImplementation, .mock.calls, etc
|
// and the editor will also know about .mockImplementation, .mock.calls, etc
|
||||||
|
|
|
@ -18,10 +18,10 @@ import { ArchivePackage, RegistryPackage, EpmPackageAdditions } from '../../../.
|
||||||
import { Installation, PackageInfo, KibanaAssetType } from '../../../types';
|
import { Installation, PackageInfo, KibanaAssetType } from '../../../types';
|
||||||
import { IngestManagerError } from '../../../errors';
|
import { IngestManagerError } from '../../../errors';
|
||||||
import * as Registry from '../registry';
|
import * as Registry from '../registry';
|
||||||
import { createInstallableFrom, isRequiredPackage } from './index';
|
|
||||||
import { getEsPackage } from '../archive/storage';
|
import { getEsPackage } from '../archive/storage';
|
||||||
import { getArchivePackage } from '../archive';
|
import { getArchivePackage } from '../archive';
|
||||||
import { normalizeKuery } from '../../saved_object';
|
import { normalizeKuery } from '../../saved_object';
|
||||||
|
import { createInstallableFrom, isRequiredPackage } from './index';
|
||||||
|
|
||||||
export { getFile, SearchParams } from '../registry';
|
export { getFile, SearchParams } from '../registry';
|
||||||
|
|
||||||
|
|
|
@ -11,7 +11,6 @@ import Boom from '@hapi/boom';
|
||||||
import { UnwrapPromise } from '@kbn/utility-types';
|
import { UnwrapPromise } from '@kbn/utility-types';
|
||||||
import { SavedObject, SavedObjectsClientContract } from 'src/core/server';
|
import { SavedObject, SavedObjectsClientContract } from 'src/core/server';
|
||||||
import { generateESIndexPatterns } from '../elasticsearch/template/template';
|
import { generateESIndexPatterns } from '../elasticsearch/template/template';
|
||||||
import { isRequiredPackage } from './index';
|
|
||||||
import {
|
import {
|
||||||
BulkInstallPackageInfo,
|
BulkInstallPackageInfo,
|
||||||
InstallablePackage,
|
InstallablePackage,
|
||||||
|
@ -30,21 +29,22 @@ import {
|
||||||
} from '../../../types';
|
} from '../../../types';
|
||||||
import * as Registry from '../registry';
|
import * as Registry from '../registry';
|
||||||
import { setPackageInfo, parseAndVerifyArchiveEntries, unpackBufferToCache } from '../archive';
|
import { setPackageInfo, parseAndVerifyArchiveEntries, unpackBufferToCache } from '../archive';
|
||||||
|
import { toAssetReference, ArchiveAsset } from '../kibana/assets/install';
|
||||||
|
import {
|
||||||
|
IngestManagerError,
|
||||||
|
PackageOperationNotSupportedError,
|
||||||
|
PackageOutdatedError,
|
||||||
|
} from '../../../errors';
|
||||||
|
import { appContextService } from '../../app_context';
|
||||||
import {
|
import {
|
||||||
getInstallation,
|
getInstallation,
|
||||||
getInstallationObject,
|
getInstallationObject,
|
||||||
bulkInstallPackages,
|
bulkInstallPackages,
|
||||||
isBulkInstallError,
|
isBulkInstallError,
|
||||||
} from './index';
|
} from './index';
|
||||||
import { toAssetReference, ArchiveAsset } from '../kibana/assets/install';
|
|
||||||
import { removeInstallation } from './remove';
|
import { removeInstallation } from './remove';
|
||||||
import {
|
|
||||||
IngestManagerError,
|
|
||||||
PackageOperationNotSupportedError,
|
|
||||||
PackageOutdatedError,
|
|
||||||
} from '../../../errors';
|
|
||||||
import { getPackageSavedObjects } from './get';
|
import { getPackageSavedObjects } from './get';
|
||||||
import { appContextService } from '../../app_context';
|
import { isRequiredPackage } from './index';
|
||||||
import { _installPackage } from './_install_package';
|
import { _installPackage } from './_install_package';
|
||||||
|
|
||||||
export async function installLatestPackage(options: {
|
export async function installLatestPackage(options: {
|
||||||
|
|
|
@ -17,7 +17,6 @@ import {
|
||||||
KibanaAssetReference,
|
KibanaAssetReference,
|
||||||
Installation,
|
Installation,
|
||||||
} from '../../../types';
|
} from '../../../types';
|
||||||
import { getInstallation, savedObjectTypes } from './index';
|
|
||||||
import { deletePipeline } from '../elasticsearch/ingest_pipeline/';
|
import { deletePipeline } from '../elasticsearch/ingest_pipeline/';
|
||||||
import { installIndexPatterns } from '../kibana/index_pattern/install';
|
import { installIndexPatterns } from '../kibana/index_pattern/install';
|
||||||
import { deleteTransforms } from '../elasticsearch/transform/remove';
|
import { deleteTransforms } from '../elasticsearch/transform/remove';
|
||||||
|
@ -26,6 +25,7 @@ import { splitPkgKey } from '../registry';
|
||||||
import { deletePackageCache } from '../archive';
|
import { deletePackageCache } from '../archive';
|
||||||
import { deleteIlms } from '../elasticsearch/datastream_ilm/remove';
|
import { deleteIlms } from '../elasticsearch/datastream_ilm/remove';
|
||||||
import { removeArchiveEntries } from '../archive/storage';
|
import { removeArchiveEntries } from '../archive/storage';
|
||||||
|
import { getInstallation, savedObjectTypes } from './index';
|
||||||
|
|
||||||
export async function removeInstallation(options: {
|
export async function removeInstallation(options: {
|
||||||
savedObjectsClient: SavedObjectsClientContract;
|
savedObjectsClient: SavedObjectsClientContract;
|
||||||
|
|
|
@ -5,10 +5,10 @@
|
||||||
* 2.0.
|
* 2.0.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
import { URL } from 'url';
|
||||||
import mime from 'mime-types';
|
import mime from 'mime-types';
|
||||||
import semverValid from 'semver/functions/valid';
|
import semverValid from 'semver/functions/valid';
|
||||||
import { Response } from 'node-fetch';
|
import { Response } from 'node-fetch';
|
||||||
import { URL } from 'url';
|
|
||||||
import {
|
import {
|
||||||
AssetsGroupedByServiceByType,
|
AssetsGroupedByServiceByType,
|
||||||
CategoryId,
|
CategoryId,
|
||||||
|
@ -26,11 +26,11 @@ import {
|
||||||
getPackageInfo,
|
getPackageInfo,
|
||||||
setPackageInfo,
|
setPackageInfo,
|
||||||
} from '../archive';
|
} from '../archive';
|
||||||
import { fetchUrl, getResponse, getResponseStream } from './requests';
|
|
||||||
import { streamToBuffer } from '../streams';
|
import { streamToBuffer } from '../streams';
|
||||||
import { getRegistryUrl } from './registry_url';
|
|
||||||
import { appContextService } from '../..';
|
import { appContextService } from '../..';
|
||||||
import { PackageNotFoundError, PackageCacheError } from '../../../errors';
|
import { PackageNotFoundError, PackageCacheError } from '../../../errors';
|
||||||
|
import { fetchUrl, getResponse, getResponseStream } from './requests';
|
||||||
|
import { getRegistryUrl } from './registry_url';
|
||||||
|
|
||||||
export interface SearchParams {
|
export interface SearchParams {
|
||||||
category?: CategoryId;
|
category?: CategoryId;
|
||||||
|
|
|
@ -5,8 +5,8 @@
|
||||||
* 2.0.
|
* 2.0.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { fetchUrl } from './requests';
|
|
||||||
import { RegistryError, RegistryConnectionError, RegistryResponseError } from '../../../errors';
|
import { RegistryError, RegistryConnectionError, RegistryResponseError } from '../../../errors';
|
||||||
|
import { fetchUrl } from './requests';
|
||||||
jest.mock('node-fetch');
|
jest.mock('node-fetch');
|
||||||
|
|
||||||
const { Response, FetchError } = jest.requireActual('node-fetch');
|
const { Response, FetchError } = jest.requireActual('node-fetch');
|
||||||
|
|
|
@ -6,8 +6,8 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { SavedObjectsClientContract } from 'kibana/server';
|
import { SavedObjectsClientContract } from 'kibana/server';
|
||||||
import { getInstallation } from './epm/packages';
|
|
||||||
import { ESIndexPatternService } from '../../server';
|
import { ESIndexPatternService } from '../../server';
|
||||||
|
import { getInstallation } from './epm/packages';
|
||||||
|
|
||||||
export class ESIndexPatternSavedObjectService implements ESIndexPatternService {
|
export class ESIndexPatternSavedObjectService implements ESIndexPatternService {
|
||||||
public async getESIndexPattern(
|
public async getESIndexPattern(
|
||||||
|
|
|
@ -7,6 +7,7 @@
|
||||||
|
|
||||||
import { elasticsearchServiceMock } from 'src/core/server/mocks';
|
import { elasticsearchServiceMock } from 'src/core/server/mocks';
|
||||||
import hash from 'object-hash';
|
import hash from 'object-hash';
|
||||||
|
import { FLEET_SERVER_INDICES } from '../../../common';
|
||||||
import { setupFleetServerIndexes } from './elastic_index';
|
import { setupFleetServerIndexes } from './elastic_index';
|
||||||
import ESFleetAgentIndex from './elasticsearch/fleet_agents.json';
|
import ESFleetAgentIndex from './elasticsearch/fleet_agents.json';
|
||||||
import ESFleetPoliciesIndex from './elasticsearch/fleet_policies.json';
|
import ESFleetPoliciesIndex from './elasticsearch/fleet_policies.json';
|
||||||
|
@ -15,7 +16,6 @@ import ESFleetServersIndex from './elasticsearch/fleet_servers.json';
|
||||||
import ESFleetEnrollmentApiKeysIndex from './elasticsearch/fleet_enrollment_api_keys.json';
|
import ESFleetEnrollmentApiKeysIndex from './elasticsearch/fleet_enrollment_api_keys.json';
|
||||||
import EsFleetActionsIndex from './elasticsearch/fleet_actions.json';
|
import EsFleetActionsIndex from './elasticsearch/fleet_actions.json';
|
||||||
import EsFleetArtifactsIndex from './elasticsearch/fleet_artifacts.json';
|
import EsFleetArtifactsIndex from './elasticsearch/fleet_artifacts.json';
|
||||||
import { FLEET_SERVER_INDICES } from '../../../common';
|
|
||||||
|
|
||||||
const FLEET_INDEXES_MIGRATION_HASH: Record<typeof FLEET_SERVER_INDICES[number], string> = {
|
const FLEET_INDEXES_MIGRATION_HASH: Record<typeof FLEET_SERVER_INDICES[number], string> = {
|
||||||
'.fleet-actions': hash(EsFleetActionsIndex),
|
'.fleet-actions': hash(EsFleetActionsIndex),
|
||||||
|
|
|
@ -8,8 +8,8 @@
|
||||||
import { SavedObjectsClientContract } from 'src/core/server';
|
import { SavedObjectsClientContract } from 'src/core/server';
|
||||||
import { NewOutput, Output, OutputSOAttributes } from '../types';
|
import { NewOutput, Output, OutputSOAttributes } from '../types';
|
||||||
import { DEFAULT_OUTPUT, OUTPUT_SAVED_OBJECT_TYPE } from '../constants';
|
import { DEFAULT_OUTPUT, OUTPUT_SAVED_OBJECT_TYPE } from '../constants';
|
||||||
import { appContextService } from './app_context';
|
|
||||||
import { decodeCloudId } from '../../common';
|
import { decodeCloudId } from '../../common';
|
||||||
|
import { appContextService } from './app_context';
|
||||||
|
|
||||||
const SAVED_OBJECT_TYPE = OUTPUT_SAVED_OBJECT_TYPE;
|
const SAVED_OBJECT_TYPE = OUTPUT_SAVED_OBJECT_TYPE;
|
||||||
|
|
||||||
|
|
|
@ -6,15 +6,15 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { elasticsearchServiceMock, savedObjectsClientMock } from 'src/core/server/mocks';
|
import { elasticsearchServiceMock, savedObjectsClientMock } from 'src/core/server/mocks';
|
||||||
import { createPackagePolicyMock } from '../../common/mocks';
|
|
||||||
import { packagePolicyService } from './package_policy';
|
|
||||||
import { PackageInfo, PackagePolicySOAttributes } from '../types';
|
|
||||||
import { SavedObjectsUpdateResponse } from 'src/core/server';
|
import { SavedObjectsUpdateResponse } from 'src/core/server';
|
||||||
import { httpServerMock } from 'src/core/server/mocks';
|
import { httpServerMock } from 'src/core/server/mocks';
|
||||||
import { KibanaRequest } from 'kibana/server';
|
import { KibanaRequest } from 'kibana/server';
|
||||||
|
import { PackageInfo, PackagePolicySOAttributes } from '../types';
|
||||||
|
import { createPackagePolicyMock } from '../../common/mocks';
|
||||||
import { ExternalCallback } from '..';
|
import { ExternalCallback } from '..';
|
||||||
import { appContextService } from './app_context';
|
|
||||||
import { createAppContextStartContractMock, xpackMocks } from '../mocks';
|
import { createAppContextStartContractMock, xpackMocks } from '../mocks';
|
||||||
|
import { packagePolicyService } from './package_policy';
|
||||||
|
import { appContextService } from './app_context';
|
||||||
|
|
||||||
async function mockedGetAssetsData(_a: any, _b: any, dataset: string) {
|
async function mockedGetAssetsData(_a: any, _b: any, dataset: string) {
|
||||||
if (dataset === 'dataset1') {
|
if (dataset === 'dataset1') {
|
||||||
|
|
|
@ -37,6 +37,7 @@ import {
|
||||||
NewPackagePolicySchema,
|
NewPackagePolicySchema,
|
||||||
UpdatePackagePolicySchema,
|
UpdatePackagePolicySchema,
|
||||||
} from '../types';
|
} from '../types';
|
||||||
|
import { ExternalCallback } from '..';
|
||||||
import { agentPolicyService } from './agent_policy';
|
import { agentPolicyService } from './agent_policy';
|
||||||
import { outputService } from './output';
|
import { outputService } from './output';
|
||||||
import * as Registry from './epm/registry';
|
import * as Registry from './epm/registry';
|
||||||
|
@ -45,7 +46,6 @@ import { getAssetsData } from './epm/packages/assets';
|
||||||
import { compileTemplate } from './epm/agent/agent';
|
import { compileTemplate } from './epm/agent/agent';
|
||||||
import { normalizeKuery } from './saved_object';
|
import { normalizeKuery } from './saved_object';
|
||||||
import { appContextService } from '.';
|
import { appContextService } from '.';
|
||||||
import { ExternalCallback } from '..';
|
|
||||||
|
|
||||||
const SAVED_OBJECT_TYPE = PACKAGE_POLICY_SAVED_OBJECT_TYPE;
|
const SAVED_OBJECT_TYPE = PACKAGE_POLICY_SAVED_OBJECT_TYPE;
|
||||||
|
|
||||||
|
|
|
@ -5,9 +5,9 @@
|
||||||
* 2.0.
|
* 2.0.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
import url from 'url';
|
||||||
import Boom from '@hapi/boom';
|
import Boom from '@hapi/boom';
|
||||||
import { SavedObjectsClientContract } from 'kibana/server';
|
import { SavedObjectsClientContract } from 'kibana/server';
|
||||||
import url from 'url';
|
|
||||||
import {
|
import {
|
||||||
GLOBAL_SETTINGS_SAVED_OBJECT_TYPE,
|
GLOBAL_SETTINGS_SAVED_OBJECT_TYPE,
|
||||||
SettingsSOAttributes,
|
SettingsSOAttributes,
|
||||||
|
|
|
@ -8,13 +8,6 @@
|
||||||
import uuid from 'uuid';
|
import uuid from 'uuid';
|
||||||
import { ElasticsearchClient, SavedObjectsClientContract } from 'src/core/server';
|
import { ElasticsearchClient, SavedObjectsClientContract } from 'src/core/server';
|
||||||
import { CallESAsCurrentUser } from '../types';
|
import { CallESAsCurrentUser } from '../types';
|
||||||
import { agentPolicyService } from './agent_policy';
|
|
||||||
import { outputService } from './output';
|
|
||||||
import {
|
|
||||||
ensureInstalledDefaultPackages,
|
|
||||||
ensureInstalledPackage,
|
|
||||||
ensurePackagesCompletedInstall,
|
|
||||||
} from './epm/packages/install';
|
|
||||||
import {
|
import {
|
||||||
packageToPackagePolicy,
|
packageToPackagePolicy,
|
||||||
PackagePolicy,
|
PackagePolicy,
|
||||||
|
@ -25,6 +18,13 @@ import {
|
||||||
FLEET_SERVER_PACKAGE,
|
FLEET_SERVER_PACKAGE,
|
||||||
} from '../../common';
|
} from '../../common';
|
||||||
import { SO_SEARCH_LIMIT } from '../constants';
|
import { SO_SEARCH_LIMIT } from '../constants';
|
||||||
|
import { agentPolicyService } from './agent_policy';
|
||||||
|
import { outputService } from './output';
|
||||||
|
import {
|
||||||
|
ensureInstalledDefaultPackages,
|
||||||
|
ensureInstalledPackage,
|
||||||
|
ensurePackagesCompletedInstall,
|
||||||
|
} from './epm/packages/install';
|
||||||
import { getPackageInfo } from './epm/packages';
|
import { getPackageInfo } from './epm/packages';
|
||||||
import { packagePolicyService } from './package_policy';
|
import { packagePolicyService } from './package_policy';
|
||||||
import { generateEnrollmentAPIKey } from './api_keys';
|
import { generateEnrollmentAPIKey } from './api_keys';
|
||||||
|
|
|
@ -6,8 +6,8 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { schema } from '@kbn/config-schema';
|
import { schema } from '@kbn/config-schema';
|
||||||
import { PackagePolicySchema, NamespaceSchema } from './package_policy';
|
|
||||||
import { agentPolicyStatuses, dataTypes } from '../../../common';
|
import { agentPolicyStatuses, dataTypes } from '../../../common';
|
||||||
|
import { PackagePolicySchema, NamespaceSchema } from './package_policy';
|
||||||
|
|
||||||
const AgentPolicyBaseSchema = {
|
const AgentPolicyBaseSchema = {
|
||||||
name: schema.string({ minLength: 1 }),
|
name: schema.string({ minLength: 1 }),
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue