def create_pool_dir_job(obj, machine, name, type_, target_path, options={}, rollback_options={}): cmdname = u"Create Storage Pool" cmd = VIRT_COMMAND_CREATE_STORAGE_POOL options["name"] = name options["type"] = type_ options["target_path"] = target_path options["mode"] = STORAGE_POOL_PWD["MODE"] options["group"] = pwd.getpwnam(STORAGE_POOL_PWD["GROUP"])[2] options["owner"] = pwd.getpwnam(STORAGE_POOL_PWD["OWNER"])[2] _cmd = dict2command("%s/%s" % (karesansui.config["application.bin.dir"], cmd), options) rollback_options["name"] = name rollback_cmd = dict2command( "%s/%s" % (karesansui.config["application.bin.dir"], VIRT_COMMAND_DELETE_STORAGE_POOL), rollback_options ) _jobgroup = JobGroup(cmdname, karesansui.sheconf["env.uniqkey"]) _job = Job("%s command" % cmdname, 0, _cmd) _job.rollback_command = rollback_cmd _jobgroup.jobs.append(_job) _machine2jobgroup = m2j_new( machine=machine, jobgroup_id=-1, uniq_key=karesansui.sheconf["env.uniqkey"], created_user=obj.me, modified_user=obj.me, ) save_job_collaboration(obj.orm, obj.pysilhouette.orm, _machine2jobgroup, _jobgroup) return True
def replicate_guest(obj, guest, cmd, options, cmdname, rollback_options, order): 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) job = Job(cmdname, order, action_cmd) job.rollback_command = rollback_cmd return job
def create_storage_volume_dir(obj, guest, domname, volume_name, pool_name, format, capacity, allocation, unit, order): """<comment-ja> dir形式のストレージボリュームを利用して、ディスク追加を行います。 </comment-ja> <comment-en> TODO: To include comments in English </comment-en> """ # create volume cmdname = u"Create Storage Volume" cmd = VIRT_COMMAND_CREATE_STORAGE_VOLUME options = {} options['name'] = domname options['pool_name'] = pool_name options['format'] = format options['capacity'] = capacity options['allocation'] = allocation options['unit'] = unit options['permission_owner'] = pwd.getpwnam(STORAGE_VOLUME_PWD["OWNER"])[2] options['permission_group'] = pwd.getpwnam(STORAGE_VOLUME_PWD["GROUP"])[2] options['permission_mode'] = STORAGE_VOLUME_PWD["MODE"] options['use'] = DISK_USES["DISK"] options['volume'] = volume_name _cmd = dict2command( "%s/%s" % (karesansui.config['application.bin.dir'], cmd), options) rollback_options = {} rollback_options["name"] = domname rollback_options["pool_name"] = pool_name rollback_options["use"] = DISK_USES["IMAGES"] rollback_cmd = dict2command( "%s/%s" % (karesansui.config['application.bin.dir'], VIRT_COMMAND_DELETE_STORAGE_VOLUME), rollback_options) _job = Job('%s command' % cmdname, order, _cmd) _job.rollback_command = rollback_cmd return _job
def create_pool_dir_job(obj, machine, name, type_, target_path, options={}, rollback_options={}): cmdname = u"Create Storage Pool" cmd = VIRT_COMMAND_CREATE_STORAGE_POOL options['name'] = name options["type"] = type_ options["target_path"] = target_path options["mode"] = STORAGE_POOL_PWD["MODE"] options["group"] = pwd.getpwnam(STORAGE_POOL_PWD["GROUP"])[2] options["owner"] = pwd.getpwnam(STORAGE_POOL_PWD["OWNER"])[2] _cmd = dict2command( "%s/%s" % (karesansui.config['application.bin.dir'], cmd), options) rollback_options["name"] = name rollback_cmd = dict2command( "%s/%s" % (karesansui.config['application.bin.dir'], VIRT_COMMAND_DELETE_STORAGE_POOL), rollback_options) _jobgroup = JobGroup(cmdname, karesansui.sheconf['env.uniqkey']) _job = Job('%s command' % cmdname, 0, _cmd) _job.rollback_command = rollback_cmd _jobgroup.jobs.append(_job) _machine2jobgroup = m2j_new(machine=machine, jobgroup_id=-1, uniq_key=karesansui.sheconf['env.uniqkey'], created_user=obj.me, modified_user=obj.me, ) save_job_collaboration(obj.orm, obj.pysilhouette.orm, _machine2jobgroup, _jobgroup, ) return True
def replicate_storage_volume(obj, orig_name, orig_pool, orig_volume, dest_name, dest_pool, dest_volume, order): """ <comment-ja> ゲストOSに登録されているディスク(ストレージボリューム)のコピージョブを作成します。 </comment-ja> <comment-en> TODO: English Documents(en) </comment-en> """ cmdname = u"Replicate Storage_Volume %s" % dest_name cmd = VIRT_COMMAND_REPLICATE_STORAGE_VOLUME options = {} options["orig_name"] = orig_name options["orig_pool"] = orig_pool options["orig_volume"] = orig_volume options["dest_name"] = dest_name options["dest_pool"] = dest_pool options["dest_volume"] = dest_volume _cmd = dict2command( "%s/%s" % (karesansui.config['application.bin.dir'], cmd), options) rollback_options = {} rollback_options["name"] = dest_volume rollback_options["pool_name"] = dest_pool rollback_options["use"] = DISK_USES["DISK"] rollback_cmd = dict2command( "%s/%s" % (karesansui.config['application.bin.dir'], VIRT_COMMAND_DELETE_STORAGE_VOLUME), rollback_options) job = Job('%s command' % cmdname, order, _cmd) job.rollback_command = rollback_cmd return job
def create_pool_iscsi_job( obj, machine, name, type_, host_name, device_path, automount_list, options={}, rollback_options={} ): cmdname = u"Create Storage Pool" cmd = VIRT_COMMAND_CREATE_STORAGE_POOL options["name"] = name options["type"] = type_ options["host_name"] = host_name options["device_path"] = device_path _cmd = dict2command("%s/%s" % (karesansui.config["application.bin.dir"], cmd), options) rollback_options["name"] = name rollback_options["force"] = None rollback_cmd = dict2command( "%s/%s" % (karesansui.config["application.bin.dir"], VIRT_COMMAND_DELETE_STORAGE_POOL), rollback_options ) _jobgroup = JobGroup(cmdname, karesansui.sheconf["env.uniqkey"]) _job = Job("%s command" % cmdname, 0, _cmd) _job.rollback_command = rollback_cmd _jobgroup.jobs.append(_job) _machine2jobgroup = m2j_new( machine=machine, jobgroup_id=-1, uniq_key=karesansui.sheconf["env.uniqkey"], created_user=obj.me, modified_user=obj.me, ) save_job_collaboration(obj.orm, obj.pysilhouette.orm, _machine2jobgroup, _jobgroup) automount_options = {} automount_options["type"] = STORAGE_POOL_TYPE["TYPE_FS"] for disk in automount_list: readymount_options = {} readymount_options["dev"] = "%s/%s" % (ISCSI_DEVICE_DIR, disk["symlink_name"]) if "is_format" in disk: readymount_options["format"] = None automount_options["name"] = disk["symlink_name"] automount_options["device_path"] = "%s/%s" % (ISCSI_DEVICE_DIR, disk["symlink_name"]) automount_options["target_path"] = "%s/%s" % (VENDOR_DATA_ISCSI_MOUNT_DIR, disk["symlink_name"]) readymount_cmd = dict2command( "%s/%s" % (karesansui.config["application.bin.dir"], ISCSI_COMMAND_READY_MOUNT), readymount_options ) readymount_job = Job("Check mount command", 0, readymount_cmd) automount_cmd = dict2command("%s/%s" % (karesansui.config["application.bin.dir"], cmd), automount_options) automount_job = Job("%s command" % cmdname, 1, automount_cmd) jobgroup = JobGroup(cmdname, karesansui.sheconf["env.uniqkey"]) jobgroup.jobs.append(readymount_job) jobgroup.jobs.append(automount_job) machine2jobgroup = m2j_new( machine=machine, jobgroup_id=-1, uniq_key=karesansui.sheconf["env.uniqkey"], created_user=obj.me, modified_user=obj.me, ) save_job_collaboration(obj.orm, obj.pysilhouette.orm, machine2jobgroup, jobgroup) 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 create_pool_iscsi_job(obj, machine, name, type_, host_name, device_path, automount_list, options={}, rollback_options={}): cmdname = u"Create Storage Pool" cmd = VIRT_COMMAND_CREATE_STORAGE_POOL options['name'] = name options["type"] = type_ options["host_name"] = host_name options["device_path"] = device_path _cmd = dict2command( "%s/%s" % (karesansui.config['application.bin.dir'], cmd), options) rollback_options["name"] = name rollback_options["force"] = None rollback_cmd = dict2command( "%s/%s" % (karesansui.config['application.bin.dir'], VIRT_COMMAND_DELETE_STORAGE_POOL), rollback_options) _jobgroup = JobGroup(cmdname, karesansui.sheconf['env.uniqkey']) _job = Job('%s command' % cmdname, 0, _cmd) _job.rollback_command = rollback_cmd _jobgroup.jobs.append(_job) _machine2jobgroup = m2j_new(machine=machine, jobgroup_id=-1, uniq_key=karesansui.sheconf['env.uniqkey'], created_user=obj.me, modified_user=obj.me, ) save_job_collaboration(obj.orm, obj.pysilhouette.orm, _machine2jobgroup, _jobgroup, ) automount_options = {} automount_options["type"] = STORAGE_POOL_TYPE['TYPE_FS'] for disk in automount_list: readymount_options = {} readymount_options["dev"] = "%s/%s" % (ISCSI_DEVICE_DIR, disk['symlink_name']) if "is_format" in disk: readymount_options["format"] = None automount_options["name"] = disk['symlink_name'] automount_options["device_path"] = "%s/%s" % (ISCSI_DEVICE_DIR, disk['symlink_name']) automount_options["target_path"] = "%s/%s" % (VENDOR_DATA_ISCSI_MOUNT_DIR, disk['symlink_name']) readymount_cmd = dict2command( "%s/%s" % (karesansui.config['application.bin.dir'], ISCSI_COMMAND_READY_MOUNT), readymount_options) readymount_job = Job('Check mount command', 0, readymount_cmd) automount_cmd = dict2command( "%s/%s" % (karesansui.config['application.bin.dir'], cmd), automount_options) automount_job = Job('%s command' % cmdname, 1, automount_cmd) jobgroup = JobGroup(cmdname, karesansui.sheconf['env.uniqkey']) jobgroup.jobs.append(readymount_job) jobgroup.jobs.append(automount_job) machine2jobgroup = m2j_new(machine=machine, jobgroup_id=-1, uniq_key=karesansui.sheconf['env.uniqkey'], created_user=obj.me, modified_user=obj.me, ) save_job_collaboration(obj.orm, obj.pysilhouette.orm, machine2jobgroup, jobgroup, ) 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