Andre Dietisheim [
https://community.jboss.org/people/adietish] modified the blog post:
"show-domain-info: openshift-java-client in a nutshell"
To view the blog post, visit:
https://community.jboss.org/community/tools/blog/2012/08/24/show-domain-i...
--------------------------------------------------------------
At JBoss Tools we created a java client that allows you to talk to the
https://openshift.redhat.com/app/ OpenShift PaaS:
https://github.com/openshift/openshift-java-client openshift-java-client. The library is
already used in the
https://community.jboss.org/en/tools/blog/tags/openshift OpenShift
tooling in
http://www.jboss.org/tools/ JBoss Tools, the
https://github.com/forge/plugin-openshift-express/ Forge plugin and
http://www.appcelerator.com/platform/titanium-studio Appcelerators tooling for OpenShift.
This blog post will show you how to use okthis API in your very own java programs.
We'll develop a command line tool that displays informations equivalent to what you
get when running *rhc domain show* with the
https://openshift.redhat.com/community/developers/install-the-client-tools OpenShift
command line tools: It displays basic informations about your user.
User Info
=========
Namespace: andre
RHLogin: andre.dietisheim(a)redhat.com
Application Info
================
kitchensink
Framework: jbossas-7
Creation: 2012-08-10T11:24:13-04:00
UUID: 8ad0d94f39aa4295a0049de8b8b5ef55
Git URL: ssh://<SOMEID>@kitchensink-andre.rhcloud.com/~/git/kitchensink.git/
Public URL:
http://kitchensink-andre.rhcloud.com/
Embedded:
jenkins-client-1.4 - Job URL:
https://jenk-andre.rhcloud.com/job/kitchensink-build/
You'll find the sourcecode for this example at github:
https://github.com/adietish/show-domain-info https://github.com/adietish/show-domain-info.
All the code that is shown in this blog is contained within the
https://github.com/adietish/show-domain-info/blob/master/src/main/java/co...
Main class.
If you want to dig futher, you'll get a more complete example that includes jenkins in
https://community.jboss.org/docs/DOC-19828 this wiki article.
h1. Openshift-java-client 2.0
The
https://github.com/openshift/openshift-java-client openshift-java-client is a java
library that allows java programs to talk to the OpenShift PaaS. It talks to the new
OpenShift
https://openshift.redhat.com/community/sites/default/files/documents/Open...
RESTful service and allows users to create, modify and destroy OpenShift resources:
domains, applications, cartridges, etc.It is hosted on github at
https://github.com/openshift/openshift-java-client
https://github.com/openshift/openshift-java-client and is available under the
http://www.eclipse.org/legal/epl-v10.html Ecilpse Public License.
h1. Requirements
* You need an account on OpenShift. (If you have no account yet, you'd have to
https://openshift.redhat.com/app/account/new signup first)
* Make sure you have an OpenShift domain and some applications (to get some meaningful
output)
h1. Launch Parameters
To keep the implemenation simple, the program we're about to write, only accept 2
parameters on the command line:
1. username
2. password
Launching the program with maven would look like this:
mvn test -Dusername=<username> -Dpassword=<password>
h1. Project Setup
We have to make sure that we have the
https://github.com/openshift/openshift-java-client
openshift-java-client available on our classpath. The client library is available at
https://github.com/openshift/openshift-java-client
https://github.com/openshift/openshift-java-client. You could clone the repo and build
your own jar by telling maven to "mvn clean package". But even simpler is to add
it as dependency to your
https://github.com/adietish/show-domain-info/blob/master/pom.xml#L8 pom, since the client
library is available from central as maven artifact:
<dependency>
<groupId>com.openshift</groupId>
<artifactId>openshift-java-client</artifactId>
<version>2.0.0</version>
</dependency>
h1. Connect to OpenShift
After we did some basic command line parameter parsing (that we skipped here on puropose)
we'd have to get in touch with the OpenShift PaaS. Using the
https://github.com/openshift/openshift-java-client openshift-java-client you'd tell
the
https://github.com/adietish/openshift-java-client/blob/master/src/main/ja...
OpenShiftConnectionFactory to create a connection for you. To create this connection
you'll have to provide some parameters:
h3. Server url
First of all you need to give it the url of the OpenShift PaaS. You may either hard code
it or ask the OpenShift configuration for it:
new OpenShiftConfiguration().getLibraServer()
The OpenShiftConfiguration class parses the OpenShift
http://docs.redhat.com/docs/en-US/OpenShift/2.0/html/Getting_Started_Guid...
configuration files you may have on your machine (~/.openshift/express.conf, C:/Documents
and Settings/user/.openshift/express.conf etc.). Those usually get created once you
installed the
http://docs.redhat.com/docs/en-US/OpenShift/2.0/html/User_Guide/chap-User...
rhc command line tools. In case you dont have any configuration yet,
https://github.com/adietish/openshift-java-client/blob/master/src/main/ja...
OpenShiftConfiguration holds some meaningful
https://github.com/openshift/openshift-java-client/blob/master/src/main/j...
defaults and points to
http://openshift.redhat.com http://openshift.redhat.com. On the
other hand, our configuration class also allows you to override settings by putting them
to the
https://github.com/openshift/openshift-java-client/blob/master/src/main/j...
system configuration as you would do if you want to switch to the OpenShift
https://openshift.redhat.com/community/wiki/getting-started-with-openshif...
liveCD temporarly. You would then simply add the following to the command line when
launching the java virtual machine:
-Dlibra_server=127.0.0.1
h3. Client id
The connection factory also requires you to provide your very own client id. This client
id is used when the openshift-java-client talks to the OpenShift REST service. It'll
get included in the user-agent string that tells OpenShift what client it is talking to.
We use the name of our example, "show-domain-info".
h3. Username and Password
Last but not least, you also have to give it your OpenShift credentials, the ones we got
from the command-line.
String openshiftServer = new OpenShiftConfiguration().getLibraServer();
IOpenShiftConnection connection = new
OpenShiftConnectionFactory().getConnection("show-domain-info",
"myuser", "mypassword", openshiftServer);
Once you have your connection you can get a
https://github.com/openshift/openshift-java-client/blob/master/src/main/j...
IUser instance which will allow you to create your domain and applications:
IUser user = connection.getUser();
h1. Print the User Infos
The first information block involves basic user informations. The username is available
from your
https://github.com/adietish/openshift-java-client/blob/master/src/main/ja...
IUser instance:
System.out.println("RHLogin:\t" + user.getRhlogin());
The other value that we want to display, the domain namespace, is accessible from your
OpenShift
https://github.com/adietish/openshift-java-client/blob/master/src/main/ja...
IDomain. We'll get it from the the user instance and print its id (namespace).
IDomain domain = user.getDefaultDomain();
System.out.println("Namespace:\t" + domain.getId());
h1. Print the Application Infos
The second portion printed by "rhc domain show" is reporting your users
applications. All OpenShift applications are held in a list within your domain. We simply
get the list and iterate over it's entries:
for (IApplication application : domain.getApplications()) {
The required values - name, framework, creation time etc. - are now available within each
https://github.com/adietish/openshift-java-client/blob/master/src/main/ja...
IApplication instance:
System.out.println(application.getName());
System.out.println("\tFramework:\t" + application.getCartridge().getName());
System.out.println("\tCreation:\t" + application.getCreationTime());
System.out.println("\tUUID:\t\t" + application.getUUID());
System.out.println("\tGit URL:\t" + application.getGitUrl());
System.out.println("\tPublic URL:\t" + application.getApplicationUrl() +
"\n");
An application may have several cartridges embedded (MySql, Postgres, Jenkins etc.). These
cartridges are reported by by the application. We get the list of cartridges and inspect
at each of them:
for(IEmbeddedCartridge cartridge : application.getEmbeddedCartridges()) {
We then want to know bout a cartridge's (
https://github.com/adietish/openshift-java-client/blob/master/src/main/ja...
IEmbeddedCartridge), name and url:
System.out.println("\t" + cartridge.getName() + " - URL:" +
cartridge.getUrl());
That is it - you now have an app that can talk to OpenShift via its
https://openshift.redhat.com/community/sites/default/files/documents/Open...
REST API. If you want to do more we also have this
https://community.jboss.org/docs/DOC-19828 article that shows how to perform actual
operations against your OpenShift applications. Hope you enjoy it and let us know what you
build with it!
--------------------------------------------------------------
Comment by going to Community
[
https://community.jboss.org/community/tools/blog/2012/08/24/show-domain-i...]