CIActionEngine - 범위 지정됨

  • 릴리스 버전: Xanadu
  • 업데이트 날짜 2024년 08월 01일
  • 읽기6분
  • CIActionEngine API는 CI(구성 항목)에 대한 작업을 실행하고, 작업을 실행하기 전에 사용자의 권한 부여를 확인하고, 작업 실행 요청의 상태 및 작업 출력을 가져올 수 있는 메서드를 제공합니다.

    CI 작업은 메트릭 및 CI 작업 프레임워크 애플리케이션과 연결됩니다. 범위가 지정된 애플리케이션에서 이 클래스를 사용하려면 sn_cimaf 네임스페이스 식별자를 사용합니다. CIActionEngine API에는 메트릭 및 CI 작업 프레임워크(com.snc.sn_cimaf) 플러그인이 필요하며 sn_cimaf 네임스페이스 내에서 제공됩니다.

    CIActionEngine - execute()

    구성된 작업 매개변수를 사용하여 CI에 대한 모든 작업을 실행합니다.

    표 1. 매개변수
    이름 유형 설명
    작업 문자열 또는 Glide 기록 작업 [sn_cimaf_action] 테이블의 Sys_id 또는 GlideRecord입니다.
    ci 문자열 또는 Glide 기록 작업을 실행해야 하는 CMDB [cmdb_ci] 테이블의 Sys_id 또는 GlideRecord
    actionParams 객체

    옵션입니다. 작업 매개변수 이름 및 값의 맵입니다.

    {
     “<parameter name>”: <parameter value>
    }
    주:
    매개변수 값은 작업 매개변수 [sn_cimaf_action_parameter] 테이블에 정의된 유형이어야 합니다.
    표 2. 반환
    유형 설명
    문자열 신규 또는 기존 복제 진행 중인 작업 요청의 Sys_id입니다.

    다음 예는 CI에서 프로세스를 종료하는 방법을 보여줍니다.

    var actionSysId = "6303db0d53b99910ae50ddeeff7b121e";	 
    //Sys_id of the Action – End Process 
    var ciSysId = "b4fd7c8437201000deeabfc8bcbe5dc1"; //Sys_id of the CI 
    var actionParams = { 
        process_id: 23342 //Process id of the process to be killed 
    }; 
     
    var ciActionEngine = new sn_cimaf.CIActionEngine(); 
    var actionRequestId = ciActionEngine.execute(actionSysId, ciSysId, actionParams); 
     
    gs.info("Action Request Id: " + actionRequestId);

    출력:

    Action Request Id: e34e3a199d16a510f877a45cc5e8a492

    CIActionEngine - getActionRequestOutput()

    작업 실행 요청의 상태 및 작업 출력을 가져옵니다.

    표 3. 매개변수
    이름 유형 설명
    actionRequest Glide 기록 작업 요청 [sn_cimaf_action_request] 테이블의 GlideRecord입니다.
    표 4. 반환
    유형 설명
    객체 객체에는 제공된 작업 요청의 작업 출력 상태와 목록이 포함되어 있습니다.
    { 
        “sys_id”: “String”, 
        “state”: “String”, //Possible values: completed, in_progress, failed 
        “sn_cimaf_action_output”: [ 
              { 
                    “sys_id”: “String”, 
                    “action_command”: “String”, //Sys_id of the Action Configuration Step table 
                    “payload”: “String”, 
                    “state”: “String”, //Possible values: completed, in_progress, failed, validation_failure 
                    “request_id”: “String” //Unique id returned by Provider on executing action_command 
              } 
          ] 
    } 

    다음 예제에서는 작업 요청에 대한 상태 및 작업 출력을 가져오는 방법을 보여 줍니다.

    var actionRequestGr = new GlideRecord('sn_cimaf_action_request'); 
    actionRequestGr.get('e34e3a199d16a510f877a45cc5e8a492'); 
     
    var ciActionEngine = new sn_cimaf.CIActionEngine(); 
    var actionRequestOutput = ciActionEngine.getActionRequestOutput(actionRequestGr); 
    gs.info("Action Request Output: " + JSON.stringify(actionRequestOutput, null, 2));

    출력:

    {
      "sys_id": "e34e3a199d16a510f877a45cc5e8a492",
      "state": "completed",
      "sn_cimaf_action_output": [
        {
          "sys_id": "405ef2599d16a510f877a45cc5e8a41e",
          "action_command": "b0e43efb53259510ae50ddeeff7b129b",
          "payload": "{\"output\":\"SUCCESS: The process with PID 23342 has been terminated.\\r\\n\",\"cmd\":\"taskkill /pid 23342 /f\"}",
          "state": "completed",
          "request_id": "cc5ef2599d16a510f877a45cc5e8a41d"
        }
      ]
    }

    CIActionEngine - isAuthorized()

    로그인한 사용자의 권한 부여를 확인한 후 지정된 구성에 따라 작업을 실행할 수 있습니다.

    구성은 작업 역할 [sn_cimaf_action_role], 사용자 기준 작업 포함[sn_cimaf_action_user_criteria_mtom] 및 사용자 기준 작업 제외 [sn_cimaf_action_user_criteria_no_mtom] 테이블에 정의됩니다.

    주:
    기본적으로 작업에 대한 이러한 테이블에 구성이 없으면 권한 부여가 실패합니다.
    표 5. 매개변수
    이름 유형 설명
    작업 Glide 기록 작업 [sn_cimaf_action] 테이블의 GlideRecord입니다.
    표 6. 반환
    유형 설명
    부울

    사용자 권한 부여의 성공을 나타내는 플래그입니다.

    유효한 값은 다음과 같습니다.
    • true: 사용자에게 작업을 실행할 권한이 부여됩니다.
    • false: 사용자에게 작업을 실행할 권한이 부여됩니다.

    다음 예제에서는 isAuthorized() 메서드를 사용하여 CI에 대한 작업을 실행할 수 있는 사용자의 권한 부여를 확인합니다.

    var actionSysId = "6303db0d53b99910ae50ddeeff7b121e" //Sys_id of the Action 
    var actionGr = new GlideRecord('sn_cimaf_action'); 
    actionGr.get('6303db0d53b99910ae50ddeeff7b121e'); 
     
    var ciActionEngine = new sn_cimaf.CIActionEngine(); 
    var isAuthorized = ciActionEngine.isAuthorized(actionGr); 
    gs.info("Is user authorized: " + isAuthorized);
    Is user authorized: true