Python setuptools로 OpenStack Neutron ML2 Driver 만들기
- 결론은 아래의 github 주소를 보면 됨.
목적
- OpenStack 의 Neutron 을 이해하고, ML2 Driver 를 이해하기 위함.
- 그래서 단순히 로그만 출력하는 ML2 Driver 를 한 번 만들어 보는 것이 목적임.
과정
- type_drivers 에 아무거나 입력하고 neutron 을 재시작하면 에러가 출력된다.
stevedore/extension.py
에서 extension 을 찾지 못했다는 에러.
- stevedore 가 뭐지?
- https://github.com/openstack/stevedore
- OpenStack 이 만든 플러그인 관리 도구.
- 실행시간에 동적으로 extension(플러그인)을 로딩.
- 코드를 살짝 봤을때는 setuptools 의 pkg_resources 를 사용하도록 구현 되어 있다.
- 더 자세히는 안 보고 setuptools 방식으로 만들면 되는구나라고 생각했다.
- 다른 OpenStack 관련 플러그인들이 거의 모두 pbr 을 기반으로 패키징을 한다는 사실을 발견했다.
- pbr 이 뭐지?
- http://docs.openstack.org/developer/pbr/
- “Python Build Reasonableness” 약자.
- OpenStack 이 만든 setuptools 를 감싸는 패키징 도구.
- setup.cfg 파일에 메타데이터를 넣으면 자동으로 setuptools 에서 반복적으로 하던일을 해준다고 한다.
- git 버전과 로그를 이용해서 이것저것을 해주기 때문에 반드시 프로젝트가 git 저장소에 있어야 한다.
- 처음에는 pbr 로 시도하다가. git 저장소가 필수라는 에러를 보고 그냥 setuptools 로 시도해보기로 했다.
- 결과적으로 잘 동작함.
- 코드는 type_local.py 를 참고해서 작성했다.
p.s, 이 글은 아무도 안 읽을게 분명해 보인다. 나는 단순한 것을 아름답다고 생각하는데, OpenStack 은 나와는 철학이 많이 다르다는걸 느끼는 요즘.