pool = conn.get_pool(uuid) name = pool.get_name() typ = Storage.StoragePool.get_pool_type_desc(pool.get_type()) label = "%s\n<span size='small'>%s</span>" % (name, typ) model.append([uuid, label, pool.is_active(), per]) _iter = model.get_iter_first() if _iter: pool_list.get_selection().select_iter(_iter) pool_list.get_selection().emit("changed") def get_pool_size_percent(conn, uuid): pool = conn.get_pool(uuid) cap = pool.get_capacity() alloc = pool.get_allocation() if not cap or alloc is None: per = 0 else: per = int(((float(alloc) / float(cap)) * 100)) return "<span size='small' color='#484848'>%s%%</span>" % int(per) vmmGObjectUI.type_register(vmmHost) vmmHost.signal_new(vmmHost, "action-show-help", [str]) vmmHost.signal_new(vmmHost, "action-exit-app", []) vmmHost.signal_new(vmmHost, "action-view-manager", []) vmmHost.signal_new(vmmHost, "action-restore-domain", [str]) vmmHost.signal_new(vmmHost, "host-closed", []) vmmHost.signal_new(vmmHost, "host-opened", [])
asyncjob.job_canceled = True return def _async_migrate(self, asyncjob, origvm, origdconn, migrate_uri, rate, live, secure, max_downtime): meter = asyncjob.get_meter() srcconn = util.dup_conn(origvm.conn) dstconn = util.dup_conn(origdconn) vminst = srcconn.vmm.lookupByName(origvm.get_name()) vm = vmmDomain(srcconn, vminst, vminst.UUID()) logging.debug("Migrating vm=%s from %s to %s", vm.get_name(), srcconn.get_uri(), dstconn.get_uri()) timer = None if max_downtime != 0: # 0 means that the spin box migrate-max-downtime does not # be enabled. current_thread = threading.currentThread() timer = self.timeout_add(100, self._async_set_max_downtime, vm, max_downtime, current_thread) vm.migrate(dstconn, migrate_uri, rate, live, secure, meter=meter) if timer: self.idle_add(gobject.source_remove, timer) vmmGObjectUI.type_register(vmmMigrateDialog)
return str1 if str1: str1 += delim str1 += str2 return str1 if ro: info = append_str(info, _("Storage is read-only.")) elif not vol and not os.access(path, os.W_OK): info = append_str(info, _("No write access to path.")) if shared: info = append_str(info, _("Storage is marked as shareable.")) try: names = virtinst.VirtualDisk.path_in_use_by(conn.vmm, path) if len(names) > 1: namestr = "" names.remove(vm_name) for name in names: namestr = append_str(namestr, name, delim="\n- ") info = append_str(info, _("Storage is in use by the following " "virtual machines:\n- %s " % namestr)) except Exception, e: logging.exception("Failed checking disk conflict: %s", str(e)) return (not info, info) vmmGObjectUI.type_register(vmmDeleteDialog)
elif self.can_resolve_local == None: try: socket.getaddrinfo(host, None) except: logging.debug("Couldn't resolve host '%s'. Stripping " "'.local' and retrying.", host) self.can_resolve_local = False host = self.check_resolve_host(host[:-6]) else: self.can_resolve_local = True else: if self.can_resolve_hostname == False: host = "" elif self.can_resolve_hostname == None: try: socket.getaddrinfo(host, None) except: logging.debug( "Couldn't resolve host '%s'. Disabling " "host name resolution, only using IP addr", host ) self.can_resolve_hostname = False else: self.can_resolve_hostname = True return host vmmGObjectUI.type_register(vmmConnect) vmmConnect.signal_new(vmmConnect, "completed", [str, bool]) vmmConnect.signal_new(vmmConnect, "cancelled", [])
cap = self.widget("vol-capacity").get_value() try: self.vol = self.vol_class(name=volname, allocation=(alloc * 1024 * 1024), capacity=(cap * 1024 * 1024), pool=self.parent_pool.pool) if fmt: self.vol.format = fmt except ValueError, e: return self.val_err(_("Volume Parameter Error"), e) return True def show_err(self, info, details=None): async = not self.topwin.get_modal() self.err.show_err(info, details, async=async) def val_err(self, info, details): modal = self.topwin.get_modal() ret = False try: self.topwin.set_modal(False) ret = self.err.val_err(info, details, async=not modal) finally: self.topwin.set_modal(modal) return ret vmmGObjectUI.type_register(vmmCreateVolume) vmmCreateVolume.signal_new(vmmCreateVolume, "vol-created", [])
socket.getaddrinfo(host, None) except: logging.debug( "Couldn't resolve host '%s'. Stripping " "'.local' and retrying.", host) self.can_resolve_local = False host = self.check_resolve_host(host[:-6]) else: self.can_resolve_local = True else: if self.can_resolve_hostname == False: host = "" elif self.can_resolve_hostname == None: try: socket.getaddrinfo(host, None) except: logging.debug( "Couldn't resolve host '%s'. Disabling " "host name resolution, only using IP addr", host) self.can_resolve_hostname = False else: self.can_resolve_hostname = True return host vmmGObjectUI.type_register(vmmConnect) vmmConnect.signal_new(vmmConnect, "completed", [str, bool]) vmmConnect.signal_new(vmmConnect, "cancelled", [])
def show(self, parent): logging.debug("Showing vmaffinity create new VM-Host affinity rule window.") self.topwin.set_transient_for(parent) self.topwin.present() def _cleanup(self): self.reset_state() def allVMClist_row_selected(self, clist, row, column, event, data=None): self.selectedAllVMRow = row self.selectedAllVMColumn = column self.show_error_message() def affinedVMClist_row_selected(self, clist, row, column, event, data=None): self.selectedAffinedVMRow = row self.selectedAffinedVMColumn = column def show_error_message(self, data): self.warningLabel.set_visible(True) self.warningLabel.set_text(data) #self.warningLabel.set_text("you selected : " + str(self.selectedAffinedVMRow) + str(self.selectedAffinedColumn)) def hide_error_message(self): self.warningLabel.set_text("") self.warningLabel.set_visible(False) vmmGObjectUI.type_register(vmaffinityCreateHostAffinityRule)
def show(self, parent): logging.debug("Showing vmaffinity delete affinity rule window") self.topwin.set_transient_for(parent) self.topwin.present() def close(self, src_ignore=None, src2_ignore=None): logging.debug("Closing vmaffinity delete affinity rule window") self.topwin.hide() self.reset_state() return 1 def _cleanup(self): self.reset_state() def show_error_message(self, data): self.errorLabel.set_visible(True) self.errorLabel.set_text(data) def hide_error_message(self): self.errorLabel.set_text("") self.errorLabel.set_visible(False) vmmGObjectUI.type_register(vmaffinityDeleteRule)
namestr = None try: if path: names = virtinst.VirtualDisk.path_in_use_by( self.conn.vmm, path) namestr = ", ".join(names) if not namestr: namestr = None except: logging.exception("Failed to determine if storage volume in " "use.") if dironly and fmt != 'dir': sensitive = False elif not self.rhel6_defaults: if fmt == "vmdk": sensitive = False model.append([key, vol.get_name(), vol.get_pretty_capacity(), fmt, namestr, sensitive]) def show_err(self, info, details=None): self.err.show_err(info, details=details, async=False) vmmGObjectUI.type_register(vmmStorageBrowser) vmmStorageBrowser.signal_new(vmmStorageBrowser, "storage-browse-finish", [str])
class vmaffinityAbout(vmmGObjectUI): def __init__(self): vmmGObjectUI.__init__(self, "vmaffinity-about.ui", "vmaffinity-about") self.window.connect_signals( {"on_vmaffinity-about_delete_event": self.close, "on_vmaffinity-about_response": self.close} ) def show(self): logging.debug("Showing vmaffinity about") self.topwin.present() def close(self, data1=None, data2=None): logging.debug("Closing vmaffinity about") self.topwin.hide() self.reset_state() return 1 def reset_state(self): vmmGObjectUI.__init__(self, "vmaffinity-about.ui", "vmaffinity-about") self.window.connect_signals( {"on_vmaffinity-about_delete_event": self.close, "on_vmaffinity-about_response": self.close} ) def _cleanup(self): pass vmmGObjectUI.type_register(vmaffinityAbout)
def validate(self, page_num): if page_num == PAGE_NAME: return self.validate_name() elif page_num == PAGE_IPV4: return self.validate_ipv4() elif page_num == PAGE_DHCP: return self.validate_dhcp() elif page_num == PAGE_FORWARDING: return self.validate_forwarding() return True def show_help(self, src_ignore): # help to show depends on the notebook page, yahoo page = self.widget("create-pages").get_current_page() if page == PAGE_INTRO: self.emit("action-show-help", "virt-manager-create-net-intro") elif page == PAGE_NAME: self.emit("action-show-help", "virt-manager-create-net-name") elif page == PAGE_IPV4: self.emit("action-show-help", "virt-manager-create-net-ipv4") elif page == PAGE_DHCP: self.emit("action-show-help", "virt-manager-create-net-dhcp") elif page == PAGE_FORWARDING: self.emit("action-show-help", "virt-manager-create-net-forwarding") elif page == PAGE_SUMMARY: self.emit("action-show-help", "virt-manager-create-net-sumary") vmmGObjectUI.type_register(vmmCreateNetwork) vmmCreateNetwork.signal_new(vmmCreateNetwork, "action-show-help", [str])
# Open a seperate connection to install on since this is async logging.debug("Threading off connection to clone VM.") newconn = util.dup_conn(self.conn).vmm meter = asyncjob.get_meter() self.clone_design.orig_connection = newconn for d in self.clone_design.clone_virtual_disks: d.conn = newconn self.clone_design.setup() CloneManager.start_duplicate(self.clone_design, meter) finally: self.orig_vm.set_cloning(False) def change_storage_browse(self, ignore): def callback(src_ignore, txt): self.widget("change-storage-new").set_text(txt) if self.storage_browser == None: self.storage_browser = vmmStorageBrowser(self.conn) self.storage_browser.connect("storage-browse-finish", callback) self.storage_browser.show(self.topwin, self.conn) def show_help(self, ignore1=None): # Nothing yet return vmmGObjectUI.type_register(vmmCloneVM) vmmCloneVM.signal_new(vmmCloneVM, "action-show-help", [str])
warn.hide() self.widget("physical-media").set_sensitive(not bool(error)) if self.media_type == MEDIA_FLOPPY: self.widget("physical-media").set_label(_("Floppy D_rive")) self.widget("iso-image").set_label(_("Floppy _Image")) def set_storage_path(self, src_ignore, path): self.widget("iso-path").set_text(path) def _browse_file(self): if self.storage_browser == None: self.storage_browser = vmmStorageBrowser(self.conn) self.storage_browser.connect("storage-browse-finish", self.set_storage_path) rhel6 = self.vm.rhel6_defaults() self.storage_browser.rhel6_defaults = rhel6 if self.media_type == MEDIA_FLOPPY: self.storage_browser.set_browse_reason( self.config.CONFIG_DIR_FLOPPY_MEDIA) else: self.storage_browser.set_browse_reason( self.config.CONFIG_DIR_ISO_MEDIA) self.storage_browser.show(self.topwin, self.conn) vmmGObjectUI.type_register(vmmChooseCD) vmmChooseCD.signal_new(vmmChooseCD, "cdrom-chosen", [object, str])
error, details = progWin.run() self.topwin.set_sensitive(True) self.topwin.window.set_cursor(gtk.gdk.Cursor(gtk.gdk.TOP_LEFT_ARROW)) if error: error = _("Error creating interface: '%s'") % error self.err.show_err(error, details=details) else: # FIXME: Hmm, shouldn't we emit a signal here rather than do this? self.conn.tick(noStatsUpdate=True) self.close() def do_install(self, asyncjob, activate): meter = asyncjob.get_meter() error = None details = None self.interface.conn = util.dup_conn(self.conn).vmm self.interface.install(meter, create=activate) logging.debug("Install completed") def show_help(self, ignore): # No help available yet. pass vmmGObjectUI.type_register(vmmCreateInterface) vmmCreateInterface.signal_new(vmmCreateInterface, "action-show-help", [str])
data = obj.disk_io_vector_limit(40, self.max_disk_rate) cell.set_property('data_array', data) def network_traffic_img(self, column_ignore, cell, model, _iter, data): obj = model.get_value(_iter, ROW_HANDLE) if obj is None: return if not hasattr(obj, "conn"): return data = obj.network_traffic_vector_limit(40, self.max_net_rate) cell.set_property('data_array', data) vmmGObjectUI.type_register(vmmManager) vmmManager.signal_new(vmmManager, "action-show-connect", []) vmmManager.signal_new(vmmManager, "action-show-vm", [str, str]) vmmManager.signal_new(vmmManager, "action-show-about", []) vmmManager.signal_new(vmmManager, "action-show-host", [str]) vmmManager.signal_new(vmmManager, "action-show-preferences", []) vmmManager.signal_new(vmmManager, "action-show-create", [str]) vmmManager.signal_new(vmmManager, "action-suspend-domain", [str, str]) vmmManager.signal_new(vmmManager, "action-resume-domain", [str, str]) vmmManager.signal_new(vmmManager, "action-run-domain", [str, str]) vmmManager.signal_new(vmmManager, "action-shutdown-domain", [str, str]) vmmManager.signal_new(vmmManager, "action-reboot-domain", [str, str]) vmmManager.signal_new(vmmManager, "action-destroy-domain", [str, str]) vmmManager.signal_new(vmmManager, "action-save-domain", [str, str]) vmmManager.signal_new(vmmManager, "action-connect", [str]) vmmManager.signal_new(vmmManager, "action-show-help", [str])
logging.debug("Showing vmaffinity create new affinity rule window") self.topwin.set_transient_for(parent) self.topwin.present() def _cleanup(self): self.reset_state() def allVMClist_row_selected(self, clist, row, column, event, data=None): self.selectedAllVMRow = row self.selectedAllVMColumn = column self.show_error_message() def groupVMClist_row_selected(self, clist, row, column, event, data=None): self.selectedGroupVMRow = row self.selectedGroupVMColumn = column def show_error_message(self, data): self.warningLabel.set_visible(True) self.warningLabel.set_text(data) #self.warningLabel.set_text("you selected : " + str(self.selectedGroupVMRow) + str(self.selectedGroupVMColumn)) def hide_error_message(self): self.warningLabel.set_text("") self.warningLabel.set_visible(False) vmmGObjectUI.type_register(vmaffinityCreateNewRule)
try: if path: names = virtinst.VirtualDisk.path_in_use_by( self.conn.vmm, path) namestr = ", ".join(names) if not namestr: namestr = None except: logging.exception("Failed to determine if storage volume in " "use.") if dironly and fmt != 'dir': sensitive = False elif not self.rhel6_defaults: if fmt == "vmdk": sensitive = False model.append([ key, vol.get_name(), vol.get_pretty_capacity(), fmt, namestr, sensitive ]) def show_err(self, info, details=None): self.err.show_err(info, details=details, async=False) vmmGObjectUI.type_register(vmmStorageBrowser) vmmStorageBrowser.signal_new(vmmStorageBrowser, "storage-browse-finish", [str])
doc = self._build_doc_str("build", docstr) self.widget("pool-info2").set_markup(doc) def update_doc_changed(self, ignore1, param, infobox): # Wrapper for update_doc and 'changed' signal self.update_doc(None, None, param, infobox) def _build_doc_str(self, param, docstr=None): doc = "" doctmpl = "<i><u>%s</u>: %s</i>" prettyname = param.replace("_", " ").capitalize() if docstr: doc = doctmpl % (prettyname, docstr) elif hasattr(self._pool_class, param): doc = doctmpl % (prettyname, getattr(self._pool_class, param).__doc__) return doc def _browse_file(self, dialog_name, startfolder=None, foldermode=False): mode = gtk.FILE_CHOOSER_ACTION_OPEN if foldermode: mode = gtk.FILE_CHOOSER_ACTION_SELECT_FOLDER return util.browse_local(self.topwin, dialog_name, self.conn, dialog_type=mode, start_folder=startfolder) vmmGObjectUI.type_register(vmmCreatePool)
name = pool.get_name() typ = Storage.StoragePool.get_pool_type_desc(pool.get_type()) label = "%s\n<span size='small'>%s</span>" % (name, typ) model.append([uuid, label, pool.is_active(), per]) _iter = model.get_iter_first() if _iter: pool_list.get_selection().select_iter(_iter) pool_list.get_selection().emit("changed") def get_pool_size_percent(conn, uuid): pool = conn.get_pool(uuid) cap = pool.get_capacity() alloc = pool.get_allocation() if not cap or alloc is None: per = 0 else: per = int(((float(alloc) / float(cap)) * 100)) return "<span size='small' color='#484848'>%s%%</span>" % int(per) vmmGObjectUI.type_register(vmmHost) vmmHost.signal_new(vmmHost, "action-show-help", [str]) vmmHost.signal_new(vmmHost, "action-exit-app", []) vmmHost.signal_new(vmmHost, "action-view-manager", []) vmmHost.signal_new(vmmHost, "action-restore-domain", [str]) vmmHost.signal_new(vmmHost, "host-closed", []) vmmHost.signal_new(vmmHost, "host-opened", [])
def allGroupsClist_row_selected(self, clist, row, column, event, data=None): self.selectedGroupRow = row self.selectedGroupColumn = column #TODO: Sandeep - Get key value, selected group name, fetch the value object # clear selectedVMs clist and append new list, clear text view and append new desc. # Clear current contents self.VMsInGroupClist.clear() self.selectedRuleDesTextview.get_buffer().set_text("") # Get group details object. selectedGroupName = self.allGroupsClist.get_text(row,column) selectedGroupDetails = self.allGroupDictionary[selectedGroupName] # get description desc = "" if selectedGroupDetails.getDescription() != None: desc = selectedGroupDetails.getDescription() self.selectedRuleDesTextview.get_buffer().set_text(desc) # get list of virtual machines in the group memberVMs = selectedGroupDetails.getVMList() for vm in memberVMs: self.VMsInGroupClist.append([vm]) vmmGObjectUI.type_register(vmaffinityViewRules)
def on_url(about, link): ignore = about if hasattr(gtk, "show_uri"): gtk.show_uri(None, link, gtk.get_current_event_time()) gtk.about_dialog_set_url_hook(on_url) class vmmAbout(vmmGObjectUI): def __init__(self): vmmGObjectUI.__init__(self, "vmm-about.ui", "vmm-about") self.window.connect_signals({ "on_vmm_about_delete_event": self.close, "on_vmm_about_response": self.close, }) def show(self): logging.debug("Showing about") self.topwin.set_version(self.config.get_appversion()) self.topwin.present() def close(self, ignore1=None, ignore2=None): logging.debug("Closing about") self.topwin.hide() return 1 def _cleanup(self): pass vmmGObjectUI.type_register(vmmAbout)
self.VMsInUpdatedGroupClist.select_row(0,0) return def get_allVMsInMachine(self): # List all inactive domains: connection = libvirt.open('qemu:///system') allVMsInMachine = [] allVMsInMachine = connection.listDefinedDomains() #List all active domains: tempList = connection.listDomainsID() for id1 in tempList: dom = connection.lookupByID(id1) allVMsInMachine.append(dom.name()) return allVMsInMachine def findremainingvms(self, fulllist, oldlist): for vm in oldlist: if fulllist.count(vm)==1: fulllist.remove(vm) return fulllist vmmGObjectUI.type_register(vmaffinityManageRules)
try: self.vol = self.vol_class(name=volname, allocation=(alloc * 1024 * 1024), capacity=(cap * 1024 * 1024), pool=self.parent_pool.pool) if fmt: self.vol.format = fmt except ValueError, e: return self.val_err(_("Volume Parameter Error"), e) return True def show_err(self, info, details=None): async = not self.topwin.get_modal() self.err.show_err(info, details, async=async) def val_err(self, info, details): modal = self.topwin.get_modal() ret = False try: self.topwin.set_modal(False) ret = self.err.val_err(info, details, async=not modal) finally: self.topwin.set_modal(modal) return ret vmmGObjectUI.type_register(vmmCreateVolume) vmmCreateVolume.signal_new(vmmCreateVolume, "vol-created", [])
# we are inside a scrollwindow, it shouldn't cause issues. scroll.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) self.viewer.display.set_size_request(desktop_w, desktop_h) return # Make sure we never show scrollbars when scaling scroll.set_policy(gtk.POLICY_NEVER, gtk.POLICY_NEVER) # Make sure there is no hard size requirement so we can scale down self.viewer.display.set_size_request(-1, -1) # Make sure desktop aspect ratio is maintained if align_ratio > desktop_ratio: desktop_w = int(req.height * desktop_ratio) desktop_h = req.height dx = (req.width - desktop_w) / 2 else: desktop_w = req.width desktop_h = int(req.width / desktop_ratio) dy = (req.height - desktop_h) / 2 viewer_alloc = gtk.gdk.Rectangle(x=dx, y=dy, width=desktop_w, height=desktop_h) self.viewer.display.size_allocate(viewer_alloc) vmmGObjectUI.type_register(vmmConsolePages)
logging.debug("Threading off connection to clone VM.") newconn = util.dup_conn(self.conn).vmm meter = asyncjob.get_meter() self.clone_design.orig_connection = newconn for d in self.clone_design.clone_virtual_disks: d.conn = newconn self.clone_design.setup() CloneManager.start_duplicate(self.clone_design, meter) finally: self.orig_vm.set_cloning(False) def change_storage_browse(self, ignore): def callback(src_ignore, txt): self.widget("change-storage-new").set_text(txt) if self.storage_browser == None: self.storage_browser = vmmStorageBrowser(self.conn) self.storage_browser.connect("storage-browse-finish", callback) self.storage_browser.show(self.topwin, self.conn) def show_help(self, ignore1=None): # Nothing yet return vmmGObjectUI.type_register(vmmCloneVM) vmmCloneVM.signal_new(vmmCloneVM, "action-show-help", [str])