Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -21,17 +21,14 @@ import {
createPermissionFailureMessage,
} from '../../../../../privilege/check_privilege';

import { DataFrameAnalyticsListRow, DATA_FRAME_TASK_STATE } from './common';
import { isDataFrameAnalyticsRunning, DataFrameAnalyticsListRow } from './common';

interface DeleteActionProps {
item: DataFrameAnalyticsListRow;
}

export const DeleteAction: FC<DeleteActionProps> = ({ item }) => {
const disabled =
item.stats.state === DATA_FRAME_TASK_STATE.STARTED ||
item.stats.state === DATA_FRAME_TASK_STATE.ANALYZING ||
item.stats.state === DATA_FRAME_TASK_STATE.REINDEXING;
const disabled = isDataFrameAnalyticsRunning(item.stats.state);

const canDeleteDataFrameAnalytics: boolean = checkPermission('canDeleteDataFrameAnalytics');

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ export const getActions = () => {
AnalyticsViewAction,
{
render: (item: DataFrameAnalyticsListRow) => {
if (!isDataFrameAnalyticsRunning(item.stats)) {
if (!isDataFrameAnalyticsRunning(item.stats.state)) {
return <StartAction item={item} />;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,7 @@ import React, { Fragment, FC, useState } from 'react';

import { i18n } from '@kbn/i18n';

import {
// EuiBadge,
EuiButtonEmpty,
EuiCallOut,
EuiEmptyPrompt,
} from '@elastic/eui';
import { EuiButtonEmpty, EuiCallOut, EuiEmptyPrompt } from '@elastic/eui';

import { DataFrameAnalyticsId, useRefreshAnalyticsList } from '../../../../common';
import { checkPermission } from '../../../../../privilege/check_privilege';
Expand All @@ -24,7 +19,6 @@ import {
DataFrameAnalyticsListRow,
ItemIdToExpandedRowMap,
DATA_FRAME_TASK_STATE,
// DATA_FRAME_MODE,
Query,
Clause,
} from './common';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,12 @@ import {
import { getAnalysisType, DataFrameAnalyticsId } from '../../../../common';
import {
getDataFrameAnalyticsProgress,
isDataFrameAnalyticsFailed,
isDataFrameAnalyticsRunning,
isDataFrameAnalyticsStopped,
DataFrameAnalyticsListColumn,
DataFrameAnalyticsListRow,
DataFrameAnalyticsStats,
DATA_FRAME_TASK_STATE,
} from './common';
import { getActions } from './actions';

Expand All @@ -32,6 +34,7 @@ enum TASK_STATE_COLOR {
failed = 'danger',
reindexing = 'primary',
started = 'primary',
starting = 'primary',
stopped = 'hollow',
}

Expand All @@ -41,7 +44,7 @@ export const getTaskStateBadge = (
) => {
const color = TASK_STATE_COLOR[state];

if (state === DATA_FRAME_TASK_STATE.FAILED && reason !== undefined) {
if (isDataFrameAnalyticsFailed(state) && reason !== undefined) {
return (
<EuiToolTip content={reason}>
<EuiBadge className="mlTaskStateBadge" color={color}>
Expand Down Expand Up @@ -91,10 +94,10 @@ export const progressColumn = {
{!isBatchTransform && (
<Fragment>
<EuiFlexItem style={{ width: '40px' }} grow={false}>
{item.stats.state === DATA_FRAME_TASK_STATE.STARTED && (
{isDataFrameAnalyticsRunning(item.stats.state) && (
<EuiProgress color="primary" size="m" />
)}
{item.stats.state === DATA_FRAME_TASK_STATE.STOPPED && (
{isDataFrameAnalyticsStopped(item.stats.state) && (
<EuiProgress value={0} max={100} color="primary" size="m" />
)}
</EuiFlexItem>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,12 @@ import {
isCompletedAnalyticsJob,
isDataFrameAnalyticsRunning,
isDataFrameAnalyticsStats,
DataFrameAnalyticsStats,
DATA_FRAME_TASK_STATE,
} from './common';

const completedJob = StatsMock.data_frame_analytics[0];
const runningJob = StatsMock.data_frame_analytics[1];
const completedJob = StatsMock.data_frame_analytics[0] as DataFrameAnalyticsStats;
const runningJob = StatsMock.data_frame_analytics[1] as DataFrameAnalyticsStats;

describe('Data Frame Analytics: common utils', () => {
test('isCompletedAnalyticsJob()', () => {
Expand All @@ -23,8 +25,16 @@ describe('Data Frame Analytics: common utils', () => {
});

test('isDataFrameAnalyticsRunning()', () => {
expect(isDataFrameAnalyticsRunning(completedJob)).toBe(false);
expect(isDataFrameAnalyticsRunning(runningJob)).toBe(true);
expect(isDataFrameAnalyticsRunning(completedJob.state)).toBe(false);
expect(isDataFrameAnalyticsRunning(runningJob.state)).toBe(true);
runningJob.state = DATA_FRAME_TASK_STATE.STARTED;
expect(isDataFrameAnalyticsRunning(runningJob.state)).toBe(true);
runningJob.state = DATA_FRAME_TASK_STATE.STARTING;
expect(isDataFrameAnalyticsRunning(runningJob.state)).toBe(true);
runningJob.state = DATA_FRAME_TASK_STATE.REINDEXING;
expect(isDataFrameAnalyticsRunning(runningJob.state)).toBe(true);
runningJob.state = DATA_FRAME_TASK_STATE.FAILED;
expect(isDataFrameAnalyticsRunning(runningJob.state)).toBe(false);
});

test('isDataFrameAnalyticsStats()', () => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ export enum DATA_FRAME_TASK_STATE {
FAILED = 'failed',
REINDEXING = 'reindexing',
STARTED = 'started',
STARTING = 'starting',
STOPPED = 'stopped',
}

Expand Down Expand Up @@ -54,14 +55,23 @@ export interface DataFrameAnalyticsStats {
state: DATA_FRAME_TASK_STATE;
}

export function isDataFrameAnalyticsRunning(stats: DataFrameAnalyticsStats) {
export function isDataFrameAnalyticsFailed(state: DATA_FRAME_TASK_STATE) {
return state === DATA_FRAME_TASK_STATE.FAILED;
}

export function isDataFrameAnalyticsRunning(state: DATA_FRAME_TASK_STATE) {
return (
stats.state === DATA_FRAME_TASK_STATE.ANALYZING ||
stats.state === DATA_FRAME_TASK_STATE.STARTED ||
stats.state === DATA_FRAME_TASK_STATE.REINDEXING
state === DATA_FRAME_TASK_STATE.ANALYZING ||
state === DATA_FRAME_TASK_STATE.REINDEXING ||
state === DATA_FRAME_TASK_STATE.STARTED ||
state === DATA_FRAME_TASK_STATE.STARTING
);
}

export function isDataFrameAnalyticsStopped(state: DATA_FRAME_TASK_STATE) {
return state === DATA_FRAME_TASK_STATE.STOPPED;
}

export function isDataFrameAnalyticsStats(arg: any): arg is DataFrameAnalyticsStats {
return (
typeof arg === 'object' &&
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,18 +11,14 @@ import { ml } from '../../../../../services/ml_api_service';
import { refreshAnalyticsList$, REFRESH_ANALYTICS_LIST_STATE } from '../../../../common';

import {
DATA_FRAME_TASK_STATE,
isDataFrameAnalyticsFailed,
DataFrameAnalyticsListRow,
} from '../../components/analytics_list/common';

export const deleteAnalytics = async (d: DataFrameAnalyticsListRow) => {
try {
if (d.stats.state === DATA_FRAME_TASK_STATE.FAILED) {
await ml.dataFrameAnalytics.stopDataFrameAnalytics(
d.config.id,
d.stats.state === DATA_FRAME_TASK_STATE.FAILED,
true
);
if (isDataFrameAnalyticsFailed(d.stats.state)) {
await ml.dataFrameAnalytics.stopDataFrameAnalytics(d.config.id, true, true);
}
await ml.dataFrameAnalytics.deleteDataFrameAnalytics(d.config.id);
toastNotifications.addSuccess(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,15 +11,15 @@ import { ml } from '../../../../../services/ml_api_service';
import { refreshAnalyticsList$, REFRESH_ANALYTICS_LIST_STATE } from '../../../../common';

import {
DATA_FRAME_TASK_STATE,
isDataFrameAnalyticsFailed,
DataFrameAnalyticsListRow,
} from '../../components/analytics_list/common';

export const stopAnalytics = async (d: DataFrameAnalyticsListRow) => {
try {
await ml.dataFrameAnalytics.stopDataFrameAnalytics(
d.config.id,
d.stats.state === DATA_FRAME_TASK_STATE.FAILED,
isDataFrameAnalyticsFailed(d.stats.state),
true
);
toastNotifications.addSuccess(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,10 @@ import React, { FC } from 'react';
import { i18n } from '@kbn/i18n';
import { StatsBar, AnalyticStatsBarStats } from '../../../components/stats_bar';
import {
isDataFrameAnalyticsFailed,
isDataFrameAnalyticsRunning,
isDataFrameAnalyticsStopped,
DataFrameAnalyticsListRow,
DATA_FRAME_TASK_STATE,
} from '../../../data_frame_analytics/pages/analytics_management/components/analytics_list/common';

function getAnalyticsStats(analyticsList: any[]) {
Expand Down Expand Up @@ -53,15 +55,11 @@ function getAnalyticsStats(analyticsList: any[]) {
let stoppedJobs = 0;

analyticsList.forEach(job => {
if (job.stats.state === DATA_FRAME_TASK_STATE.FAILED) {
if (isDataFrameAnalyticsFailed(job.stats.state)) {
failedJobs++;
} else if (
job.stats.state === DATA_FRAME_TASK_STATE.STARTED ||
job.stats.state === DATA_FRAME_TASK_STATE.ANALYZING ||
job.stats.state === DATA_FRAME_TASK_STATE.REINDEXING
) {
} else if (isDataFrameAnalyticsRunning(job.stats.state)) {
startedJobs++;
} else if (job.stats.state === DATA_FRAME_TASK_STATE.STOPPED) {
} else if (isDataFrameAnalyticsStopped(job.stats.state)) {
stoppedJobs++;
}
});
Expand Down