Yup that's the idea. Because with aws lb we can't do mutual ssl. Thanks & Regards Danushka Fernando Senior Software Engineer WSO2 inc. http://wso2.com/ Mobile : +94716332729
On Aug 20, 2015 8:54 AM, "Dimuthu Leelarathne" <[email protected]> wrote: > > Hi, > > On Wed, Aug 19, 2015 at 5:36 PM, Anuruddha Premalal <[email protected]> > wrote: > >> Hi All, >> >> I raised the issue in jenkins dev mailing list and still waiting for a >> response. Standalone jenkins use jetty servelet container [1]. However it's >> still using winstone[2] for java command line argument parsing which I >> couldn't find a way to configure SSL clientAuthentication. >> >> One workaround is to call stratos services using the stratos admin. The >> other option is to use a signedJWT token athenticator. >> >> Using stratos admin for application(stratos) creation might incur >> metering or appfactory wall related concerns in-future. >> IMO if the MutualAuth doesn't work with current jenkins deployment it's >> better to go for SignedJWT Authenticator. >> > > +1 for SignedJWTAuthenticator and invoking the service as the tenant admin > (and this means -1 doing it as super tenant admin). > > On the side(not related to this conversation) Is SignedJWTAuthenticator > operating without Mutual SSL now? > > thanks, > dimuthu > > >> >> Appreciate your feedback on this regard. >> >> [1] >> https://wiki.jenkins-ci.org/display/JENKINS/Starting+and+Accessing+Jenkins >> [2] http://winstone.sourceforge.net/#configFile >> >> On Wed, Aug 19, 2015 at 12:20 PM, Anuruddha Premalal <[email protected]> >> wrote: >> >>> Hi All, >>> >>> I've completed the following flow for single tenant cartridge. >>> >>> * Creating S2 git repo for app creation. >>> * Creating and deploying the app in stratos and bringing up the >>> cartridge. >>> * Preparing the tomcat cartridge. >>> * Creating s2 repo for app versioning >>> * Cleaning application resources(stratos & s2 repos) on deletion. >>> >>> There's an issue in talking to stratos on application versioning. >>> >>> On versioning stratos rest calls(to create app) goes through jenkins, we >>> are using MutualSSL for communication between stratos and deployers bundle. >>> For this to work stratos expect "javax.servlet.request.X509Certificate" >>> attribute to be set with the certificate object, this attribute is not >>> getting set when the call goes through jenkins. Because of this stratos is >>> unable to authenticate the application creation request. >>> >>> Also there's an error log[1] in jenkins before sending the rest call. >>> This might be the reason for the failure of setting certificate object. FYI >>> client truststore and the keystores are identical in jenkins and stratos >>> side. >>> >>> has anyone encountered a similar issue before? >>> >>> [1] org.apache.commons.httpclient.HttpMethodDirector >>> processAuthenticationResponse >>> SEVERE: Invalid challenge: Basic >>> org.apache.commons.httpclient.auth.MalformedChallengeException: Invalid >>> challenge: Basic >>> at >>> org.apache.commons.httpclient.auth.AuthChallengeParser.extractParams(AuthChallengeParser.java:98) >>> at >>> org.apache.commons.httpclient.auth.RFC2617Scheme.processChallenge(RFC2617Scheme.java:94) >>> at >>> org.apache.commons.httpclient.auth.BasicScheme.processChallenge(BasicScheme.java:112) >>> at >>> org.apache.commons.httpclient.auth.AuthChallengeProcessor.processChallenge(AuthChallengeProcessor.java:162) >>> at >>> org.apache.commons.httpclient.HttpMethodDirector.processWWWAuthChallenge(HttpMethodDirector.java:694) >>> at >>> org.apache.commons.httpclient.HttpMethodDirector.processAuthenticationResponse(HttpMethodDirector.java:668) >>> at >>> org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:193) >>> at >>> org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:397) >>> at >>> org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:323) >>> at >>> org.wso2.carbon.appfactory.s4.integration.StratosRestService.doPost(StratosRestService.java:301) >>> at >>> org.wso2.carbon.appfactory.s4.integration.StratosRestService.deployApplication(StratosRestService.java:134) >>> at >>> org.wso2.carbon.appfactory.deployers.StratosApplicationHandler.createAndDeployStratosApplication(StratosApplicationHandler.java:60) >>> at >>> org.wso2.carbon.appfactory.deployers.AbstractStratosDeployer.addToGitRepo(AbstractStratosDeployer.java:114) >>> at >>> org.wso2.carbon.appfactory.deployers.AbstractStratosDeployer.deploy(AbstractStratosDeployer.java:72) >>> at >>> org.wso2.carbon.appfactory.deployers.AbstractDeployer.deployLatestSuccessArtifact(AbstractDeployer.java:123) >>> at >>> org.wso2.carbon.appfactory.jenkins.deploy.JenkinsArtifactDeployer.deployLatestSuccessArtifact(JenkinsArtifactDeployer.java:84) >>> at >>> org.wso2.carbon.appfactory.jenkins.artifact.storage.AppfactoryArtifactStoragePlugin.doDynamic(AppfactoryArtifactStoragePlugin.java:92) >>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) >>> at >>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) >>> at >>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) >>> at java.lang.reflect.Method.invoke(Method.java:606) >>> at >>> org.kohsuke.stapler.Function$InstanceFunction.invoke(Function.java:298) >>> at org.kohsuke.stapler.Function.bindAndInvoke(Function.java:161) >>> at >>> org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:96) >>> at org.kohsuke.stapler.MetaClass$12.dispatch(MetaClass.java:391) >>> at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:746) >>> at org.kohsuke.stapler.Stapler.invoke(Stapler.java:876) >>> at org.kohsuke.stapler.MetaClass$6.doDispatch(MetaClass.java:249) >>> at >>> org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:53) >>> at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:746) >>> at org.kohsuke.stapler.Stapler.invoke(Stapler.java:876) >>> at org.kohsuke.stapler.Stapler.invoke(Stapler.java:649) >>> at org.kohsuke.stapler.Stapler.service(Stapler.java:238) >>> at javax.servlet.http.HttpServlet.service(HttpServlet.java:848) >>> at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:686) >>> at >>> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1494) >>> at >>> hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:123) >>> at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:114) >>> at >>> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482) >>> at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:48) >>> at >>> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482) >>> at >>> hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:84) >>> at >>> hudson.security.UnwrapSecurityExceptionFilter.doFilter(UnwrapSecurityExceptionFilter.java:51) >>> at >>> hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) >>> at >>> jenkins.security.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:117) >>> at >>> hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) >>> at >>> org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:125) >>> at >>> hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) >>> at >>> org.acegisecurity.ui.rememberme.RememberMeProcessingFilter.doFilter(RememberMeProcessingFilter.java:142) >>> at >>> hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) >>> at >>> org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:271) >>> at >>> hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) >>> at >>> jenkins.security.BasicHeaderProcessor.success(BasicHeaderProcessor.java:140) >>> at >>> jenkins.security.BasicHeaderProcessor.doFilter(BasicHeaderProcessor.java:82) >>> at >>> hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) >>> at >>> org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:249) >>> at >>> hudson.security.HttpSessionContextIntegrationFilter2.doFilter(HttpSessionContextIntegrationFilter2.java:67) >>> at >>> hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) >>> at >>> hudson.security.ChainedServletFilter.doFilter(ChainedServletFilter.java:76) >>> at hudson.security.HudsonFilter.doFilter(HudsonFilter.java:168) >>> at >>> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482) >>> at >>> org.kohsuke.stapler.compression.CompressionFilter.doFilter(CompressionFilter.java:49) >>> at >>> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482) >>> at >>> hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:81) >>> at >>> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482) >>> at >>> org.kohsuke.stapler.DiagnosticThreadNameFilter.doFilter(DiagnosticThreadNameFilter.java:30) >>> at >>> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1474) >>> at >>> org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:499) >>> at >>> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137) >>> at >>> org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:533) >>> at >>> org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231) >>> at >>> org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1086) >>> at >>> org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:428) >>> at >>> org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193) >>> at >>> org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1020) >>> at >>> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135) >>> at >>> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116) >>> at org.eclipse.jetty.server.Server.handle(Server.java:370) >>> at >>> org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:489) >>> at >>> org.eclipse.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttpConnection.java:949) >>> at >>> org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.java:1011) >>> at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:644) >>> at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:235) >>> at >>> org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82) >>> at org.eclipse.jetty.io.nio.SslConnection.handle(SslConnection.java:196) >>> at >>> org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:668) >>> at >>> org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:52) >>> at winstone.BoundedExecutorService$1.run(BoundedExecutorService.java:77) >>> at >>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) >>> at >>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) >>> at java.lang.Thread.run(Thread.java:744) >>> >>> Aug 19, 2015 11:31:51 AM org.apache.commons.httpclient.HttpMethodBase >>> getResponseBody >>> WARNING: Going to buffer response body of large or unknown size. Using >>> getResponseBodyAsStream instead is recommended. >>> Aug 19, 2015 11:31:51 AM >>> org.wso2.carbon.appfactory.s4.integration.StratosRestService >>> deployApplication >>> SEVERE: Authorization failed when subsctibing to cartridge >>> >>> >>> Regards, >>> Anuruddha >>> >>> On Mon, Aug 3, 2015 at 4:00 PM, Anuruddha Premalal <[email protected]> >>> wrote: >>> >>>> Hi Raj, >>>> >>>> Yes adding -Dstratos.component.startup.synchronizer.enabled=true to >>>> stratos.sh fixed the issue. We missed updating stratos.sh file while doing >>>> the migration from 4.0.0 to 4.1.0 >>>> >>>> >>>> >>>> On Mon, Aug 3, 2015 at 1:44 PM, Rajkumar Rajaratnam <[email protected] >>>> > wrote: >>>> >>>>> Hi Anuruddha, >>>>> >>>>> I guess we have already fixed this issue sometimes back. I went though >>>>> the log again and found that you haven't enabled Component startup >>>>> synchronizer. If you enable it, it will ensure that CompleteTopologyEvent >>>>> will be published only after SM is activated (SM will be activated only >>>>> after AS). >>>>> >>>>> In your logs, have a look at line number 402 : "Component startup >>>>> synchronizer enabled: false" >>>>> >>>>> Please check whether your bin/stratos.sh have >>>>> "-Dstratos.component.startup.synchronizer.enabled=true". If not, add it. >>>>> Please let us know whether it resolves your issue. >>>>> >>>>> Thanks, >>>>> Raj. >>>>> >>>>> >>>>> >>>>> On Mon, Aug 3, 2015 at 12:59 PM, Anuruddha Premalal < >>>>> [email protected]> wrote: >>>>> >>>>>> Hi Raj, >>>>>> >>>>>> Thanks for the support given in finding the issue.I couldn't find a >>>>>> public stratos jira for this so I've raised jira[1] to track this. >>>>>> >>>>>> [1] https://issues.apache.org/jira/browse/STRATOS-1487 >>>>>> >>>>>> >>>>>> >>>>>> On Mon, Aug 3, 2015 at 12:43 PM, Rajkumar Rajaratnam < >>>>>> [email protected]> wrote: >>>>>> >>>>>>> Monitors were not created because CompleteTopologyEvent was >>>>>>> published before AutoscalerComponent was activated. In the attached >>>>>>> logs, >>>>>>> >>>>>>> Line number 478 - CompleteTopologyEvent was received by AS >>>>>>> Line number 501 - AutoscalerComponent was activated >>>>>>> >>>>>>> When AS received CompleteTopologyEvent, it didn't load the >>>>>>> application context from registry. Hence it just logged "The >>>>>>> application is >>>>>>> not yet deployed for this [application] asdevelopment" (Line number 482) >>>>>>> and ignored the CompleteTopologyEvent. And CompleteTopologyEvent is >>>>>>> published only once (until topology is initialized) - so there is no way >>>>>>> that the monitors will be created. >>>>>>> >>>>>>> It needs to be fixed. >>>>>>> >>>>>>> Thanks, >>>>>>> Raj. >>>>>>> >>>>>>> On Mon, Aug 3, 2015 at 12:06 PM, Anuruddha Premalal < >>>>>>> [email protected]> wrote: >>>>>>> >>>>>>>> HI Raj, >>>>>>>> >>>>>>>> i'm attaching the carbon log file herewith. >>>>>>>> >>>>>>>> On Mon, Aug 3, 2015 at 11:52 AM, Rajkumar Rajaratnam < >>>>>>>> [email protected]> wrote: >>>>>>>> >>>>>>>>> Hi Anuruddha, >>>>>>>>> >>>>>>>>> Cluster monitor can be created in two situations. >>>>>>>>> >>>>>>>>> 1) when a cluster is created for the first time (application >>>>>>>>> deployment time) >>>>>>>>> 2) when stratos is restarted >>>>>>>>> >>>>>>>>> If cluster monitor creation failed, it would log enough >>>>>>>>> information about it (some error logs like "Monitor creation failed, >>>>>>>>> even >>>>>>>>> after retrying for 5 times") . You can trace back the logs and see the >>>>>>>>> reason for it. I don't think scenario 1) is the reason for the above >>>>>>>>> behaviour, because the members will not be created if the cluster >>>>>>>>> monitor >>>>>>>>> creation failed. Scenario 2) can be one reason for this behaviour. If >>>>>>>>> it is >>>>>>>>> the reason, then you should be able to see some error logs regarding >>>>>>>>> cluster monitor creation failed. Have you restarted stratos? >>>>>>>>> >>>>>>>>> Further, "*A cluster monitor is not found in autoscaler context" >>>>>>>>> *error >>>>>>>>> doesn't necessarily mean that cluster monitor creation failed. It >>>>>>>>> can be because cluster is undeployed and the monitor is removed before >>>>>>>>> getting this event from CEP. >>>>>>>>> >>>>>>>>> If you could attach the complete log, we will be able to point out >>>>>>>>> the issue. >>>>>>>>> >>>>>>>>> Thanks, >>>>>>>>> Raj. >>>>>>>>> >>>>>>>>> On Mon, Aug 3, 2015 at 11:32 AM, Anuruddha Premalal < >>>>>>>>> [email protected]> wrote: >>>>>>>>> >>>>>>>>>> Also this setup use kubernetes as the IaaS >>>>>>>>>> >>>>>>>>>> On Mon, Aug 3, 2015 at 11:31 AM, Anuruddha Premalal < >>>>>>>>>> [email protected]> wrote: >>>>>>>>>> >>>>>>>>>>> Hi, >>>>>>>>>>> >>>>>>>>>>> I am working on $subject. >>>>>>>>>>> >>>>>>>>>>> In the current appfactory setup we have a single JVM Stratos >>>>>>>>>>> 4.1.0 deployment. I am trying to get the autoscaling working since >>>>>>>>>>> resetting the SM node each time of failure consumes time. Once a >>>>>>>>>>> member >>>>>>>>>>> fault event received to AS receives it but unable to continue with >>>>>>>>>>> the >>>>>>>>>>> following log. When will the cluster monitor get initiated? What >>>>>>>>>>> would are >>>>>>>>>>> the possibilities for failing the initialization of the cluster >>>>>>>>>>> monitor? >>>>>>>>>>> >>>>>>>>>>> *INFO >>>>>>>>>>> {org.apache.stratos.cep.extension.FaultHandlingWindowProcessor} - >>>>>>>>>>> Faulty >>>>>>>>>>> member detected [member-id] >>>>>>>>>>> asdevelopment.anuasdevelopment.anuasdevelopment.domain38d5a847-d16a-4891-bbc0-6582cd9b9988 >>>>>>>>>>> with [last time-stamp] 1438580270973 [time-out] 60000 milliseconds* >>>>>>>>>>> *TID: [0] [SCC] [2015-08-03 11:26:38,956] INFO >>>>>>>>>>> {org.apache.stratos.cep.extension.FaultHandlingWindowProcessor} - >>>>>>>>>>> Publishing member fault event for [member-id] >>>>>>>>>>> asdevelopment.anuasdevelopment.anuasdevelopment.domain38d5a847-d16a-4891-bbc0-6582cd9b9988* >>>>>>>>>>> *TID: [0] [SCC] [2015-08-03 11:26:38,969] DEBUG >>>>>>>>>>> {org.apache.stratos.autoscaler.event.receiver.health.AutoscalerHealthStatEventReceiver} >>>>>>>>>>> - Member fault event received: [member] >>>>>>>>>>> asdevelopment.anuasdevelopment.anuasdevelopment.domain38d5a847-d16a-4891-bbc0-6582cd9b9988 >>>>>>>>>>> * >>>>>>>>>>> *TID: [0] [SCC] [2015-08-03 11:26:38,969] DEBUG >>>>>>>>>>> {org.apache.stratos.autoscaler.event.receiver.health.AutoscalerHealthStatEventReceiver} >>>>>>>>>>> - A cluster monitor is not found in autoscaler context [cluster] >>>>>>>>>>> asdevelopment.anuasdevelopment.anuasdevelopment.domain* >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> Thanks & Regards, >>>>>>>>>>> -- >>>>>>>>>>> *Anuruddha Premalal* >>>>>>>>>>> Software Eng. | WSO2 Inc. >>>>>>>>>>> Mobile : +94710461070 >>>>>>>>>>> Web site : www.regilandvalley.com >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> -- >>>>>>>>>> *Anuruddha Premalal* >>>>>>>>>> Software Eng. | WSO2 Inc. >>>>>>>>>> Mobile : +94710461070 >>>>>>>>>> Web site : www.regilandvalley.com >>>>>>>>>> >>>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> -- >>>>>>>>> Rajkumar Rajaratnam >>>>>>>>> Committer & PMC Member, Apache Stratos >>>>>>>>> Software Engineer, WSO2 >>>>>>>>> >>>>>>>>> Mobile : +94777568639 >>>>>>>>> Blog : rajkumarr.com >>>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> -- >>>>>>>> *Anuruddha Premalal* >>>>>>>> Software Eng. | WSO2 Inc. >>>>>>>> Mobile : +94710461070 >>>>>>>> Web site : www.regilandvalley.com >>>>>>>> >>>>>>>> >>>>>>> >>>>>>> >>>>>>> -- >>>>>>> Rajkumar Rajaratnam >>>>>>> Committer & PMC Member, Apache Stratos >>>>>>> Software Engineer, WSO2 >>>>>>> >>>>>>> Mobile : +94777568639 >>>>>>> Blog : rajkumarr.com >>>>>>> >>>>>> >>>>>> >>>>>> >>>>>> -- >>>>>> *Anuruddha Premalal* >>>>>> Software Eng. | WSO2 Inc. >>>>>> Mobile : +94710461070 >>>>>> Web site : www.regilandvalley.com >>>>>> >>>>>> >>>>> >>>>> >>>>> -- >>>>> Rajkumar Rajaratnam >>>>> Committer & PMC Member, Apache Stratos >>>>> Software Engineer, WSO2 >>>>> >>>>> Mobile : +94777568639 >>>>> Blog : rajkumarr.com >>>>> >>>> >>>> >>>> >>>> -- >>>> *Anuruddha Premalal* >>>> Software Eng. | WSO2 Inc. >>>> Mobile : +94710461070 >>>> Web site : www.regilandvalley.com >>>> >>>> >>> >>> >>> -- >>> *Anuruddha Premalal* >>> Software Eng. | WSO2 Inc. >>> Mobile : +94710461070 >>> Web site : www.regilandvalley.com >>> >>> >> >> >> -- >> *Anuruddha Premalal* >> Software Eng. | WSO2 Inc. >> Mobile : +94710461070 >> Web site : www.regilandvalley.com >> >> > > > -- > Dimuthu Leelarathne > Director & Product Lead of App Factory > > WSO2, Inc. (http://wso2.com) > email: [email protected] > Mobile : 0773661935 > > Lean . Enterprise . Middleware >
_______________________________________________ Dev mailing list [email protected] http://wso2.org/cgi-bin/mailman/listinfo/dev
