コード例 #1
0
ファイル: test_boss.py プロジェクト: podhornyi/beetroot
    def test_boss_workers_sequence(self):
        worker1 = Worker(1, 'w1', '')
        worker2 = Worker(1, 'w2', '')
        worker3 = Worker(1, 'w3', '')

        _workers = [worker1, worker3, worker2]

        for worker in _workers:
            self.boss.add_worker(worker)

        self.assertTrue(self.boss.workers == _workers)
コード例 #2
0
 def start_worker(self, image, tenant, worker_id):
     ch = WorkerChannel()
     # start an actor executor container and wait for a confirmation that image was pulled.
     worker_dict = run_worker(image, ch.name, worker_id)
     worker = Worker(tenant=tenant, **worker_dict)
     print(
         "worker started successfully, waiting on ack that image was pulled..."
     )
     result = ch.get()
     if result.get('status') == 'error':
         # there was a problem pulling the image; put the actor in an error state:
         msg = "got an error back from the worker. Message: {}", format(
             result)
         print(msg)
         if 'msg' in result:
             raise SpawnerException(message=result['msg'])
         else:
             raise SpawnerException(
                 message="Internal error starting worker process.")
     elif result['value']['status'] == 'ok':
         print("received ack from worker.")
         return ch, result['reply_to'], worker
     else:
         msg = "Got an error status from worker: {}. Raising an exception.".format(
             str(result))
         print(msg)
         raise SpawnerException(msg)
コード例 #3
0
ファイル: spawner.py プロジェクト: ehb54/abaco-1
 def start_worker(self, image, tenant, worker_id):
     ch = SpawnerWorkerChannel(worker_id=worker_id)
     # start an actor executor container and wait for a confirmation that image was pulled.
     worker_dict = run_worker(image, worker_id)
     worker_dict['ch_name'] = WorkerChannel.get_name(worker_id)
     worker = Worker(tenant=tenant, **worker_dict)
     logger.info(
         "worker started successfully, waiting on ack that image was pulled..."
     )
     result = ch.get()
     logger.debug(
         "Got response back from worker. Response: {}".format(result))
     if result.get('status') == 'error':
         # there was a problem pulling the image; put the actor in an error state:
         msg = "Got an error back from the worker. Message: {}", format(
             result)
         logger.info(msg)
         if 'msg' in result:
             raise SpawnerException(message=result['msg'])
         else:
             logger.error(
                 "Spawner received invalid message from worker. 'msg' field missing. Message: {}"
                 .format(result))
             raise SpawnerException(
                 message="Internal error starting worker process.")
     elif result['value']['status'] == 'ok':
         logger.debug("received ack from worker.")
         return ch, result['reply_to'], worker
     else:
         msg = "Got an error status from worker: {}. Raising an exception.".format(
             str(result))
         logger.error(
             "Spawner received an invalid message from worker. Message: ".
             format(result))
         raise SpawnerException(msg)
コード例 #4
0
ファイル: controllers.py プロジェクト: jlooney/abaco
 def get(self, actor_id):
     logger.debug("top of GET /actors/{}/workers for tenant {}.".format(
         actor_id, g.tenant))
     dbid = Actor.get_dbid(g.tenant, actor_id)
     try:
         Actor.from_db(actors_store[dbid])
     except KeyError:
         logger.debug("did not find actor: {}.".format(actor_id))
         raise ResourceError("No actor found with id: {}.".format(actor_id),
                             404)
     try:
         workers = Worker.get_workers(dbid)
     except WorkerException as e:
         logger.debug(
             "did not find workers for actor: {}.".format(actor_id))
         raise ResourceError(e.msg, 404)
     result = []
     for id, worker in workers.items():
         worker.update({'id': id})
         try:
             w = Worker(**worker)
             result.append(w.display())
         except Exception as e:
             logger.error(
                 "Unable to instantiate worker in workers endpoint from description: {}. "
                 .format(worker))
     return ok(result=result, msg="Workers retrieved successfully.")
