Пример #1
0
    def test_init(self):
        db_manager = dbmanager.DBManager(self.config, kw='kw')
        assert db_manager.connection == 'mysql+pymysql://user:pass@localhost:10/scalr'
        assert db_manager.kwargs == {'kw': 'kw'}

        db_manager = dbmanager.DBManager(self.config)
        assert db_manager.connection == 'mysql+pymysql://user:pass@localhost:10/scalr'
        assert db_manager.kwargs == {}

        db = db_manager.get_db()
        assert db is not None
        assert db_manager.db is not None
Пример #2
0
def update_status(step, status):
    db_manager = dbmanager.DBManager(world.config['connections']['mysql'])
    db = db_manager.get_db()
    try:
        zones = db.session.query(db.dns_zones).all()
        for zone in zones:
            zone.status = status
            if status in ['Pending create', 'Pending update']:
                if zone.zone_name not in world.dns_zones_files_for_create:
                    world.dns_zones_files_for_create.append(zone.zone_name)
                try:
                    world.dns_zones_files_for_remove.remove(zone.zone_name)
                except:
                    pass
                try:
                    world.dns_zones_for_remove.remove(zone.zone_name)
                except:
                    pass
            if status in ['Pending delete', 'Inactive']:
                if zone.zone_name not in world.dns_zones_files_for_remove:
                    world.dns_zones_files_for_remove.append(zone.zone_name)
                try:
                    world.dns_zones_files_for_create.remove(zone.zone_name)
                except:
                    pass
            if status in ['Pending delete']:
                if zone.zone_name not in world.dns_zones_files_for_remove:
                    world.dns_zones_for_remove.append(zone.zone_name)

        db.session.commit()

    finally:
        db.session.remove()

    assert True
Пример #3
0
def create_farm_role_settings_table(config):
    try:
        db_manager = dbmanager.DBManager(config)
        db = db_manager.get_db()
        db.session.connection().execute('commit')
        try:
            db.session.connection().execute("CREATE TABLE `farm_role_settings` ("+\
                    "`id` int(11) NOT NULL AUTO_INCREMENT,"+\
                    "`farm_roleid` int(11) DEFAULT NULL,"+\
                    "`name` varchar(255) DEFAULT NULL,"+\
                    "`value` text,"+\
                    "PRIMARY KEY (`id`),"+\
                    "UNIQUE KEY `unique` (`farm_roleid`,`name`),"+\
                    "KEY `name` (`name`(30))"+\
                    ") ENGINE=MyISAM AUTO_INCREMENT=293325591 DEFAULT CHARSET=latin1 ROW_FORMAT=COMPACT")
            db.session.connection().execute('commit')
            db.session.connection().close()
            ret = True
        except sql_exc.InternalError as e:
            print sys.exc_info()
            if e.orig[0] == 1050:
                ret = True
            else:
                print sys.exc_info()
                ret = False
    except Exception:
        print sys.exc_info()
        ret = False
    return ret
Пример #4
0
def start_daemon(step):
    try:
        QSIZE = 1024
        CRATIO = 120  # Common ratio for send interval progression
        db_manager = dbmanager.DBManager(world.config['connections']['mysql'])
        db = db_manager.get_db()
        where1 = and_(db.messages.type == 'out')
        where2 = and_(db.messages.message_version == 2)
        where3 = and_(func.unix_timestamp(db.messages.dtlasthandleattempt) +\
                db.messages.handle_attempts * CRATIO < func.unix_timestamp(
                func.now()))
        msgs = db.messages.filter(db.messages.status==0,\
                where1, where2, where3).order_by(
                desc(db.messages.id)).all()[0:QSIZE]

        world.right_msgs = [msg.messageid for msg in msgs]

        assert len(world.right_msgs) != 0

        cnf = ETC_DIR + '/config.yml'
        subps.Popen([
            'python', '-m', 'scalrpy.messaging', '--start', '-vvv', '-c', cnf
        ])
        time.sleep(2)

        ps = subps.Popen(['ps -ef'], shell=True, stdout=subps.PIPE)
        output = ps.stdout.read()
        ps.stdout.close()
        ps.wait()
        assert 'scalrpy.messaging --start' in output
    except Exception:
        assert False
    finally:
        db.session.close()
        db.session.remove()
Пример #5
0
def create_farm_settings_table(config):
    try:
        db_manager = dbmanager.DBManager(config)
        db = db_manager.get_db()
        db.session.connection().execute('commit')
        try:
            db.session.connection().execute("CREATE TABLE `farm_settings` ("+\
                    "`id` int(11) NOT NULL AUTO_INCREMENT,"+\
                    "`farmid` int(11) DEFAULT NULL,"+\
                    "`name` varchar(50) DEFAULT NULL,"+\
                    "`value` text,"+\
                    "PRIMARY KEY (`id`),"+\
                    "UNIQUE KEY `farmid_name` (`farmid`,`name`)) "+\
                    "ENGINE=InnoDB AUTO_INCREMENT=3173597 "+\
                    "DEFAULT CHARSET=latin1")
            db.session.connection().execute('commit')
            db.session.connection().close()
            ret = True
        except sql_exc.InternalError as e:
            print sys.exc_info()
            if e.orig[0] == 1050:
                ret = True
            else:
                print sys.exc_info()
                ret = False
    except Exception:
        print sys.exc_info()
        ret = False
    return ret
