Example #1
0
    def vm_action(self, dom_id, node_id, action, date=None, time=None):
        self.authenticate()
        try:
            dom = DBSession().query(VM).filter(VM.id == dom_id).one()
            tasks = DBSession.query(Task).filter(Task.task_id.in_([dom.start_taskid, dom.shutdown_taskid])).all()
            if len(tasks) > 0 and len(tasks[0].result) == 0 and action == tasks[0].name:
                self.tc.delete_task([tasks[0].task_id])
            result = to_str(self.tc.vm_action(session['auth'], dom_id, node_id, action, date, time))
            wait_time = None
            if action == constants.START:
                dom.start_taskid = result
                wait_time = dom.get_wait_time('view_console')
            else:
                if action == constants.SHUTDOWN:
                    dom.shutdown_taskid = result

            DBSession.add(dom)

        except Exception as ex:
            print_traceback()
            return dict(success=False, msg=to_str(ex))

        return dict(success=True, msg='Task submitted.', taskid=result, wait_time=wait_time)