Ejemplo n.º 1
0
def connect():
    # Assemble the remote_addr value with the port value sent from the manager
    ip_address = request.remote_addr + ':' + str(request.form['port'])
    hostname = request.form['name']

    manager = Manager.query.filter_by(mac_address=mac_address).first()

    if manager:
        logging.info("Known manager requested connection, updating IP address")
        manager.ip_address = ip_address
        db.session.add(manager)
        db.session.commit()

    else:
        logging.info("New manager requested connection")
        # create new manager object with some defaults.
        # Later on most of these values will be passed as JSON object
        # during the first connection

        manager = Manager(name=hostname, port=port, ip_address=ip_address)

        db.session.add(manager)
        db.session.commit()
        logging.info("Manager added")

    # we verify the identity of the manager (will check on database)
    try:
        f = urllib.urlopen('http://' + ip_address)
        manager = json.loads(f.read())
        logging.info("Manager connected:")
        for k, v in manager.iteritems():
            logging.info("  {0}: {1}".format(k, v))
        return "You are now connected to the server"
    except:
        error = "Server could not connect to manager with IP " + ip_address
Ejemplo n.º 2
0
def connect():
    # We assemble the remote_addr value with
    # the port value sent from the manager
    ip_address = request.remote_addr + ':' + str(request.form['port'])
    hostname = request.form['name']

    manager = Manager.query.filter_by(mac_address=mac_address).first()

    if manager:
        logging.info('Known manager requested connection, updating IP address')
        manager.ip_address = ip_address
        db.session.add(manager)
        db.session.commit()

    else:
        logging.info('New manager requested connection')
        # create new manager object with some defaults.
        # Later on most of these values will be passed as JSON object
        # during the first connection

        manager = Manager(name=hostname,
                          port=port,
                          ip_address=ip_address)

        db.session.add(manager)
        db.session.commit()
        logging.info('Manager added')

    # we verify the identity of the manager (will check on database)
    try:
        f = urllib.urlopen('http://' + ip_address)
        manager = json.loads(f.read())
        logging.info('Manager connected:')
        for k, v in manager.iteritems():
            logging.info('  {0}: {1}'.format(k, v))
        return 'You are now connected to the server'
    except:
        error = "server could not connect to manager with ip=" + ip_address
Ejemplo n.º 3
0
    def post(self):
        """Upon every manager startup, we check this resource to know if
        the manager already existed. If not, we create one and assign it a
        unique identifier.
        """
        args = parser.parse_args()
        ip_address = request.remote_addr
        port = args['port']
        has_virtual_workers = args['has_virtual_workers']

        manager = Manager.query\
            .filter_by(ip_address=ip_address)\
            .filter_by(port=port)\
            .first()

        if not manager:
            u = uuid.uuid1()
            manager = Manager(
                name=args['name'],
                ip_address=ip_address,
                port=port,
                has_virtual_workers=has_virtual_workers,
                uuid=u.hex)
            db.session.add(manager)
            db.session.commit()
            logging.info("New manager registered with uuid: {0}".format(u.hex))
        else:
            # Handle the case where the manager has no UUID
            if not manager.uuid:
                u = uuid.uuid1()
                manager.uuid = u.hex
                db.session.commit()
                logging.info("Manager updated with uuid: {0}".format(u.hex))

        logging.info("Manager connected at {0}:{1}".format(manager.ip_address, manager.port))

        return jsonify(uuid=manager.uuid)
Ejemplo n.º 4
0
    def post(self):
        """Upon every manager startup, we check this resource to know if
        the manager already existed. If not, we create one and assign it a
        unique identifier.
        """
        args = parser.parse_args()
        ip_address = request.remote_addr
        port = args['port']
        has_virtual_workers = args['has_virtual_workers']

        manager = Manager.query\
            .filter_by(ip_address=ip_address)\
            .filter_by(port=port)\
            .first()

        if not manager:
            u = uuid.uuid1()
            manager = Manager(name=args['name'],
                              ip_address=ip_address,
                              port=port,
                              has_virtual_workers=has_virtual_workers,
                              uuid=u.hex)
            db.session.add(manager)
            db.session.commit()
            logging.info("New manager registered with uuid: {0}".format(u.hex))
        else:
            # Handle the case where the manager has no UUID
            if not manager.uuid:
                u = uuid.uuid1()
                manager.uuid = u.hex
                db.session.commit()
                logging.info("Manager updated with uuid: {0}".format(u.hex))

        logging.info("Manager connected at {0}:{1}".format(
            manager.ip_address, manager.port))

        return jsonify(uuid=manager.uuid)
Ejemplo n.º 5
0
    def post(self):
        """Upon every manager startup, we check this resource to know if
        the manager already existed. If not, we create one and assign it a
        unique identifier.
        """
        args = parser_manager.parse_args()
        ip_address = request.remote_addr
        token = args['token']
        has_virtual_workers = args['has_virtual_workers']

        if token:
            manager = Manager.query\
                .filter_by(token=token)\
                .first()
            if manager:
                token = uuid.uuid1()
                manager.token = token.hex
                db.session.commit()
                logging.info("Manager token updated: {0}".format(token.hex))
            else:
                return '', 404
        else:
            token = uuid.uuid1()
            manager = Manager(name=args['name'],
                              ip_address=ip_address,
                              has_virtual_workers=has_virtual_workers,
                              host="http://{0}:{1}".format(
                                  ip_address, args['port']),
                              token=token.hex)
            db.session.add(manager)
            db.session.commit()
            logging.info("New manager registered with uuid: {0}".format(
                token.hex))

        logging.info("Manager connected at {0}".format(manager.ip_address))

        return jsonify(token=manager.token)