如何通过rest api

时间:2017-05-23 14:40:29

标签: api deployment automation apache-nifi

我正在尝试自动部署apache nifi进程组。

我工作的步骤是:

  • 创建代码段
  • 创建模板
  • 下载模板
  • 上传模板

然后我尝试使用api调用:

https://nifi.apache.org/docs/nifi-docs/rest-api/

POST / process-groups / {id} / template-instance实例化模板

   instantiate_data = { 
        "originX": 0.0,    
        "originY": 0.0,
        "templateId": template_id,      
        "snippet": { 
            "processGroups": [                  
                { 
                    "id": group_id,                 
                    "parentGroupId": parentgroup_id,
                    "position": {                       
                        "x": 0.0,                       
                        "y": 0.0                    
                    },
                    "name": "value",            
                }
                ] 
            } 
    }

这是我从Nifi实例获得500的时候。

下面的Stacktrace ......我缺少什么?

2017-05-23 14:28:49,180 INFO [NiFi Web Server-106]       org.apache.nifi.web.filter.RequestLogger Attempting request for (anonymous) POST http://10.132.0.22:8080/nifi-api/process-groups/1664cd1a-015c-1000-4bbe-f63259900964/template-instance (source ip: 10.132.0.23)

2017-05-23 14:28:49,185错误[NiFi Web Server-106] o.a.nifi.web.api.config.ThrowableMapper发生意外错误:java.lang.NullPointerException。返回内部服务器错误响应。 java.lang.NullPointerException:null     在org.apache.nifi.controller.FlowController.verifyProcessorsInSnippet(FlowController.java:2051)     at org.apache.nifi.controller.FlowController.lambda $ verifyProcessorsInSnippet $ 1(FlowController.java:2067)     在java.lang.Iterable.forEach(Iterable.java:75)     在org.apache.nifi.controller.FlowController.verifyProcessorsInSnippet(FlowController.java:2066)     at org.apache.nifi.controller.FlowController.verifyComponentTypesInSnippet(FlowController.java:2100)     at org.apache.nifi.web.dao.impl.StandardTemplateDAO.verifyComponentTypes(StandardTemplateDAO.java:74)     at org.apache.nifi.web.dao.impl.StandardTemplateDAO $$ FastClassBySpringCGLIB $$ 58f5765d.invoke()     在org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)     在org.springframework.aop.framework.CglibAopProxy $ CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:720)     在org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)     在org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92)     在org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)     在org.springframework.aop.framework.CglibAopProxy $ DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:655)     at org.apache.nifi.web.dao.impl.StandardTemplateDAO $$ EnhancerBySpringCGLIB $$ 2cf2c182.verifyComponentTypes()     at org.apache.nifi.web.StandardNiFiServiceFacade.verifyComponentTypes(StandardNiFiServiceFacade.java:1643)     在org.apache.nifi.web.StandardNiFiServiceFacade $$ FastClassBySpringCGLIB $$ 358780e0.invoke()     在org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)     在org.springframework.aop.framework.CglibAopProxy $ CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:720)     在org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)     在org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:85)     在org.apache.nifi.web.NiFiServiceFacadeLock.proceedWithReadLock(NiFiServiceFacadeLock.java:137)     在org.apache.nifi.web.NiFiServiceFacadeLock.verifyLock(NiFiServiceFacadeLock.java:126)     at sun.reflect.GeneratedMethodAccessor320.invoke(Unknown Source)     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)     at java.lang.reflect.Method.invoke(Method.java:498)     在org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:621)     在org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:610)     在org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:68)     在org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)     在org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92)     在org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)     在org.springframework.aop.framework.CglibAopProxy $ DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:655)     at org.apache.nifi.web.StandardNiFiServiceFacade $$ EnhancerBySpringCGLIB $$ 9a341d03.verifyComponentTypes()     at org.apache.nifi.web.api.ProcessGroupResource.lambda $ instantiateTemplate $ 41(ProcessGroupResource.java:1995)     at org.apache.nifi.web.api.ApplicationResource.withWriteLock(ApplicationResource.java:667)     在org.apache.nifi.web.api.ProcessGroupResource.instantiateTemplate(ProcessGroupResource.java:1967)     at sun.reflect.GeneratedMethodAccessor327.invoke(Unknown Source)     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)     at java.lang.reflect.Method.invoke(Method.java:498)     at com.sun.jersey.spi.container.JavaMethodInvokerFactory $ 1.invoke(JavaMethodInvokerFactory.java:60)     at com.sun.jersey.server.impl.model.method.dispatch.Abs​​tractResourceMethodDispatchProvider $ ResponseOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:205)     at com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75)     在com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:302)     在com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)     在com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108)     在com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)     at com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84)     at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1542)     at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1473)     at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1419)     at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1409)     在com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:409)     在com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:558)     在com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:733)     在javax.servlet.http.HttpServlet.service(HttpServlet.java:790)     在org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:841)     at org.eclipse.jetty.servlet.ServletHandler $ CachedChain.doFilter(ServletHandler.java:1634)     在org.apache.nifi.web.filter.RequestLogger.doFilter(RequestLogger.java:66)     在org.eclipse.jetty.servlet.ServletHandler $ CachedChain.doFilter(ServletHandler.java:1621)     在org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:316)     在org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:126)     在org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:90)     在org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:330)     在org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:122)     在org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:330)     在org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:111)     在org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:330)     在org.apache.nifi.web.security.NiFiAuthenticationFilter.authenticate(NiFiAuthenticationFilter.java:83)     在org.apache.nifi.web.security.NiFiAuthenticationFilter.doFilter(NiFiAuthenticationFilter.java:57)     在org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:330)     在org.apache.nifi.web.security.NiFiAuthenticationFilter.authenticate(NiFiAuthenticationFilter.java:83)     在org.apache.nifi.web.security.NiFiAuthenticationFilter.doFilter(NiFiAuthenticationFilter.java:57)     在org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:330)     在org.apache.nifi.web.security.NiFiAuthenticationFilter.authenticate(NiFiAuthenticationFilter.java:83)     在org.apache.nifi.web.security.NiFiAuthenticationFilter.doFilter(NiFiAuthenticationFilter.java:57)     在org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:330)     在org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:213)     在org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:176)     在org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)     在org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:262)     在org.eclipse.jetty.servlet.ServletHandler $ CachedChain.doFilter(ServletHandler.java:1621)     在org.apache.nifi.web.filter.TimerFilter.doFilter(TimerFilter.java:51)     at org.eclipse.jetty.servlet.ServletHandler $ CachedChain.doFilter(ServletHandler.java:1613)     在org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:541)     在org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)     在org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)     在org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)     在org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:190)     在org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1593)     在org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:188)     at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1239)     在org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:168)     在org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:481)     在org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1562)     在org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:166)     在org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1141)     在org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)     在org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:118)     在org.eclipse.jetty.server.handler.gzip.GzipHandler.handle(GzipHandler.java:561)     在org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)     在org.eclipse.jetty.server.Server.handle(Server.java:564)     在org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:320)     在org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:251)     at org.eclipse.jetty.io.AbstractConnection $ ReadCallback.succeeded(AbstractConnection.java:279)     在org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:110)     在org.eclipse.jetty.io.ChannelEndPoint $ 2.run(ChannelEndPoint.java:124)     at org.eclipse.jetty.util.thread.Invocable.invokePreferred(Invocable.java:122)     at org.eclipse.jetty.util.thread.strategy.ExecutingExecutionStrategy.invoke(ExecutingExecutionStrategy.java:58)     at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceConsume(ExecuteProduceConsume.java:201)     at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:133)     在org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:672)     在org.eclipse.jetty.util.thread.QueuedThreadPool $ 2.run(QueuedThreadPool.java:590)     在java.lang.Thread.run(Thread.java:748)

1 个答案:

答案 0 :(得分:2)

@ strzelecki.maciek,

你必须传递instantiate_data才能正确如下。

如果任何参数属于实例化数据错误,则会收到500内部服务器错误。

Rest API网址:

http://localhost:8080/nifi-api/process-groups/015c100c-8968-18bb-9b56-bf5342d001fd/template-instance

以及正确实例化数据。

{
    "originX": 2.0,
    "originY": 3.0,
    "templateId": "87fb53bb-a4bd-4051-a129-66b29dfce2b4"
}

如果您遇到任何问题,请与我联系。