X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=ovsdb%2Fovsdbmonitor%2FOVECommonWindow.py;fp=ovsdb%2Fovsdbmonitor%2FOVECommonWindow.py;h=0000000000000000000000000000000000000000;hb=7868fbc6c97c2a69ff2b9bb2c00f46675e9f721b;hp=5c014b77c215d62b2dfe7319c8a692625c932277;hpb=feb8a80bb9621f17ed0a249c79b0d02e9543e64a;p=sliver-openvswitch.git diff --git a/ovsdb/ovsdbmonitor/OVECommonWindow.py b/ovsdb/ovsdbmonitor/OVECommonWindow.py deleted file mode 100644 index 5c014b77c..000000000 --- a/ovsdb/ovsdbmonitor/OVECommonWindow.py +++ /dev/null @@ -1,221 +0,0 @@ -# Copyright (c) 2010 Citrix Systems, Inc. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -from OVEStandard import * -from OVEConfig import * -from OVEFetch import * -from OVELogger import * -from OVEUtil import * - -from Ui_MainWindow import * - -class OVECommonWindow: - def __init__(self, app, loadIndex = None): - self.app = app - self.intervalTimerId = None - self.hostUuid = '' - self.intervalChecked = True - self.intervalSeconds = 5 - self.fetchSkip = 0 - self.currentRef = self.BASE_REF - - self.ui.setupUi(self) - - if loadIndex is not None: - self.loadSettings(loadIndex) - - self.connect(self.ui.actionNew_DB_Window, QtCore.SIGNAL("triggered()"), self.xon_actionNew_DB_Window_triggered) - self.connect(self.ui.actionNew_Flow_Window, QtCore.SIGNAL("triggered()"), self.xon_actionNew_Flow_Window_triggered) - self.connect(self.ui.actionShow_Log, QtCore.SIGNAL("triggered()"), self.xon_actionShow_Log_triggered) - self.connect(self.ui.actionPreferences, QtCore.SIGNAL("triggered()"), self.xon_actionPreferences_triggered) - self.connect(self.ui.actionQuit, QtCore.SIGNAL("triggered()"), self.xon_actionQuit_triggered) - self.connect(self.ui.fetchButton, QtCore.SIGNAL("clicked()"), self.xon_fetchButton_clicked) - self.connect(self.ui.tabWidget, QtCore.SIGNAL("currentChanged(int)"), self.xon_tabWidget_currentChanged) - self.connect(self.ui.hostComboBox, QtCore.SIGNAL("currentIndexChanged(int)"), self.xon_hostComboBox_currentIndexChanged) - self.connect(self.ui.intervalCheckBox, QtCore.SIGNAL("stateChanged(int)"), self.xon_intervalCheckBox_stateChanged) - self.connect(self.ui.intervalSpinBox, QtCore.SIGNAL("valueChanged(int)"), self.xon_intervalSpinBox_valueChanged) - self.connect(OVEConfig.Inst(), QtCore.SIGNAL("configUpdated()"), self.xon_configUpdated) - - self.updateHosts() - self.updateInterval() - self.updateIntervalState() - self.updateTable() - - def xon_actionNew_DB_Window_triggered(self): - self.app.newMainWindow() - - def xon_actionNew_Flow_Window_triggered(self): - self.app.newFlowWindow() - - def xon_actionShow_Log_triggered(self): - self.app.showLog(True) - - def xon_actionPreferences_triggered(self): - self.app.showConfig(True) - - def xon_actionQuit_triggered(self): - self.app.quit() - - def xon_tabWidget_currentChanged(self, value): - self.updateTable() - - def xon_fetchButton_clicked(self): - self.updateTable() - - def xon_configUpdated(self): - self.updateHosts() - - def xon_hostComboBox_currentIndexChanged(self, index): - if (index >= 0): - itemData = self.ui.hostComboBox.itemData(index) - self.hostUuid = str(itemData.toString()) - self.deleteCurrentTable() - self.updateTable() - - def xon_intervalCheckBox_stateChanged(self, state): - self.intervalChecked = (state == Qt.Checked) - self.updateIntervalState() - - def xon_intervalSpinBox_valueChanged(self, value): - self.intervalSeconds = value - self.updateIntervalState() - - def updateIntervalState(self): - if self.intervalTimerId is not None: - self.killTimer(self.intervalTimerId) - if self.intervalChecked: - self.intervalTimerId = self.startTimer(1000*self.intervalSeconds) - - def updateHosts(self): - currentHostUuid = self.hostUuid # self.hostUuid will change due to currentIndexChanged events as we rebuild the combo box - self.hostUuid = '' - self.ui.hostComboBox.clear() - for i, host in enumerate(OVEConfig.Inst().hosts): - self.ui.hostComboBox.addItem(host['address'], QVariant(host['uuid'])) - if host['uuid'] == currentHostUuid: - # This is the currently selected host - self.ui.hostComboBox.setCurrentIndex(i) - if len(OVEConfig.Inst().hosts) == 0: - self.ui.hostComboBox.addItem('(No hosts configured)', QVariant('')) - - def updateInterval(self): - self.ui.intervalCheckBox.setChecked(self.intervalChecked) - self.ui.intervalSpinBox.setValue(self.intervalSeconds) - - def handleFetchEvent(self, ref, values): - OVELog('Unhandled FetchEvent') - - def handleFetchFailEvent(self, ref, message): - OVELog('Unhandled FetchFailEvent') - - def setFetchSkip(self): - # Call before sending a request via OVEFetch - self.fetchSkip = 6 - - def timerEvent(self, event): - if event.timerId() == self.intervalTimerId: - if self.fetchSkip > 0: - self.statusBar().showMessage('Fetch stalled... resend in '+str(self.fetchSkip*self.intervalSeconds)+'s') - self.fetchSkip -= 1 - if self.fetchSkip == 0: - # Stall has timed out. The connection might have hung so reset. Seems to happen with PySide only - OVEFetch.Inst(self.hostUuid).resetTransport() - else: - self.updateTable() - else: - QtGui.QMainWindow.timerEvent(self, event) - - def customEvent(self, event): - if event.type() == OVEFetchEvent.TYPE: - if isinstance(event, OVEFetchEvent): - # The right way to get data - ref = event.ref - values = event.data - else: - # Workaround for PySide issue - ref = OVEFetch.Inst(self.hostUuid).snoopRef(self) - values = OVEFetch.Inst(self.hostUuid).snoopValues(self) - try: - if ref == self.currentRef: - self.fetchSkip = 0 - self.currentRef += 1 # PySide workaround - self.handleFetchEvent(ref, values) - else: - # If refs don't match this event relates to a request before the current one. We've moved - # on since then, e.g. changed the table we've viewing, so ignore it - if OVEConfig.Inst().logTraffic: - OVELog('FetchEvent ref mismatch '+str(ref)+' != '+str(self.currentRef)) - except Exception, e: - OVELog("Error during data handling: "+str(e)) - - elif event.type() == OVEFetchFailEvent.TYPE: - if isinstance(event, OVEFetchFailEvent): - # The right way to get data - ref = event.ref - message = event.message - else: - # Workaround for PySide issue - ref = OVEFetch.Inst(self.hostUuid).snoopRef(self) - message = OVEFetch.Inst(self.hostUuid).snoopMessage(self) - if message is not None: - OVELog(message) - if ref == self.currentRef: - self.fetchSkip = 0 - self.currentRef += 1 # PySide workaround - self.handleFetchFailEvent(ref, message) - else: - if OVEConfig.Inst().logTraffic: - OVELog('FetchFailEvent ref mismatch '+str(ref)+' != '+str(self.currentRef)) - - def deleteCurrentTable(self): - pass - - def saveSettings(self, index): - key = self.LOAD_KEY+str(index) - settings = QtCore.QSettings() - settings.setValue(key+"/loadable", QVariant(True)) - settings.setValue(key+"/pos", QVariant(self.pos())) - settings.setValue(key+"/size", QVariant(self.size())) - settings.setValue(key+"/hostUuid", QVariant(self.hostUuid)) - settings.setValue(key+"/intervalChecked", QVariant(self.intervalChecked)) - settings.setValue(key+"/intervalSeconds", QVariant(self.intervalSeconds)) - - return settings, key - - def loadSettings(self, index): - key = self.LOAD_KEY+str(index) - settings = QtCore.QSettings() - pos = settings.value(key+"/pos", QVariant(QtCore.QPoint(200, 200))).toPoint() - size = settings.value(key+"/size", QVariant(QtCore.QSize(400, 400))).toSize(); - - self.hostUuid = str(settings.value(key+"/hostUuid", QVariant('Unloaded')).toString()) - self.intervalChecked = settings.value(key+"/intervalChecked", QVariant(True)).toBool() - self.intervalSeconds = settings.value(key+"/intervalSeconds", QVariant(5)).toInt()[0] - self.resize(size) - self.move(pos) - return settings, key - - @classmethod - def terminateSettings(self, index): - key = self.LOAD_KEY+str(index) - settings = QtCore.QSettings() - settings.setValue(key+"/loadable", QVariant(False)) - settings.sync() - - @classmethod - def isLoadable(cls, index): - key = cls.LOAD_KEY+str(index) - settings = QtCore.QSettings() - return settings.value(key+"/loadable", QVariant(False)).toBool() -