private createPartialLogEntry()

in x-pack/platform/plugins/shared/ml/server/lib/ml_client/ml_audit_logger.ts [142:382]


  private createPartialLogEntry(
    taskType: TaskType,
    p: MlClientParams
  ): { message: string; type: EventTypes[] } {
    switch (taskType) {
      /* Anomaly Detection */
      case 'ml_put_ad_job': {
        const [jobId] = getADJobIdsFromRequest(p);
        return { message: `Creating anomaly detection job ${jobId}`, type: [EVENT_TYPES.creation] };
      }
      case 'ml_delete_ad_job': {
        const [jobId] = getADJobIdsFromRequest(p);
        return { message: `Deleting anomaly detection job ${jobId}`, type: [EVENT_TYPES.deletion] };
      }
      case 'ml_delete_model_snapshot': {
        const [jobId] = getADJobIdsFromRequest(p);
        const [params] = p as Parameters<MlClient['deleteModelSnapshot']>;
        const snapshotId = params.snapshot_id;
        return {
          message: `Deleting model snapshot ${snapshotId} from job ${jobId}`,
          type: [EVENT_TYPES.deletion],
        };
      }
      case 'ml_open_ad_job': {
        const [jobId] = getADJobIdsFromRequest(p);
        return { message: `Opening anomaly detection job ${jobId}`, type: [EVENT_TYPES.change] };
      }
      case 'ml_close_ad_job': {
        const [jobId] = getADJobIdsFromRequest(p);
        return { message: `Closing anomaly detection job ${jobId}`, type: [EVENT_TYPES.change] };
      }
      case 'ml_update_ad_job': {
        const [jobId] = getADJobIdsFromRequest(p);
        return { message: `Updating anomaly detection job ${jobId}`, type: [EVENT_TYPES.change] };
      }
      case 'ml_reset_ad_job': {
        const [jobId] = getADJobIdsFromRequest(p);
        return { message: `Resetting anomaly detection job ${jobId}`, type: [EVENT_TYPES.change] };
      }
      case 'ml_revert_ad_snapshot': {
        const [jobId] = getADJobIdsFromRequest(p);
        const [params] = p as Parameters<MlClient['revertModelSnapshot']>;
        const snapshotId = params.snapshot_id;
        return {
          message: `Reverting anomaly detection snapshot ${snapshotId} in job ${jobId}`,
          type: [EVENT_TYPES.change],
        };
      }
      case 'ml_put_ad_datafeed': {
        const [datafeedId] = getDatafeedIdsFromRequest(p);
        const [jobId] = getADJobIdsFromRequest(p);
        return {
          message: `Creating anomaly detection datafeed ${datafeedId} for job ${jobId}`,
          type: [EVENT_TYPES.creation],
        };
      }
      case 'ml_delete_ad_datafeed': {
        const [datafeedId] = getDatafeedIdsFromRequest(p);
        return {
          message: `Deleting anomaly detection datafeed ${datafeedId}`,
          type: [EVENT_TYPES.deletion],
        };
      }
      case 'ml_start_ad_datafeed': {
        const [datafeedId] = getDatafeedIdsFromRequest(p);
        return {
          message: `Starting anomaly detection datafeed ${datafeedId}`,
          type: [EVENT_TYPES.change],
        };
      }
      case 'ml_stop_ad_datafeed': {
        const [datafeedId] = getDatafeedIdsFromRequest(p);
        return {
          message: `Stopping anomaly detection datafeed ${datafeedId}`,
          type: [EVENT_TYPES.change],
        };
      }
      case 'ml_update_ad_datafeed': {
        const [datafeedId] = getDatafeedIdsFromRequest(p);
        return {
          message: `Updating anomaly detection datafeed ${datafeedId}`,
          type: [EVENT_TYPES.change],
        };
      }
      case 'ml_put_calendar': {
        const [params] = p as Parameters<MlClient['putCalendar']>;
        const calendarId = params.calendar_id;
        // @ts-expect-error body is optional
        const jobIds = (params.body ?? params).job_ids;
        return {
          message: `Creating calendar ${calendarId} ${jobIds ? `with job(s) ${jobIds}` : ''}`,
          type: [EVENT_TYPES.creation],
        };
      }
      case 'ml_delete_calendar': {
        const [params] = p as Parameters<MlClient['deleteCalendar']>;
        const calendarId = params.calendar_id;
        return { message: `Deleting calendar ${calendarId}`, type: [EVENT_TYPES.deletion] };
      }
      case 'ml_put_calendar_job': {
        const [params] = p as Parameters<MlClient['putCalendarJob']>;
        const calendarId = params.calendar_id;
        const jobIds = params.job_id;
        return {
          message: `Adding job(s) ${jobIds} to calendar ${calendarId}`,
          type: [EVENT_TYPES.change],
        };
      }
      case 'ml_delete_calendar_job': {
        const [params] = p as Parameters<MlClient['deleteCalendarJob']>;
        const calendarId = params.calendar_id;
        const jobIds = params.job_id;
        return {
          message: `Removing job(s) ${jobIds} from calendar ${calendarId}`,
          type: [EVENT_TYPES.change],
        };
      }
      case 'ml_post_calendar_events': {
        const [params] = p as Parameters<MlClient['postCalendarEvents']>;
        const calendarId = params.calendar_id;
        // @ts-expect-error body is optional
        const eventsCount = (params.body ?? params).events;
        return {
          message: `Adding ${eventsCount} event(s) to calendar ${calendarId}`,
          type: [EVENT_TYPES.creation],
        };
      }
      case 'ml_delete_calendar_event': {
        const [params] = p as Parameters<MlClient['deleteCalendarEvent']>;
        const calendarId = params.calendar_id;
        const eventId = params.event_id;
        return {
          message: `Removing event(s) ${eventId} from calendar ${calendarId}`,
          type: [EVENT_TYPES.deletion],
        };
      }
      case 'ml_put_filter': {
        const [params] = p as Parameters<MlClient['putFilter']>;
        const filterId = params.filter_id;
        return { message: `Creating filter ${filterId}`, type: [EVENT_TYPES.creation] };
      }
      case 'ml_update_filter': {
        const [params] = p as Parameters<MlClient['updateFilter']>;
        const filterId = params.filter_id;
        return { message: `Updating filter ${filterId}`, type: [EVENT_TYPES.change] };
      }
      case 'ml_delete_filter': {
        const [params] = p as Parameters<MlClient['deleteFilter']>;
        const filterId = params.filter_id;
        return { message: `Deleting filter ${filterId}`, type: [EVENT_TYPES.deletion] };
      }
      case 'ml_forecast': {
        const [jobId] = getADJobIdsFromRequest(p);
        return { message: `Forecasting for job ${jobId}`, type: [EVENT_TYPES.creation] };
      }
      case 'ml_delete_forecast': {
        const [params] = p as Parameters<MlClient['deleteForecast']>;
        const forecastId = params.forecast_id;
        const [jobId] = getADJobIdsFromRequest(p);
        return {
          message: `Deleting forecast ${forecastId} for job ${jobId}`,
          type: [EVENT_TYPES.deletion],
        };
      }

      /* Data Frame Analytics */
      case 'ml_put_dfa_job': {
        const [analyticsId] = getDFAJobIdsFromRequest(p);
        return {
          message: `Creating data frame analytics job ${analyticsId}`,
          type: [EVENT_TYPES.creation],
        };
      }
      case 'ml_delete_dfa_job': {
        const [analyticsId] = getDFAJobIdsFromRequest(p);
        return {
          message: `Deleting data frame analytics job ${analyticsId}`,
          type: [EVENT_TYPES.deletion],
        };
      }
      case 'ml_start_dfa_job': {
        const [analyticsId] = getDFAJobIdsFromRequest(p);
        return {
          message: `Starting data frame analytics job ${analyticsId}`,
          type: [EVENT_TYPES.change],
        };
      }
      case 'ml_stop_dfa_job': {
        const [analyticsId] = getDFAJobIdsFromRequest(p);
        return {
          message: `Stopping data frame analytics job ${analyticsId}`,
          type: [EVENT_TYPES.change],
        };
      }
      case 'ml_update_dfa_job': {
        const [analyticsId] = getDFAJobIdsFromRequest(p);
        return {
          message: `Updating data frame analytics job ${analyticsId}`,
          type: [EVENT_TYPES.change],
        };
      }

      /* Trained Models */
      case 'ml_put_trained_model': {
        const [modelId] = getModelIdsFromRequest(p);
        return { message: `Creating trained model ${modelId}`, type: [EVENT_TYPES.creation] };
      }
      case 'ml_delete_trained_model': {
        const [modelId] = getModelIdsFromRequest(p);
        return { message: `Deleting trained model ${modelId}`, type: [EVENT_TYPES.deletion] };
      }
      case 'ml_start_trained_model_deployment': {
        const [modelId] = getModelIdsFromRequest(p);
        return {
          message: `Starting trained model deployment for model ${modelId}`,
          type: [EVENT_TYPES.change],
        };
      }
      case 'ml_stop_trained_model_deployment': {
        const [modelId] = getModelIdsFromRequest(p);
        return {
          message: `Stopping trained model deployment for model ${modelId}`,
          type: [EVENT_TYPES.change],
        };
      }
      case 'ml_update_trained_model_deployment': {
        const [modelId] = getModelIdsFromRequest(p);
        return {
          message: `Updating trained model deployment for model ${modelId}`,
          type: [EVENT_TYPES.change],
        };
      }
      case 'ml_infer_trained_model': {
        const [modelId] = getModelIdsFromRequest(p);
        return { message: `Inferring trained model ${modelId}`, type: [EVENT_TYPES.access] };
      }

      default:
        throw new Error(`Unsupported task type: ${taskType}`);
    }
  }