Beispiel #1
0
 def builder(cls, name, jobstep, **kwargs):
     ecls = importutils.import_class(jobstep.execute)(get_http())
     method = jobstep.method
     execute = getattr(ecls, method)
     provides = safe_load(jobstep.provides)
     rebind = safe_load(jobstep.rebind)
     revert = None
     if jobstep.revert:
         revert = importutils.import_class(jobstep.revert)(ecls, method)
     return cls(name, jobstep, execute, provides, rebind, revert, **kwargs)
Beispiel #2
0
 def __init__(self, manager):
     group = CONF.find_group(common.DB)
     super(Application, self).__init__(manager, group.name)
     self.client = GopDBClient(get_http())
     self.delete_tokens = {}
     self.konwn_database = {}
Beispiel #3
0
    def __init__(self):
        super(RpcAgentManager, self).__init__(target=target_server(self.agent_type, CONF.host, fanout=True))
        interface, self.ipnetwork = get_network(self.local_ip)
        if not self.ipnetwork:
            raise RuntimeError('can not find local ip netmask')
        LOG.debug('Local ip %s/%s on interface %s' % (self.local_ip, self.ipnetwork.netmask, interface))
        global DISK
        DISK = psutil.disk_usage(self.work_path).total/(1024*1024)
        # agent id
        self._agent_id = None
        # port and port and disk space info
        conf = CONF[manager_common.AGENT]
        self.conf = conf
        self.ports_range = validators['type:ports_range_list'](conf.ports_range) if conf.ports_range else []
        # zone mark
        self.zone = conf.zone
        self.dnsnames = conf.dnsnames
        # key: port, value endpoint name
        self.allocked_ports = {}
        # left ports
        self.left_ports = set()
        for p_range in self.ports_range:
            down, up = map(int, p_range.split('-'))
            if down < 1024:
                raise ValueError('Port 1-1024 is not allowed')
            for port in range(down, up):
                self.left_ports.add(port)

        # init metadata
        self._metadata = super(RpcAgentManager, self).metadata
        self._metadata.setdefault('agent_type', self.agent_type)
        self._metadata.setdefault('zone', self.zone)
        self._metadata.setdefault('dnsnames', conf.dnsnames)
        # init httpclient
        self.client = AgentManagerClient(httpclient=get_http())
        # init filemanager
        self.filemanager = FileManager(conf=conf,
                                       threadpool=threadpool,
                                       infoget=lambda x: self.client.file_show(x)['data'][0])

        # init endpoint
        if conf.endpoints:
            # endpoint class must be singleton
            for endpoint in conf.endpoints:
                endpoint_group = cfg.OptGroup(endpoint.lower(),
                                              title='endpopint of %s' % endpoint)
                CONF.register_group(endpoint_group)
                CONF.register_opts(rpc_endpoint_opts, endpoint_group)
                endpoint_class = '%s.%s' % (CONF[endpoint_group.name].module,
                                            self.agent_type.capitalize())
                try:
                    cls = importutils.import_class(endpoint_class)
                except Exception:
                    LOG.error('Import class %s of %s fail' % (endpoint_class, endpoint_group.name))
                    raise
                else:
                    obj = cls(manager=self)
                    if not isinstance(obj, RpcAgentEndpointBase):
                        raise TypeError('Endpoint string %s not base from RpcEndpointBase')
                    self.endpoints.add(obj)
        self.endpoint_lock = lockutils.Semaphores()
        self.websockets = dict()
        self.reporter = OnlinTaskReporter(self)
Beispiel #4
0
 def wapper():
     if self.delay:
         eventlet.sleep(self.delay)
     data = self.notify[keyword]
     func = getattr(get_http(), 'do_request')
     func(**data)