def deploy(session, unit, token): """ Prepares environment for deployment and send deployment command to orchestration engine :param session: session that is going to be deployed :param unit: SQLalchemy session :param token: auth token that is going to be used by orchestration """ #Set X-Auth-Token for conductor environment = unit.query(models.Environment).get( session.environment_id) data = { 'model': session.description, 'token': token, 'tenant_id': environment.tenant_id } data['model']['Objects']['?']['id'] = environment.id data['model']['Objects']['applications'] = \ data['model']['Objects'].get('services', []) if 'services' in data['model']['Objects']: del data['model']['Objects']['services'] session.state = SessionState.deploying deployment = models.Deployment() deployment.environment_id = session.environment_id deployment.description = token_sanitizer.TokenSanitizer().sanitize( dict(session.description.get('Objects'))) status = models.Status() status.text = "Deployment scheduled" status.level = "info" deployment.statuses.append(status) with unit.begin(): unit.add(session) unit.add(deployment) rpc.engine().handle_task(data)
def delete(environment_id, token): """ Deletes environment and notify orchestration engine about deletion :param environment_id: Environment that is going to be deleted :param token: OpenStack auth token """ unit = db_session.get_session() environment = unit.query(models.Environment).get(environment_id) #preparing data for removal from conductor env = environment.description env['Objects'] = None data = { 'model': env, 'token': token, 'tenant_id': environment.tenant_id } rpc.engine().handle_task(data) with unit.begin(): unit.delete(environment)