Slides for Max Vohlken`s presentation about the Lyo
Download
Report
Transcript Slides for Max Vohlken`s presentation about the Lyo
®
IBM Software Group
Perl Modules for OSLC Programming
Max Vohlken
Release Engineer, IBM Rational Software
Email: [email protected]
IBM Software Group | Rational software
Agenda
Introduction
What services do the modules provide?
The layout of the modules
Module Overview
RTC Query Example
RTC Work Item Update Example
Sample clients
Runtime requirements
What are the next steps?
Live demo
Slide 2
IBM
IBM Software Group | Rational software
Introduction
Hello my name is Max Vohlken.
I’m a release engineer for ClearCase and ClearQuest.
My main responsibility is the automation used to build these two products.
My automation tool of choice is Perl.
I’ve been programming in Perl for over 15 years.
Our development organization in the progress of migrating from using
ClearQuest for defect tracking to using Rational TeamConcert(RTC).
With ClearQuest we have automation that needed to be re-implemented
using RTC. This automation was written in Perl.
In my quest to re-implement this automation I’ve created a set of Perl
modules to make interacting with RTC easier.
The modules use OSLC to interact with RTC.
Based on what I learned writing the RTC integration I have also created a
similar set of modules for interacting with ClearQuest.
Slide 3
IBM
IBM Software Group | Rational software
IBM
What services do the modules provide?
The goal of the modules is to query and update work items in RTC and change
requests in CQ.
The modules are based on an existing REST module called REST::Client. This
module provided the standard REST methods of GET, PUT, PATCH, POST, and
DELETE that OSLC uses.
The modules implement the authentication scheme needed to access restricted
resources in RTC and CQ.
– For RTC it implements the form based authentication scheme.
– For CQ it implements basic authentication.
The modules implement the service discovery mechanism as documented by each
products OSLC specification to discover the URL to use to execute dynamic
queries.
Slide 4
IBM Software Group | Rational software
IBM
The layout of the modules
After trying to implement these modules for both RTC and CQ I’ve come up with
this convention for the different modules. The modules are written using Perl
object oriented architecture.
Lyo/OSLC/<product>/<domain>.pm
– Class that implements a client for a particular OSLC domain of a product.
Lyo/OSLC/<product>.pm
– Class that implements methods that are common to the product and can be shared by the
multiple domains.
Lyo/OSLC.pm
– Base class for all OSLC modules. Methods common to all products go here.
Lyo/OSLC/RDF.pm
– Class used to convert RDF formatted responses from the OSLC provider into equivalent
Perl data structures. The methods that query the OSLC provider return an object of this
type.
Slide 5
IBM Software Group | Rational software
The modules
Lyo/OSLC.pm
– Methods
• credentials($user, $password)
Lyo/OSLC/RTC.pm
– Implements form based authentication
– Methods
• rootservices()
Lyo/OSLC/CQ.pm
– Implements basic authentication
– Methods
• rootservices()
Slide 6
IBM
IBM Software Group | Rational software
The modules
Lyo/OSLC/RDF.pm
– Module for dealing with the RDF/XML formatted responses
– Methods
• new ( $rdfxml, [%config] )
• Init ( $rdfxml )
• Add ( $rdfxml)
• QueryResults ( [$resultAR] )
• QueryResultsByTitle ( )
• QueryResultsByIdentifier ( )
• Descriptions ( )
• Links ( )
• Namespaces ( )
• QueryResponse ( )
• UpdateByTitle ( )
• UpdateByIdentifier ( )
• ResolveReferences ( $force )
• InlineRDFReferences ( )
Slide 7
IBM
IBM Software Group | Rational software
The modules
Lyo/OSLC/RTC/CM.pm
– Methods
• serviceProviders ()
• servicesURL ($projectArea)
• services ($projectArea)
• projectAreaContextID ($projectArea)
• queryCapability ($projectArea, $queryCapability)
• queryCapabilityURL ($projectArea, $queryCapability)
• oslcWhere ($projectArea, $queryCapability, $where, $properties)
• workitem ($workItemNumber, $propertiesAR)
• workitemUpdate ($workItemNumber, $newValuesAR, $verbose)
• enumeration ($projectArea, $enum)
• enumerationItem ( $projectArea, $enum, $name )
• workflow ($projectArea, $type, $name, $keyAttr)
• states ($projectArea, $stateType)
• state ( $projectArea, $enum, $name )
• resolutions ($projectArea, $resolutionType)
• resolution ( $projectArea, $resolutionType, $name )
• iterations ()
• iteration ($title)
Slide 8
IBM
IBM Software Group | Rational software
The modules
Lyo/OSLC/CQ/CM.pm
– Methods
• serviceProviders ()
• servicesURL ($userDB)
• services ($userDB)
• projectAreaContextID ($userDB)
• queryCapability ($userDB, $queryCapability)
• queryCapabilityURL ($userDB, $queryCapability)
• oslcWhere ($userDB, $queryCapability, $where, $properties)
• changeRequest ( $changeRequestNumber, $propertiesAR )
• changeRequestUpdate ( $changeRequestNumber, $newValuesAR, $verbose )
Slide 9
IBM
IBM Software Group | Rational software
RTC Query Example
my $client = Lyo::OSLC::RTC::CM->new;
$client->credentials($opt{'user'}, $opt{'password'});
$client->setBaseURI($opt{'baseuri'});
my $rdfOjbect = $client->oslcWhere(
$opt{'project'}, ‘Change request queries',
$opt{'oslcwhere'}, $opt{'property'}
);
my $arrayRef = $rdfObject->QueryResults();
foreach my $ref (@$arrayRef) {
– my $id = $ref->{‘dcterms:identifier’}->{‘content’};
– my $description = $ref->{‘dcterms:description’}->{‘content’};
}
Slide 10
IBM
IBM Software Group | Rational software
IBM
RTC Work Item Update Example
my $client = Lyo::OSLC::RTC::CM->new;
$client->credentials($opt{'user'}, $opt{'password'});
$client->setBaseURI($opt{'baseuri'});
my @updates = (
– [‘dcterms:description’ => ‘Updated description’],
– [‘rtc_ext:CustomField1->{rdf:resource}’ =>
‘https://rtc.mydomain.com/jazz/oslc/enumerations/_ABCDEFG/Model/Model.literal.l2’],
);
$client->workitemUpdate($opt{'workitem'}, \@updates, 1)
Slide 11
IBM Software Group | Rational software
Scripts I’ve written to exercise the modules
rtcclient
– Usage: rtcclient [-h]
–
rtcclient -baseuri <RTC jazz url> -user <user> -password <password> <url>
–
rtcclient -baseuri <RTC jazz url> -user <user> -password <password> \
–
-project <project area> \
–
-oslcwhere <simple query> \
–
[-property <property> ...]
–
rtcclient -baseuri <RTC jazz url> -user <user> -password <password> \
–
-workitem <work item #> \
–
[-property <property> ...] \
–
[-update <field>=<value> ...]
–
rtcclient -baseuri <RTC jazz url> -user <user> -password <password> \
–
-project <project area> \
–
-enum <enum>
–
rtcclient -baseuri <RTC jazz url> -user <user> -password <password> \
–
-project <project area> \
–
-state <state>
–
rtcclient -baseuri <RTC jazz url> -user <user> -password <password> \
–
-project <project area> \
–
-resolution <resolution>
Slide 12
IBM
IBM Software Group | Rational software
Scripts I’ve written to exercise the modules (continued)
cqclient
– Usage: cqclient [-h]
–
cqclient -baseuri <CQ oslc url> -user <user> -password <password> <url>
–
cqclient -baseuri <CQ oslc url> -user <user> -password <password> \
–
-db <CQ user db> \
–
-oslcwhere <simple query> \
–
[-property <property> ...]
–
cqclient -baseuri <CQ oslc url> -user <user> -password <password> \
–
-db <CQ user db> \
–
-cr <change request #> \
–
[-property <property> ...] \
–
[-update <field>=<value> ...]
Slide 13
IBM
IBM Software Group | Rational software
Runtime Requirements
perl or ratlperl
Direct module dependencies
– LWP::UserAgent
– URI
– HTTP::Cookies
– Data::Dumper
– XML::Simple (not shipped with ratlperl)
– REST::Client (not shipped with ratlperl)
– All of the other modules these modules depend on.
Slide 14
IBM
IBM Software Group | Rational software
What are the next steps?
Add the ability to create new change management records
Add a more robust RDF handling library
Open the modules up for contributions from the community
Slide 15
IBM
IBM Software Group | Rational software
IBM
Live Demo
myrtcclient -workitem 32271 -prop dcterms:title -prop rtc_ext:PatchBundle
myrtcclient -workitem 32271 -update “dcterms:description=apar for automation
testing(3)”
Slide 16
IBM Software Group | Rational software
Q&A
Slide 17
IBM