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()
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)