기록 버전 복제¶
POST /api/v1/pipeline_history/{pipeline_history_uuid}/clone
개요¶
기록 설정에서 새 Pipeline v1을 생성합니다. source를 지정하지 않으면 기록 값을 따르고, 빈 배열을 명시적으로 전달하면 빈 값으로 대체되며, 이후 생성 검증이 계속 실행됩니다.
경로 매개변수¶
| 매개변수 이름 | 유형 | 필수 | 설명 |
|---|---|---|---|
| pipeline_history_uuid | string | Y | 기록 목록 historyRecord[].uuid로 반환된 기록 UUID이며, Pipeline UUID나 숫자 id가 아닙니다. |
Body 요청 매개변수¶
| 매개변수 이름 | 유형 | 필수 | 설명 |
|---|---|---|---|
| name | string | Y | 새 Pipeline 이름 빈 값 허용: False 빈 문자열 허용: False 최대 길이: 256 $notSearchRegExp: [^a-zA-Z0-9_\u4e00-\u9fa5-]+ |
| type | string | Y | 새 Pipeline 실행 유형 빈 값 허용: False 허용 값: ['local', 'central'] |
| source | array | 선택적 새 source 목록. 지정하지 않으면 기록 버전의 source를 사용합니다. 빈 값 허용: False |
|
| isForce | boolean | 기본 Pipeline 충돌 확인 빈 값 허용: False |
매개변수 추가 설명¶
지정된 기록 설정에서 독립적인 Pipeline을 생성합니다. 이전 버전 보존, 새 규칙 생성 또는 실행 유형 전환에 적합하며, 소스 Pipeline은 수정되지 않습니다.
매개변수 및 동작¶
name과 type은 필수입니다. type=local은 로컬 Pipeline, type=central은 중앙 Pipeline을 의미합니다. 새 이름은 최대 256자이며, 허용 문자 제약은 일반 생성 인터페이스와 동일합니다. 이름과 source는 기존 생성 검증을 통과해야 합니다.
source를 지정하지 않으면 기록 값을 상속합니다. 빈 배열([])을 명시적으로 전달하면 빈 목록으로 대체되고, 비어 있지 않은 배열을 명시적으로 전달하면 새 목록이 사용됩니다. 특수 카테고리는 기존 비즈니스 규칙에 따라 source가 조립되므로, 빈 배열이 카테고리 검증이나 소스 충돌을 우회한다고 보장할 수 없습니다. 기록 source를 그대로 사용하면 원래 Pipeline과 충돌하는 경우가 많으므로, 대상 실행 유형과 카테고리에 맞는 새 source를 선택하는 것이 좋습니다.
새 리소스는 configVersion=1부터 시작하며, 출처는 history/history_clone으로 표시되고 소스 기록 UUID, Pipeline UUID 및 버전 번호가 유지됩니다. 클론은 원본 리소스의 전체 기록 체인을 상속하지 않으며, 기본 Pipeline(asDefault=0)으로 자동 설정되지 않습니다. 나머지 설정은 기록 스냅샷에서 가져오므로, 이 요청에서 content, category 또는 extend를 임의로 제출할 수 없습니다. 추가 편집이 필요하면 클론 후 일반 수정 인터페이스를 호출하세요.
isForce는 Front와의 정렬을 위해 유지되는 기본 충돌 확인 매개변수이며, 기본값은 false입니다. 기록 클론은 현재 asDefault=0으로 고정되어 있으므로 일반적으로 설정할 필요가 없습니다. 이 매개변수로 이름/source 검증을 건너뛸 수 없습니다.
사용 전제 조건¶
소속 워크스페이스의 DF-API-KEY를 사용하여 OpenAPI 서비스를 호출합니다. 조회에는 읽기 권한이 필요하고, 복원 및 클론에는 Pipeline 관리 및 쓰기 권한이 필요합니다. 이 인터페이스는 요청 본문을 통해 다른 워크스페이스나 작업자를 지정하는 것을 지원하지 않습니다. 예제의 Endpoint, 리소스 UUID 및 API-Key는 모두 자리 표시자이므로 교체한 후 호출하고, 로그에 API Key를 출력하지 마세요.
응답 예제는 가상 리소스를 사용하여 일반적인 비즈니스 필드를 보여줍니다. 실제 응답에는 일반 Pipeline 인터페이스의 다른 필드가 포함될 수 있습니다. 호출자는 새로 추가된 필드와 호환되어야 합니다.
버전 필드¶
| 필드 | 의미 |
|---|---|
| configVersion | 구성 버전 번호. 새 리소스는 1부터 시작하며, 활성화/비활성화는 이 버전을 증가시키지 않습니다. |
| configVersionAt | 이 구성 버전의 생성 시간. Unix 초 단위 타임스탬프이며 밀리초가 아닙니다. |
| configVersionOperator / configVersionOperatorInfo | 작업자 식별자 및 표시 정보. 표시 정보를 해석할 수 없으면 빈 객체일 수 있습니다. |
| configVersionSource / configVersionAction | 버전 출처 및 동작(예: openapi/modify, history/history_restore) |
| configVersionSourceInfo | 출처 추가 정보. 기록 작업에는 pipelineHistoryUUID, pipelineUUID, configVersion이 포함됩니다. |
| createAt | 기록 스냅샷 보관 시간. configVersionAt보다 늦을 수 있으며, 기록 목록 보존 기간은 이 필드를 기준으로 계산됩니다. |
기록의 config.content와 config.testData는 Base64 인코딩 문자열입니다. 호출자는 먼저 Base64로 디코딩한 후 UTF-8로 읽어야 합니다. testData는 테스트 샘플이며 읽기 또는 복원 인터페이스로 자동 실행되지 않습니다. configVersionSourceInfo의 출처 버전 번호를 현재 버전 번호로 착각하지 마세요.
응답 및 재시도¶
성공 시 content는 일반 생성 인터페이스의 Pipeline 객체를 그대로 사용하며, uuid는 새 리소스 UUID입니다. 소스 UUID는 configVersionSourceInfo에 있습니다. 생성 작업은 멱등 키를 제공하지 않으므로, 시간 초과 후 대상 리소스가 생성되었는지 먼저 조회하여 무조건적인 재시도로 인한 중복 생성이나 이름 충돌을 방지하세요. 권한이 없거나, 소스가 존재하지 않거나, 소속 Pipeline이 삭제된 경우 리소스가 생성되지 않습니다.
요청 예시¶
curl -X POST 'https://openapi.guance.com/api/v1/pipeline_history/<pipeline_history_uuid>/clone' -H 'DF-API-KEY: <API-Key>' -H 'Content-Type: application/json' -d '{"name":"copy","type":"local","source":[]}'
응답¶
{
"code": 200,
"content": {
"name": "copy",
"type": "local",
"category": "logging",
"source": [],
"content": "YWRkX2tleShjaXR5LCAic2hhbmdoYWkiKQ==",
"testData": "W10=",
"dataType": "line_protocol",
"asDefault": 0,
"enableByLogBackup": 0,
"extend": {},
"id": 11,
"uuid": "pl_copy",
"workspaceUUID": "wksp_example",
"status": 0,
"creator": "acnt_example",
"updator": "acnt_example",
"createAt": 1788799900,
"updateAt": 1788800200,
"deleteAt": -1,
"configVersion": 1,
"configVersionAt": 1788800200,
"configVersionOperator": "acnt_example",
"configVersionSource": "history",
"configVersionAction": "history_clone",
"configVersionSourceInfo": {
"pipelineHistoryUUID": "plh_example",
"pipelineUUID": "pl_example",
"configVersion": 2
}
},
"errorCode": "",
"message": "",
"success": true,
"traceId": "TRACE_EXAMPLE"
}