Example #1
0
    def test_update_deploy_meta(self, session, _session):
        _commit = mock.Mock()
        _session.commit = _commit
        _insert_data = DeployMeta(
            taskname="sample_task",
            user_id=42,
            repo_uri="[email protected]:user/repo.git",
            entry_point="sample",
            hosts=[1, 2]
        )
        session.add(_insert_data)

        with mock.patch.object(
            DeployMeta, "query", session.query_property()
        ) as _query:
            _id = session.query(DeployMeta).first().id
            DeployMeta.update_deploy_meta(deploy_id=_id,
                                          status=1,
                                          msg=u"placeholder")
            _query_data = session.query(DeployMeta).filter_by(
                id=_id
            ).first()
            self.assertEqual(_query_data.status, 1)
            self.assertEqual(_query_data.msg, u"placeholder")
            _commit.assert_called_once_with()
Example #2
0
def deploy(deploy_id, entry_point, user, hosts_ip, repo_uri):
    deploy_playbook = DEPLOY_TEMPLATE_PART_VARS.format(
        hosts_ip_arg=",".join(hosts_ip),
        user_arg=user,
        app_name_arg=entry_point,
        repo_uri_arg=repo_uri
    ) + DEPLOY_TEMPLATE_PART_TASK
    with tempfile.NamedTemporaryFile(suffix=".yml") as tmp_playbook:
        tmp_playbook.write(deploy_playbook)
        tmp_playbook.flush()
        msg = subprocess.Popen(
            "ansible-playbook " + tmp_playbook.name,
            shell=True,
            stdout=subprocess.PIPE
        ).stdout.read()
        status = 2 if "FAILED!" in msg.upper() else 1
        DeployMeta.update_deploy_meta(deploy_id=deploy_id,
                                      status=status, msg=msg)