Orchestrator 플러그인의 여러 구성 요소를 개발할 때 특정 작업 방식을 따르면 플러그인의 품질을 개선하는 데 도움이 됩니다.

표 1. 플러그인 구현의 유용한 작업 방식

구성 요소

항목

설명

일반

타사 API 액세스

플러그인은 가급적 타사 API에 액세스할 수 있는 간소화된 방법을 제공해야 합니다.

인터페이스

API에서 제공되지 않는 경우에도 플러그인은 일관성 있는 표준 사용자 인터페이스를 제공해야 합니다.

작업

스크립팅 개체

생성, 수정, 삭제 및 그 밖에 스크립팅 개체에 사용 가능한 다른 모든 방법에 대한 작업을 만들어야 합니다.

설명

작업 설명에서는 작동 방식 대신 작업의 기능을 설명해야 합니다.

스크립팅

스크립팅을 사용하여 개체의 속성이나 메서드를 가져오는 경우 개체 값이 null 또는 undefined와 다른지 확인할 수 있습니다.

사용되지 않음

작업이 사용되지 않는 경우 comment 또는 throw 문이 대체 작업을 나타내거나, 사용되지 않는 버전의 작업을 기반으로 하는 솔루션이 실패하지 않도록 작업에서 새 대체 작업을 호출해야 합니다.

워크플로

오케스트레이션된 기술의 사용자 인터페이스 작업

오케스트레이션된 기술의 사용자 인터페이스에서 사용할 수 있는 모든 작업에 대한 워크플로를 만들어야 합니다.

설명

워크플로 설명에서는 작동 방식 대신 워크플로의 기능을 설명해야 합니다.

프레젠테이션 속성 mandatory input

모든 필수 워크플로 입력에 대해 mandatory input 속성을 설정해야 합니다.

프레젠테이션 속성 default value

엔티티를 구성하는 워크플로를 개발한 경우 워크플로 프레젠테이션에서 이 엔티티에 대한 기본 구성 값을 로드해야 합니다. 예를 들어 호스트 구성이라는 워크플로를 개발한 경우 워크플로 프레젠테이션에서 호스트 구성에 대한 기본값을 로드해야 합니다.

프레젠테이션 속성 Show in inventory

인벤토리 개체에 대한 상황별 워크플로를 유지할 수 있도록 Show in inventory 속성을 설정해야 합니다.

프레젠테이션 속성 specify a root parameter

트리 루트에서 인벤토리를 찾아보지 않아도 되는 경우 워크플로에서 이 속성을 사용해야 합니다.

워크플로 유효성 검사

워크플로의 유효성을 검사하여 모든 오류를 해결해야 합니다.

개체 생성

새 개체를 생성하는 모든 워크플로는 새 개체를 출력 매개 변수로 반환해야 합니다.

사용되지 않음

워크플로가 사용되지 않는 경우 comment 또는 throw 문이 대체 워크플로를 나타내거나, 이전 버전의 워크플로를 기반으로 하는 솔루션이 실패하지 않도록 사용되지 않는 워크플로에서 새 대체 워크플로를 호출해야 합니다.

인벤토리

호스트 연결 끊김

호스트 연결이 인벤토리에 포함된 경우 이 호스트를 사용할 수 없게 되면 호스트 연결이 끊어졌음을 나타내야 합니다. 이렇게 하려면 - disconnected를 추가하여 루트 개체의 이름을 변경하거나, vCloud Director 플러그인에서 수행하는 것과 같은 방식으로 이 개체 아래의 개체 트리를 제거하면 됩니다.

Select value as list 속성

인벤토리 개체는 treeview 또는 list로 선택할 수 있어야 합니다.

호스트 관리자

플러그인에서 대상 시스템에 대한 host 개체를 구현하는 경우 호스트 속성을 추가, 제거 또는 편집할 수 있는 속성을 가진 상위 hostmanager 루트 개체가 있어야 합니다.

개체 가져오기 또는 업데이트

오케스트레이션된 기술에서 쿼리 서비스가 실행 중인 경우 이를 사용하여 여러 개체를 가져와야 합니다.

하위 항목 검색

하위 개체를 별도로 검색해야 하는 경우 검색 프로세스가 다중 스레드되어야 하며 단일 오류 시 차단되지 않아야 합니다.

Orchestrator 개체 변경

인벤토리에서 요소 상태를 변경할 수 있는 모든 워크플로는 개체가 동기화되지 않는 것을 방지하기 위해 인벤토리를 업데이트해야 합니다.

