From 195636e3165c07fc6fff5ef3448cdb9508384a85 Mon Sep 17 00:00:00 2001 From: James Gowdy Date: Thu, 17 Dec 2020 12:52:01 +0000 Subject: [PATCH] [ML] Fix synching jobs from other spaces (#86086) (#86246) * [ML] Fix synching jobs from other spaces * updating text in delete modal * updating translations Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- .../delete_job_modal/delete_job_modal.tsx | 5 +- .../delete_job_modal/delete_job_modal_.js | 167 ------------------ .../ml/server/saved_objects/service.ts | 23 +++ .../plugins/ml/server/saved_objects/sync.ts | 16 +- .../translations/translations/ja-JP.json | 1 - .../translations/translations/zh-CN.json | 1 - 6 files changed, 38 insertions(+), 175 deletions(-) delete mode 100644 x-pack/plugins/ml/public/application/jobs/jobs_list/components/delete_job_modal/delete_job_modal_.js diff --git a/x-pack/plugins/ml/public/application/jobs/jobs_list/components/delete_job_modal/delete_job_modal.tsx b/x-pack/plugins/ml/public/application/jobs/jobs_list/components/delete_job_modal/delete_job_modal.tsx index 90ae44eb85e5b..0cb23c2b264bb 100644 --- a/x-pack/plugins/ml/public/application/jobs/jobs_list/components/delete_job_modal/delete_job_modal.tsx +++ b/x-pack/plugins/ml/public/application/jobs/jobs_list/components/delete_job_modal/delete_job_modal.tsx @@ -17,6 +17,7 @@ import { EuiButtonEmpty, EuiButton, EuiLoadingSpinner, + EuiText, } from '@elastic/eui'; import { deleteJobs } from '../utils'; @@ -103,7 +104,7 @@ export const DeleteJobModal: FC = ({ setShowFunction, unsetShowFunction, ) : ( - <> + - ); - modal = ( - - - } - confirmButtonText={ - - } - buttonColor="danger" - defaultFocusedButton={EUI_MODAL_CONFIRM_BUTTON} - className="eui-textBreakWord" - > - {this.state.deleting === true && ( -
- - -
- -
-
- )} - - {this.state.deleting === false && ( - -

- -

-
- )} -
-
- ); - } - - return
{modal}
; - } -} diff --git a/x-pack/plugins/ml/server/saved_objects/service.ts b/x-pack/plugins/ml/server/saved_objects/service.ts index bfc5b165fe555..207f10dc33d4b 100644 --- a/x-pack/plugins/ml/server/saved_objects/service.ts +++ b/x-pack/plugins/ml/server/saved_objects/service.ts @@ -114,6 +114,19 @@ export function jobSavedObjectServiceFactory( await savedObjectsClient.delete(ML_SAVED_OBJECT_TYPE, job.id, { force: true }); } + async function _forceDeleteJob(jobType: JobType, jobId: string, namespace: string) { + const id = savedObjectId({ + job_id: jobId, + datafeed_id: null, + type: jobType, + }); + + await internalSavedObjectsClient.delete(ML_SAVED_OBJECT_TYPE, id, { + namespace, + force: true, + }); + } + async function createAnomalyDetectionJob(jobId: string, datafeedId?: string) { await _createJob('anomaly-detector', jobId, datafeedId); } @@ -122,6 +135,10 @@ export function jobSavedObjectServiceFactory( await _deleteJob('anomaly-detector', jobId); } + async function forceDeleteAnomalyDetectionJob(jobId: string, namespace: string) { + await _forceDeleteJob('anomaly-detector', jobId, namespace); + } + async function createDataFrameAnalyticsJob(jobId: string) { await _createJob('data-frame-analytics', jobId); } @@ -130,6 +147,10 @@ export function jobSavedObjectServiceFactory( await _deleteJob('data-frame-analytics', jobId); } + async function forceDeleteDataFrameAnalyticsJob(jobId: string, namespace: string) { + await _forceDeleteJob('data-frame-analytics', jobId, namespace); + } + async function bulkCreateJobs(jobs: Array<{ job: JobObject; namespaces: string[] }>) { return await _bulkCreateJobs(jobs); } @@ -325,7 +346,9 @@ export function jobSavedObjectServiceFactory( createAnomalyDetectionJob, createDataFrameAnalyticsJob, deleteAnomalyDetectionJob, + forceDeleteAnomalyDetectionJob, deleteDataFrameAnalyticsJob, + forceDeleteDataFrameAnalyticsJob, addDatafeed, deleteDatafeed, filterJobsForSpace, diff --git a/x-pack/plugins/ml/server/saved_objects/sync.ts b/x-pack/plugins/ml/server/saved_objects/sync.ts index 16e0520567056..00dfdba178fe5 100644 --- a/x-pack/plugins/ml/server/saved_objects/sync.ts +++ b/x-pack/plugins/ml/server/saved_objects/sync.ts @@ -94,10 +94,14 @@ export function syncSavedObjectsFactory( results.savedObjectsDeleted[job.jobId] = { success: true }; } else { // Delete AD saved objects for jobs which no longer exist - const jobId = job.jobId; + const { jobId, namespaces } = job; tasks.push(async () => { try { - await jobSavedObjectService.deleteAnomalyDetectionJob(jobId); + if (namespaces !== undefined && namespaces.length) { + await jobSavedObjectService.forceDeleteAnomalyDetectionJob(jobId, namespaces[0]); + } else { + await jobSavedObjectService.deleteAnomalyDetectionJob(jobId); + } results.savedObjectsDeleted[job.jobId] = { success: true }; } catch (error) { results.savedObjectsDeleted[job.jobId] = { @@ -115,10 +119,14 @@ export function syncSavedObjectsFactory( results.savedObjectsDeleted[job.jobId] = { success: true }; } else { // Delete DFA saved objects for jobs which no longer exist - const jobId = job.jobId; + const { jobId, namespaces } = job; tasks.push(async () => { try { - await jobSavedObjectService.deleteDataFrameAnalyticsJob(jobId); + if (namespaces !== undefined && namespaces.length) { + await jobSavedObjectService.forceDeleteDataFrameAnalyticsJob(jobId, namespaces[0]); + } else { + await jobSavedObjectService.deleteDataFrameAnalyticsJob(jobId); + } results.savedObjectsDeleted[job.jobId] = { success: true }; } catch (error) { results.savedObjectsDeleted[job.jobId] = { diff --git a/x-pack/plugins/translations/translations/ja-JP.json b/x-pack/plugins/translations/translations/ja-JP.json index 46e7a3d31445d..ca32790b8db89 100644 --- a/x-pack/plugins/translations/translations/ja-JP.json +++ b/x-pack/plugins/translations/translations/ja-JP.json @@ -12509,7 +12509,6 @@ "xpack.ml.jobsList.deletedActionStatusText": "削除されました", "xpack.ml.jobsList.deleteJobErrorMessage": "ジョブの削除に失敗しました", "xpack.ml.jobsList.deleteJobModal.cancelButtonLabel": "キャンセル", - "xpack.ml.jobsList.deleteJobModal.closeButtonLabel": "閉じる", "xpack.ml.jobsList.deleteJobModal.deleteButtonLabel": "削除", "xpack.ml.jobsList.deleteJobModal.deleteJobsTitle": "{jobsCount, plural, one {{jobId}} other {# 件のジョブ}}を削除しますか?", "xpack.ml.jobsList.deleteJobModal.deleteMultipleJobsDescription": "{jobsCount, plural, one {ジョブ} other {複数ジョブ}}の削除には時間がかかる場合があります。{jobsCount, plural, one {} other {}}バックグラウンドで削除され、ジョブリストからすぐに消えない場合があります。", diff --git a/x-pack/plugins/translations/translations/zh-CN.json b/x-pack/plugins/translations/translations/zh-CN.json index 78f46dc72dc4b..426dc6545885e 100644 --- a/x-pack/plugins/translations/translations/zh-CN.json +++ b/x-pack/plugins/translations/translations/zh-CN.json @@ -12523,7 +12523,6 @@ "xpack.ml.jobsList.deletedActionStatusText": "已删除", "xpack.ml.jobsList.deleteJobErrorMessage": "作业无法删除", "xpack.ml.jobsList.deleteJobModal.cancelButtonLabel": "取消", - "xpack.ml.jobsList.deleteJobModal.closeButtonLabel": "关闭", "xpack.ml.jobsList.deleteJobModal.deleteButtonLabel": "删除", "xpack.ml.jobsList.deleteJobModal.deleteJobsTitle": "删除 {jobsCount, plural, one {{jobId}} other {# 个作业}}?", "xpack.ml.jobsList.deleteJobModal.deleteMultipleJobsDescription": "删除{jobsCount, plural, one {一个作业} other {多个作业}}可能很费时。将在后台删除{jobsCount, plural, one {该作业} other {这些作业}},但删除的作业可能不会从作业列表中立即消失。",