Rustack-CLI

OpenStack CLI in Rust
요구사항
  1. OpenStack의 주요 기능에 대한 CLI를 rust로 작성한다.
  1. Rust의 REST web client 등 라이브러리를 사용한다.
  1. Identity Service 먼저, Read 속성 API부터 구현한다. (LIST, GET)
  1. 이후 세세한 부분은 이미 작성된 OpenStack-rust 라이브러리를 활용한다.
  1. 일반적인 명령어의 API 호출과정을 일부 캐시화 하여 성능을 최적화한다.
 
주요 구현사항
  1. 첫 service API 동작은 직접 작성한다. (REST client는 라이브러리 사용)
  1. 이후 service API는 기존 라이브러리와 호환되게 작성한다. (객체지향 adapter pattern 등의 학습)
  1. 요청 과정의 최적화 기능을 작성한다. 기존 동작 과정은 token 발급 → endpoint 확인 → 해당 endpoint 요청 식으로 이뤄진다. 여기서 token은 expire datetime까지 유효하다. endpoint는 쉽게 바뀌지 않을 가능성이 높다. 즉, 앞의 2 단계는 1회 호출 이후 캐시하여 최적화가 가능한 것으로 보인다. cache 정보 저장 & 활용은 tmpfs 등을 활용한다.
 
2020.07.30
  1. Command Line 구현 → structopt, clap 등 crate 참고
  1. structopt PoC → derive 방식으로 정의 structopt가 clap을 이용하여 구현, 추상화 및 추가구현 된 상태
  1. clap PoC → derive, builder 방식으로 정의 개인적인 취향은 builder쪽인데, 고민 중