コード例 #5
0
def add_worker():
    try:
        id = int(request.form.get('worker_id'))
        name = request.form.get('worker_name')
        id_card = request.form.get('id_card_no')
        age = int(request.form.get('age'))
        sex = request.form.get('sex')
        tel = request.form.get('telephone')
        address = request.form.get('address')
        salary = int(request.form.get('salary'))
        type = request.form.get('worker_type')
        user_id = session['user_id']
        agent = Worker.query.filter(Worker.worker_id == user_id).first()
        workshop_id = agent.workshop_id
        worker = Worker(worker_id=id,
                        name=name,
                        id_card_NO=id_card,
                        age=age,
                        sex=sex,
                        contart_info=tel,
                        address=address,
                        salary=salary,
                        work_type=type,
                        workshop_id=workshop_id)
        db.session.add(worker)
        db.session.commit()
        return render_template('agent/agent_add.html',
                               success=True,
                               msg="添加成功~")
    except:
        db.session.rollback()
        return render_template('agent/agent_add.html',
                               success=False,
                               msg="添加失败,请确保输入信息无误~")
コード例 #6
0
def make_new_worker(amz_dict, session):
    worker = Worker(workerid=amz_dict['workerId'],
                    assignmentid=amz_dict['assignmentId'],
                    hitid=amz_dict['hitId'],
                    list_id=amz_dict['list'])
    session.add(worker)
    session.commit()
    return worker
コード例 #7
0
ファイル: views.py プロジェクト: meeron/pyrecords
    def render(self):
        print("===Add===")
        
        if not self._tempWorker:
            name = input("\nName: ")
            age = input("Age: ")
            self._tempWorker = Worker(name, age, "")

        print("\nAdd {0}? (y/n)".format(self._tempWorker.name))
コード例 #8
0
    def start_worker(self, image, tenant, actor_id, worker_id):
        ch = SpawnerWorkerChannel(worker_id=worker_id)
        # start an actor executor container and wait for a confirmation that image was pulled.
        attempts = 0
        while True:
            try:
                worker_dict = run_worker(image, actor_id, worker_id)
            except DockerError as e:
                logger.error("Spawner got a docker exception from run_worker; Exception: {}".format(e))
                if 'read timeout' in e.message:
                    logger.info("Exception was a read timeout; trying run_worker again..")
                    time.sleep(5)
                    attempts = attempts + 1
                    if attempts > 20:
                        msg = "Spawner continued to get DockerError for 20 attempts. Exception: {}".format(e)
                        logger.critical(msg)
                        raise SpawnerException(msg)
                    continue
                else:
                    logger.info("Exception was NOT a read timeout; quiting on this worker.")
                    # delete this worker from the workers store:
                    try:
                        self.kill_worker(actor_id, worker_id)
                    except WorkerException as e:
                        logger.info("Got WorkerException from delete_worker(). "
                                    "worker_id: {}"
                                    "Exception: {}".format(worker_id, e))

                    raise SpawnerException(message="Unable to start worker; error: {}".format(e))
            break
        worker_dict['ch_name'] = WorkerChannel.get_name(worker_id)
        worker = Worker(tenant=tenant, **worker_dict)
        logger.info("worker started successfully, waiting on ack that image was pulled...")
        result = ch.get()
        logger.debug("Got response back from worker. Response: {}".format(result))
        if result.get('status') == 'error':
            # there was a problem pulling the image; put the actor in an error state:
            msg = "Got an error back from the worker. Message: {}",format(result)
            logger.info(msg)
            if 'msg' in result:
                raise SpawnerException(message=result['msg'])
            else:
                logger.error("Spawner received invalid message from worker. 'msg' field missing. Message: {}".format(result))
                raise SpawnerException(message="Internal error starting worker process.")
        elif result['value']['status'] == 'ok':
            logger.debug("received ack from worker.")
            return ch, result['reply_to'], worker
        else:
            msg = "Got an error status from worker: {}. Raising an exception.".format(str(result))
            logger.error("Spawner received an invalid message from worker. Message: ".format(result))
            raise SpawnerException(msg)
