https://github.com/klauern/remy
CLI for interacting with the WebLogic Server RESTful Management Services
https://github.com/klauern/remy
Last synced: 2 months ago
JSON representation
CLI for interacting with the WebLogic Server RESTful Management Services
- Host: GitHub
- URL: https://github.com/klauern/remy
- Owner: klauern
- License: mit
- Created: 2015-09-10T12:40:28.000Z (almost 11 years ago)
- Default Branch: master
- Last Pushed: 2018-09-05T14:20:16.000Z (almost 8 years ago)
- Last Synced: 2026-04-11T03:47:44.152Z (2 months ago)
- Language: Go
- Homepage:
- Size: 112 KB
- Stars: 12
- Watchers: 1
- Forks: 5
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# remy
CLI for interacting with the WebLogic Server RESTful Management Services.
[](https://goreportcard.com/report/klauern/remy)
[](https://app.fossa.io/projects/git%2Bgithub.com%2Fklauern%2Fremy?ref=badge_shield)
[](https://app.wercker.com/project/bykey/fe26b6defa4f97dde747ae1f1fbcb815)
`remy` is an application I wrote to learn a little about [golang](http://www.golang.org) as well as to itch a little
scratch I had with WebLogic servers. WebLogic has a feature called *[RESTful Management Extensions](http://docs.oracle.com/cd/E23943_01/web.1111/e24682/toc.htm#RESTS149)*, which lets you query
an AdminServer's domain for various pieces of information it knows about Servers, Clusters, Datasources, and Applications
that it is resposnible for. This is pretty useful if you are interested in writing a lot of small scripts to quickly get
the status of some datasource in your cluster without having to resort to connecting, setting up, and maintaining your own
copy of a WebLogic Scripting Tool (WLST) interface.
This application provides a fancy command-line interface over top of this REST API, allowing you to quickly ascertain
how a server or cluster is doing without having to maintain all the complexity of an entire WLS domain locally just
to `connect(url="t3://server:7001", username="weblogic", password="welcome1")`, etc., etc.
# Installation
## Releases
The latest version I put out there is `v0.2.1`, and that can be found on the releases page: [v0.2.1 release](https://github.com/klauern/remy/releases/tag/v0.2.1)
## From Source
For the die-hard coder in you:
```sh
go get -u github.com/klauern/remy/cmd/remy
```
# Usage
Running `remy help` will show you your options:
```
C:\> remy help
Query a WebLogic Domain's resources, including Datasources, Applications, Clusters, and Servers by using the WebLogic RESTful Management Extensions API
Usage:
remy [command]
Available Commands:
applications Query applications deployed under AdminServer
config Configure the credentials and server to default REST connections to
clusters Query clusters under AdminServer
datasources Query datasources under AdminServer
servers Display Server information
version Show the version of this command
Flags:
-s, --adminurl="http://localhost:7001": Url for the Admin Server
-f, --full-format[=false]: Return full format from REST server
-p, --password="welcome1": Password for the user
-u, --username="weblogic": Username with privileges to access AdminServer
Use "remy [command] --help" for more information about a command.
```
## Configuration and Authentication
Every command to query for information must inclue a set of credentials to
* The AdminServer the WebLogic Domain resides on
* Username
* Password
These can be provided by a number of options:
1. Command-line flags:
* `--adminurl="http://server:7001"`
* `--username="weblogic"`
* `--password="welcome1"`
2. Environment Variables:
* `export WLS_ADMINURL='http://server:7001'`
* `export WLS_USERNAME='weblogic'`
* `export WLS_PASSWORD='welcome1'`
3. Local directory `wlsrest.toml` config file
4. Home directory (~/, $HOME) `.wlsrest.toml` config file
An example `wlsrest.toml` or `.wlsrest.toml` config file:
```
[/home/user/] $ cat ~/.wlsrest.toml
AdminURL = "http://homeserver:7001"
Username = "homeuser"
Password = "homepassword"
```
### Generating Configuration for the above
Both the local directory and Home (`~/`) directory config files can be generated for you with `remy config`. This
provides the added benefit of encrypting the password for you:
```
$ remy config -h
Configure what Username, Password, and Admin Server:Port you want to send REST requests to when submitting calls on any of the other commands
Usage:
remy config [flags]
Flags:
--environment[=false]: Set the WLS_* environment variables
--home[=false]: Generate/Update the ~/$HOME config file
--local[=false]: Generate/Update the local directory's config file
Global Flags:
-s, --adminurl="http://localhost:7001": Url for the Admin Server
-f, --full-format[=false]: Return full format from REST server
-p, --password="welcome1": Password for the user
-u, --username="weblogic": Username with privileges to access AdminServer
```
Using it is pretty straightforward:
```
$ remy config --local --adminurl="http://localserver:7001" --username="weblogic" --password="welcome1"
Using the Local directory to set the ./wlsrest.toml file
$ cat wlsrest.toml
AdminURL = "http://localserver:7001"
Username = "weblogic"
Password = "{AES}VHQVFwN72jWgRYzWbnJQugUfCa6LAU0W"
```
NOTE: Do not attempt to assume there's some inherent security in this. The password is generated with AES, but the default
`key` is stored in code. You can optionally override the default key with an environment variable `WLS_REMYKEY`:
```
$ export WLS_REMYKEY="My very very very awesome key!!!" # (MUST be 32 bytes in length EXACTLY)
$ remy config --local
$ cat .\wlsrest.toml
AdminURL = "http://localhost:7001"
Username = "weblogic"
Password = "{AES}BM1uj9uv1bD7KV6BXapCf1kucxDYbCU6"
```
# Query Examples
Below are sample outputs provided by the tool itself. This is a rudimentary **1.0** of the output. I hope to provide
some options for different output at some point, such as rendering a widget for use with [`termui`](https://github.com/gizak/termui).
Any help would be appreciated.
## Servers
### All Servers (short form)
```sh
$ remy servers
Finding all Servers
Using Full Format? false
Name: AdminServer | State: RUNNING | Health: HEALTH_OK
Cluster: | CurrentMachine: | JVM Load: 0
Sockets #: 0 | Heap Sz Cur: 0 | Heap Free Cur: 0
Java Ver: | OS Name: | OS Version:
WLS Version:
Name: WLS_WSM1 | State: RUNNING | Health: HEALTH_OK
Cluster: | CurrentMachine: | JVM Load: 0
Sockets #: 0 | Heap Sz Cur: 0 | Heap Free Cur: 0
Java Ver: | OS Name: | OS Version:
WLS Version:
Name: WLS_SOA1 | State: RUNNING | Health: HEALTH_OK
Cluster: | CurrentMachine: | JVM Load: 0
Sockets #: 0 | Heap Sz Cur: 0 | Heap Free Cur: 0
Java Ver: | OS Name: | OS Version:
WLS Version:
Name: WLS_OSB1 | State: RUNNING | Health: HEALTH_OK
Cluster: | CurrentMachine: | JVM Load: 0
Sockets #: 0 | Heap Sz Cur: 0 | Heap Free Cur: 0
Java Ver: | OS Name: | OS Version:
WLS Version:
```
### Individual Server (always full-format)
```sh
$ remy servers AdminServer
Finding Server information for AdminServer
Server AdminServer:
Name: AdminServer | State: RUNNING | Health: HEALTH_OK
Cluster: | CurrentMachine: localhost | JVM Load: 0
Sockets #: 8 | Heap Sz Cur: 3151495168 | Heap Free Cur: 423742888
Java Ver: 1.7.0_80 | OS Name: Linux | OS Version: 2.6......
WLS Version: WebLogic Server 10.3.6.0 Tue Nov 15 08:52:36 PST 2011 1441050
```
## Clusters
### All Clusters (short form)
```sh
$ remy clusters
Finding All Clusters
Using Full Format? false
Name: WSM-PM_Cluster
State: RUNNING | Health: HEALTH_OK | Cluster Master? false | Drop Out Freq:
Resend Req. Count: 0 | Fragments Sent Count: 0 | Fragments Recv Count: 0
Name: SOA_Cluster
State: RUNNING | Health: HEALTH_OK | Cluster Master? false | Drop Out Freq:
Resend Req. Count: 0 | Fragments Sent Count: 0 | Fragments Recv Count: 0
Name: OSB_Cluster
State: RUNNING | Health: HEALTH_OK | Cluster Master? false | Drop Out Freq:
Resend Req. Count: 0 | Fragments Sent Count: 0 | Fragments Recv Count: 0
```
### Individual Cluster (always full-format)
```sh
$ remy clusters SOA_Cluster
Finding Cluster information for SOA_Cluster
Name: SOA_Cluster
State: RUNNING | Health: HEALTH_OK | Cluster Master? false | Drop Out Freq:
Resend Req. Count: 0 | Fragments Sent Count: 127690 | Fragments Recv Count: 0
```
## Datasources
TODO
## Applications
### All Applications (short form)
```
$ remy applications
Finding All Applications
Using Full Format? false
Name: FileAdapter |AppType: rar |State: STATE_ACTIVE|Health: HEALTH_OK
Name: DbAdapter |AppType: rar |State: STATE_ACTIVE|Health: HEALTH_OK
Name: JmsAdapter |AppType: rar |State: STATE_ACTIVE|Health: HEALTH_OK
Name: AqAdapter |AppType: rar |State: STATE_ACTIVE|Health: HEALTH_OK
Name: FtpAdapter |AppType: rar |State: STATE_ACTIVE|Health: HEALTH_OK
Name: SocketAdapter |AppType: rar |State: STATE_ACTIVE|Health: HEALTH_OK
...
Name: b2bui |AppType: ear |State: STATE_ACTIVE|Health: HEALTH_OK
Name: Healthcare UI |AppType: ear |State: |Health:
Name: DefaultToDoTaskFlow |AppType: ear |State: STATE_ACTIVE|Health: HEALTH_OK
Name: composer |AppType: ear |State: STATE_ACTIVE|Health: HEALTH_OK
...
```
### Individual Application (always full-format)
In an application, we don't output sections where there is nothing, hence there are pieces missing from this particular
application. You may see a lot more data or a lot less depending.
```
$ remy applications composer
Finding application information for composer
Name: composer |AppType: ear |State: STATE_ACTIVE|Health: HEALTH_OK
Target States
Target: SOA_Cluster |State: STATE_ACTIVE
Work Managers
Name: default |Server: WLS_SOA1 |Pending Requests: 0 |Completed Requests: 0
Name: wm/SOAWorkManager |Server: WLS_SOA1 |Pending Requests: 0 |Completed Requests: 0
```
# TODO List Prior to `1.0.0`
- [ ] TONS more tests (test-first is hard for me, sorry guys)
- [ ] Command-Line Flag parsing Tests
- [X] Configuration Parsing / Flag handling
- [ ] Pretty print formatting for responses
- [ ] Possible `termui` implementation
- [ ] Enrich documentation across the board
- [X] Configure downloadable releases
# Contributing
Pull requests are welcome. If you find this useful, please share and share alike.
# Contact
I can be reached on Twitter [@klauern](https://twitter.com/klauern) as well as on this repo.
## License
[](https://app.fossa.io/projects/git%2Bgithub.com%2Fklauern%2Fremy?ref=badge_large)