Cool Solutions

GroupWise Windermere – The Evolution for Admins & Developers

ukdtom

By:

July 10, 2013 4:05 pm

Reads: 2577

Comments:4

Score:5

About the article

This is the first article of more (As Windermere matures, more articles are to follow this one), that will talk about the new Administrator Interface as well as about the new programming API, that you can find in the next version of GroupWise, with the codename “Windermere”.

This article is based on a session I did at the Open-Horizons Summit 2013 in Budapest together with Václav Šamša.

This first article will show you a little bit of the new administration tool used with Windermere, as well as give you a small “teaser”, showing you how to create one small tool, that will allow you to get a list of users in a post-office using power shell. Also, we’ll be talking a bit about ReST and JSON.

The first article will be posted in both Open-Horizons Magazine as well as on Novell Cool-Solutions. The second article will dive deeper into programming, and will only be published in Open-Horizons Magazine.

Further articles will also only be part of the Open-Horizons Magazine. If you are not a subscriber of the magazine, then please go here: http://www.open-horizons.net/membership/

Note: All code and screen-shots are from a very early SDK-Beta version of Windermere, so this might change a bit in the final release.

Why the next version of GroupWise is so important

This is a topic where people tend to argue, but here’s my top reasons, seen both from an administrator as well as a developer perspective.

Changes to GroupWise Administration for Administrators

So far you might have either seen sneak previews at BrainShare, or heard about the changes from Novell representatives, but here’s the highlights that I personally find most important for administrators:

  • No more ConsoleOne
  • Instead, GroupWise Windermere will use a web-based administration tool
  • No more Directory dependency
  • Can use eDirectory for User/Group repository
  • Can use Active Directory for User/Group repository
  • No more directory schema extension needed
  • Can populate email address to a connected directory if needed
  • Can be administrated on everything from everywhere
  • 64 bit server platform only (SLES/OES and Windows)
  • New ways to update clients from a central place

Later in this article, we’ll take a look at the new administrative interface.

Changes to the install process

When you install GroupWise server, you’ll notice the first changes, since the install process has been simplified a lot, and the amount of information needed from you is cut down to a bare minimum.

As an outcome to the above, during the session I did @ the OH-Summit, the attendees installed a GroupWise System, a domain, a post-office, the needed agents, and created 5 users and two groups. They also installed the new Windermere Client, and logged in to send some test mails.

All in less than 40 minutes, and they had never seen Windermere before……..Talk about ROI :-)

(Side note: It scared me a little bit, because I feared I would run out of slides before the session was scheduled to end!)

Changes to GroupWise Administration for Developers

For developers, the changes I find most important are:

  • GroupWise Windermere comes with a ReST based API for administrative tasks
  • Allows developers to quickly build small tools/batch programs to manipulate with GroupWise backend
    • Like create small utilities that could let you do something like:
      • Generate a list of users
      • Mass create users
      • Manipulate Group Membership

        In short, everything you can do in ConsoleOne, can with Windermere be duplicated in rapid developed code, only your imagination will stop you.

  • No more need for an installed GroupWise client
  • Tools can be run from anywhere, on any device, despite its operating system

Installing the server

In this article, we’ll be using a Windows 2008 R2 server.

After launching setup.exe, you are met with a simple dialogue:

So…..Selecting GroupWise Server (64-bit) returns the following after the welcome screen:

Only a small question, about whether you want to install the GroupWise Windows Client installation to the server as well, and that’s simply it……..GroupWise does the rest!

After installation you’ll see the following dialogue:

In this article, we’ll install a brand new system.

And again, all questions from GroupWise are cut down to the bare minimum

And I could go on with this, but guess you get the picture…..ALL IS SO SIMPLE, THAT EVEN YOUR KIDS CAN INSTALL A GROUPWISE SYSTEM!

And with above statement, I was naturally doing what I normally do…I was making it a bit too much, but since I’m not a sales guy, but a tech guy, I can say and still look myself into the mirror, that the next version of GroupWise will knock your socks off, and when it comes down to the dialogues following above one, we start to talk about port numbers etc. but I’ll leave all that for Caledonia (Danita) to tell and guide us with.

After the initial configuration, you’ll be asked to login to the “real” administration console, that will look a bit like this:

And as you can see, all the options that you had in ConsoleOne are also present here.

Developing

As already said, the new admin API is a ReST based API, so what is ReST? ReST means: “Representational State Transfer”. It’s an architecture style, that can be used with http. It’s simple, and lightweight. For further information you could visit http://rest.elkstein.org/

ReST vs. SOAP

Let’s take a simple web service as an example: querying a phonebook application for the details of a given user. All we have is the user’s ID.

Using Web Services and SOAP, the request would look something like this:

<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">
 <soap:body pb="http://www.acme.com/phonebook">
  <pb:GetUserDetails>
   <pb:UserID>12345</pb:UserID>
  </pb:GetUserDetails>
 </soap:Body>
</soap:Envelope>

The entire shebang now has to be sent (using an HTTP POST request) to the server. The result is probably an XML file, but it will be embedded, as the “payload”, inside a SOAP response envelope.

And with REST?

The request would probably look like this:

http://www.acme.com/phonebook/UserDetails/12345

Data Representation

When data is going to be either sent to or received by the GroupWise Admin API, we have two ways.

  • XML
  • JSON