コード例 #9
0
def handle_signup_worker():
    """ Registra un trabajador para incluirlo en la DB"""

    data = request.get_json()

    if data is None:
        raise APIException(
            "You need to specify the request body as a json object",
            status_code=400)

    new_worker = Worker(
        init_date=data['init_date'],
        Consultor=data['Consultor'],
        candidate=data['candidate'],
        cedula=data['cedula'],
        status=data['status'],
        phone_number=data['phone_number'],
        email=data['email'],
        catchment_source=data['catchment_source'],
        managment=data['managment'],
        vacant=data['vacant'],
        Observations=data['Observations'],
        interview_date=data['interview_date'],
        actual_charge=data['actual_charge'],
        company=data['company'],
        sector=data['sector'],
        coin=data['coin'],
        basic_salary=data['basic_salary'],
        variable_salary=data['variable_salary'],
        cesta_ticket=data['cesta_ticket'],
        Profit_Days=data['Profit_Days'],
        vacations=data['vacations'],
        Vacation_Bonus=data['Vacation_Bonus'],
        Factor=data['Factor'],
        Estimated_annual_package=data['Estimated_annual_package'],
        Production_bonus=data['Production_bonus'],
        Transport_bonus=data['Transport_bonus'],
        Savings_Bank=data['Savings_Bank'],
        food_bags=data['food_bags'],
        parking_payment=data['parking_payment'],
        partial_HCM_Emp_Family=data['partial_HCM_Emp_Family'],
        Vehicle_insurance=data['Vehicle_insurance'],
        life_insurance=data['life_insurance'],
        dinning_room=data['dinning_room'],
        full_HCM_Emp_Family=data['full_HCM_Emp_Family'])
    db.session.add(new_worker)
    db.session.commit()
    if new_worker:
        return new_worker.serialize(), 201
コード例 #10
0
def get_or_make_worker(amz_dict, session):
    try:
        worker = session.query(Worker).filter_by(
            workerid=amz_dict['workerId']).one()
        worker.list_id = amz_dict['list']
        session.commit()
        return worker
    except NoResultFound:
        worker = Worker(workerid=amz_dict['workerId'],
                        assignmentid=amz_dict['assignmentId'],
                        hitid=amz_dict['hitId'],
                        list_id=amz_dict['list'])
        session.add(worker)
        session.commit()
        return worker
コード例 #11
0
def forget_password():
    email = request.json.get('email', None)
    if not email or email == '':
        return None
    worker = Worker()
    worker.email = email
    worker = Worker.query.filter_by(email=email).first()
    if not worker:
        return jsonify({"msg": "This email is not registered"}), 404
    token = generate_confirmation_token(worker.email)
    print(token)
    confirm_url = 'http://localhost:3000/confirmation/' + token
    html = render_template('email_confirmation.html', confirm_url=confirm_url)
    subject = "Por favor, Confirmar su email."
    sendMail("Por favor, Confirmar su email.", '', '', worker.email, html)
    return jsonify({"success": "Email send successfully"}), 200
コード例 #12
0
ファイル: controllers.py プロジェクト: ehb54/abaco-1
 def get(self, actor_id, worker_id):
     logger.debug("top of GET /actors/{}/workers/{}.".format(actor_id, worker_id))
     id = Actor.get_dbid(g.tenant, actor_id)
     try:
         Actor.from_db(actors_store[id])
     except KeyError:
         logger.debug("Did not find actor: {}.".format(actor_id))
         raise ResourceError("No actor found with id: {}.".format(actor_id), 404)
     try:
         worker = Worker.get_worker(id, worker_id)
     except WorkerException as e:
         logger.debug("Did not find worker: {}. actor: {}.".format(worker_id, actor_id))
         raise ResourceError(e.msg, 404)
     # worker is an honest python dictionary with a single key, the id of the worker. need to
     # convert it to a Worker object
     worker.update({'id': worker_id})
     w = Worker(**worker)
     return ok(result=w.display(), msg="Worker retrieved successfully.")
コード例 #13
0
ファイル: Boat.py プロジェクト: ritajie/Boat
def worker_login():
    if request.method == "GET":
        return render_template("worker_login.html")
    else:
        name = request.form.get("name")
        workerid = request.form.get("workerid")
        password1 = request.form.get("password1")
        password2 = request.form.get("password2")

        if not Worker.query.filter(Worker.workerid == workerid):
            return "工号已经被注册"
        if password1 != password2:
            return "两次输入的密码不一致"

        newworker = Worker(name=name, workerid=workerid, password=password1)
        db.session.add(newworker)
        db.session.commit()

        return redirect("worker")