Пример #6
0
def create_server_properties_table(config):
    try:
        db_manager = dbmanager.DBManager(config)
        db = db_manager.get_db()
        db.session.connection().execute('commit')
        try:
            db.session.connection().execute("CREATE TABLE `server_properties` ("+\
                    "`id` int(11) NOT NULL AUTO_INCREMENT,"+\
                    "`server_id` varchar(36) DEFAULT NULL,"+\
                    "`name` varchar(255) DEFAULT NULL,"+\
                    "`value` text,"+\
                    "PRIMARY KEY (`id`),"+\
                    "UNIQUE KEY `serverid_name` (`server_id`,`name`),"+\
                    "KEY `serverid` (`server_id`),"+\
                    "KEY `name_value` (`name`(20),`value`(20)),"+\
                    "CONSTRAINT `server_properties_ibfk_1` FOREIGN KEY "+\
                    "(`server_id`) REFERENCES `servers` (`server_id`)"+\
                    "ON DELETE CASCADE ON UPDATE NO ACTION) "+\
                    "ENGINE=InnoDB AUTO_INCREMENT=533922744 "+\
                    "DEFAULT CHARSET=latin1")
            db.session.connection().execute('commit')
            db.session.connection().close()
            ret = True
        except sql_exc.InternalError as e:
            print sys.exc_info()
            if e.orig[0] == 1050:
                ret = True
            else:
                print sys.exc_info()
                ret = False
    except Exception:
        print sys.exc_info()
        ret = False
    return ret
Пример #7
0
def start_daemon(step):
    db_manager = dbmanager.DBManager(world.config['connections']['mysql'],
                                     autoflush=False)
    db = db_manager.get_db()
    try:
        CRATIO = 120
        where = and_(
            db.messages.status == 0, db.messages.type == 'out',
            db.messages.message_version == 2, db.messages.message != '',
            db.messages.message != None,
            func.unix_timestamp(db.messages.dtlasthandleattempt) +
            db.messages.handle_attempts * CRATIO < func.unix_timestamp(
                func.now()))
        msgs = db.messages.filter(where).order_by(desc(db.messages.id)).all()

        world.right_msgs = [
            msg.messageid for msg in msgs if msg.message_name != 'ExecScript'
        ]

        assert len(world.right_msgs) != 0

        config = ETC_DIR + '/config.yml'
        assert lib.start_daemon('msg_sender', config)
    finally:
        db.session.remove()
Пример #8
0
def create_role_behaviors_table(config):
    try:
        db_manager = dbmanager.DBManager(config)
        db = db_manager.get_db()
        db.session.connection().execute('commit')
        try:
            db.session.connection().execute("CREATE TABLE `role_behaviors` ("+\
                    "`id` int(11) NOT NULL AUTO_INCREMENT,"+\
                    "`role_id` int(11) DEFAULT NULL,"+\
                    "`behavior` varchar(25) DEFAULT NULL,"+\
                    "PRIMARY KEY (`id`),"+\
                    "UNIQUE KEY `role_id_behavior` (`role_id`,`behavior`),"+\
                    "KEY `role_id` (`role_id`)"+\
                    #"CONSTRAINT `role_behaviors_ibfk_1` FOREIGN KEY (`role_id`) "+\
                    #"REFERENCES `roles` (`id`) ON DELETE CASCADE ON UPDATE NO ACTION"+\
                    ") "+\
                    "ENGINE=InnoDB AUTO_INCREMENT=71741 "+\
                    "DEFAULT CHARSET=latin1")
            db.session.connection().execute('commit')
            db.session.connection().close()
            ret = True
        except sql_exc.InternalError as e:
            print sys.exc_info()
            if e.orig[0] == 1050:
                ret = True
            else:
                print sys.exc_info()
                ret = False
    except Exception:
        print sys.exc_info()
        ret = False
    return ret
Пример #9
0
    def test_init(self):
        db_manager = dbmanager.DBManager(self.config)
        assert db_manager.connection == 'mysql+pymysql://user:pass@localhost:10/scalr'
        assert db_manager.kwargs == {'pool_recycle': 120, 'pool_size': 4}

        db = db_manager.get_db()
        assert db is not None
        assert db_manager.db is not None
Пример #10
0
def right_messages_have_right_handle_attemps(step, val):
    db_manager = dbmanager.DBManager(world.config['connections']['mysql'])
    db = db_manager.get_db()

    msgs = db.messages.filter(db.messages.messageid.in_(
        world.right_msgs)).all()
    for msg in msgs:
        assert msg.handle_attempts == int(val)
