powershell로 openstack 명령어를 실행해 처리하는 스크립트에 대한 post를 작성하고 나서, python으로 하는 것도 함께 적으면 좋을 것 같아 실행하게 되었습니다.
그냥 python보다는, jetbrains가 최근 내놓은 dataspell을 사용해 실행해 보았습니다.
pycharm과 dataspell의 차이점
간단히 차이점을 짚고 넘어가면 다음과 같습니다.
- pycharm은 python IDE이고, dataspell은 어플리케이션화된 jupyter notebook입니다.
- pycharm은 어플리케이션 개발용이고, dataspell은 데이터 엔지니어용입니다.
- pycharm은 여럿이 사용하는 IDE이고, dataspell은 개인이 사용하는 툴입니다.
- pycharm은 long term을 두고 사용하는 툴이고, dataspell은 short term 사용을 기반으로 합니다.
- pycharm은 작업물이 git으로 누적되게 되지만, dataspell은 jupyter nodebook 파일로 저장됩니다.
코드
openstack 클라이언트가 설치가 안되어 있다면 설치합니다. 저는 conda환경을 사용하고 있으므로 다음과 같이 실행해 설치하였습니다.
conda install -c conda-forge python-openstackclient
우선 dataspell에서 환경변수를 넣습니다.
|
|
openstack 명령을 실행하고,
|
|
결과를 출력해 봅니다.
|
|
사실 powershell에서는 잘 나오는데, dataspell에서(랄까 ipython에서) 살짝 아쉬운 부분이 이부분입니다. 인텔리센스가 나오지 않아요. object가 아니고 dict니까요.
pwsh은 리눅스 콘솔에서도 탭을 누르면 사용가능한 property나 method를 보여줍니다.
API를 사용하면 어떨까?
shade
- https://github.com/openstack/shade/tree/stable/ussuri
- 이건 config로 yaml을 사용합니다. 자료를 읽어보면 os-client-config 를 사용하기 때문이라는데요.
- os-client-config는 openstacksdk 로 대체되었답니다. https://pypi.org/project/os-client-config/
- 그러니까 shade사용하기보다는 openstacksdk 를 사용하는 쪽이 좋습니다.
openstacksdk
openstackclient
- https://github.com/openstack/python-openstackclient/tree/stable/xena/openstackclient
- 이것이 openstack 툴입니다만, 환경변수를 설정값으로 사용하는데, 근데 이걸 API로 사용한다고?
근데 yaml 로 된 config 파일이 없어도 되긴합니다.
그런데. 역시 인텔리센스가 안되어요. dir로 보면 보이지만, 페리어드를 찍으면 호출가능한 펑션이 보이지 않습니다. 이 부분이 약간 거슬려요. pycharm이나 dataspell의 기능을 full로 쓸 수가 없습니다. 하지만 아직 현존하는 툴 중에서는 가장 좋은 툴인 것은 확실합니다.
코드는 다음과 같습니다.
|
|
잘 키운 API 하나는 여러사람의 인생을 도와줍니다.