Difference between revisions of "GHN Manager"

From Gcube Wiki
Jump to: navigation, search
(Implementation overview)
Line 13: Line 13:
 
The service exposes a single port-type (<em>GHNManagerPortType</em>) providing the following operations to manipulate the gHN and the hosted Running Instances:
 
The service exposes a single port-type (<em>GHNManagerPortType</em>) providing the following operations to manipulate the gHN and the hosted Running Instances:
  
==== Operations ====
+
* '''addScope''' – takes as input a valid scope expression; the scope is assigned to the gHN
The main functions supported by gHNManager (thanks to the support of the gCube Application Framework and its scope management) are:
+
* '''removeScope''' – takes as input a valid scope expression; the scope is removed from the gHN
 +
* '''addRItoScope''' – takes as input a valid scope expression, a service name and a service class; the scope is assigned to the local instance identified by the given name and class.
 +
* '''removeRIScope''' – takes as input a valid scope expression, a service name and a service class; the scope is removed from the local instance identified by the given name and class.
 +
* '''shutdown()'''– takes as input a set of non-mandatory options; as basic behavior it shutdowns the gHN, then, depending on the input options:
 +
:: if ''RESTART = True'' the container is restarted
 +
:: if ''CLEAN = True'' the gHN state is cleaned
 +
 
 +
==== Requesting a gHN shutdown ====
 +
 
 +
<src lang="java">
 +
import org.gcube.common.vremanagement.ghnmanager.stubs.GHNManagerPortType;
 +
import org.gcube.common.vremanagement.ghnmanager.stubs.ShutdownOptions;
 +
import org.gcube.common.vremanagement.ghnmanager.stubs.service.GHNManagerServiceAddressingLocator;
 +
...
 +
 
 +
GCUBESecurityManagerImpl managerSec = new GCUBESecurityManagerImpl() {
 +
public boolean isSecurityEnabled() {return false;}
 +
};
 +
 
 +
EndpointReferenceType endpoint = new EndpointReferenceType();
 +
try {
 +
 +
endpoint.setAddress(new Address("http://" +args[0] + ":" + args[1]+"/wsrf/services/gcube/common/vremanagement/GHNManager"));         
 +
GHNManagerServiceAddressingLocator locator = new GHNManagerServiceAddressingLocator();
 +
 +
GHNManagerPortType pt = locator.getGHNManagerPortTypePort(endpoint);
 +
pt = GCUBERemotePortTypeContext.getProxy(pt,GCUBEScope.getScope(args[2]),managerSec);
 +
ShutdownOptions options = new ShutdownOptions();
 +
options.setRestart(false);
 +
options.setClean(false);
 +
pt.shutdown(options);
 +
 
 +
} catch (Exception e) {
 +
logger.error ("FAILED to shutdown", e);
 +
}
 +
</src>
 +
 
 +
==== Requesting a gHN shutdown with the security enabled ====
 +
 
 +
<src lang="java">
 +
import org.gcube.common.vremanagement.ghnmanager.stubs.GHNManagerPortType;
 +
import org.gcube.common.vremanagement.ghnmanager.stubs.ShutdownOptions;
 +
import org.gcube.common.vremanagement.ghnmanager.stubs.service.GHNManagerServiceAddressingLocator;
 +
...
 +
 
 +
GCUBESecurityManagerImpl managerSec = new GCUBESecurityManagerImpl() {
 +
public boolean isSecurityEnabled() {return true;}
 +
};
 +
 
 +
EndpointReferenceType endpoint = new EndpointReferenceType();
 +
try {
 +
 +
endpoint.setAddress(new Address("http://" +args[0] + ":" + args[1]+"/wsrf/services/gcube/common/vremanagement/GHNManager"));         
 +
GHNManagerServiceAddressingLocator locator = new GHNManagerServiceAddressingLocator();
 +
 +
GHNManagerPortType pt = locator.getGHNManagerPortTypePort(endpoint);
 +
 +
if (isSecurityEnabled) {
 +
logger.info("Loading proxy from " + args[4]);
 +
managerSec.useCredentials(ProxyUtil.loadProxyCredentials(args[4]));
 +
        //setting credentials on stubs, by specifying authN mode and Delegation Mode
 +
managerSec.setSecurity(pt, GCUBESecurityManager.AuthMode.PRIVACY, GCUBESecurityManager.DelegationMode.FULL);
 +
}
 +
pt = GCUBERemotePortTypeContext.getProxy(pt,GCUBEScope.getScope(args[2]),managerSec);
 +
ShutdownOptions options = new ShutdownOptions();
 +
options.setRestart(false);
 +
options.setClean(false);
 +
pt.shutdown(options);
 +
 
 +
} catch (Exception e) {
 +
logger.error ("FAILED to shutdown", e);
 +
}
 +
</src>
  
* '''addScope()''' – takes as input a valid scope expression; the scope is assigned to the gHN
 
