Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

메타데이터(오브젝트) 강제 삭제 옵션 필요 #228

Closed
seokho-son opened this issue May 25, 2020 · 6 comments
Closed

메타데이터(오브젝트) 강제 삭제 옵션 필요 #228

seokho-son opened this issue May 25, 2020 · 6 comments
Assignees

Comments

@seokho-son
Copy link
Member

[문제]
CSP에서는 이미 사라진 자원이, Spider에 메타데이터(ID?)로 남아 있는 상황이 발생할 수 있으며
이 상황에서 Spider의 메타데이터를 삭제할 수 없는 문제가 있음.
현재는 DB를 직접 정리하는 방식을 사용하게되어, 작업에 어려움이 있음.

예시: Spider를 통해 VM 삭제시, 해당 VM이 CSP 쪽에서 따로 정리된 경우 아래와 같이 오브젝트를 지울 수 없음.

[Test for Alibaba]
{
   "message" : "Notfound: 'i-6weg07i6k9t0nafhpppk' VM Not found"
}

[해결방안]
메타데이터(오브젝트) 삭제 API에 강제 옵션 제공. (CSP와 무관하게 오브젝트를 삭제)

을 통해서 잘못된 오브젝트 정리할 수 있도록 지원.

@powerkimhub powerkimhub self-assigned this May 25, 2020
@powerkimhub
Copy link
Member

Duplicate of # #183

@powerkimhub
Copy link
Member

@seokho-son @jihoon-seo

  • 개발 들어가기 전에 검토 해주세요.

<가능상태분석>

유형 IID Meta 정보 유/무 CSP 자원 유/무
정상-1 O O
정상-2 X X
비정상-1 O X
비정상-2 X O

<비정상상태:가능시나리오>

  • (Case-1) 비정상-1: CB-Spider 통한 자원 삭제시, CSP 자원 삭제 후 IID Meta 정보 삭제 실패
  • (Case-2) 비정상-1: CB-Spider 통한 자원 생성 후 누군가에 의해 CSP 콘솔 등에서 자원 삭제
  • (Case-3) 비정상-2: CB-Spider 통한 자원 삭제시, CSP 자원 삭제 완료 응답 받아서 IID Meta 정보 삭제(그러나, CSP에 여전히 자원 존재)
  • (Case-4) 비정상-2: 현재 CB-Spider와 관련 없이 누군가가 만든 자원

<비정상상태:개선가능여부>

  • (Case-1), (Case-3) CB-Spider 개선 노력 필요
  • (Case-2), (Case-4) 불가항력적 상황

<(사후처리)사용자의 비정상 상태 대처 방안 마련>

  • 상태확인방법제공: IID 목록을 제공하는 API(현재 제공), CSP-ID 목록을 제공하는 API 추가 제공
    . 사용자는 위 2개의 API를 이용하여 비정상 상태를 인지하고,
    . 다음 2개의 API를 이용하여 비정상 상태를 해결함.
  • 비정상-1: IID 메타정보만 삭제하는 API 추가 제공(삭제를 원하는 IID를 입력 받음)
  • 비정상-2: CSP 자원만 삭제하는 API 추가 제공(삭제를 윈하는 CSP-ID를 입력)

@jihoon-seo
Copy link
Member

[FYI] TB 에서는..

DELETE .../sshKey 호출할 때
?force=true 라고 붙일 수 있습니다.
(DELETE .../sshKey?force=true)

  1. Spider 측에 삭제 요청을 하고
    2-1. ?force=true 였으면 --> Spider 의 응답이 무엇이든지 상관없이 TB object 지움
    2-2. Spider 응답의 HTTP Status Code 가 400 이상이거나 200 미만이면 --> TB object 지우지 않고 에러 리턴
    2-3. 그 이외의 상황이면 (= ?force=true 도 아니고, Spider 응답의 HTTP Status Code 가 200 이상 400 미만) --> Spider 응답이 정상적이므로 TB object 도 지움