コード例 #14
0
    def post(self):
        logging.debug("Start Class WorkerList / method post")
        args = parser.parse_args()
        worker_add = Worker(department_key=args['department_key'],
                            worker_name=args['worker_name'],
                            birthday=args['birthday'],
                            salary=args['salary'])
        db.session.add(worker_add)
        try:
            db.session.commit()
        except Exception as ex:
            return Response(f'interval {ex!r}', status=500)

        # workers_list = {'add_id': worker_add.id,
        #                 'department_key': worker_add.department_key,
        #                 'worker_name': worker_add.worker_name,
        #                 'birthday': str(worker_add.birthday),
        #                 'salary': worker_add.salary}

        workers_list = get_all_department()
        return Response(json.dumps(workers_list), status=200)
コード例 #15
0
def register():
    email = request.json.get('email')
    name = request.json.get('name')
    password = request.json.get('password')
    if not email:
        return jsonify({"error": "Email is required"}), 422
    if not name:
        return jsonify({"error": "name is required"}), 422
    if not password:
        return jsonify({"error": "Password is required"}), 422
    worker = Worker.query.filter_by(email=email).first()
    if worker:
        return jsonify({"error": "This email already exist"}), 422
    worker = Worker()
    worker.email = email
    worker.name = name
    worker.password = bcrypt.generate_password_hash(password)
    db.session.add(worker)
    db.session.commit()
    if bcrypt.check_password_hash(worker.password, password):
        access_token = create_access_token(identity=worker.email)
        data = {"access_token": access_token, "worker": worker.serialize()}
        return jsonify(data), 200
コード例 #16
0
def insert_in_db(insert_id):
    if request.method == 'POST':
        if insert_id == '1':
            try:
                id = int(request.form.get('worker_id'))
                name = request.form.get('worker_name')
                id_card = request.form.get('id_card_no')
                age = int(request.form.get('age'))
                sex = request.form.get('sex')
                tel = request.form.get('telephone')
                address = request.form.get('address')
                salary = int(request.form.get('salary'))
                type = request.form.get('worker_type')
                workshop_id = int(request.form.get('workshop_id'))
                worker = Worker(worker_id=id,
                                name=name,
                                id_card_NO=id_card,
                                age=age,
                                sex=sex,
                                contart_info=tel,
                                address=address,
                                salary=salary,
                                work_type=type,
                                workshop_id=workshop_id)
                db.session.add(worker)
                db.session.commit()
                return render_template('BOSS/insert.html',
                                       success=True,
                                       msg="添加成功~")
            except:
                db.session.rollback()
                return render_template('BOSS/insert.html',
                                       success=False,
                                       msg="输入有误,添加失败~")
        elif insert_id == '2':
            try:
                id = int(request.form.get('order-num'))
                company = request.form.get('company')
                date = request.form.get('order_data')
                delivery_date = request.form.get('delivery_date')
                order_state = request.form.get('order_state')
                order = Order(order_num=id,
                              company=company,
                              order_date=date,
                              delivery_data=delivery_date,
                              delivery_state=order_state)
                db.session.add(order)
                db.session.commit()
                return render_template('BOSS/insert.html',
                                       success=True,
                                       msg="添加成功~")
            except:
                db.session.rollback()
                return render_template('BOSS/insert.html',
                                       success=False,
                                       msg="输入有误,添加失败~")
        elif insert_id == '3':
            try:
                workshop_id = int(request.form.get('workshop_id'))
                director_id = int(request.form.get('director_id'))
                tel = request.form.get('telephone')
                workshop = Workshop(workshop_id=workshop_id,
                                    director_id=director_id,
                                    telephone=tel)
                db.session.add(workshop)
                db.session.commit()
                return render_template('BOSS/insert.html',
                                       success=True,
                                       msg="添加成功~")
            except:
                db.session.rollback()
                return render_template('BOSS/insert.html',
                                       success=False,
                                       msg="输入有误,添加失败~")
        elif insert_id == '4':
            try:
                company_name = request.form.get('company-name')
                name = request.form.get('name')
                tel = request.form.get('telephone')
                address = request.form.get('address')
                cooperation = Cooperation(company=company_name,
                                          contact_info=tel,
                                          name=name,
                                          address=address)
                db.session.add(cooperation)
                db.session.commit()
                return render_template('BOSS/insert.html',
                                       success=True,
                                       msg="添加成功~")
            except:
                db.session.rollback()
                return render_template('BOSS/insert.html',
                                       success=False,
                                       msg="输入有误,添加失败~")

        elif insert_id == '5':
            try:
                product_id = int(request.form.get('product-id'))
                product_name = request.form.get('product-name')
                price = int(request.form.get('price'))
                reward = int(request.form.get('reward'))
                output = int(request.form.get('output'))
                product = Cooperation(product_id=product_id,
                                      product_name=product_name,
                                      price=price,
                                      reward=reward,
                                      output=output)
                db.session.add(product)
                db.session.commit()
                return render_template('BOSS/insert.html',
                                       success=True,
                                       msg="添加成功~")
            except:
                db.session.rollback()
                return render_template('BOSS/insert.html',
                                       success=False,
                                       msg="输入有误,添加失败~")

        elif insert_id == '6':
            try:
                warehouse_id = int(request.form.get('warehouse-id'))
                worker_id = int(request.form.get('worker-id'))
                tel = request.form.get('telephone')
                warehouse = Warehouse(warehouse_id=warehouse_id,
                                      worker_id=worker_id,
                                      telephone=tel)
                db.session.add(warehouse)
                db.session.commit()
                return render_template('BOSS/insert.html',
                                       success=True,
                                       msg="添加成功~")
            except:
                db.session.rollback()
                return render_template('BOSS/insert.html',
                                       success=False,
                                       msg="输入有误,添加失败~")
    else:
        pass
