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.
- The ability to output the json representation of a command
constructed by the CLI.
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/...
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(a)jboss.com <mailto:darran.lofthouse@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....
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(a)redhat.com
<mailto:hbraun@redhat.com>
> <mailto:hbraun@redhat.com <mailto:hbraun@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(a)gmail.com <mailto:junior.jairo1@gmail.com>
> <mailto:junior.jairo1@gmail.com
<mailto:junior.jairo1@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(a)redhat.com <mailto:hbraun@redhat.com>
>> <mailto:hbraun@redhat.com <mailto:hbraun@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(a)redhat.com <mailto:hbraun@redhat.com>
>>> <mailto:hbraun@redhat.com
<mailto:hbraun@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(a)gmail.com
<mailto:junior.jairo1@gmail.com> <mailto:junior.jairo1@gmail.com
<mailto:junior.jairo1@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(a)lists.jboss.org
<mailto:wildfly-dev@lists.jboss.org>
<mailto:wildfly-dev@lists.jboss.org
<mailto:wildfly-dev@lists.jboss.org>>
>>>>
https://lists.jboss.org/mailman/listinfo/wildfly-dev
>>>
>>
>
>
> _______________________________________________
> wildfly-dev mailing list
> wildfly-dev(a)lists.jboss.org <mailto:wildfly-dev@lists.jboss.org>
>
https://lists.jboss.org/mailman/listinfo/wildfly-dev
>