Пример #11
0
def right_messages_have_right_handle_attemps(step, val):
    db_manager = dbmanager.DBManager(world.config['connections']['mysql'],
                                     autoflush=False)
    db = db_manager.get_db()
    try:
        msgs = db.messages.filter(db.messages.messageid.in_(
            world.right_msgs)).all()
        for msg in msgs:
            assert msg.handle_attempts == int(val)
    finally:
        db.session.remove()
Пример #12
0
def check_update_db(step):
    db_manager = dbmanager.DBManager(world.config['connections']['mysql'],
                                     autoflush=False)
    db = db_manager.get_db()
    try:
        events = db.events.filter(db.events.event_id.in_(
            world.mail_events)).all()
        for event in events:
            assert event.ishandled == 1
    finally:
        db.session.remove()
Пример #13
0
def right_messages_were_delivered(step):
    db_manager = dbmanager.DBManager(world.config['connections']['mysql'])
    db = db_manager.get_db()

    msgs = db.messages.filter(db.messages.messageid.in_(
        world.right_msgs)).all()

    assert len(msgs) != 0

    for msg in msgs:
        assert msg.status == 1
Пример #14
0
def check_database(step):
    db_manager = dbmanager.DBManager(world.config['connections']['mysql'])
    db = db_manager.get_db()
    try:
        zones = db.session.query(db.dns_zones).filter(
            db.dns_zones.zone_name.in_(world.dns_zones_for_remove)).all()
        assert not zones
        zones = db.session.query(db.dns_zones).filter(
            db.dns_zones.zone_name.in_(
                world.dns_zones_files_for_create)).all()
        for zone in zones:
            assert zone.status == 'Active'
    finally:
        db.session.remove
Пример #15
0
def right_messages_were_delivered(step):
    db_manager = dbmanager.DBManager(world.config['connections']['mysql'],
                                     autoflush=False)
    db = db_manager.get_db()
    try:
        msgs = db.messages.filter(db.messages.messageid.in_(
            world.right_msgs)).all()

        assert len(msgs) != 0

        for msg in msgs:
            assert msg.status == 1
    finally:
        db.session.remove()
Пример #16
0
def create_servers_table(config):
    try:
        db_manager = dbmanager.DBManager(config)
        db = db_manager.get_db()
        db.session.connection().execute('commit')
        try:
            db.session.connection().execute("CREATE TABLE `servers` ("+\
                    "`id` int(11) NOT NULL AUTO_INCREMENT,"+\
                    "`server_id` varchar(36) DEFAULT NULL,"+\
                    "`farm_id` int(11) DEFAULT NULL,"+\
                    "`farm_roleid` int(11) DEFAULT NULL,"+\
                    "`client_id` int(11) DEFAULT NULL,"+\
                    "`env_id` int(11) NOT NULL,"+\
                    "`role_id` int(11) DEFAULT NULL,"+\
                    "`platform` varchar(10) DEFAULT NULL,"+\
                    "`status` varchar(25) DEFAULT NULL,"+\
                    "`remote_ip` varchar(15) DEFAULT NULL,"+\
                    "`local_ip` varchar(15) DEFAULT NULL,"+\
                    "`dtadded` datetime DEFAULT NULL,"+\
                    "`index` int(11) DEFAULT NULL,"+\
                    "`dtshutdownscheduled` datetime DEFAULT NULL,"+\
                    "`dtrebootstart` datetime DEFAULT NULL,"+\
                    "`replace_server_id` varchar(36) DEFAULT NULL,"+\
                    "`dtlastsync` datetime DEFAULT NULL,"+\
                    "PRIMARY KEY (id),"+\
                    "KEY serverid (server_id),"+\
                    "KEY farm_roleid (farm_roleid),"+\
                    "KEY farmid_status (farm_id,status),"+\
                    "KEY local_ip (local_ip),"+\
                    "KEY env_id (env_id),"+\
                    "KEY role_id (role_id),"+\
                    "KEY client_id (client_id) )"+\
                    "ENGINE=InnoDB AUTO_INCREMENT=817009 "+\
                    "DEFAULT CHARSET=latin1")
            db.session.connection().execute('commit')
            db.session.connection().close()
            ret = True
        except sql_exc.InternalError as e:
            print sys.exc_info()
            if e.orig[0] == 1050:
                ret = True
            else:
                print sys.exc_info()
                ret = False
    except Exception:
        print sys.exc_info()
        ret = False
    return ret
