def regist_guest(obj, _guest, icon_filename, cmd, options, cmdname, rollback_options, is_create=False): if icon_filename: _guest.icon = icon_filename if (karesansui.sheconf.has_key('env.uniqkey') is False) \ or (karesansui.sheconf['env.uniqkey'].strip('') == ''): raise action_cmd = dict2command( "%s/%s" % (karesansui.config['application.bin.dir'], cmd), options) rollback_cmd = dict2command( "%s/%s" % (karesansui.config['application.bin.dir'], VIRT_COMMAND_DELETE_GUEST), rollback_options) _jobgroup = JobGroup(cmdname[0], karesansui.sheconf['env.uniqkey']) # create volume job order = 0 if is_create is True: _volume_job = make_storage_volume_job(options["uuid"], options["storage-volume"], options["storage-pool"], options["disk-format"], options["disk-size"], options["disk-size"], 'M', order) order += 1 _jobgroup.jobs.append(_volume_job) _job = Job('%s command' % cmdname[1], order, action_cmd) _job.rollback_command = rollback_cmd _jobgroup.jobs.append(_job) # GuestOS INSERT try: m_save(obj.orm, _guest) obj.orm.commit() except: obj.logger.error('Failed to register the Guest OS. #1 - guest name=%s' \ % _guest.name) raise # throw # JobGroup INSERT try: jg_save(obj.pysilhouette.orm, _jobgroup) obj.pysilhouette.orm.commit() except: # rollback(machine) obj.logger.error('Failed to register the JobGroup. #2 - jobgroup name=%s' \ % _jobgroup.name) try: m_delete(obj.orm, _guest) obj.orm.commit() obj.logger.error('#3 Rollback successful. - guest id=%d' % _guest.id) except: obj.logger.critical('#4 Rollback failed. - guest id=%d' % _guest.id) raise raise # throw # Machine2JobGroup INSERT try: _m2j = m2j_new( machine=_guest, jobgroup_id=_jobgroup.id, uniq_key=karesansui.sheconf['env.uniqkey'], created_user=obj.me, modified_user=obj.me, ) m2j_save(obj.orm, _m2j) obj.orm.commit() except: # rollback(machine, jobgroup) try: m_delete(obj.orm, _guest) obj.orm.commit() except: # rollback(machine) obj.logger.critical('Failed to register the Machine. #5 - guest id=%d' \ % _guest.id) try: jg_delete(obj.pysilhouette.orm, _jobgroup) obj.pysilhouette.orm.commit() except: # rollback(jobgroup) obj.logger.critical('Failed to register the JobGroup. #6 - jobgroup id=%d' \ % _jobgroup.id) raise # throw return True
def regist_guest(obj, _guest, icon_filename, cmd, options, cmdname, rollback_options, is_create=False): if icon_filename: _guest.icon = icon_filename if (karesansui.sheconf.has_key('env.uniqkey') is False) \ or (karesansui.sheconf['env.uniqkey'].strip('') == ''): raise action_cmd = dict2command( "%s/%s" % (karesansui.config['application.bin.dir'], cmd), options) rollback_cmd = dict2command( "%s/%s" % (karesansui.config['application.bin.dir'], VIRT_COMMAND_DELETE_GUEST), rollback_options) _jobgroup = JobGroup(cmdname[0], karesansui.sheconf['env.uniqkey']) # create volume job order = 0 if is_create is True: _volume_job = make_storage_volume_job(options["uuid"], options["storage-volume"], options["storage-pool"], options["disk-format"], options["disk-size"], options["disk-size"], 'M', order ) order += 1 _jobgroup.jobs.append(_volume_job) _job = Job('%s command' % cmdname[1], order, action_cmd) _job.rollback_command = rollback_cmd _jobgroup.jobs.append(_job) # GuestOS INSERT try: m_save(obj.orm, _guest) obj.orm.commit() except: obj.logger.error('Failed to register the Guest OS. #1 - guest name=%s' \ % _guest.name) raise # throw # JobGroup INSERT try: jg_save(obj.pysilhouette.orm, _jobgroup) obj.pysilhouette.orm.commit() except: # rollback(machine) obj.logger.error('Failed to register the JobGroup. #2 - jobgroup name=%s' \ % _jobgroup.name) try: m_delete(obj.orm, _guest) obj.orm.commit() obj.logger.error('#3 Rollback successful. - guest id=%d' % _guest.id) except: obj.logger.critical('#4 Rollback failed. - guest id=%d' % _guest.id) raise raise # throw # Machine2JobGroup INSERT try: _m2j = m2j_new(machine=_guest, jobgroup_id=_jobgroup.id, uniq_key=karesansui.sheconf['env.uniqkey'], created_user=obj.me, modified_user=obj.me, ) m2j_save(obj.orm, _m2j) obj.orm.commit() except: # rollback(machine, jobgroup) try: m_delete(obj.orm, _guest) obj.orm.commit() except: # rollback(machine) obj.logger.critical('Failed to register the Machine. #5 - guest id=%d' \ % _guest.id) try: jg_delete(obj.pysilhouette.orm, _jobgroup) obj.pysilhouette.orm.commit() except: # rollback(jobgroup) obj.logger.critical('Failed to register the JobGroup. #6 - jobgroup id=%d' \ % _jobgroup.id) raise # throw return True
def exec_replicate_guest(obj, _guest, icon_filename, cmdname, guest_job, disk_jobs, volume_jobs): if icon_filename: _guest.icon = icon_filename if (karesansui.sheconf.has_key('env.uniqkey') is False) \ or (karesansui.sheconf['env.uniqkey'].strip('') == ''): raise _jobgroup = JobGroup(cmdname, karesansui.sheconf['env.uniqkey']) _jobgroup.jobs.extend(volume_jobs) _jobgroup.jobs.append(guest_job) _jobgroup.jobs.extend(disk_jobs) # GuestOS INSERT try: m_save(obj.orm, _guest) obj.orm.commit() except: obj.logger.error('Failed to register the Guest OS. #1 - guest name=%s' \ % _guest.name) raise # throw # JobGroup INSERT try: jg_save(obj.pysilhouette.orm, _jobgroup) obj.pysilhouette.orm.commit() except: # rollback(machine) obj.logger.error('Failed to register the JobGroup. #2 - jobgroup name=%s' \ % _jobgroup.name) try: m_delete(obj.orm, _guest) obj.orm.commit() obj.logger.error('#3 Rollback successful. - guest id=%d' % _guest.id) except: obj.logger.critical('#4 Rollback failed. - guest id=%d' % _guest.id) raise raise # throw # Machine2JobGroup INSERT try: _m2j = m2j_new(machine=_guest, jobgroup_id=_jobgroup.id, uniq_key=karesansui.sheconf['env.uniqkey'], created_user=obj.me, modified_user=obj.me, ) m2j_save(obj.orm, _m2j) obj.orm.commit() except: # rollback(machine, jobgroup) try: m_delete(obj.orm, _guest) obj.orm.commit() except: # rollback(machine) obj.logger.critical('Failed to register the Machine. #5 - guest id=%d' \ % _guest.id) try: jg_delete(obj.pysilhouette.orm, _jobgroup) obj.pysilhouette.orm.commit() except: # rollback(jobgroup) obj.logger.critical('Failed to register the JobGroup. #6 - jobgroup id=%d' \ % _jobgroup.id) raise # throw return True