DIS-IP

From Gcube Wiki
Revision as of 13:03, 19 March 2007 by Andrea (Talk | contribs) (Usage Example)

Jump to: navigation, search

Introduction

The DISIP is a library that allows to publish groups of WS-Resource properties in either pull or push modality. To deliver its functionality, it relies on the implementation of the WS-ServiceGroup specification provided by the MDS Aggregator Framework. After a registration, the group of registered properties becomes an aggregator source for one or more remote DIS-IC instances (acting as aggregator sinks) that collect the data and made them available to other DILIGENT services. If a WS-Resource implements the PersistentResource interface for persistence operations, the Registration has to be renewed in the load() method each time the resource is restored from its persistent state.


For further details about the Aggregator Framework, please see http://www.globus.org/toolkit/docs/development/4.1.0/info/aggregator/index.html

For information about the syntax of the registration file to use in pull mode, please see http://www.globus.org/toolkit/docs/development/4.1.0/info/aggregator/aggregator-sources-query.html

For information about the syntax of the registration file to use in push mode, please see http://www.globus.org/toolkit/docs/development/4.1.0/info/aggregator/aggregator-sources-subscription.html


Implentation Overview

The DISIP is a static class that maintains a pool of "Managers" for each VO they have to acts. Using Credentials or service EPR it'is possible to instantiate the rigth Manager to use in the scope of a particular VO. The Manager used are of 4 Types:

  • Resource Manager : Used to publish/remove on the DIS-IC WS-resource properties documents
  • DILIGENTProfile Manager : Used to Register/Unregister to/from DIS-Registry DILIGENT Resource Profiles
  • Profile Manager : Used internally by the DIS-Registry to register profiles on the DIS-IC
  • Broker Manager : Used by a Notification producer to register/unregister topics to/from DIS-Broker

Resource Manager

The Resource Manager like the Alpha version of the DIS-IP expose the following methods:

  • registerPullMode(org.apache.axis.message.addressing.EndpointReferenceType epr, java.lang.String xmlPullFile, org.diligentproject.common.provider.DILIGENTPropertySet propSet)

Registers and publishes a group of WS-Resource properties into the DIS using the Pull Mode by creating an Anonymous Registration.

  • registerPullMode(org.apache.axis.message.addressing.EndpointReferenceType epr, java.lang.String xmlPullFile, org.diligentproject.common.provider.DILIGENTPropertySet propSet, java.lang.String name)

Registers and publishes a group of WS-Resource properties into the DIS using the Pull Mode by creating a Named Registration.


  • registerPushMode(org.apache.axis.message.addressing.EndpointReferenceType epr, java.lang.String xmlPushFile, org.diligentproject.common.provider.DILIGENTPropertySet propSet)

Registers and publishes a group of WS-Resource properties into the DIS using the Pull Mode by creating an Anonymous Registration. This Method can be used to register *ONLY* a WS-Resource-Properties on the DIS, cause the Globus AggregatorSubscriptionSink doesn't allows to retrieve more thatn one RP using push modality.

  • registerPushMode(org.apache.axis.message.addressing.EndpointReferenceType epr, java.lang.String xmlPushFile, org.diligentproject.common.provider.DILIGENTPropertySet propSet, java.lang.String name)

Registers and publishes a group of WS-Resource properties into the DIS using the Pull Mode by creating a Named Registration. This Method can be used to register *ONLY* a WS-Resource-Properties on the DIS, cause the Globus AggregatorSubscriptionSink doesn't allows to retrieve more than one RP using push modality.

  • remove(org.apache.axis.message.addressing.EndpointReferenceType epr)

Unregisters a group of WS-Resource properties from the DIS by destroying the related Anonymous Registration.

  • remove(org.apache.axis.message.addressing.EndpointReferenceType epr, java.lang.String name)

Unregisters a group of WS-Resource properties from the DIS by destroying the related Named Registration.

DILIGENTProfile Manager

This Manager allows registration of DILIGENT Profiles into the DIS, hiding calls to DIS-Registry Stubs. The information about the DL context is extracted from the Credentials if the Manager has been created with credentials object, if the object has been created

  • java.lang.String create(java.lang.String Profile)

This method allows registering a profile into DIS If the Manager has been created with credentials the DIS-Registry stubs are configured with the security enabled

  • void remove(java.lang.String ID)

Remove from the DIS the Profile corresponding to the given ID. If the Manager has been created with credentials the DIS-Registry stubs are configured with the security enabled

  • void update(java.lang.String profile, java.lang.String ID)

Update the Profile given the ID and the new profile. If the Manager has been created with credentials the DIS-Registry stubs are configured with the security enabled

  • java.lang.String removeDL(java.lang.String ID)

This method remove the DL from the Profile represented by the ID. If the Manager has been created with credentials the DIS-Registry stubs are configured with the security enabled. The DL to add is extracted from the certificate or the EPR ( reading the Running Instance Profile)


  • java.lang.String addDL(java.lang.String ID)

This method add the DL to the Profile represented by the ID. If the Manager has been created with credentials the DIS-Registry stubs are configured with the security enabled. The DL to add is extracted from the certificate or the EPR ( reading the Running Instance Profile)

Profile Manager

Broker Manager

The Broker Manager allows Notification Producers registering/unregistering topics to/from DIS-Broker of a particular VO. The following methods are both secure and unsecure ( in order to contact DIS-Broker of a secure/unsecure VO )

  • void registerToBroker(org.apache.axis.message.addressing.EndpointReferenceType sourceEpr, java.util.ArrayList<javax.xml.namespace.QName> topicsList)

Registers to DIS-Broker a list of topics to be used for brokered Notification

  • void registerToBroker(org.apache.axis.message.addressing.EndpointReferenceType sourceEpr, java.util.ArrayList<javax.xml.namespace.QName> topicsList, org.gridforum.jgss.ExtendedGSSCredential credential)

Registers to DIS-Broker a list of topics to be used for brokered Notification using AuthN/Authz

  • void unregisterToBroker(org.apache.axis.message.addressing.EndpointReferenceType sourceEpr, java.util.ArrayList<javax.xml.namespace.QName> topicsList)

Unregisters to DIS-Broker a list of topics to be used for brokered Notification

  • void unregisterToBroker(org.apache.axis.message.addressing.EndpointReferenceType sourceEpr, java.util.ArrayList<javax.xml.namespace.QName> topicsList, org.gridforum.jgss.ExtendedGSSCredential credential)

Unregisters to DIS-Broker a list of topics to be used for brokered Notification using AuthN/AuthZ

Dependencies

The DISIP exploits Authentication API functionalities to estract DL and VO info from Credentials

Usage Example

Create a profile reading the info of the DL context to insert from the EPR.


String profile =args[0];
BufferedReader in = new BufferedReader(new FileReader(profile));

String xmlfile ="";
while ((xmlfile = in.readLine()) != null ){                                                                                                                          
	file += xmlfile;                                                                                                                            
}
in.close();
EndpointReferenceType epr = new EndpointReferenceType();
epr.setAddress(new AttributedURI("http://dlib16.isti.cnr.it:8080/wsrf/services/diligentproject/informationservice/disregistry/DISRegistryFactoryService"));
System.out.println(DISIP.getDILIGENTProfileManager(null,epr).create(file));
	


--Andrea 13:14, 19 March 2007 (EET)