Since JSON (JavaScript Object Notation) is a lot simpler, then we are going to use that representation.

XML vs. JSON

XML:
<!DOCTYPE glossary PUBLIC "-//OASIS//DTD DocBook V3.1//EN">
 <glossary><title>example glossary</title>
  <GlossDiv><title>S</title>
   <GlossList>
    <GlossEntry ID="SGML" SortAs="SGML">
     <GlossTerm>Standard Generalized Markup Language</GlossTerm>
     <Acronym>SGML</Acronym>
     <Abbrev>ISO 8879:1986</Abbrev>
     <GlossDef>
      <para>A meta-markup language, used to create markup
languages such as DocBook.</para>
      <GlossSeeAlso OtherTerm="GML">
      <GlossSeeAlso OtherTerm="XML">
     </GlossDef>
     <GlossSee OtherTerm="markup">
    </GlossEntry>
   </GlossList>
  </GlossDiv>
 </glossary>
JSON:
{
    "glossary": {
        "title": "example glossary",
		"GlossDiv": {
            "title": "S",
			"GlossList": {
                "GlossEntry": {
                    "ID": "SGML",
					"SortAs": "SGML",
					"GlossTerm": "Standard Generalized Markup Language",
					"Acronym": "SGML",
					"Abbrev": "ISO 8879:1986",
					"GlossDef": {
                        "para": "A meta-markup language, used to create markup languages such as DocBook.",
						"GlossSeeAlso": ["GML", "XML"]
                    },
					"GlossSee": "markup"
                }
            }
        }
    }
}

So as seen, ReST is a lot easier to digest for humans, and data representation in JSON is the same.

So……Here’s a little V3 powerscript, that will list all the users in a post-office.

GetUsers

#*************** Open-Horizons Summit 2013 ***************************
#************** Get GroupWise Users PowerShell Script *****************
#************** Lets start with defining some needed variables ********
$myUri = "https://localhost:9999/gwadmin-service"
$myAdmin = "admin"
$myPwd = "Nov3ll"
$domainName="MyDomain"
$postOfficeName="po"
#********** Needed variables end *************************************
#********** Ignore homemade certs ************************************
add-type @"
using System.Net;
using System.Security.Cryptography.X509Certificates;
public class TrustAllCertsPolicy : ICertificatePolicy {
public bool CheckValidationResult(
     ServicePoint srvPoint, X509Certificate certificate,
     WebRequest request, int certificateProblem) {
     return true;
   }
 }
"@[System.Net.ServicePointManager]::CertificatePolicy = New-Object TrustAllCertsPolicy
#************** Ignore homemade certs end *****************************
#*** Create Credentials in the correct form (Base64 encoded and UTF8) *
$encoded = [System.Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes($myAdmin+":"+$myPwd ))  
$headers = @{Authorization = "Basic "+$encoded}
#************** Finish the URI **************************************************
$myUri += "/domains/" + $domainName + "/postoffices/" + $postOfficeName + "/users"
#************** Send the request ************************************************
$req = Invoke-RestMethod -Uri $myUri -Headers $headers -Method GET
#************** quickly save the respond as XML for further investigation ********
$req.save("output.xml")
#************** Show list of users found *****************************************
Write-Host $req.list.object.name

So in short, this power script sends a URL to GroupWise that looks like this:

https://localhost:9999/gwadmin-service/domains/MyDomain/postoffices/po/users

And will have a header with the credentials in them.

We then write the output to an XML file, as well as print it @ the console.

So, to summarize, we are really talking about the next step in evolution here, with the main points been, where some has been discussed in this article, and the rest will be topics of the following article(s):

  • 64 bit engines only
  • No directory dependency
  • Can be administrated from anywhere, even from a tablet
  • New improved Client Update routines
  • New improved Windows client
  • No more OFViews “Hell”
  • Better WebAccess, with AutoUpdate
  • Improved IMAP Support
  • Graded Administration Rights possible
  • New Admin API, that allows developers to rapidly create big/small tools, as seen in this article

That’s it for this article. In the next one, I’ll show some more code, as well as explain all the lines, and show you how to mass create users in a split sec from a csv file.

Best Regards

Tommy

VN:F [1.9.22_1171]
Rating: 5.0/5 (2 votes cast)
GroupWise Windermere - The Evolution for Admins & Developers, 5.0 out of 5 based on 2 ratings

Tags:
Categories: GroupWise, Technical

Disclaimer: This content is not supported by Novell. It was contributed by a community member and is published "as is." It seems to have worked for at least one person, and might work for you. But please be sure to test it thoroughly before using it in a production environment.

4 Comments

  1. By:geoffc

    How do you manipulate Client Settings via REST? How are they represented in the REST API?

    VN:F [1.9.22_1171]
    Rating: 0.0/5 (0 votes cast)
    • By:ukdtom

      Long story, and not for a simple reply, but if you start a subscription to the OH-Magazine, then I’ll write an article about it ;-)

      /Tommy

      VN:F [1.9.22_1171]
      Rating: 0.0/5 (0 votes cast)
  2. By:waiwaizp

    What about Object API? Will it also support the REST API?

    VN:F [1.9.22_1171]
    Rating: 0.0/5 (0 votes cast)

Comment

RSS