외부 개체 변경

Orchestrator 외부에서 수행된 작업의 결과로 인해 오케스트레이션된 기술에서 변경 사항이 발생한 경우 알림 메커니즘을 사용하여 이러한 변경 사항을 알릴 수 있습니다. 작업 이러한 작업으로 인해 오케스트레이션된 기술에서 개체가 제거된 경우 데이터 실패 또는 손실을 방지하기 위해 그에 따라 인벤토리를 새로 고쳐야 합니다. 예를 들어 vCenter Server에서 가상 시스템이 삭제된 경우 vCenter Server 플러그인은 제거된 가상 시스템 개체를 제거하기 위해 인벤토리를 업데이트합니다.

찾기 개체

찾기 개체에는 개체를 구분하는 데 사용할 수 있는 속성이 있어야 합니다. 이는 일반적으로 사용자 인터페이스에 표시되는 속성입니다.

스크립팅 개체

구현

경우에 따라 개체에 두 개의 인스턴스가 있을 수 있으므로 == 작업이 동일한 개체에서 수행되도록 하려면 equals 메서드를 구현해야 합니다.

플러그인 개체 속성

상위 개체가 있는 개체는 parent 속성을 구현해야 합니다.

플러그인 개체 속성

하위 개체가 있는 개체는 하위 개체의 어레이를 반환하는 GET 메서드를 구현해야 합니다.

인벤토리 개체

인벤토리 개체는 Server.find를 사용하여 검색할 수 있어야 합니다.

모든 인벤토리 개체는 워크플로에서 입력 또는 출력 특성으로 사용할 수 있도록 직렬화할 수 있어야 합니다.

생성자 및 메서드

대부분의 경우 스크립팅 가능한 개체는 생성자가 있거나 다른 개체 특성 또는 메서드에서 반환되어야 합니다.

개체 ID

외부 시스템에서 발급된 ID를 가진 개체는 둘 이상의 서버를 오케스트레이션할 때 ID 중복이 발생하지 않도록 내부 ID를 사용해야 합니다.

개체 검색

search 또는 find 메서드는 모든 개체 대신 지정된 이름 또는 ID를 찾을 수 있도록 필터를 구현해야 합니다. 예를 들어 Orchestrator 서버에는 해당 ID별로 플러그인 개체를 찾을 수 있는 Server.FindForId 메서드가 있습니다. 이렇게 하려면 플러그인에서 찾기 가능한 각 개체에 대해 이 메서드를 구현해야 합니다.

트리거

가능한 경우 Orchestrator에서 여러 이벤트에 대해 정책을 트리거할 수 있도록 변경되는 개체에 트리거를 사용할 수 있어야 합니다. 예를 들어 새 가상 시스템이 추가되거나, 전원이 켜지거나, 전원이 꺼진 경우 등을 확인하기 위해 Orchestrator에서는 vCenter 플러그인에서 Datacenter 개체에 대한 트리거 또는 이벤트를 모니터링할 수 있습니다.

개체 속성

다른 플러그인에 상주하는 개체는 플러그인 개체 간에 쉽게 변환하기 위한 속성을 가지고 있어야 합니다. 예를 들어 가상 시스템 개체에는 moref(관리 개체 참조 ID)가 있어야 합니다.

세션 관리자

다른 세션이 있을 수 있는 원격 서버에 연결하는 경우 플러그인에서 공유 세션 및 사용자별 세션을 구현해야 합니다.

트리거

트리거

모든 장기 실행 작업 및 차단 메서드는 반환되는 작업과 비동기식으로 시작하고 완료 시 트리거 이벤트를 생성할 수 있어야 합니다.

열거형

열거형

지정된 유형에 대한 열거형에는 열거된 여러 값에서 선택할 수 있는 인벤토리 개체가 있어야 합니다.

로깅

로그

메서드는 다양한 로그 수준을 구현해야 합니다.

버전 관리

플러그인 버전

플러그인 버전은 표준을 따라야 하며, 플러그인 업데이트와 함께 업데이트되어야 합니다.

API 설명서

메서드

API 설명서에 설명된 메서드는 개체에 대한 no xyz method / property 예외를 발생시켜서는 안 됩니다. 그 대신, 사용 가능한 속성이 없는 경우 메서드는 null을 반환하고 세부 정보와 함께 문서화되어야 합니다.

vso.xml

모든 개체, 메서드 및 속성은 vso.xml에 문서화되어야 합니다.