Example #1
0
 def __init__(self, url):
     '''Class constructor'''
     JobPluginInterface.__init__(self, name=self._name, schemas=self._schemas)
     self.bookkeeper = BookKeeper(self)
Example #2
0
 def __init__(self, url):
     '''Class constructor'''
     JobPluginInterface.__init__(self,
                                 name=self._name,
                                 schemas=self._schemas)
     self.bookkeeper = BookKeeper(self)
Example #3
0
class PBSJobPlugin(JobPluginInterface, SDPluginInterface):
    '''Implements a job plugin that can submit jobs to remote PBS cluster via SSH
    '''
    ## Define adaptor name. Convention is:
    ##         saga.plugin.<package>.<name>
    _name = 'saga.plugin.job.pbssh'

    ## Define supported url schemas
    ## 
    _schemas = ['pbs+ssh', 'pbs', 'pbs+gsissh', 
                'torque', 'torque+ssh', 'torque+gsissh',
                'xt5torque', 'xt5torque+ssh', 'xt5torque+gsissh']

    ## Define apis supported by this adaptor
    ##
    _apis = ['saga.job', 'saga.sd']


    ######################################################################
    ##
    def __init__(self, url):
        '''Class constructor'''
        JobPluginInterface.__init__(self, name=self._name, schemas=self._schemas)
        self.bookkeeper = BookKeeper(self)

    ######################################################################
    ##
    @classmethod
    def sanity_check(self):
        '''Implements interface from _PluginBase'''
        pass

    ######################################################################
    ##
    def register_service_object(self, service_obj):
        '''Implements interface from _JobPluginBase'''
        pbs_obj = PBSService(self, service_obj)
        self.bookkeeper.add_service_object(service_obj, pbs_obj)
        self.log_info("Registered new service object %s" \
          % (repr(service_obj))) 

    ######################################################################
    ##
    def unregister_service_object(self, service_obj):
        '''Implements interface from _JobPluginBase'''
        self.bookkeeper.remove_service_object(service_obj)
        self.log_info("Unegistered service object %s" \
          % (repr(service_obj)))

    ######################################################################
    ##
    def register_discoverer_object(self, discoverer_obj):
        '''Implements interface from SDPluginInterface'''
        pbs_obj = PBSService(self, discoverer_obj)
        self.bookkeeper.add_service_object(discoverer_obj, pbs_obj)
        self.log_info("Registered new discoverer object %s" \
          % (repr(discoverer_obj))) 

    ######################################################################
    ##
    def unregister_discoverer_object(self, discoverer_obj):
        '''Implements interface from SDPluginInterface'''
        pass


    ######################################################################
    ##
    def discoverer_list_services(self, discoverer_obj, 
                                 service_filter, data_filter):
        '''Implements interface from SDPluginInterface'''
        try:
            pbs = self.bookkeeper.get_pbswrapper_for_service(discoverer_obj)
            service_info = pbs.get_service_info() # triggers ssh connection attempt
            desc = bliss.saga.sd.ServiceDescription()  
            desc._ServiceDescription__init_from_discoverer(discoverer_obj) 
            ## set values
            desc._url = discoverer_obj._url 
            desc._type = "org.ogf.saga.service.job"
            desc._name = "PBS Job Scheduler"

            #desc.Exceptionementor = 
            #desc._site = 
            #desc._uid = 

            return [desc]       

        except Exception, ex:
            self.log_error_and_raise(bliss.saga.Error.NoSuccess, 
              "Couldn't retreive service list because: %s " % (str(ex)))
Example #4
0
class PBSJobAndSDPlugin(JobPluginInterface, SDPluginInterface):
    '''Implements a job plugin that can submit jobs to remote PBS cluster via SSH
    '''
    ## Define adaptor name. Convention is:
    ##         saga.plugin.<package>.<name>
    _name = 'saga.plugin.job.pbssh'

    ## Define supported url schemas
    ##
    _schemas = ['pbs+ssh', 'pbs']

    ## Define apis supported by this adaptor
    ##
    _apis = ['saga.job', 'saga.sd']

    ######################################################################
    ##
    def __init__(self, url):
        '''Class constructor'''
        JobPluginInterface.__init__(self,
                                    name=self._name,
                                    schemas=self._schemas)
        self.bookkeeper = BookKeeper(self)

    ######################################################################
    ##
    @classmethod
    def sanity_check(self):
        '''Implements interface from _PluginBase'''
        pass

    ######################################################################
    ##
    def register_service_object(self, service_obj):
        '''Implements interface from _JobPluginBase'''
        pbs_obj = PBSService(self, service_obj)
        self.bookkeeper.add_service_object(service_obj, pbs_obj)
        self.log_info("Registered new service object %s" \
          % (repr(service_obj)))

    ######################################################################
    ##
    def unregister_service_object(self, service_obj):
        '''Implements interface from _JobPluginBase'''
        self.bookkeeper.remove_service_object(service_obj)
        self.log_info("Unegistered service object %s" \
          % (repr(service_obj)))

    ######################################################################
    ##
    def register_discoverer_object(self, discoverer_obj):
        '''Implements interface from SDPluginInterface'''
        pbs_obj = PBSService(self, discoverer_obj)
        self.bookkeeper.add_service_object(discoverer_obj, pbs_obj)
        self.log_info("Registered new discoverer object %s" \
          % (repr(discoverer_obj)))

    ######################################################################
    ##
    def unregister_discoverer_object(self, discoverer_obj):
        '''Implements interface from SDPluginInterface'''
        pass

    ######################################################################
    ##
    def discoverer_list_services(self, discoverer_obj, service_filter,
                                 data_filter):
        '''Implements interface from SDPluginInterface'''
        try:
            pbs = self.bookkeeper.get_pbswrapper_for_service(discoverer_obj)
            service_info = pbs.get_service_info(
            )  # triggers ssh connection attempt
            desc = bliss.saga.sd.ServiceDescription()
            desc._ServiceDescription__init_from_discoverer(discoverer_obj)
            ## set values
            desc._url = discoverer_obj._url
            desc._type = "org.ogf.saga.service.job"
            desc._name = "PBS Job Scheduler"

            #desc._apiementor =
            #desc._site =
            #desc._uid =

            return [desc]

        except Exception, ex:
            self.log_error_and_raise(
                bliss.saga.Error.NoSuccess,
                "Couldn't retreive service list because: %s " % (str(ex)))