* '''removeScope()''' – takes as input a valid scope expression; the scope is removed from the gHN
 
* '''addRItoScope()''' – takes as input a valid scope expression, a service name and a service class; the scope is assigned to the local instance identified by the given name and class.
 
* '''removeRIScope()''' – takes as input a valid scope expression, a service name and a service class; the scope is removed from the local instance identified by the given name and class.
 
* '''shutdown()'''– takes as input a set of non-mandatory options; as basic behavior it shutdowns the gHN, depending on the input options, the gHN state is cleaned and the container is restarted.
 
  
 
[[Category:VRE Management]]
 
[[Category:VRE Management]]

Revision as of 17:21, 5 March 2010

Introduction

The gHNManager is a gCube Local Service providing an interface for remotely managing the gHN. In particular, the service is responsible for:

  • the management and changes of the scope of the node and the locally deployed service instances according to the Scope Management rules;
  • publishing in the Information System the gCube Resource representing the gHN;
  • shutdown and restarting the gHN.

Design

For the architectural point of view, the gHNManager is a stateless service. As any other Local Service, at start up time it automatically joins all the scopes of the node. As soon as the gHN is joined to more scopes, the same happens to the gHNManager instance.

Interface

The service exposes a single port-type (GHNManagerPortType) providing the following operations to manipulate the gHN and the hosted Running Instances:

  • addScope – takes as input a valid scope expression; the scope is assigned to the gHN
  • removeScope – takes as input a valid scope expression; the scope is removed from the gHN
  • addRItoScope – takes as input a valid scope expression, a service name and a service class; the scope is assigned to the local instance identified by the given name and class.
  • removeRIScope – takes as input a valid scope expression, a service name and a service class; the scope is removed from the local instance identified by the given name and class.
  • shutdown()– takes as input a set of non-mandatory options; as basic behavior it shutdowns the gHN, then, depending on the input options:
if RESTART = True the container is restarted
if CLEAN = True the gHN state is cleaned

Requesting a gHN shutdown

<src lang="java"> import org.gcube.common.vremanagement.ghnmanager.stubs.GHNManagerPortType; import org.gcube.common.vremanagement.ghnmanager.stubs.ShutdownOptions; import org.gcube.common.vremanagement.ghnmanager.stubs.service.GHNManagerServiceAddressingLocator; ...

GCUBESecurityManagerImpl managerSec = new GCUBESecurityManagerImpl() { public boolean isSecurityEnabled() {return false;} };

EndpointReferenceType endpoint = new EndpointReferenceType(); try {

endpoint.setAddress(new Address("http://" +args[0] + ":" + args[1]+"/wsrf/services/gcube/common/vremanagement/GHNManager")); GHNManagerServiceAddressingLocator locator = new GHNManagerServiceAddressingLocator();

GHNManagerPortType pt = locator.getGHNManagerPortTypePort(endpoint); pt = GCUBERemotePortTypeContext.getProxy(pt,GCUBEScope.getScope(args[2]),managerSec); ShutdownOptions options = new ShutdownOptions(); options.setRestart(false); options.setClean(false); pt.shutdown(options);

} catch (Exception e) { logger.error ("FAILED to shutdown", e); } </src>

Requesting a gHN shutdown with the security enabled

<src lang="java"> import org.gcube.common.vremanagement.ghnmanager.stubs.GHNManagerPortType; import org.gcube.common.vremanagement.ghnmanager.stubs.ShutdownOptions; import org.gcube.common.vremanagement.ghnmanager.stubs.service.GHNManagerServiceAddressingLocator; ...

GCUBESecurityManagerImpl managerSec = new GCUBESecurityManagerImpl() { public boolean isSecurityEnabled() {return true;} };

EndpointReferenceType endpoint = new EndpointReferenceType(); try {

endpoint.setAddress(new Address("http://" +args[0] + ":" + args[1]+"/wsrf/services/gcube/common/vremanagement/GHNManager")); GHNManagerServiceAddressingLocator locator = new GHNManagerServiceAddressingLocator();

GHNManagerPortType pt = locator.getGHNManagerPortTypePort(endpoint);

if (isSecurityEnabled) { logger.info("Loading proxy from " + args[4]); managerSec.useCredentials(ProxyUtil.loadProxyCredentials(args[4])); //setting credentials on stubs, by specifying authN mode and Delegation Mode managerSec.setSecurity(pt, GCUBESecurityManager.AuthMode.PRIVACY, GCUBESecurityManager.DelegationMode.FULL); } pt = GCUBERemotePortTypeContext.getProxy(pt,GCUBEScope.getScope(args[2]),managerSec); ShutdownOptions options = new ShutdownOptions(); options.setRestart(false); options.setClean(false); pt.shutdown(options);

} catch (Exception e) { logger.error ("FAILED to shutdown", e); } </src>