C.2. Red Hat Virtualization 사용자 인터페이스 플러그인 라이프 사이클

사용자 인터페이스 플러그인의 기본 라이프 사이클은 세 단계로 나뉩니다.

  • 플러그인 검색.
  • 플러그인 로드.
  • 플러그인 부트스트랩.

C.2.1. Red Hat Virtualization 사용자 인터페이스 플러그인 검색

플러그인 설명자 생성은 플러그인 검색 프로세스의 첫 번째 단계입니다. 플러그인 설명자에는 중요한 플러그인 메타데이터 및 선택적 기본 플러그인별 구성이 포함되어 있습니다.

관리 포털 HTML 페이지 요청(HTTP GET)을 처리하는 과정의 일환으로 사용자 인터페이스 플러그인 인프라는 로컬 파일 시스템에서 플러그인 설명자를 검색하고 로드하려고 합니다. 각 플러그인 설명자에 대해 인프라는 기본 플러그인별 구성(있는 경우)을 재정의하고 플러그인 런타임 동작을 수정하는 데 사용되는 해당 플러그인 사용자 구성을 로드하려고 합니다. 플러그인 사용자 구성은 선택 사항입니다. 설명자와 해당 사용자 구성 파일을 로드한 후 oVirt Engine은 사용자 인터페이스 플러그인 데이터를 집계하여 런타임 평가를 위해 관리 포털 HTML 페이지에 포함합니다.

기본적으로 플러그인 설명자는 $ENGINE_USR/ui-plug-ins 에 상주하며, 기본 매핑은 oVirt Engine 로컬 구성에 정의된 ENGINE_USR=/usr/share/ovirt-engine 입니다. 플러그인 설명자는 JSON 형식 사양을 준수할 것으로 예상되지만 플러그인 설명자는 JSON 형식 사양 외에도 Java/C++ 스타일 주석(/* MiB 모두 ) 을 허용합니다.

기본적으로 플러그인 사용자 구성 파일은 $ENGINE_ETC/ui-plug-ins 에 상주하며 oVirt Engine 로컬 구성에서 정의한 대로 기본 매핑 ENGINE_ETC=/etc/ovirt-engine 이 있습니다. 플러그인 사용자 구성 파일은 플러그인 설명자와 동일한 콘텐츠 형식 규칙을 준수해야 합니다.

참고

플러그인 사용자 구성 파일은 일반적으로 <descriptorFileName>-config.json 명명 규칙을 따릅니다.

C.2.2. Red Hat Virtualization 사용자 인터페이스 플러그인 로딩

플러그인이 검색되고 해당 데이터가 관리 포털 HTML 페이지에 포함되면 관리 포털은 애플리케이션 시작의 일부로 플러그인을 로드하려고 합니다(애플리케이션 시작의 일부로 로드하지 않은 경우).

검색된 각 플러그인에 대해 관리 포털은 호스트 페이지를 로드하는 데 사용되는 HTML iframe 요소를 생성합니다. 플러그인 호스트 페이지는 플러그인의 iframe 요소 컨텍스트에서 플러그인 코드를 평가하는 데 사용되는 플러그인 부트스트랩 프로세스를 시작하는 데 필요합니다. 사용자 인터페이스 플러그인 인프라는 로컬 파일 시스템에서 플러그인 리소스 파일(예: 플러그인 호스트 페이지) 제공 기능을 지원합니다. 플러그인 호스트 페이지가 iframe 요소에 로드되고 플러그인 코드가 평가됩니다. 플러그인 코드를 평가한 후 플러그인은 플러그인 API를 통해 관리 포털과 통신합니다.

C.2.3. Red Hat Virtualization 사용자 인터페이스 플러그인 부트스트래핑

일반적인 플러그인 부트스트랩 시퀀스는 다음 단계로 구성됩니다.

플러그인 부트스트랩 순서

  1. 주어진 플러그인에 대한 pluginApi 인스턴스 가져오기
  2. 런타임 플러그인 구성 오브젝트 가져오기 (선택 사항)
  3. 관련 이벤트 처리기 기능 등록
  4. 플러그인 초기화를 진행하도록 UI 플러그인 인프라에 알립니다

다음 코드 조각은 연습에서 위에서 언급한 단계를 보여줍니다.

// Access plug-in API using 'parent' due to this code being evaluated within the context of an iframe element.
// As 'parent.pluginApi' is subject to Same-Origin Policy, this will only work when WebAdmin HTML page and plug-in
// host page are served from same origin. WebAdmin HTML page and plug-in host page will always be on same origin
// when using UI plug-in infrastructure support to serve plug-in resource files.
var api = parent.pluginApi('MyPlugin');

// Runtime configuration object associated with the plug-in (or an empty object).
var config = api.configObject();

// Register event handler function(s) for later invocation by UI plug-in infrastructure.
api.register({
	    // UiInit event handler function.
		UiInit: function() {
				// Handle UiInit event.
					window.alert('Favorite music band is ' + config.band);
					    }
});

// Notify UI plug-in infrastructure to proceed with plug-in initialization.
api.ready();