Exemplo n.º 1
0
def get_event_status(record, eventid):
    def normal_check():
        if not record.event_exist(eventid):
            return (EVENT_STATUS["NONE"], 0)
        e = record.get_event(eventid)
        ret = (e.status, e.result)
        if e.status in (EVENT_STATUS["DONE"], EVENT_STATUS["ERROR"]):
            record.del_event(eventid)
        return ret

    record.lock()
    try:
        st, re = normal_check()
        if st != EVENT_STATUS["PROGRESS"]:
            record.unlock()
            return (st, re)
        e = record.get_event(eventid)
        if e.func:
            e.func(eventid, *e.args)
            # event record may be changed. get again.
            st, re = normal_check()
        record.unlock()
        return (st, re)
    except Exception:
        record.unlock()
        logger.error(traceback.format_exc())
        raise
Exemplo n.º 2
0
def vas_send_request(method, args):
    try:
        args['ver'] = vas_subr.XMLRPC_VERSION
        res = vas_subr.send_request(vas_subr.host_storage_manager_list, \
            vas_subr.port_storage_manager, method, args)
    except xmlrpclib.Fault, inst:
        logger.error("euca_driver: %s fault %d" % (method, inst.faultCode))
        raise
Exemplo n.º 3
0
    def get_extent(self, pdskid, offset):
        try:
            sql = "select * from %s where pdskid = %d and offset <= %d and offset+capacity > %d" % (self.db_name, pdskid, offset, offset)
            self.db.c.execute(sql)

            row = self.db.c.fetchone()
            if row:
                return dict(zip(self.db_keys, row))
            else:
                return None
        except Exception:
            logger.error(traceback.format_exc())
            return None
Exemplo n.º 4
0
def get_my_hsvrid():
    s, ip_o = commands.getstatusoutput('/sbin/ip -o addr')
    if s !=0:
        logger.error("/sbin/ip failed(%s)." % s)
        sys.exit(1)
    try:
        res = vas_send_request('listHeadServers', {})
    except:
        sys.exit(1)

    for hs in res:
        for ip in hs['ip_data']:
            for l in ip_o.splitlines():
                if l.find(ip) >= 0:
                    return hs['hsvrid'] 
    return None
Exemplo n.º 5
0
sys.path = sys.path + ['/opt/vas/lib', '/opt/vastorage/lib']
from vas_conf import logger
import vas_subr

LVOLNAME_PREFIX='euca'

def vas_send_request(method, args):
    try:
        args['ver'] = vas_subr.XMLRPC_VERSION
        res = vas_subr.send_request(vas_subr.host_storage_manager_list, \
            vas_subr.port_storage_manager, method, args)
    except xmlrpclib.Fault, inst:
        logger.error("euca_driver: %s fault %d" % (method, inst.faultCode))
        raise
    except:
        logger.error("euca_driver: %s exception" % method)
        raise
    return res


def get_my_hsvrid():
    s, ip_o = commands.getstatusoutput('/sbin/ip -o addr')
    if s !=0:
        logger.error("/sbin/ip failed(%s)." % s)
        sys.exit(1)
    try:
        res = vas_send_request('listHeadServers', {})
    except:
        sys.exit(1)

    for hs in res: