목적

  • 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 은 나와는 철학이 많이 다르다는걸 느끼는 요즘.