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

B.2.1. Red Hat Enterprise Virtualization 사용자 인터페이스 플러그인 라이프 사이클

사용자 인터페이스 플러그인의 기본 라이프 사이클은 다음의 세 단계로 나누어입니다:
  1. 플러그인 검색
  2. 플러그인 로딩
  3. 플러그인 부트스트랩

B.2.2. Red Hat Enterprise Virtualization 사용자 인터페이스 플러그인 검색

플러그인 검색 프로세스에서 첫 번째 단계는 플러그인 설명자를 생성하는 것입니다. 플러그인 설명자에는 중요한 플러그인 메타데이터 및 플러그인 관련 기본 옵션 설정이 들어 있습니다.
관리 포털 HTML 페이지 요청 (HTTP GET) 처리의 일부분으로 사용자 인터페이스 플러그인 인프라는 로컬 파일 시스템에서 플러그인 설명자를 검색 및 로딩 시도합니다. 각각의 플러그인 설명자의 경우 인프라는 플러그인 관련 기본 설정 (존재할 경우)을 덮어쓰기하고 플러그인 런타임 동작을 조정하기 위해 사용되는 해당 플러그인 사용자 설정도 로딩 시도합니다. 플러그인 사용자 설정은 옵션 사항입니다. 설명자 및 해당 사용자 설정 파일을 로딩한 후 oVirt Engine은 사용자 인터페이스 플러그인 데이터를 집계하고 런타임 평가를 위해 관리 포털 HTML 페이지에 포함합니다.
기본값으로 플러그인 설명자는 oVirt Engine 로컬 설정에 의해 정의된 ENGINE_USR=/usr/share/ovirt-engine의 기본 매핑과 함께 $ENGINE_USR/ui-plug-ins에 있습니다. 플러그인 설명자는 JSON 형식 사양을 준수해야 하지만 플러그인 설명자는 JSON 형식 사양 이외에 Java/C++ 형식의 코멘트 (/*// 변수 모두)를 허용합니다.
기본값으로 플러그인 사용자 설정 파일은 oVirt Engine 로컬 설정에 의해 정의된 ENGINE_ETC=/etc/ovirt-engine의 기본 매핑과 함께 $ENGINE_ETC/ui-plug-ins에 있습니다. 플로그인 사용자 설정 파일은 플러그인 설명자와 동일한 컨텐츠 형식 규칙을 준수해야 합니다.

참고

일반적으로 플러그인 사용자 설정 파일은 <descriptorFileName>-config.json 이름 지정 규칙을 따릅니다.

B.2.3. Red Hat Enterprise Virtualization 사용자 인터페이스 플러그인 로딩

플러그인이 검색되어 데이터가 관리 포털 HTML 페이지에 포함된 후 관리 포털은 (애플리케이션 시작의 일부로 로딩하지 않도록 설정하지 않는 한) 애플리케이션 시작의 일부분으로 플러그인을 로딩 시도합니다.
검색된 각 플러그인에 대해 관리 포털은 호스트 페이지를 로딩하는데 사용되는 HTML iframe 요소를 생성합니다. 플러그인 호스트 페이지는 플러그인 부트스트랩 프로세스를 시작하는데 필요하며 부트스트랩 프로세스는 플러그인의 iframe 요소의 문맥에서 플러그인 코드를 평가하는데 사용됩니다. 사용자 인터페이스 플러그인 인프라는 로컬 파일 시스템에서 플러그인 호스트 페이지와 같은 플러그인 리소스 파일을 지원합니다. 플러그인 호스트 페이지는 iframe 요소에 로딩되어 플러그인 코드가 평가됩니다. 플러그인 코드가 평가된 후 플러그인은 플러그인 API를 통해 관리 포털과 통신합니다.

B.2.4. Red Hat Enterprise Virtualization 사용자 인터페이스 플러그인 부트스트랩

일반적인 플러그인 부트스트랩 순서는 다음과 같습니다:

절차 B.1. 플러그인 부트스트랩 순서

  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();