[wildfly-dev] HTTP API support for plain JBoss-CLI commands
Alexey Loubyansky
alexey.loubyansky at redhat.com
Fri May 29 10:34:47 EDT 2015
On 05/29/2015 02:51 PM, Darran Lofthouse wrote:
> What we really have internally is a HTTP management interface and we
> used to expose a native (JBoss Remoting) management interface that the
> CLI would connect to - subsequently the CLI does connect to the HTTP
> management interface but it performs a HTTP upgrade to now talk Remoting
> over HTTP using DMR formatted messages.
>
> For the HTTP management interface json was selected as the payload type
> so that clients could be written in many languages that have libraries
> to talk HTTP and handle json.
>
> The CLI was then subsequently developed but with an emphasis on
> assisting administrators constructing a request so things like tab
> completion and automatic conversion.
>
> A couple of things this thread throws up that I think could be useful: -
> - The ability to enter raw json requests into the CLI.
There is a Jira issue open for this
https://issues.jboss.org/browse/WFCORE-418
> - The ability to output the json representation of a command
> constructed by the CLI.
This is an easy one. There is echo-dmr command already. It could accept
--json argument to further transform the result to JSON.
Alexey
>
> Regards,
> Darran Lofthouse.
>
>
> On 29/05/15 13:38, Jairo Junior wrote:
>> Darran,
>>
>> Thank you, wish I had found your blog post before. Fortunately, I was
>> able to build almost the same thing with a lot of effort:
>> https://github.com/biemond/biemond-wildfly/blob/master/lib/puppet_x/util/wildfly_cli.rb
>>
>> My point is: Sysadmins often build CLI scripts to automate tasks and I
>> want to "reuse" this knowledge in HTTP API. Sysadmins don't talk JSON,
>> they talk CLI...
>>
>> I heard somewhere that jboss-cli.sh and Management Console are using the
>> same HTTP API in Wildfly, but I'm not sure how jboss-cli.sh use this
>> commands...
>>
>> In fact, I tried to use jboss-cli.sh but bash is incredible slow
>> compared to HTTP API:
>> https://github.com/cpitman/puppet-jboss_admin/issues/68
>>
>> On Fri, May 29, 2015 at 9:22 AM Darran Lofthouse
>> <darran.lofthouse at jboss.com <mailto:darran.lofthouse at jboss.com>> wrote:
>>
>> It was written a couple of years back but this is a good blog post to
>> look at for different clients sending in management requests: -
>>
>> http://pilhuhn.blogspot.co.uk/2012/01/polyglot-management-of-secured-as7.html
>>
>> You don't need to go as far as the Base64 encoding and decoding if you
>> do not want to and just create the json formatted requests and parse the
>> json responses.
>>
>> Regards,
>> Darran Lofthouse.
>>
>> On 29/05/15 13:11, Jairo Junior wrote:
>> > No, it's not. Only ruby. Although, I could use JRuby to import
>> and use
>> > Java classes, it would give me more trouble than solutions.
>> >
>> > What I want is: An interoperable way to talk with JBoss.
>> application/dmr
>> > is a binary/proprietary format.
>> >
>> > On Fri, May 29, 2015 at 8:17 AM Heiko Braun <hbraun at redhat.com
>> <mailto:hbraun at redhat.com>
>> > <mailto:hbraun at redhat.com <mailto:hbraun at redhat.com>>> wrote:
>> >
>> > What the constraints when developing a puppet module? Is
>> plain java
>> > supported?
>> >
>> >
>> >
>> >
>> > Am 29.05.2015 um 01:39 schrieb Jairo Junior
>> <junior.jairo1 at gmail.com <mailto:junior.jairo1 at gmail.com>
>> > <mailto:junior.jairo1 at gmail.com
>> <mailto:junior.jairo1 at gmail.com>>>:
>> >
>> >> Heiko,
>> >>
>> >> Thank you, but how do I build a ModelNode from a CLI command?
>> >>
>> >> Before using JSON I was investigating how Administration Console
>> >> perform operations and I realized (using firebug) that it uses
>> >> application/dmr, but I presumed it uses ModelNode to build
>> >> commands, not plain CLI syntax.
>> >>
>> >> On Thu, May 28, 2015 at 5:58 AM Heiko Braun
>> <hbraun at redhat.com <mailto:hbraun at redhat.com>
>> >> <mailto:hbraun at redhat.com <mailto:hbraun at redhat.com>>> wrote:
>> >>
>> >> The DMR library can be found here:
>> >>
>> >> https://github.com/jbossas/jboss-dmr
>> >>
>> >>
>> >>> On 28 May 2015, at 10:56, Heiko Braun
>> <hbraun at redhat.com <mailto:hbraun at redhat.com>
>> >>> <mailto:hbraun at redhat.com <mailto:hbraun at redhat.com>>>
>> wrote:
>> >>>
>> >>>
>> >>> You can already use DMR over HTTP. It requires a different
>> >>> content-type ('application/dmr-encoded') and uses a base64
>> >>> encoded representation of the payload
>> >>> ('ModelNode.toBase64String()').
>> >>>
>> >>> You can describe an operation through the DMR API and then
>> >>> simply do HTTP POST to ‘/management’ endpoint. make sure to
>> >>> use 'application/dmr-encoded’ for both 'Content-Type' and
>> >>> ‘Accept’ headers.
>> >>>
>> >>> The response can be parse using 'ModelNode.fromBase64()'.
>> >>>
>> >>> Hope this helps,
>> >>> Heiko
>> >>>
>> >>>
>> >>>
>> >>>> On 27 May 2015, at 19:54, Jairo Junior
>> >>>> <junior.jairo1 at gmail.com
>> <mailto:junior.jairo1 at gmail.com> <mailto:junior.jairo1 at gmail.com
>> <mailto:junior.jairo1 at gmail.com>>>
>> >>>> wrote:
>> >>>>
>> >>>> I've been working on a Puppet Module for Wildfly [1] that
>> >>>> uses his HTTP Management API to perform operations (manage
>> >>>> resources/deploys and execute commands), but my command
>> >>>> execution code is a little bit limited cause I have to
>> >>>> transform from CLI syntax to JSON. e.g.:
>> >>>>
>> >>>> :shutdown(restart=true)
>> >>>>
>> >>>> becomes
>> >>>>
>> >>>> {"operation" : "shutdown", "restart" : "true" }
>> >>>>
>> >>>> Is there any specific reason to not support plain CLI
>> >>>> commands through HTTP API? I looked at the code and it
>> >>>> didn't see hard to implement this...
>> >>>>
>> >>>> [1] https://github.com/biemond/biemond-wildfly
>> >>>>
>> >>>> _______________________________________________
>> >>>> wildfly-dev mailing list
>> >>>> wildfly-dev at lists.jboss.org
>> <mailto:wildfly-dev at lists.jboss.org>
>> <mailto:wildfly-dev at lists.jboss.org
>> <mailto:wildfly-dev at lists.jboss.org>>
>> >>>> https://lists.jboss.org/mailman/listinfo/wildfly-dev
>> >>>
>> >>
>> >
>> >
>> > _______________________________________________
>> > wildfly-dev mailing list
>> > wildfly-dev at lists.jboss.org <mailto:wildfly-dev at lists.jboss.org>
>> > https://lists.jboss.org/mailman/listinfo/wildfly-dev
>> >
>>
> _______________________________________________
> wildfly-dev mailing list
> wildfly-dev at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/wildfly-dev
>
More information about the wildfly-dev
mailing list