コード例 #17
0
ファイル: spawner.py プロジェクト: kwhitley33/abaco
    def start_worker(self,
                     image,
                     tenant,
                     actor_id,
                     worker_id,
                     client_id,
                     client_access_token,
                     client_refresh_token,
                     ch,
                     api_server,
                     client_secret):

        # start an actor executor container and wait for a confirmation that image was pulled.
        attempts = 0
        # worker = get_worker(worker_id)
        # worker['status'] = PULLING_IMAGE
        Worker.update_worker_status(actor_id, worker_id, PULLING_IMAGE)
        try:
            logger.debug("Worker pulling image {}...".format(image))
            pull_image(image)
        except DockerError as e:
            # return a message to the spawner that there was an error pulling image and abort
            # this is not necessarily an error state: the user simply could have provided an
            # image name that does not exist in the registry. This is the first time we would
            # find that out.
            logger.info("worker got a DockerError trying to pull image. Error: {}.".format(e))
            raise e
        logger.info("Image {} pulled successfully.".format(image))
        # Done pulling image
        # Run Worker Container
        while True:
            try:
                Worker.update_worker_status(actor_id, worker_id, CREATING_CONTAINER)
                logger.debug('spawner creating worker container')
                worker_dict = run_worker(
                    image,
                    actor_id,
                    worker_id,
                    client_id,
                    client_access_token,
                    client_refresh_token,
                    tenant,
                    api_server,
                    client_secret

                )
                logger.debug(f'finished run worker; worker dict: {worker_dict}')
            except DockerError as e:
                logger.error("Spawner got a docker exception from run_worker; Exception: {}".format(e))
                if 'read timeout' in e.message:
                    logger.info("Exception was a read timeout; trying run_worker again..")
                    time.sleep(5)
                    attempts = attempts + 1
                    if attempts > 20:
                        msg = "Spawner continued to get DockerError for 20 attempts. Exception: {}".format(e)
                        logger.critical(msg)
                        # todo - should we be calling kill_worker here? (it is called in the exception block of the else below)
                        raise SpawnerException(msg)
                    continue
                else:
                    logger.info("Exception was NOT a read timeout; quiting on this worker.")
                    # delete this worker from the workers store:
                    try:
                        self.kill_worker(actor_id, worker_id)
                    except WorkerException as e:
                        logger.info("Got WorkerException from delete_worker(). "
                                    "worker_id: {}"
                                    "Exception: {}".format(worker_id, e))

                    raise SpawnerException(message="Unable to start worker; error: {}".format(e))
            break
        logger.debug('finished loop')
        worker_dict['ch_name'] = WorkerChannel.get_name(worker_id)
        # if the actor is not already in READY status, set actor status to READY before worker status has been
        # set to READY.
        # it is possible the actor status is already READY because this request is the autoscaler starting a new worker
        # for an existing actor.
        actor = Actor.from_db(actors_store[actor_id])
        if not actor.status == READY:
            try:
                Actor.set_status(actor_id, READY, status_message=" ")
            except KeyError:
                # it is possible the actor was already deleted during worker start up; if
                # so, the worker should have a stop message waiting for it. starting subscribe
                # as usual should allow this process to work as expected.
                pass
        # finalize worker with READY status
        worker = Worker(tenant=tenant, **worker_dict)
        logger.info("calling add_worker for worker: {}.".format(worker))
        Worker.add_worker(actor_id, worker)

        ch.put('READY')  # step 4
        logger.info('sent message through channel')
