Пример #1
0
def level5(file_path):
    start = (1, 1)
    end = (26, 25)

    board = Board(file_path, 32)
    board.set_knight_location(start)

    mover = Mover(board)
    path = mover.find_longest_path(start, end)
    print path
    mover.move(path, display=True)
Пример #2
0
def level3(file_path):
    """Find the shortest path between the start and end positions"""
    start = (1, 1)
    end = (6, 6)

    # Set starting point
    board = Board(file_path, 8)
    board.set_knight_location(start)

    mover = Mover(board)
    path = mover.find_shortest_path(start, end)
    print path
    mover.move(path, display=True)
Пример #3
0
def level4(file_path):
    """Find the shortest path between the start and end of the 32x32
       weighted board, with additional constraints
    """
    start = (1, 1)
    end = (26, 25)

    board = Board(file_path, 32)
    board.set_knight_location(start)

    mover = Mover(board)
    path = mover.find_shortest_path(start, end)
    print path
    mover.move(path, display=True)
Пример #4
0
def mover(number, args):

    window, target, source, wq, logger = args

    while True:
        # Object from queue takes by link
        # therefore changes the record gives changes in JsonArray
        element = wq.get()

        # Assigment filesize to db
        # Нет смысла включать это в цикл finder смысла нет,
        # тк все равно везде это делается отдельной операцией
        # element['size'] = source.get_size(element['source_path'])
        def f(elem_p):
            element['size'] = source.get_size(elem_p)

        try_again(0, 1, logger.info, f, element['source_path'])
        window.update_record(element)

        m = Mover(logger, source, target, element, number)
        m.move()
        window.update_record(element)

        wq.task_done()
Пример #5
0
from detector import Detector
from mover import Mover

if __name__ == '__main__':

    print('> > > Start > > > ')

    detector = Detector()
    mover = Mover()
    detector.capture_screen(-1)
    board = detector.get_board()
    mover.move(500, 500, 'up')
    print(board)

    print('< < < End < < < ')
Пример #6
0
def level1(file_path):
    """Pass in a list of moves, display them, and check if they are valid"""
    board = Board(file_path, 8)
    moves = [(1, 3), (2, 1), (4, 2), (8, 8)]
    mover = Mover(board)
    mover.move(moves, display=True)
Пример #7
0
def run(config, logger=None):
    if logger is None:
        logger = logging.getLogger()

    for user_name, values in config.items():
        logger.info("moving for user {0}, domains {1}".format(
            user_name, values['domains']))
        try:
            src = SshRemote(host=values['source']['host'],
                            user=values['source']['user'],
                            password=values['source']['password'],
                            port=22,
                            logger=logger)
            logger.info("source connected")

            dst = SshRemote(host=values['destination']['host'],
                            user=values['destination']['user'],
                            password=values['destination']['password'],
                            port=22,
                            logger=logger)
            logger.info("dst connected")
        except Exception:
            continue

        mover = Mover(dst, src, logger)

        try:
            start_dir = values['source']['start_dir']
        except KeyError:
            start_dir = '~/'

        try:
            ticket = values['ticket']
        except KeyError:
            logger.info("ticket not found for user {}".format(user_name))
            ticket = None

        token = Api.get_token('t.transfer', 'w8et76r4g8s7df6eresdg')
        api = Api(token)

        domains_check = list(set(values['domains']))
        domains = test_domains(domains_check, logger)

        post_comment = api.post_comment if ticket else lambda *x: None
        delay_ticket = api.delay_ticket if ticket else lambda *x: None

        result = {}
        try:
            delta = timedelta(hours=5)
            delay_ticket(
                user_name, ticket, delta,
                "transfer for user {0} has started, delayed for {1}".format(
                    user_name, str(delta)))

            sites = mover.find_sites(domains, start_dir)

            for domain, dir in sites.items():
                logger.info("moving {0}:{1} from {2}".format(
                    user_name, domain, dir))
                try:
                    mover.move(dir, domain)
                    result[domain] = "done"
                except:
                    logger.warning(
                        "transfer for user {0} domain {1} failed".format(
                            user_name, domain))
                    result[domain] = "failed"
                    continue
        finally:
            post_comment(
                "transfer finished for user {0}: {1}".format(
                    user_name, '\n'.join(
                        ["{}: {}".format(k, v) for k, v in result.items()])),
                user_name, ticket, True)
            logger.info("posted to {}".format(ticket))
            subprocess.run([
                "sshpass", "-p", "{0}".format(
                    dst.password), "scp", "-o", "StrictHostKeyChecking=no",
                "/home/mover/logs/mover_{0}.log".format(user_name),
                "{0}@{1}:$HOME/.tmp/".format(dst.user, dst.host)
            ],
                           stdout=sys.stdout,
                           stderr=sys.stdout)