Пример #17
0
def insert_dns_zones(step, count, status):
    db_manager = dbmanager.DBManager(world.config['connections']['mysql'])
    db = db_manager.get_db()
    try:
        for i in range(int(count)):

            while True:
                index = random.randint(1, 9999)
                zone_name = 'test.zone%s.bla' % index
                if db.session.query(db.dns_zones).filter(
                        db.dns_zones.zone_name == zone_name).first() is None:
                    break
                continue

            if status == 'Random':
                status = random.choice(
                    ['Active', 'Pending create', 'Pending update', 'Inactive'])
            soa_owner = random.choice(['owner.%s' % zone_name, '', None])
            soa_serial = random.choice(
                [date.today().strftime('%Y%m%d'), '', None])
            soa_parent = random.choice(['parent.%s' % zone_name, '', None])
            isonnsserver = random.randint(0, 1)

            db.dns_zones.insert(id=index,
                                zone_name=zone_name,
                                soa_parent=soa_parent,
                                env_id=0,
                                status=status,
                                isonnsserver=isonnsserver,
                                soa_owner=soa_owner,
                                soa_serial=soa_serial)

            if status in ['Pending create', 'Pending update']:
                if zone_name not in world.dns_zones_files_for_create:
                    world.dns_zones_files_for_create.append(zone_name)
            if status in ['Pending delete', 'Inactive']:
                if zone_name not in world.dns_zones_files_for_remove:
                    world.dns_zones_files_for_remove.append(zone_name)
            if status in ['Pending delete']:
                world.dns_zones_for_remove.append(zone_name)

        db.session.commit()

    finally:
        db.session.remove()

    assert True
Пример #18
0
def create_clients_table(config):
    try:
        db_manager = dbmanager.DBManager(config)
        db = db_manager.get_db()
        db.session.connection().execute('commit')
        try:
            db.session.connection().execute("CREATE TABLE `clients` ("+\
                "`id` int(11) NOT NULL AUTO_INCREMENT,"+\
                "`name` varchar(255) DEFAULT NULL,"+\
                "`status` varchar(50) DEFAULT NULL,"+\
                "`isbilled` tinyint(1) DEFAULT '0',"+\
                "`dtdue` datetime DEFAULT NULL,"+\
                "`isactive` tinyint(1) DEFAULT '0',"+\
                "`fullname` varchar(60) DEFAULT NULL,"+\
                "`org` varchar(60) DEFAULT NULL,"+\
                "`country` varchar(60) DEFAULT NULL,"+\
                "`state` varchar(60) DEFAULT NULL,"+\
                "`city` varchar(60) DEFAULT NULL,"+\
                "`zipcode` varchar(60) DEFAULT NULL,"+\
                "`address1` varchar(60) DEFAULT NULL,"+\
                "`address2` varchar(60) DEFAULT NULL,"+\
                "`phone` varchar(60) DEFAULT NULL,"+\
                "`fax` varchar(60) DEFAULT NULL,"+\
                "`dtadded` datetime DEFAULT NULL,"+\
                "`iswelcomemailsent` tinyint(1) DEFAULT '0',"+\
                "`login_attempts` int(5) DEFAULT '0',"+\
                "`dtlastloginattempt` datetime DEFAULT NULL,"+\
                "`comments` text,"+\
                "`priority` int(4) NOT NULL DEFAULT '0',"+\
                "PRIMARY KEY (`id`)) "+\
                "ENGINE=InnoDB AUTO_INCREMENT=9587 DEFAULT CHARSET=latin1")
            db.session.connection().execute('commit')
            db.session.connection().close()
            ret = True
        except sql_exc.InternalError as e:
            print sys.exc_info()
            if e.orig[0] == 1050:
                ret = True
            else:
                print sys.exc_info()
                ret = False
    except Exception:
        print sys.exc_info()
        ret = False
    return ret
Пример #19
0
def clean():
    db_manager = dbmanager.DBManager(config['connections']['mysql'])
    db = db_manager.get_db()
    session = db.session

    try:
        db_farms = ['%s' % int(farm.id) for farm in session.query(db.farms.id).all()]
    except (db_exc.OperationalError, db_exc.InternalError):
        logger.critical(sys.exc_info())
        return

    for dir_ in os.listdir(config['rrd_db_dir']):
        for farm in os.listdir('%s/%s' % (config['rrd_db_dir'], dir_)):
            if farm not in db_farms:
                logger.debug('Delete farm %s' % farm )
                if not config['test']:
                    shutil.rmtree('%s/%s/%s'
                                  % (config['rrd_db_dir'], dir_, farm), ignore_errors=True)