[Call chain]

  1. DELETE .../sshKey?force=true
  2. RestDelSshKey
  3. delResource

@powerkimhub
Copy link
Member

@jihoon-seo 구현시 함께 고려해보도록하겠습니다.

(1) 보통 API에서 force option은 끝까지 쫒아가서 연관된 자원을 다 지워주는 의미로 종종 쓰였던 것 같아서 좀 주저가 되네요.
(2) 유사한 측면을 보면, rm 같은 경우 -f 는 관계성은 모르겠고, 난 지우겠다.의미로 보면 괜찮을 듯하기도 하고요.

향후 spider가 (1)의 경우를 지원하게 될지 등을 고려하여 구현시 고려해보죠^^

@powerkimhub
Copy link
Member

@seokho-son @jihoon-seo @jmleefree
Completed!

장시간 운영하다보면, 여러가지 이유로 인하여 CB-Spider IID에 등록된 자원 ID와 CSP 자원의 ID에 대한 맵핑 관계가 손상될수 있으며, CB-Spider에서는 다음과 같이 정의함.
(1) MappedList: Spider IID에도 맵핑되어 존재하고, CSP에도 실제 존재하는 ID 목록
(2) OnlySpiderList: Spider IID 목록에만 존재하고, CSP에는 없는 ID 목록
(3) OnlyCSPList: Spider IID 목록에는 없고, CSP에만 존재하는 ID 목록

이에 대한 관리를 위하여 다음과 같이 관리용 API를 추가함.

  • listAllXXX(): Spider와 CSP 자원 목록 현황 파악을 위한 자원의 전체 ID 목록을 제공함.
ex) curl -sX GET http://localhost:1024/spider/allvm -H 'Content-Type: application/json' -d '{ "ConnectionName": "aws-ohio-config"}' |json_pp
{
   "AllList" : {
      " OnlyCSPList" : [
         {
            "SystemId" : "i-0bdc15983e803e7a8",
            "NameId" : "backup"
         },
         {
            "NameId" : "test",
            "SystemId" : "i-0b0d0d30794eab379"
         },
         {
            "NameId" : "powerkim-docker-server",
            "SystemId" : "i-049732ccc49dbd51f"
         }
      ],
      "MappedList" : [],
      " OnlySpiderList" : []
   }
}
  • deleteXXX(force=true): 기존 delete API에 force option 추가
    • (1)MappedList, (2)OnlySpiderList에 대해서 CSP 자원을 삭제하고, 삭제 결과와 무관하게 IID 목록에서도 삭제
    • force option 처리는 오류가 발생해도 계속 실행을 하기 때문에 실행 후 ID 맵핑에 문제가 발생할 수 있으므로, 사용에 주의하여야 함.
 ex) curl -sX DELETE http://localhost:1024/spider/vpc/vpc-01?force=true -H 'Content-Type: application/json' -d '{ "ConnectionName": "aws-ohio-config"} 
  • deleteCSPXXX(): IID에 존재하지 않는 CSP 자원 삭제
    • (3) OnlyCSPList에 포함되는 CSP 자원 삭제 제공
ex) curl -sX DELETE http://localhost:1024/spider/cspvm/i-0b0d0d30794eab379 -H 'Content-Type: application/json' -d '{ "ConnectionName": "aws-ohio-config"}' |json_pp
{
   "Status" : "Terminating"
}
- 다만, AWS와 같이 일부 CSP의 경우는 VM 종료 후에도 한동안 대상 VM의 히스토리를 제공함으로  csp의 vm terminate를 실행 후에도 CSP에 VM History가 사라질때까지는 동일한 목록이 보일 수 있음. 
- 이는 VM 상태 정보를 함께 제공하면 되겠지만, 현재의 관리용 API인 listAllXXX()는 ID 정보만을 제공함.

@powerkimhub
Copy link
Member

cf) #240

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants