Open Cloud Engine은 자체 도움말을 위해서 Gitbook을 구성하였습니다.
Gitbook은 www.opencloudengine.org로 연결이 되어 누구나 접근할 수 있도록 하였습니다.
AWS, Azure 등의 Public Cloud의 Storage 서비스에서 Configuration 정보를 로딩하여 제공하는 DFM 서비스입니다.
Github Repository는 https://github.com/TheOpenCloudEngine/dfm-configuration-services 입니다.
지원하는 Public Cloud
- AWS
- Azure
지원하는 주요 기능
- YAML
- XML
- Properties
- JSON
- Text
Processor에서 사용하기
Processor에서 이 Controller Service를 호출하기 위해서 Maven POM에 API를 dependency로 추가하도록 합니다.
사용상 제약사항
- Configuration 파일을 로딩한 후 캐슁을 진행하므로 캐슁된 내용을 변경하고자 하는 경우
- Configuration Service를 재시작하거나
org.opencloudengine.dfm.services.configuration.ConfigurationService.reload()
메소드를 호출한다.
본 프로젝트는 NiFi에서 제공하는 API를 Java 호출할 수 있도록 Java API를 제공합니다. Github Repository는 https://github.com/TheOpenCloudEngine/nifi-api-java 입니다.
Overview
- NiFi 소스코드를 다운로드하여 swagger.json 파일의 위치를 확인합니다.
- Swagger Codegen으로 swagger.json 파일을 로딩하여 Java로 변환합니다.
- 변환된 코드에서 NiFi 상위버전 부터 SSL 필수이므로 SSL 인증서 처리 및 OAuth 인증 처리 부분을 수정합니다.
- OkHTTP를 사용하므로 SSL을 무시하도록 하고 Basic Auth, OAuth2를 추가하도록 합니다.
Swagger Codegen
Swagger Codegen을 이용하여 Client API를 생성합니다.
# cd nifi-1.19.1 # mvn -Dmaven.test.skip=true install # wget https://oss.sonatype.org/content/repositories/releases/io/swagger/swagger-codegen-cli/2.2.1/swagger-codegen-cli-2.2.1.jar # java -jar swagger-codegen-cli-2.2.1.jar generate -i ../nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/target/swagger-ui/swagger.json -l java
Installation
Maven Install을 통해서 JAR 파일을 다음과 같이 생성합니다.
# mvn install
API 호출
API 호출을 위해서 Basic Auth로 Access Token을 얻습니다.
import io.swagger.client.*; import io.swagger.client.auth.*; import io.swagger.client.model.*; import io.swagger.client.api.AccessApi; import java.io.File; import java.util.*; public class AccessApiExample { public static void main(String[] args) { AccessApi accessApi = new AccessApi(); ApiClient client = new ApiClient(true); client.setDebugging(true); client.addDefaultHeader("Authorization", getBasicAuthenticationHeader("admin", "adminadminadmin")); client.setBasePath("https://localhost:8443/nifi-api"); accessApi.setApiClient(client); String accessToken = accessApi.createAccessToken("admin", "adminadminadmin"); } }
Access Token을 이용하여 API를 호출합니다.
import io.swagger.client.*; import io.swagger.client.auth.*; import io.swagger.client.model.*; import io.swagger.client.api.AccessApi; import java.io.File; import java.util.*; public class ResourcesApiExample { public static void main(String[] args) { ResourcesApi api = new ResourcesApi(); ApiClient client = new ApiClient(true); client.setDebugging(true); client.setBasePath("https://localhost:8443/nifi-api"); client.addDefaultHeader("Authorization", String.format("Bearer %s", accessToken)); api.setApiClient(client); ResourcesEntity response = api.getResources(); } }