Пример #20
0
def create_messages_table(config):
    try:
        db_manager = dbmanager.DBManager(config)
        db = db_manager.get_db()
        db.session.connection().execute('commit')
        try:
            db.session.connection().execute("CREATE TABLE `messages` ("+\
                    "`id` int(11) NOT NULL AUTO_INCREMENT,"+\
                    "`messageid` varchar(75) DEFAULT NULL,"+\
                    "`instance_id` varchar(15) DEFAULT NULL,"+\
                    "`status` tinyint(1) DEFAULT '0',"+\
                    "`handle_attempts` int(2) DEFAULT '1',"+\
                    "`dtlasthandleattempt` datetime DEFAULT NULL,"+\
                    "`lock_time` datetime DEFAULT NULL,"+\
                    "`message` longtext,"+\
                    "`server_id` varchar(36) DEFAULT NULL,"+\
                    "`type` enum('in','out') DEFAULT NULL,"+\
                    "`isszr` tinyint(1) DEFAULT '0',"+\
                    "`message_name` varchar(30) DEFAULT NULL,"+\
                    "`message_version` int(2) DEFAULT NULL,"+\
                    "PRIMARY KEY (id),"+\
                    "UNIQUE KEY server_message (messageid(36),server_id),"+\
                    "KEY server_id (server_id),"+\
                    "KEY serverid_isszr (server_id,isszr),"+\
                    "KEY messageid (messageid),"+\
                    "KEY status (status,type),"+\
                    "KEY message_name (message_name),"+\
                    "KEY dt (dtlasthandleattempt)) "+\
                    "ENGINE=MyISAM AUTO_INCREMENT=42920410 "+\
                    "DEFAULT CHARSET=latin1")
            db.session.connection().execute('commit')
            db.session.connection().close()
            ret = True
        except sql_exc.InternalError as e:
            print sys.exc_info()
            if e.orig[0] == 1050:
                ret = True
            else:
                print sys.exc_info()
                ret = False
    except Exception:
        print sys.exc_info()
        ret = False
    return ret
Пример #21
0
def create_farm_roles_table(config):
    try:
        db_manager = dbmanager.DBManager(config)
        db = db_manager.get_db()
        db.session.connection().execute('commit')
        try:
            db.session.connection().execute("CREATE TABLE `farm_roles` ("+\
                    "`id` int(11) NOT NULL AUTO_INCREMENT,"+\
                    "`farmid` int(11) DEFAULT NULL,"+\
                    "`dtlastsync` datetime DEFAULT NULL,"+\
                    "`reboot_timeout` int(10) DEFAULT '300',"+\
                    "`launch_timeout` int(10) DEFAULT '300',"+\
                    "`status_timeout` int(10) DEFAULT '20',"+\
                    "`launch_index` int(5) DEFAULT '0',"+\
                    "`role_id` int(11) DEFAULT NULL,"+\
                    "`new_role_id` int(11) DEFAULT NULL,"+\
                    "`platform` varchar(20) DEFAULT NULL,"+\
                    "`cloud_location` varchar(50) DEFAULT NULL,"+\
                    "PRIMARY KEY (`id`),"+\
                    "KEY `role_id` (`role_id`),"+\
                    "KEY `farmid` (`farmid`),"+\
                    "KEY `platform` (`platform`)"+\
                    #"CONSTRAINT `farm_roles_ibfk_1` FOREIGN KEY (`farmid`) "+\
                    #"REFERENCES `farms` (`id`) ON DELETE CASCADE ON UPDATE NO ACTION"+\
                    ")"+\
                    "ENGINE=InnoDB AUTO_INCREMENT=43156 DEFAULT CHARSET=latin1")
            db.session.connection().execute('commit')
            db.session.connection().close()
            ret = True
        except sql_exc.InternalError as e:
            print sys.exc_info()
            print sys.exc_info()
            print sys.exc_info()
            print sys.exc_info()
            print sys.exc_info()
            if e.orig[0] == 1050:
                ret = True
            else:
                print sys.exc_info()
                ret = False
    except Exception:
        print sys.exc_info()
        ret = False
    return ret
Пример #22
0
def create_farms_table(config):
    try:
        db_manager = dbmanager.DBManager(config)
        db = db_manager.get_db()
        db.session.connection().execute('commit')
        try:
            db.session.connection().execute("CREATE TABLE `farms` ("+\
                    "`id` int(11) NOT NULL AUTO_INCREMENT,"+\
                    "`clientid` int(11) DEFAULT NULL,"+\
                    "`env_id` int(11) NOT NULL,"+\
                    "`name` varchar(255) DEFAULT NULL,"+\
                    "`iscompleted` tinyint(1) DEFAULT '0',"+\
                    "`hash` varchar(25) DEFAULT NULL,"+\
                    "`dtadded` datetime DEFAULT NULL,"+\
                    "`status` tinyint(1) DEFAULT '1',"+\
                    "`dtlaunched` datetime DEFAULT NULL,"+\
                    "`term_on_sync_fail` tinyint(1) DEFAULT '1',"+\
                    "`region` varchar(255) DEFAULT 'us-east-1',"+\
                    "`farm_roles_launch_order` tinyint(1) DEFAULT '0',"+\
                    "`comments` text,"+\
                    "`created_by_id` int(11) DEFAULT NULL,"+\
                    "`created_by_email` varchar(250) DEFAULT NULL,"+\
                    "PRIMARY KEY (`id`),"+\
                    "KEY `clientid` (`clientid`),"+\
                    "KEY `env_id` (`env_id`)"+\
                    #"CONSTRAINT `farms_ibfk_1` FOREIGN KEY (`clientid`) "+\
                    #"REFERENCES `clients` (`id`) ON DELETE CASCADE ON UPDATE NO ACTION"+\
                    ") "+\
                    "ENGINE=InnoDB AUTO_INCREMENT=12552 DEFAULT CHARSET=latin1")
            db.session.connection().execute('commit')
            db.session.connection().close()
            ret = True
        except sql_exc.InternalError as e:
            print sys.exc_info()
            if e.orig[0] == 1050:
                ret = True
            else:
                print sys.exc_info()
                ret = False
    except Exception:
        print sys.exc_info()
        ret = False
    return ret
