Difference between revisions of "Upload of new Software"

From Gcube Wiki
Jump to: navigation, search
(Software Upload Wizard)
m
 
(11 intermediate revisions by the same user not shown)
Line 1: Line 1:
SoftwareUploadWizard (''SUW'') widget allows a Resource Management Portlet super user to create a new Service resource through a step-by-step wizard.
+
[[Category: Administrator's Guide]]
 
+
{| align="right" width="230"
 +
| __TOC__
 +
|}
 
=Software Upload Wizard=
 
=Software Upload Wizard=
 +
SUW allows a VO admin to easily create new gCube software resources by registering them on the infrastructure, making them immediately available for deployment on a GHN.
 +
 
[[Image:SUW_button.png|frame|Where to start Software Upload Wizard in Resource Management Portlet]]
 
[[Image:SUW_button.png|frame|Where to start Software Upload Wizard in Resource Management Portlet]]
 
SUW application can be reached by accessing ''Resources Management Portlet'', which in time can be usually reached by accessing a VO area in the portal.
 
SUW application can be reached by accessing ''Resources Management Portlet'', which in time can be usually reached by accessing a VO area in the portal.
Line 28: Line 32:
 
* Web app package data: WebApp Package Name [packageName], Description [packageDescription], Version [packageVersion], entrypoints [entrypointList].
 
* Web app package data: WebApp Package Name [packageName], Description [packageDescription], Version [packageVersion], entrypoints [entrypointList].
 
* Web app package files:
 
* Web app package files:
** War archive: mandatory, only one allowed
+
** WebApp archive (''war''): mandatory, only one allowed
** Install script: optional, more than one allowed
+
** Install script (''sh''): optional, more than one allowed
** Uninstall script: optional, more than one allowed
+
** Uninstall script (''sh''): optional, more than one allowed
** Misc file: optional, more than one allowed
+
** Misc file (''sh''): optional, more than one allowed
  
 
'''Wizard output''':
 
'''Wizard output''':
Line 48: Line 52:
 
* Package data: package description [packageName], package description [packageDescription], package version [packageVersion].
 
* Package data: package description [packageName], package description [packageDescription], package version [packageVersion].
 
* Package files:
 
* Package files:
** Jar archive: mandatory, more than one allowed
+
** Java library (''jar''): mandatory, more than one allowed
** Install script: optional, more than one allowed
+
** Install script (''sh''): optional, more than one allowed
** Uninstall script: optional, more than one allowed
+
** Uninstall script (''sh''): optional, more than one allowed
** Misc file: optional, more than one allowed
+
** Misc file (''sh''): optional, more than one allowed
  
 
'''Wizard output''':
 
'''Wizard output''':
Line 60: Line 64:
  
 
===AnySoftware===
 
===AnySoftware===
TODO
+
Generic software that can run on the infrastructure.<br/>
 +
'''Important: This wizard is available only on production environment'''
 +
 
 +
'''Wizard input''':
 +
* Software data: software name, description, version
 +
* User provided files:
 +
** A tarball (''tar.gz'') containing executables: mandatory, only one allowed
 +
** Install script (''sh''): mandatory, more than one allowed
 +
** Uninstall script (''sh''): mandatory, more than one allowed
 +
** Reboot script (''sh''): optional, more than one allowed
 +
 
 +
'''Wizard output''':
 +
* A Software archive with a single package containing all user provided files and generated files is registered on a gcube-externals maven repository with classifier ''servicearchive''.
 +
* Newly created Service Profile registered on the IS.
  
 
===gCube Patch===
 
===gCube Patch===
Line 66: Line 83:
  
 
Wizard input:
 
Wizard input:
* User provided Patch archive ("tar.gz" archive): must include in the root directory a file named apply.sh and must not include on the root directory files names as the generated deliverables (README, INSTALL, etc.).
+
* User provided Patch archive (''tar.gz''): must include in the root directory a file named apply.sh and must not include on the root directory files names as the generated deliverables (README, INSTALL, etc.).
  
 
Wizard output:
 
Wizard output:
Line 79: Line 96:
 
* Patch Target Service data: Service class [targetServiceClass], Service Name [targetServiceName], Service Version [targetServiceVersion], Package Name [targetPackageName], Package Version [targetPackageVersion].
 
* Patch Target Service data: Service class [targetServiceClass], Service Name [targetServiceName], Service Version [targetServiceVersion], Package Name [targetPackageName], Package Version [targetPackageVersion].
 
* Plugin files:
 
* Plugin files:
** Jar Archive: mandatory, only one allowed
+
** Jar Archive (''jar''): mandatory, only one allowed
** Install script: optional, more than one allowed
+
** Install script (''sh''): optional, more than one allowed
** Uninstall script: optional, more than one allowed
+
** Uninstall script (''sh''): optional, more than one allowed
** Reboot script: optional, more than one allowed
+
** Reboot script (''sh''): optional, more than one allowed
** Misc file: optional, more than one allowed
+
** Misc file (''sh''): optional, more than one allowed
  
 
'''Wizard output'''
 
'''Wizard output'''
Line 91: Line 108:
  
 
===gCube WebService===
 
===gCube WebService===
TODO
+
A Web Service of the GCube Infrastructure.
 +
In this wizard the user will provide packages for the Main package (''gar'' file) and Stub package (''jar'' library).
 +
 
 +
'''Wizard input''':
 +
* Service data: Service name, description, version, service class
 +
* Main Package data (GAR package): name, description, version, PortTypes
 +
* Main Package files:
 +
**WebService archive (''GAR''): mandatory, only one instance allowed
 +
**Install script (''sh''): optional, only one instance allowed
 +
**Uninstall script (''sh''): optional, only one instance allowed
 +
**Reboot script (''sh''): optional, only one instance allowed
 +
**Misc file: optional, multiple instances allowed, allows any file extension.
 +
* Maven coordinates of the service artifact
 +
* Stubs package data: name, description, version
 +
* Stubs package files:
 +
** Java library (''jar''): mandatory, only one instance allowed
 +
* Stubs maven artifact coordinates
 +
 
 +
'''Wizard output''':
 +
* The stub package is registered as a maven artifact on the target maven repository.
 +
* MainPackage's GAR archive is uploaded on a maven repository as a primary artifact.
 +
* A Software archive with multiple packages containing all user provided files and generated files is uploaded on the target maven repository with classifier ''servicearchive''.
 +
* Generated Service Profile is registered on the IS.
  
 
===Software Registration===
 
===Software Registration===
This Wizard allows the user to register on the Software Gateway any software that is currently uploaded on any infrastructure Maven repository by providing the maven coordinates of the artifact.
+
This Wizard allows the user to register on the Software Gateway any software that is currently uploaded on any infrastructure available Maven repository by providing the maven coordinates of the artifact.
  
 
'''Wizard input''':
 
'''Wizard input''':
Line 102: Line 141:
 
* Newly createad Service Profile registered on the IS.
 
* Newly createad Service Profile registered on the IS.
  
==Deliverables creation rules==
+
==Registration process rules==
 +
 
 +
The registration process usually involves the upload of maven artifacts on one of the gCube maven repositories and the registration of a Service Profile on the IS. Software resources are usually registered and made available under the same VO scope (and included VREs) where the user is working on. The maven repository where the artifacts are stored depends usually depends on two factors:
 +
* Whether the software has been marked by the user as third party
 +
* The scope infrastructure where the user is working. If the scope is related to a production environment the target repository is ''gcube-releases'', otherwise is ''gcube-snapshots''.
 +
 
 +
In the following chapters are listed the rules that are applied for each managed software type on the topics of:
 +
* Service profile creation
 +
* Target maven repository selection
 +
* Maven pom.xml generation
 +
 
 +
Rules are described using a metalanguage where variables are enclosed in square brackets.
 +
Variables always refer to values passed by the user while compiling the wizard forms except for [workingScopeInfrastructure], which is inferred from the user portal session.
 +
 
 
===Web Application===
 
===Web Application===
 
'''Service Profile'''
 
'''Service Profile'''
Line 110: Line 162:
 
Service->Description:[serviceDescription]
 
Service->Description:[serviceDescription]
 
Service->Version: [serviceVersion]
 
Service->Version: [serviceVersion]
Service->Class: WebApp
+
Service->Class: [serviceClass]
  
 
WebApp package
 
WebApp package
Line 121: Line 173:
  
 
 
if ( ![isThirdParty] && scope infrastructure == "\d4science.research-infrastructures.eu")
+
if ( ![isThirdParty] && [workingScopeInfrastructure] == "\d4science.research-infrastructures.eu")
 
 
 
Service->Name:[serviceName]
 
Service->Name:[serviceName]
 
Service->Description:[serviceDescription]
 
Service->Description:[serviceDescription]
Service->Version: [serviceVersion]
+
Service->Version: 1.0.0
Service->Class: WebApp
+
Service->Class: [serviceClass]
  
 
WebApp package
 
WebApp package
Line 137: Line 189:
  
  
if ( ![isThirdParty] && scope infrastructure == "\gcube")
+
if ( ![isThirdParty] && [workingScopeInfrastructure] == "\gcube")
  
 
Service->Name:[serviceName]
 
Service->Name:[serviceName]
 
Service->Description:[serviceDescription]
 
Service->Description:[serviceDescription]
Service->Version: [serviceVersion]
+
Service->Version: 1.0.0
Service->Class: WebApp
+
Service->Class: [serviceClass]
 
 
 
WebApp package
 
WebApp package
Line 151: Line 203:
 
Package->Requirement: Target platform: Tomcat 6.0
 
Package->Requirement: Target platform: Tomcat 6.0
 
Package->Requirement: GHN Requirement: Java1.6
 
Package->Requirement: GHN Requirement: Java1.6
 +
</pre>
 +
 +
'''Target maven repository'''
 +
<pre>
 +
if ([isThirdParty])
 +
gcube-externals
 +
if (![isThirdParty] && [workingScopeInfrastructure] == "\d4science.research-infrastructures.eu")
 +
gcube-releases
 +
if (![isThirdParty] && [workingScopeInfrastructure] == "\gcube")
 +
gcube-snapshots
 
</pre>
 
</pre>
  
 
'''pom.xml'''
 
'''pom.xml'''
 
<pre>
 
<pre>
if (third party software)
+
if ([isThirdParty])
  
 
artifactId: [packageName]
 
artifactId: [packageName]
Line 161: Line 223:
 
version: [packageVersion]
 
version: [packageVersion]
  
if (non third party && scope infrastructure == "\d4science.research-infrastructures.eu")
+
if (![isThirdParty] && [workingScopeInfrastructure] == "\d4science.research-infrastructures.eu")
  
 
artifactId: [packageName]
 
artifactId: [packageName]
Line 167: Line 229:
 
version: [packageVersion]
 
version: [packageVersion]
  
if (non third party && scope infrastructure == "\gcube")
+
if (![isThirdParty] && [workingScopeInfrastructure] == "\gcube")
  
 
artifactId: [packageName]
 
artifactId: [packageName]
Line 173: Line 235:
 
version: [packageVersion]-SNAPSHOT
 
version: [packageVersion]-SNAPSHOT
 
</pre>
 
</pre>
 +
 
===Library===
 
===Library===
 
'''Service Profile'''
 
'''Service Profile'''
Line 184: Line 247:
  
 
One and only Software Package
 
One and only Software Package
Package->Name = [ packageName ]
+
Package->Name = [packageName]
Package->Description = [ packageDescription ]
+
Package->Description = [packageDescription]
Package->Version = [ packageVersion ]
+
Package->Version = [packageVersion]
Package->Type = "library"
+
Package->Type = library
  
if (![isThirdParty] && scope infrastructure == "\d4science.research-infrastructures.eu")
+
if (![isThirdParty] && [workingScopeInfrastructure] == "\d4science.research-infrastructures.eu")
  
 
Service->Name = [ serviceName ]
 
Service->Name = [ serviceName ]
Line 200: Line 263:
 
Package->Description = [ packageDescription ]
 
Package->Description = [ packageDescription ]
 
Package->Version = [ packageVersion ]
 
Package->Version = [ packageVersion ]
Package->Type = "library"
+
Package->Type = library
  
if (![isThirdParty] && scope infrastructure == "\gcube")
+
if (![isThirdParty] && [workingScopeInfrastructure] == "\gcube")
  
 
Service->Name = [ serviceName ]
 
Service->Name = [ serviceName ]
Line 213: Line 276:
 
Package->Description = [ packageDescription ]
 
Package->Description = [ packageDescription ]
 
Package->Version = [ packageVersion ]-SNAPSHOT
 
Package->Version = [ packageVersion ]-SNAPSHOT
Package->Type = "library"
+
Package->Type = library
 +
</pre>
 +
 
 +
'''Target maven repository'''
 +
<pre>
 +
if ( [isThirdParty] )
 +
gcube-externals
 +
 
 +
if ( ![isThirdParty] && [workingScopeInfrastructure] == "\d4science.research-infrastructures.eu")
 +
gcube-releases
 +
 
 +
if ( ![isThirdParty] && [workingScopeInfrastructure] == "\gcube")
 +
gcube-snapshots
 
</pre>
 
</pre>
  
 
'''pom.xml'''
 
'''pom.xml'''
 
<pre>
 
<pre>
If (third party software)
+
If ([isThirdParty])
 
artifactId: [packageName]
 
artifactId: [packageName]
 
groupId: org.gcube.externals
 
groupId: org.gcube.externals
 
version: [packageVersion]
 
version: [packageVersion]
if (non third party && scope infrastructure == "\d4science.research-infrastructures.eu")
+
if (![isThirdParty] && [workingScopeInfrastructure] == "\d4science.research-infrastructures.eu")
 
artifactId: [packageName]
 
artifactId: [packageName]
 
groupId: org.gcube.[serviceClass]
 
groupId: org.gcube.[serviceClass]
 
version: [packageVersion]
 
version: [packageVersion]
if (non third party && scope infrastructure == "\gcube")
+
if (![isThirdParty] && [workingScopeInfrastructure] == "\gcube")
 
artifactId: [packageName]
 
artifactId: [packageName]
 
groupId: org.gcube.[serviceClass]
 
groupId: org.gcube.[serviceClass]
Line 237: Line 312:
 
Service->Name = [ softwareName ]
 
Service->Name = [ softwareName ]
 
Service->Description = [ softwareDescription ]
 
Service->Description = [ softwareDescription ]
Service->Version = "1.0.0"
+
Service->Version = 1.0.0
 
Service->Class = External
 
Service->Class = External
  
One and only Software Package
+
One Software Package
 
Package->Name = [softwareName]
 
Package->Name = [softwareName]
 
Package->Description = [softwareDescription]
 
Package->Description = [softwareDescription]
 
Package->Version = [softwareVersion]
 
Package->Version = [softwareVersion]
Package->Type = "application"
+
Package->Type = application
  
 +
</pre>
 +
 +
'''Target maven repository'''
 +
<pre>
 +
gcube-externals
 +
</pre>
 +
 +
'''pom.xml'''
 +
<pre>
 +
artifactId: [ softwareName ]
 +
groupId: org.gcube.External
 +
version: [ softwareVersion ]
 
</pre>
 
</pre>
  
Line 253: Line 340:
 
Service->Name = [ softwareName ]
 
Service->Name = [ softwareName ]
 
Service->Description = [ softwareDescription ]
 
Service->Description = [ softwareDescription ]
Service->Version = "1.0.0"
+
Service->Version = 1.0.0
 
Service->Class = Patches
 
Service->Class = Patches
  
Line 260: Line 347:
 
Package->Description = [softwareDescription]
 
Package->Description = [softwareDescription]
 
Package->Version = [softwareVersion]
 
Package->Version = [softwareVersion]
Package->Type = "Application"
+
Package->Type = Application
 
</pre>
 
</pre>
  
 +
'''Maven Target Repository'''
 +
<pre>
 +
if ([workingScopeInfrasctructure] == "/gcube")
 +
maven-shaphots
 +
 +
if ([workingScopeInfrasctructure] == "/d4science.research-infrastructures.eu" )
 +
maven-releases
 +
</pre>
 
'''pom.xml'''
 
'''pom.xml'''
 
<pre>
 
<pre>
if (scope infrastructure == "/gcube")
+
if ([workingScopeInfrasctructure] == "/gcube")
 
artifactId: [ softwareName ]
 
artifactId: [ softwareName ]
 
groupId: org.gcube.patches
 
groupId: org.gcube.patches
 
version: [ softwareVersion ]-SNAPSHOT
 
version: [ softwareVersion ]-SNAPSHOT
if (scope infrastructure == "/d4science.research-infrastructures.eu" )
+
if ([workingScopeInfrasctructure] == "/d4science.research-infrastructures.eu" )
 
artifactId: [ softwareName ]
 
artifactId: [ softwareName ]
 
groupId: org.gcube.patches
 
groupId: org.gcube.patches
Line 283: Line 378:
 
Service->Class = [serviceClass]
 
Service->Class = [serviceClass]
  
if (scope infrastructure == "/gcube")
+
if ([workingScopeInfrasctructure] == "/gcube")
 
A "Plugin" Package
 
A "Plugin" Package
 
Package->Name = [softwareName]
 
Package->Name = [softwareName]
Line 296: Line 391:
 
Package->TargetService->Version = [targetPackageVersion]
 
Package->TargetService->Version = [targetPackageVersion]
  
if (scope infrastructure == "/d4science.research-infrastructures.eu" )
+
if ([workingScopeInfrasctructure] == "/d4science.research-infrastructures.eu" )
 
A "Plugin" Package
 
A "Plugin" Package
 
Package->Name = [softwareName]
 
Package->Name = [softwareName]
Line 308: Line 403:
 
Package->TargetService->Name = [targetPackageName]
 
Package->TargetService->Name = [targetPackageName]
 
Package->TargetService->Version = [targetPackageVersion]
 
Package->TargetService->Version = [targetPackageVersion]
 +
</pre>
 +
 +
'''Maven Target Repository'''
 +
 +
<pre>
 +
if ([workingScopeInfrasctructure] == "/gcube")
 +
maven-shaphots
 +
if ([workingScopeInfrasctructure] == "/d4science.research-infrastructures.eu" )
 +
maven-releases
 
</pre>
 
</pre>
  
 
'''pom.xml'''
 
'''pom.xml'''
 +
 
<pre>
 
<pre>
if (scope infrastructure == "/gcube")
+
if ([workingScopeInfrasctructure] == "/gcube")
 
artifactId: [ softwareName ]
 
artifactId: [ softwareName ]
 
groupId: org.gcube.[ serviceClass ]
 
groupId: org.gcube.[ serviceClass ]
 
version: [ softwareVersion ]-SNAPSHOT
 
version: [ softwareVersion ]-SNAPSHOT
if (scope infrastructure == "/d4science.research-infrastructures.eu" )
+
if ([workingScopeInfrasctructure] == "/d4science.research-infrastructures.eu" )
 
artifactId: [ softwareName ]
 
artifactId: [ softwareName ]
 
groupId: org.gcube.[ serviceClass ]
 
groupId: org.gcube.[ serviceClass ]
Line 350: Line 455:
 
Software Package Files
 
Software Package Files
 
Jar archive: mandatory, more than one allowed
 
Jar archive: mandatory, more than one allowed
Install script: optional, more than one allowed ???
 
Uninstall script: optional, more than one allowed ???
 
Misc file: optional, more than one allowed ???
 
  
 
Additional Packages
 
Additional Packages
Line 361: Line 463:
 
Package->Type = library
 
Package->Type = library
 
</pre>
 
</pre>
 +
 +
'''Maven Target Repository'''
 +
if ([workingScopeInfrasctructure] == "gcube")
 +
maven-shaphots
 +
if ([workingScopeInfrasctructure] == "d4science.research-infrastructures.eu" )
 +
maven-releases
 +
 
'''pom.xml'''
 
'''pom.xml'''
 
<pre>
 
<pre>
Line 394: Line 503:
 
Package->Files: User given filename (must end with '.jar')
 
Package->Files: User given filename (must end with '.jar')
 
else
 
else
Package->Files: [artifact id]-[artifact version].jar
+
Package->Files: [artifactId]-[artifactVersion].jar
 
</pre>
 
</pre>
 
'''pom.xml'''
 
'''pom.xml'''

Latest revision as of 09:27, 25 July 2013

Software Upload Wizard

SUW allows a VO admin to easily create new gCube software resources by registering them on the infrastructure, making them immediately available for deployment on a GHN.

Where to start Software Upload Wizard in Resource Management Portlet

SUW application can be reached by accessing Resources Management Portlet, which in time can be usually reached by accessing a VO area in the portal. Once Resources Management Portlet is open, SUW can be started by selecting the Software category and the click on the "Upload software" button on the menu panel on top of the main window of RMP.

Only users that own VO-Admin rights can start Software Upload Wizard.

Managed Software Types

SUW currently manages 6 defined software types and 1 special use case.

In most cases the user has to provide:

  • List of maven dependencies: groupId, artifactId and artifact version
  • Data for deliverables generation
    • Maintainers list: First and Last name, email, organization
    • List of software changes: ticket number and modification description
    • Software usage notes: installation notes, configuration notes, descriptive list of software dependencies , uninstallation notes
    • License

Web Application

A java application utilizing web browser technologies to accomplish one or more tasks over a network, through a web browser.
Third party applications are supported.

Wizard input:

  • If working under production scope: Third Party software [isThirdParty].
  • Service data: Service Name [serviceName], Description [serviceDescription], Version (Proposed: 1.0.0) [serviceVersion].
  • Web app package data: WebApp Package Name [packageName], Description [packageDescription], Version [packageVersion], entrypoints [entrypointList].
  • Web app package files:
    • WebApp archive (war): mandatory, only one allowed
    • Install script (sh): optional, more than one allowed
    • Uninstall script (sh): optional, more than one allowed
    • Misc file (sh): optional, more than one allowed

Wizard output:

  • Provided war archive registered on a maven repository as primary artifact.
  • Newly generated Service Archive registered on a maven repository as an artifact with classifier servicearchive.
  • Newly createad Service Profile registered on the IS.

Library

A collection of reusable java software packages.
Third party libraries are supported.

Wizard input:

  • If working under production scope: Third party software [isThirdParty].
  • Service data: Service Name [serviceName], Service Description [serviceDescription], Service Version [serviceVersion - default 1.0.0].
  • If not third party software user enters Service Class [serviceClass].
  • Package data: package description [packageName], package description [packageDescription], package version [packageVersion].
  • Package files:
    • Java library (jar): mandatory, more than one allowed
    • Install script (sh): optional, more than one allowed
    • Uninstall script (sh): optional, more than one allowed
    • Misc file (sh): optional, more than one allowed

Wizard output:

  • Jar archive registered on a maven repository as a primary artifact.
    • If multiple jars are provided by the user, these are repackaged into a single archive.
  • Newly generated Service Archive, containing all the provided jars, registered on a maven repository with classifier servicearchive.
  • Newly createad Service Profile registered on the IS.

AnySoftware

Generic software that can run on the infrastructure.
Important: This wizard is available only on production environment

Wizard input:

  • Software data: software name, description, version
  • User provided files:
    • A tarball (tar.gz) containing executables: mandatory, only one allowed
    • Install script (sh): mandatory, more than one allowed
    • Uninstall script (sh): mandatory, more than one allowed
    • Reboot script (sh): optional, more than one allowed

Wizard output:

  • A Software archive with a single package containing all user provided files and generated files is registered on a gcube-externals maven repository with classifier servicearchive.
  • Newly created Service Profile registered on the IS.

gCube Patch

One or more bug fixes for a gCube component.

Wizard input:

  • User provided Patch archive (tar.gz): must include in the root directory a file named apply.sh and must not include on the root directory files names as the generated deliverables (README, INSTALL, etc.).

Wizard output:

  • A new tar.gz archive is generated including all the files provided with the user uploaded Patch archive, the generated deliverables (Service profile,README, INSTALL, etc.) and the service profile.
  • The generated tar.gz is uploaded on a maven repository with classifier servicearchive.

gCube Plugin

A gCube Plugin is a a set of software components that extends the functionalities of a gCube component.

Wizard input:

  • Software data: Software Name [softwareName], Description [softwareDescription], Version [softwareVersion], Service class [serviceClass]
  • Patch Target Service data: Service class [targetServiceClass], Service Name [targetServiceName], Service Version [targetServiceVersion], Package Name [targetPackageName], Package Version [targetPackageVersion].
  • Plugin files:
    • Jar Archive (jar): mandatory, only one allowed
    • Install script (sh): optional, more than one allowed
    • Uninstall script (sh): optional, more than one allowed
    • Reboot script (sh): optional, more than one allowed
    • Misc file (sh): optional, more than one allowed

Wizard output

  • The user-uploaded jar archive is registered on the maven target repository as a primary artifact
  • A Software archive with a single package containing all user provided files and generated files is registered on the maven target repository with classifier servicearchive
  • Newly created Service Profile is registered on the IS

gCube WebService

A Web Service of the GCube Infrastructure. In this wizard the user will provide packages for the Main package (gar file) and Stub package (jar library).

Wizard input:

  • Service data: Service name, description, version, service class
  • Main Package data (GAR package): name, description, version, PortTypes
  • Main Package files:
    • WebService archive (GAR): mandatory, only one instance allowed
    • Install script (sh): optional, only one instance allowed
    • Uninstall script (sh): optional, only one instance allowed
    • Reboot script (sh): optional, only one instance allowed
    • Misc file: optional, multiple instances allowed, allows any file extension.
  • Maven coordinates of the service artifact
  • Stubs package data: name, description, version
  • Stubs package files:
    • Java library (jar): mandatory, only one instance allowed
  • Stubs maven artifact coordinates

Wizard output:

  • The stub package is registered as a maven artifact on the target maven repository.
  • MainPackage's GAR archive is uploaded on a maven repository as a primary artifact.
  • A Software archive with multiple packages containing all user provided files and generated files is uploaded on the target maven repository with classifier servicearchive.
  • Generated Service Profile is registered on the IS.

Software Registration

This Wizard allows the user to register on the Software Gateway any software that is currently uploaded on any infrastructure available Maven repository by providing the maven coordinates of the artifact.

Wizard input:

  • Maven artifact coordinates.

Wizard output:

  • Newly createad Service Profile registered on the IS.

Registration process rules

The registration process usually involves the upload of maven artifacts on one of the gCube maven repositories and the registration of a Service Profile on the IS. Software resources are usually registered and made available under the same VO scope (and included VREs) where the user is working on. The maven repository where the artifacts are stored depends usually depends on two factors:

  • Whether the software has been marked by the user as third party
  • The scope infrastructure where the user is working. If the scope is related to a production environment the target repository is gcube-releases, otherwise is gcube-snapshots.

In the following chapters are listed the rules that are applied for each managed software type on the topics of:

  • Service profile creation
  • Target maven repository selection
  • Maven pom.xml generation

Rules are described using a metalanguage where variables are enclosed in square brackets. Variables always refer to values passed by the user while compiling the wizard forms except for [workingScopeInfrastructure], which is inferred from the user portal session.

Web Application

Service Profile

if ( [isThirdParty] )
	Service->Name:[serviceName]
	Service->Description:[serviceDescription]
	Service->Version: [serviceVersion]
	Service->Class: [serviceClass]

	WebApp package
		Package->Name: [packageName]
		Package->Description: [packageDescription]
		Package->Version: [packageVersion]
		Package->Type: webapplication
		Package->Requirement: Target platform: Tomcat 6.0
		Package->Requirement: GHN Requirement: Java1.6

	
if ( ![isThirdParty] && [workingScopeInfrastructure] == "\d4science.research-infrastructures.eu")
	
	Service->Name:[serviceName]
	Service->Description:[serviceDescription]
	Service->Version: 1.0.0
	Service->Class: [serviceClass]

	WebApp package
		Package->Name: [packageName]
		Package->Description: [packageDescription]
		Package->Version: [packageVersion]
		Package->Type: webapplication
		Package->Requirement: Target platform: Tomcat 6.0
		Package->Requirement: GHN Requirement: Java1.6


if ( ![isThirdParty] && [workingScopeInfrastructure] == "\gcube")

	Service->Name:[serviceName]
	Service->Description:[serviceDescription]
	Service->Version: 1.0.0
	Service->Class: [serviceClass]
	
	WebApp package
		Package->Name: [packageName]
		Package->Description: [packageDescription]
		Package->Version: [packageVersion]-SNAPSHOT
		Package->Type: webapplication
		Package->Requirement: Target platform: Tomcat 6.0
		Package->Requirement: GHN Requirement: Java1.6

Target maven repository

if ([isThirdParty])
	gcube-externals
if (![isThirdParty] && [workingScopeInfrastructure] == "\d4science.research-infrastructures.eu")
	gcube-releases
if (![isThirdParty] && [workingScopeInfrastructure] == "\gcube")
	gcube-snapshots

pom.xml

if ([isThirdParty])

	artifactId:	[packageName]
	groupId: 	org.gcube.externals
	version:	[packageVersion]

if (![isThirdParty] && [workingScopeInfrastructure] == "\d4science.research-infrastructures.eu")

	artifactId:	[packageName]
	groupId: 	org.gcube.webapps
	version:	[packageVersion]

if (![isThirdParty] && [workingScopeInfrastructure] == "\gcube")

	artifactId:	[packageName]
	groupId: 	org.gcube.webapps
	version:	[packageVersion]-SNAPSHOT

Library

Service Profile

if ([isThirdParty])

	Service->Name 		= [ serviceName ]
	Service->Description 	= [ serviceDescription ]
	Service->Version 	= [ serviceVersion ]
	Service->Class 		= External

	One and only Software Package
		Package->Name		= [packageName]
		Package->Description	= [packageDescription]
		Package->Version	= [packageVersion]
		Package->Type		= library

if (![isThirdParty] && [workingScopeInfrastructure] == "\d4science.research-infrastructures.eu")

	Service->Name 		= [ serviceName ]
	Service->Description 	= [ serviceDescription ]
	Service->Version 	= [ serviceVersion ]
	Service->Class 		= [ serviceClass ]

	One and only Software Package
		Package->Name		= [ packageName ]
		Package->Description	= [ packageDescription ]
		Package->Version	= [ packageVersion ]
		Package->Type		= library

if (![isThirdParty] && [workingScopeInfrastructure] == "\gcube")

	Service->Name 		= [ serviceName ]
	Service->Description 	= [ serviceDescription ]
	Service->Version 	= [ serviceVersion ]
	Service->Class 		= [ serviceClass ]

	One and only Software Package
		Package->Name		= [ packageName ]
		Package->Description	= [ packageDescription ]
		Package->Version	= [ packageVersion ]-SNAPSHOT
		Package->Type		= library

Target maven repository

if ( [isThirdParty] )
	gcube-externals

if ( ![isThirdParty] && [workingScopeInfrastructure] == "\d4science.research-infrastructures.eu")
	gcube-releases

if ( ![isThirdParty] && [workingScopeInfrastructure] == "\gcube")
	gcube-snapshots

pom.xml

If ([isThirdParty])
	artifactId: 	[packageName]
	groupId: 	org.gcube.externals
	version: 	[packageVersion]
if (![isThirdParty] && [workingScopeInfrastructure] == "\d4science.research-infrastructures.eu")
	artifactId: 	[packageName]
	groupId: 	org.gcube.[serviceClass]
	version: 	[packageVersion]
if (![isThirdParty] && [workingScopeInfrastructure] == "\gcube")
	artifactId: 	[packageName]
	groupId: 	org.gcube.[serviceClass]
	version: 	[packageVersion]-SNAPSHOT

AnySoftware

Service Profile

Service->Name = [ softwareName ]
Service->Description = [ softwareDescription ]
Service->Version = 1.0.0
Service->Class = External

One Software Package
	Package->Name		= [softwareName]
	Package->Description	= [softwareDescription]
	Package->Version	= [softwareVersion]
	Package->Type		= application

Target maven repository

gcube-externals

pom.xml

artifactId: [ softwareName ]
groupId: org.gcube.External
version: [ softwareVersion ]

gCube Patch

Service Profile

Service->Name = [ softwareName ]
Service->Description = [ softwareDescription ]
Service->Version = 1.0.0
Service->Class = Patches

One and only Software Package
	Package->Name		= [softwareName]
	Package->Description	= [softwareDescription]
	Package->Version	= [softwareVersion]
	Package->Type		= Application

Maven Target Repository

if ([workingScopeInfrasctructure] == "/gcube")
	maven-shaphots

if ([workingScopeInfrasctructure] == "/d4science.research-infrastructures.eu" )
	maven-releases

pom.xml

if ([workingScopeInfrasctructure] == "/gcube")
	artifactId: [ softwareName ]
	groupId: org.gcube.patches
	version: [ softwareVersion ]-SNAPSHOT
if ([workingScopeInfrasctructure] == "/d4science.research-infrastructures.eu" )
	artifactId: [ softwareName ]
	groupId: org.gcube.patches
	version: [ softwareVersion ]

gCube Plugin

Service Profile

Service->Name = [ softwareName ]
Service->Description = [ softwareDescription ]
Service->Version = 1.0.0
Service->Class = [serviceClass]

if ([workingScopeInfrasctructure] == "/gcube")
A "Plugin" Package
	Package->Name		= [softwareName]
	Package->Description	= [softwareDescription]
	Package->Version	= [softwareVersion]-SNAPSHOT
	Package->Type		= Plugin	

	Package->TargetService->Service->Class 		= [targetServiceClass]
	Package->TargetService->Service->Name	 	= [targetServiceName]
	Package->TargetService->Service->Version	= [targetServiceVersion]
	Package->TargetService->Name			= [targetPackageName]
	Package->TargetService->Version			= [targetPackageVersion]

if ([workingScopeInfrasctructure] == "/d4science.research-infrastructures.eu" )
A "Plugin" Package
	Package->Name		= [softwareName]
	Package->Description	= [softwareDescription]
	Package->Version	= [softwareVersion]
	Package->Type		= Plugin	

	Package->TargetService->Service->Class 		= [targetServiceClass]
	Package->TargetService->Service->Name	 	= [targetServiceName]
	Package->TargetService->Service->Version	= [targetServiceVersion]
	Package->TargetService->Name			= [targetPackageName]
	Package->TargetService->Version			= [targetPackageVersion]

Maven Target Repository

if ([workingScopeInfrasctructure] == "/gcube")
	maven-shaphots
if ([workingScopeInfrasctructure] == "/d4science.research-infrastructures.eu" )
	maven-releases

pom.xml

if ([workingScopeInfrasctructure] == "/gcube")
	artifactId: [ softwareName ]
	groupId: org.gcube.[ serviceClass ]
	version: [ softwareVersion ]-SNAPSHOT
if ([workingScopeInfrasctructure] == "/d4science.research-infrastructures.eu" )
	artifactId: [ softwareName ]
	groupId: org.gcube.[ serviceClass ]
	version: [ softwareVersion ]

gCube WebService

Service Profile

Service->Name = [ serviceName ]
Service->Description = [ serviceDescription ]
Service->Version = [ serviceVersion ]
Service->Class = [ serviceClass ]

One Main Package
	Main Package
		Package->Name		= [mainPackageName]
		Package->Description	= [mainPackageDescription]
		Package->Version	= [mainPackageVersion]

		GarArchive: [Uploaded Gar Archive Filename]
		PortType: [portTypeName]	//One or more

	Main Package Files
		Gar Archive

One Stubs Package
	Software Package
		Package->Name		= [stubsPackageName]
		Package->Description	= [stubsPackageDescription]
		Package->Version	= [stubsPackageVersion]
		Package->Type		= library	
	Software Package Files
		Jar archive:		mandatory, more than one allowed

Additional Packages
	Software Package
		Package->Name		= [additionalPackageName]
		Package->Description	= [additionalPackageDescription]
		Package->Version	= [additionalPackageVersion]
		Package->Type		= library

Maven Target Repository if ([workingScopeInfrasctructure] == "gcube") maven-shaphots if ([workingScopeInfrasctructure] == "d4science.research-infrastructures.eu" ) maven-releases

pom.xml

Main Package
	artifactId: [ mainPackageName.toLowerCase() ]
	groupId: org.gcube.[serviceClass]
	version: [ mainPackageVersion ]

Stubs Package
	artifactId: [ stubsPackageName.toLowerCase() ]
	groupId: org.gcube.[serviceClass]
	version: [ stubsPackageVersion ]

Additional Package
	artifactId: [ additionalPackageName.toLowerCase() ]
	groupId: org.gcube.[serviceClass]
	version: [ additionalPackageVersion ]

Software Registration

Service Profile

Service->Name: 		[artifactId]
Service->Version: 	1.0.0
Service->Class: 	ExternalSoftware

Software Package
	Package->Name:  	[artifactId]
	Package->Version: 	[artifactVersion]
	Package->Type: 		Library

If ([isSnapshot]==true)
	Package->Files: User given filename (must end with '.jar')
else
	Package->Files: [artifactId]-[artifactVersion].jar

pom.xml

artifactId: [artifactId]
groupId: [artifactGroupId]
if ([isSnapshot]==true)
	Version: [artifactVersion]-SNAPSHOT
else 
	Version: [artifactVersion]