コード例 #18
0
def make_data(db):
    from models import Department, Worker, WorkCommand
    db.create_all()

    _commit = (lambda *objs: commit(db, *objs))

    d_a = Department(name='A')
    d_b = Department(name='B')
    d_c = Department(name='C')
    _commit(d_a, d_b, d_c)

    workers = [
        Worker(name='Noah', department=d_a, age=random.randrange(18, 61)),
        Worker(name='Liam', department=d_a, age=random.randrange(18, 61)),
        Worker(name='Jacob', department=d_a, age=random.randrange(18, 61)),
        Worker(name='Mason', department=d_a, age=random.randrange(18, 61)),
        Worker(name='William', department=d_a, age=random.randrange(18, 61)),
        Worker(name='Ethan', department=d_a, age=random.randrange(18, 61)),
        Worker(name='Michael', department=d_b, age=random.randrange(18, 61)),
        Worker(name='Alexander', department=d_b, age=random.randrange(18, 61)),
        Worker(name='Jayden', department=d_b, age=random.randrange(18, 61)),
        Worker(name='Daniel', department=d_c, age=random.randrange(18, 61)),
        Worker(name='Sophia', department=d_c, age=random.randrange(18, 61)),
        Worker(name='Emma', department=d_c, age=random.randrange(18, 61)),
        Worker(name='Olivia', department=d_c, age=random.randrange(18, 61)),
        Worker(name='Isabella', department=d_c, age=random.randrange(18, 61)),
        Worker(name='Ava', department=d_c, age=random.randrange(18, 61)),
        Worker(name='Mia', department=d_c, age=random.randrange(18, 61)),
        Worker(name='Emily', department=d_c, age=random.randrange(18, 61)),
        Worker(name='Abigail', department=d_c, age=random.randrange(18, 61)),
        Worker(name='Madison', department=d_c, age=random.randrange(18, 61)),
        Worker(name='Elizabeth', department=d_c, age=random.randrange(18, 61)),
    ]

    _commit(*workers)

    work_commands = []
    for worker in workers:
        for i in xrange(random.randrange(1, 559)):
            quantity = random.randrange(1, 21)
            today = datetime.now().replace(hour=0,
                                           minute=0,
                                           second=0,
                                           microsecond=0)
            # last six month
            created = today - timedelta(random.randrange(1, 186))
            work_commands.append(
                WorkCommand(worker=worker, quantity=quantity, created=created))

    _commit(*work_commands)
コード例 #19
0
 def setUp(self):
     self.boss = Boss(1, 'Kola', 'Noname')
     self.worker = Worker(1, 'Ivan', 'Noname', self.boss)
コード例 #20
0
ファイル: test_boss.py プロジェクト: podhornyi/beetroot
 def test_boss_workers_capacity(self):
     self.assertTrue(len(self.boss.workers) == 0)
     self.boss.add_worker(Worker(1, 'Petro', ''))
     self.assertTrue(len(self.boss.workers) > 0)
コード例 #21
0
ファイル: test_boss.py プロジェクト: podhornyi/beetroot
 def test_boss_workers_appending(self):
     self.assertEqual(0, len(self.boss.workers))
     self.boss.add_worker(Worker(1, 'Petro', ''))
     self.boss.add_worker(None)
     self.boss.add_worker(Worker(1, 'Petro', ''))
     self.assertEqual(2, len(self.boss.workers))