Пример #23
0
def drop_db(config):
    try:
        db_manager = dbmanager.DBManager(config)
        db = db_manager.get_db()

        db.session.connection().execute('commit')
        db.session.connection().execute('drop database %s' % config['name'])
        db.session.connection().execute('commit')
        db.session.connection().close()
        ret = True
    except sql_exc.InternalError as e:
        if e.orig[0] == 1049:
            ret = True
        else:
            print sys.exc_info()
            ret = False
    except Exception:
        print sys.exc_info()
        print sys.exc_info()
        print sys.exc_info()
        ret = False
    return ret
Пример #24
0
def create_db(config):
    try:
        db_manager = dbmanager.DBManager(config)
        db = db_manager.get_db()
        db.session.connection()
        db.session.close()
        ret = True
    except Exception:
        try:
            db_engine = sqlalchemy.create_engine(
                '%s://%s:%s@%s' % (config['driver'], config['user'],
                                   config['pass'], config['host']))
            conn = db_engine.connect()
            conn.execute('commit')
            conn.execute('create database %s' % config['name'])
            conn.execute('commit')
            conn.close()
            ret = True
        except Exception:
            print sys.exc_info()
            ret = False
    return ret
Пример #25
0
def fill_tables(step, count, st, tp):
    db_manager = dbmanager.DBManager(world.config['connections']['mysql'])
    db = db_manager.get_db()
    try:
        for i in range(int(count)):

            while True:
                msg_id = ''.join(
                    random.choice(string.ascii_uppercase + string.digits)
                    for x in range(75))
                if db.messages.filter(
                        db.messages.messageid == msg_id).first() is None:
                    break
                continue

            while True:
                farm_id = random.randint(1, 9999)
                if db.farm_settings.filter(
                        db.farm_settings.farmid == farm_id).first() is None:
                    break
                continue

            while True:
                srv_id = ''.join(
                    random.choice(string.ascii_uppercase + string.digits)
                    for x in range(36))
                if db.servers.filter(
                        db.servers.server_id == srv_id).first() is None:
                    break
                continue

            while True:
                event_id = ''.join(
                    random.choice(string.ascii_uppercase + string.digits)
                    for x in range(36))
                if db.events.filter(
                        db.events.event_id == event_id).first() is None:
                    break
                continue

            db.messages.insert(messageid=msg_id,
                               status=int(st),
                               handle_attempts=0,
                               dtlasthandleattempt=func.now(),
                               message='some text here',
                               server_id=srv_id,
                               type='%s' % tp,
                               message_version=2,
                               message_name=random.choice(['ExecScript', '']),
                               message_format=random.choice(['xml', 'json']),
                               event_id=event_id)
            world.msgs_id.setdefault(msg_id, {}).setdefault('status', st)

            db.servers.insert(farm_id=farm_id,
                              server_id=srv_id,
                              env_id=1,
                              status='Running',
                              remote_ip='127.0.0.1')

            db.events.insert(event_id=event_id, msg_sent=0)

            world.srvs_id.append(srv_id)

            db.server_properties.insert(server_id=srv_id,
                                        name='scalarizr.key',
                                        value='hoho')
            db.server_properties.insert(server_id=srv_id,
                                        name='scalarizr.ctrl_port',
                                        value=8013)

        db.commit()

    finally:
        db.session.remove()

    lib.wait_sec(1)
    assert True
