X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=src%2Fnepi%2Fresources%2Fomf%2Fnode.py;h=b6b65efd64069e5ebe276e217d8fd1ff9ac45b91;hb=3027abf982ab3a579c446b888e4a5b56dd7d40a4;hp=fad525b0a562a9543587149bfa1f15ce6bb65958;hpb=54d2a201dca3af3dabf18601d4909bf506960627;p=nepi.git diff --git a/src/nepi/resources/omf/node.py b/src/nepi/resources/omf/node.py index fad525b0..b6b65efd 100644 --- a/src/nepi/resources/omf/node.py +++ b/src/nepi/resources/omf/node.py @@ -22,14 +22,14 @@ from nepi.execution.resource import ResourceManager, clsinit, ResourceState, \ reschedule_delay from nepi.execution.attribute import Attribute, Flags - +from nepi.resources.omf.omf_resource import ResourceGateway, OMFResource from nepi.resources.omf.omf_api import OMFAPIFactory import time @clsinit -class OMFNode(ResourceManager): +class OMFNode(OMFResource): """ .. class:: Class Args : @@ -54,38 +54,8 @@ class OMFNode(ResourceManager): """ hostname = Attribute("hostname", "Hostname of the machine") - cpu = Attribute("cpu", "CPU of the node") - ram = Attribute("ram", "RAM of the node") - xmppSlice = Attribute("xmppSlice","Name of the slice", - flags = Flags.Credential) - xmppHost = Attribute("xmppHost", "Xmpp Server", - flags = Flags.Credential) - xmppPort = Attribute("xmppPort", "Xmpp Port", - flags = Flags.Credential) - xmppPassword = Attribute("xmppPassword", "Xmpp Port", - flags = Flags.Credential) - - host = Attribute("host", "Hostname of the machine", - flags = Flags.Filter) - gateway = Attribute("gateway", "Gateway", - flags = Flags.Filter) - granularity = Attribute("granularity", "Granularity of the reservation time", - flags = Flags.Filter) - hardware_type = Attribute("hardware_type", "Hardware type of the machine", - flags = Flags.Filter) cls._register_attribute(hostname) - cls._register_attribute(ram) - cls._register_attribute(cpu) - cls._register_attribute(xmppSlice) - cls._register_attribute(xmppHost) - cls._register_attribute(xmppPort) - cls._register_attribute(xmppPassword) - - cls._register_attribute(host) - cls._register_attribute(gateway) - cls._register_attribute(granularity) - cls._register_attribute(hardware_type) # XXX: We don't necessary need to have the credentials at the # moment we create the RM @@ -102,7 +72,8 @@ class OMFNode(ResourceManager): self._omf_api = None def valid_connection(self, guid): - """Check if the connection with the guid in parameter is possible. Only meaningful connections are allowed. + """ Check if the connection with the guid in parameter is possible. + Only meaningful connections are allowed. :param guid: Guid of the current RM :type guid: int @@ -111,30 +82,48 @@ class OMFNode(ResourceManager): """ rm = self.ec.get_resource(guid) if rm.rtype() in self._authorized_connections: - msg = "Connection between %s %s and %s %s accepted" % (self.rtype(), self._guid, rm.rtype(), guid) + msg = "Connection between %s %s and %s %s accepted" % ( + self.rtype(), self._guid, rm.rtype(), guid) self.debug(msg) + return True - msg = "Connection between %s %s and %s %s refused" % (self.rtype(), self._guid, rm.rtype(), guid) + + msg = "Connection between %s %s and %s %s refused" % ( + self.rtype(), self._guid, rm.rtype(), guid) self.debug(msg) + return False def deploy(self): - """Deploy the RM. It means : Send Xmpp Message Using OMF protocol to enroll the node into the experiment - It becomes DEPLOYED after sending messages to enroll the node + """ Deploy the RM. It means : Send Xmpp Message Using OMF protocol + to enroll the node into the experiment. + It becomes DEPLOYED after sending messages to enroll the node """ if not self._omf_api : self._omf_api = OMFAPIFactory.get_api(self.get('xmppSlice'), - self.get('xmppHost'), self.get('xmppPort'), self.get('xmppPassword')) + self.get('xmppHost'), self.get('xmppPort'), + self.get('xmppPassword'), exp_id = self.ec.exp_id) - if self.get('hostname') : - try: - self._omf_api.enroll_host(self.get('hostname')) - except AttributeError: - self._state = ResourceState.FAILED - msg = "Credentials are not initialzed. XMPP Connections impossible" - self.debug(msg) - raise AttributeError, msg + if not self._omf_api : + msg = "Credentials are not initialzed. XMPP Connections impossible" + self.error(msg) + self.fail() + return + + if not self.get('hostname') : + msg = "Hostname's value is not initialized" + self.error(msg) + self.fail() + return False + + try: + self._omf_api.enroll_host(self.get('hostname')) + except AttributeError: + msg = "Credentials are not initialzed. XMPP Connections impossible" + self.error(msg) + self.fail() + #raise AttributeError, msg super(OMFNode, self).deploy() @@ -171,6 +160,10 @@ class OMFNode(ResourceManager): """ if self._omf_api : self._omf_api.release(self.get('hostname')) + OMFAPIFactory.release_api(self.get('xmppSlice'), - self.get('xmppHost'), self.get('xmppPort'), self.get('xmppPassword')) + self.get('xmppHost'), self.get('xmppPort'), + self.get('xmppPassword'), exp_id = self.ec.exp_id) + + super(OMFNode, self).release()