Openstack Client에서 새로운 커맨드는 어떤 원리에 의해 추가되는 것일까?

cliff/commandmanager.py

Untitled

CommandManager 클래스 내부를 보면 stevedoreExtensionManager를 통해 명령어와 연결된 entrypoint를 확인하고 해당 클래스를 로드하는 코드를 확인할 수 있다.

entry_point로 부터 명령어를 로드할 때 사용하는 stevedore는 무엇일까?


Stevedore

Untitled

Stevedore는 오픈스택에서 관리되고있는 프로젝트 중 하나이다. 레파지토리에서 알려주듯이 python 어플리케이션이 플러그인을 동적으로 관리할 수 있게 도와주는 도구이다.


플러그인을 동적으로 로딩하는 이유

일반적으로 python 어플리케이션을 만들 때 첫번째 라인에 import 구문을 통해 사용하고자 하는 패키지를 정의한다. 동적 로딩은 런타임 시 라이브러리, 플러그인을 로드하는 것을 의미한다.

애플리케이션의 추상화된 설계를 위해 플러그인을 동적으로 로드하는 것은 다음과 같은 이점을 얻을 수 있다.