Пример #26
0
def fill_tables_vpc(step, count, st, tp):
    db_manager = dbmanager.DBManager(world.config['connections']['mysql'])
    db = db_manager.get_db()
    try:
        for i in range(int(count)):

            while True:
                msg_id = ''.join(
                    random.choice(string.ascii_uppercase + string.digits)
                    for x in range(75))
                if db.messages.filter(
                        db.messages.messageid == msg_id).first() is None:
                    break
                continue
            while True:
                msg_id_router = ''.join(
                    random.choice(string.ascii_uppercase + string.digits)
                    for x in range(75))
                if db.messages.filter(db.messages.messageid ==
                                      msg_id_router).first() is None:
                    break
                continue

            while True:
                farm_id = random.randint(1, 20000)
                if db.farm_settings.filter(
                        db.farm_settings.farmid == farm_id).first() is None:
                    break
                continue

            while True:
                farm_role_id = random.randint(1, 20000)
                if db.role_behaviors.filter(db.role_behaviors.role_id ==
                                            farm_role_id).first() is None:
                    break
                continue
            while True:
                farm_role_id_router = random.randint(1, 20000)
                if db.role_behaviors.filter(
                        db.role_behaviors.role_id ==
                        farm_role_id_router).first() is None:
                    break
                continue

            while True:
                srv_id = ''.join(
                    random.choice(string.ascii_uppercase + string.digits)
                    for x in range(36))
                if db.servers.filter(
                        db.servers.server_id == srv_id).first() is None:
                    break
                continue
            while True:
                srv_id_router = ''.join(
                    random.choice(string.ascii_uppercase + string.digits)
                    for x in range(36))
                if db.servers.filter(
                        db.servers.server_id == srv_id_router).first() is None:
                    break
                continue

            while True:
                event_id = ''.join(
                    random.choice(string.ascii_uppercase + string.digits)
                    for x in range(36))
                if db.events.filter(
                        db.events.event_id == event_id).first() is None:
                    break
                continue

            db.messages.insert(messageid=msg_id,
                               status=int(st),
                               handle_attempts=0,
                               dtlasthandleattempt=func.now(),
                               message='some text here',
                               server_id=srv_id,
                               type='%s' % tp,
                               message_version=2,
                               message_format=random.choice(['xml', 'json']),
                               event_id=event_id)
            db.messages.insert(messageid=msg_id_router,
                               status=int(st),
                               handle_attempts=0,
                               dtlasthandleattempt=func.now(),
                               message='some text here',
                               server_id=srv_id_router,
                               type='%s' % tp,
                               message_version=2,
                               message_format=random.choice(['xml', 'json']))

            db.farms.insert(farm_id=farm_id, env_id=1)

            db.events.insert(event_id=event_id, msg_sent=0)

            db.farm_roles.insert(farmid=farm_id, role_id=farm_role_id)
            db.farm_roles.insert(farmid=farm_id, role_id=farm_role_id_router)

            db.servers.insert(farm_id=farm_id,
                              farm_roleid=farm_role_id,
                              server_id=srv_id,
                              env_id=1,
                              status='Running',
                              local_ip='244.244.244.244')
            db.servers.insert(farm_id=farm_id,
                              farm_roleid=farm_role_id_router,
                              server_id=srv_id_router,
                              env_id=1,
                              status='Running',
                              local_ip='254.254.254.254')

            db.role_behaviors.insert(role_id=farm_role_id,
                                     behavior='not router')
            db.role_behaviors.insert(role_id=farm_role_id_router,
                                     behavior='router')

            db.farm_settings.insert(farmid=farm_id,
                                    name='ec2.vpc.id',
                                    value='1')

            id_ = db.farm_roles.filter(
                db.farm_roles.role_id == farm_role_id_router,
                db.farm_roles.farmid == farm_id).first().id
            db.farm_role_settings.insert(farm_roleid=id_,
                                         name='router.vpc.ip',
                                         value='127.0.0.1')

            world.srvs_id.append(srv_id)
            world.srvs_id.append(srv_id_router)

            db.server_properties.insert(server_id=srv_id,
                                        name='scalarizr.key',
                                        value='hoho')
            db.server_properties.insert(server_id=srv_id,
                                        name='scalarizr.ctrl_port',
                                        value='8013')

            db.server_properties.insert(server_id=srv_id_router,
                                        name='scalarizr.key',
                                        value='hoho')
            db.server_properties.insert(server_id=srv_id_router,
                                        name='scalarizr.ctrl_port',
                                        value='8013')

        db.commit()

    finally:
        db.session.remove()

    lib.wait_sec(1)
    assert True
Пример #27
0
    def test_get_db(self):
        db_manager = dbmanager.DBManager(self.config)
        assert db_manager.get_db() is not None

        db_manager.db = None
        assert db_manager.get_db() is not None
Пример #28
0
def fill_tables1(step, count, st, tp):
    try:
        world.msgs_id = {}
        world.srvs_id = []

        db_manager = dbmanager.DBManager(world.config['connections']['mysql'])
        db = db_manager.get_db()

        for i in range(int(count)):
            while True:
                msg_id = ''.join(random.choice(string.ascii_uppercase +\
                        string.digits) for x in range(75))
                if db.messages.filter(
                        db.messages.messageid == msg_id).first() is None:
                    break
                continue

            while True:
                farm_id = random.randint(1, 9999)
                if db.farm_settings.filter(
                        db.farm_settings.farmid == farm_id).first() is None:
                    break
                continue

            while True:
                srv_id = ''.join(random.choice(string.ascii_uppercase +\
                        string.digits) for x in range(36))
                if db.servers.filter(
                        db.servers.server_id == srv_id).first() is None:
                    break
                continue

            db.messages.insert(messageid=msg_id,
                               status=int(st),
                               handle_attempts=0,
                               dtlasthandleattempt=func.now(),
                               message='some text here',
                               server_id=srv_id,
                               type='%s' % tp,
                               message_version=2)
            world.msgs_id.setdefault(msg_id, {}).setdefault('status', st)

            db.servers.insert(farm_id=farm_id,
                              server_id=srv_id,
                              env_id=1,
                              status='Running',
                              remote_ip='127.0.0.1')

            world.srvs_id.append(srv_id)

        db.commit()
        for srv_id in world.srvs_id:
            db.server_properties.insert(server_id=srv_id,
                                        name='scalarizr.key',
                                        value='hoho')
            db.server_properties.insert(server_id=srv_id,
                                        name='scalarizr.ctrl_port',
                                        value=None)
        db.commit()
        db.session.close()
        assert True

    except Exception:
        assert False
Пример #29
0
 def __init__(self):
     super(StatsPoller, self).__init__(pid_file=CONFIG['pid_file'])
     self._db_manager = dbmanager.DBManager(CONFIG['connections']['mysql'],
                                            autoflush=False)
Пример #30
0
def fill_tables2(step, count, st, tp):
    try:
        world.msgs_id = {}
        world.srvs_id = []

        db_manager = dbmanager.DBManager(world.config['connections']['mysql'])
        db = db_manager.get_db()

        for i in range(int(count)):
            while True:
                msg_id = ''.join(random.choice(string.ascii_uppercase +\
                        string.digits) for x in range(75))
                if db.messages.filter(
                        db.messages.messageid == msg_id).first() is None:
                    break
                continue
            while True:
                msg_id_router = ''.join(random.choice(string.ascii_uppercase +\
                        string.digits) for x in range(75))
                if db.messages.filter(db.messages.messageid ==
                                      msg_id_router).first() is None:
                    break
                continue
            while True:
                farm_id = random.randint(1, 20000)
                if db.farm_settings.filter(
                        db.farm_settings.farmid == farm_id).first() is None:
                    break
                continue

            while True:
                farm_role_id = random.randint(1, 20000)
                if db.role_behaviors.filter(db.role_behaviors.role_id ==
                                            farm_role_id).first() is None:
                    break
                continue
            while True:
                farm_role_id_router = random.randint(1, 20000)
                if db.role_behaviors.filter(
                        db.role_behaviors.role_id ==
                        farm_role_id_router).first() is None:
                    break
                continue
            while True:
                srv_id = ''.join(random.choice(string.ascii_uppercase +\
                        string.digits) for x in range(36))
                if db.servers.filter(
                        db.servers.server_id == srv_id).first() is None:
                    break
                continue
            while True:
                srv_id_router = ''.join(random.choice(string.ascii_uppercase +\
                        string.digits) for x in range(36))
                if db.servers.filter(
                        db.servers.server_id == srv_id_router).first() is None:
                    break
                continue

            db.messages.insert(messageid=msg_id,
                               status=int(st),
                               handle_attempts=0,
                               dtlasthandleattempt=func.now(),
                               message='some text here',
                               server_id=srv_id,
                               type='%s' % tp,
                               message_version=2)
            db.messages.insert(messageid=msg_id_router,
                               status=int(st),
                               handle_attempts=0,
                               dtlasthandleattempt=func.now(),
                               message='some text here',
                               server_id=srv_id_router,
                               type='%s' % tp,
                               message_version=2)

            db.farms.insert(farm_id=farm_id, env_id=1)

            db.farm_roles.insert(farmid=farm_id, role_id=farm_role_id)
            db.farm_roles.insert(farmid=farm_id, role_id=farm_role_id_router)

            db.servers.insert(farm_id=farm_id,
                              farm_roleid=farm_role_id,
                              server_id=srv_id,
                              env_id=1,
                              status='Running',
                              local_ip='244.244.244.244')
            db.servers.insert(farm_id=farm_id,
                              farm_roleid=farm_role_id_router,
                              server_id=srv_id_router,
                              env_id=1,
                              status='Running',
                              local_ip='254.254.254.254')

            db.role_behaviors.insert(role_id=farm_role_id,
                                     behavior='not router')
            db.role_behaviors.insert(role_id=farm_role_id_router,
                                     behavior='router')

            db.farm_settings.insert(farmid=farm_id,
                                    name='ec2.vpc.id',
                                    value='1')

            id_ = db.farm_roles.filter(
                db.farm_roles.role_id == farm_role_id_router,
                db.farm_roles.farmid == farm_id).first().id
            db.farm_role_settings.insert(farm_roleid=id_,
                                         name='router.vpc.ip',
                                         value='127.0.0.1')

            world.srvs_id.append(srv_id)
            world.srvs_id.append(srv_id_router)

        db.commit()
        for srv_id in world.srvs_id:
            db.server_properties.insert(server_id=srv_id,
                                        name='scalarizr.key',
                                        value='hoho')
            db.server_properties.insert(server_id=srv_id,
                                        name='scalarizr.ctrl_port',
                                        value='8013')

        db.commit()
        db.session.close()
        assert True

    except Exception:
        print sys.exc_info()
        assert False