def configure(self, properties): oldCaptureToFile = self.getCaptureToFile() oldCaptureViaNet = self.getCaptureViaNet() oldCaptureFilter = self.getCaptureFilter() #FIXME: validate filter if "capture_to_file" in properties: self.setCaptureToFile(properties["capture_to_file"]) if "capture_filter" in properties: self.setCaptureFilter(properties["capture_filter"]) if "capture_via_net" in properties: self.setCaptureViaNet(properties["capture_via_net"]) if "delay" in properties: self.setDelay(properties["delay"]) if "bandwidth" in properties: self.setBandwidth(properties["bandwidth"]) if "lossratio" in properties: self.setLossRatio(properties["lossratio"]) Connection.configure(self, properties) if self.connector.state == State.STARTED: self._configLink() if oldCaptureToFile and (not self.getCaptureToFile() or self.getCaptureFilter() != oldCaptureFilter): self._stopCaptureToFile() if oldCaptureViaNet and (not self.getCaptureViaNet() or self.getCaptureFilter() != oldCaptureFilter): self._stopCaptureViaNet() if self.getCaptureToFile() and (not oldCaptureToFile or self.getCaptureFilter() != oldCaptureFilter): self._startCaptureToFile() if self.getCaptureViaNet() and (not oldCaptureViaNet or self.getCaptureFilter() != oldCaptureFilter): self._startCaptureViaNet()
def getStartTasks(self): taskset = Connection.getStartTasks(self) create_pipe = tasks.Task("create-pipe", self._createPipe) configure_link = tasks.Task("configure-link", self._configLink, after=create_pipe) start_capture = tasks.Task("start-capture", self._startCapture) taskset.add([create_pipe, configure_link, start_capture]) return taskset
def getStopTasks(self): taskset = Connection.getStopTasks(self) unconfigure_link = tasks.Task("unconfigure-link", self._unconfigLink) unassign_ifb = tasks.Task("unassign-ifb", self._unassignIfb, after=unconfigure_link) stop_capture = tasks.Task("stop-capture", self._stopCapture) taskset.add([unconfigure_link, unassign_ifb, stop_capture]) return taskset
def getStartTasks(self): taskset = Connection.getStartTasks(self) assign_ifb = tasks.Task("assign-ifb", self._assignIfb) configure_link = tasks.Task("configure-link", self._configLink, after=assign_ifb) start_capture = tasks.Task("start-capture", self._startCapture) taskset.add([assign_ifb, configure_link, start_capture]) return taskset
def getIdUsage(self, host): ids = Connection.getIdUsage(self, host) capture_port = self.getAttribute("capture_port", None) if capture_port: ids.update(port=set((capture_port,))) ifb_id = self.getAttribute("ifb_id", None) if not ifb_id is None: ids.update(ifb=set((ifb_id,))) return ids
def connectionsAdd(self, iface_name, properties): #@UnusedVariable, pylint: disable-msg=W0613 iface = self.topology.interfacesGet(iface_name) fault.check(iface.device.state != State.STARTED, "Cannot add connections to running device: %s -> %s", (iface_name, self.name) ) con = Connection () con.connector = self con.interface = iface con.init() con.save()
def configure(self, properties): oldCaptureToFile = self.getCaptureToFile() oldCaptureViaNet = self.getCaptureViaNet() oldCaptureFilter = self.getCaptureFilter() if "capture_filter" in properties: filter = properties["capture_filter"] host = self.getHost() if host: fault.check(tcpdump._checkSyntax(host, filter=filter), "Syntax error in filter") self.setCaptureFilter(properties["capture_filter"]) if "capture_to_file" in properties: self.setCaptureToFile(properties["capture_to_file"]) if "capture_via_net" in properties: self.setCaptureViaNet(properties["capture_via_net"]) for p in netemProperties: if p in properties: val = properties[p] val = netemValueConvert[p](val) fault.check(netemValuesChecks[p](val), "Invalid value for %s: %s", (p, val)) self.setAttribute(p, val) if p + "_to" in properties: val = properties[p + "_to"] val = netemValueConvert[p](val) fault.check(netemValuesChecks[p](val), "Invalid value for %s: %s", (p + "_to", val)) self.setAttribute(p + "_to", val) if p + "_from" in properties: val = properties[p + "_from"] val = netemValueConvert[p](val) fault.check(netemValuesChecks[p](val), "Invalid value for %s: %s", (p + "_from", val)) self.setAttribute(p + "_from", val) Connection.configure(self, properties) if self.connector.state == State.STARTED: self._configLink() if oldCaptureToFile and (not self.getCaptureToFile() or self.getCaptureFilter() != oldCaptureFilter): self._stopCaptureToFile() if oldCaptureViaNet and (not self.getCaptureViaNet() or self.getCaptureFilter() != oldCaptureFilter): self._stopCaptureViaNet() if self.getCaptureToFile() and (not oldCaptureToFile or self.getCaptureFilter() != oldCaptureFilter): self._startCaptureToFile() if self.getCaptureViaNet() and (not oldCaptureViaNet or self.getCaptureFilter() != oldCaptureFilter): self._startCaptureViaNet()
def getCapabilities(self, user): capabilities = Connection.getCapabilities(self, user) isUser = self.connector.topology.checkAccess(Permission.ROLE_USER, user) capabilities["configure"].update({"capture_filter": True, "capture_to_file": True, "capture_via_net": True}) for p in netemProperties: capabilities["configure"][p] = True capabilities["configure"][p + "_to"] = True capabilities["configure"][p + "_from"] = True capabilities["action"].update( {"download_capture": isUser and not self.connector.state == State.CREATED and self.getCaptureToFile()} ) capabilities["other"] = { "live_capture": isUser and self.connector.state == State.STARTED and self.getCaptureViaNet() } return capabilities
def getCapabilities(self, user): capabilities = Connection.getCapabilities(self, user) isUser = self.connector.topology.checkAccess(Permission.ROLE_USER, user) capabilities["configure"].update({ "capture_filter": True, "capture_to_file": True, "capture_via_net": True, "delay": True, "bandwidth": True, "lossratio": True, }) capabilities["action"].update({ "download_capture": isUser and not self.connector.state == State.CREATED and self.getCaptureToFile() }) capabilities["other"] = { "live_capture": isUser and self.connector.state == State.STARTED and self.getCaptureViaNet() } return capabilities
def toDict(self, auth): res = Connection.toDict(self, auth) res["attrs"].update(self.getAttributes()) if self.connector.state == State.STARTED and self.getCaptureViaNet(): res["attrs"].update(capture_host=self.getHost().name) return res
def getDestroyTasks(self): taskset = Connection.getDestroyTasks(self) taskset.add(tasks.Task("remove-capture-dir", self._removeCaptureDir)) return taskset
def getPrepareTasks(self): return Connection.getPrepareTasks(self)
def getStopTasks(self): taskset = Connection.getStopTasks(self) delete_pipes = tasks.Task("delete-pipes", self._deletePipes) stop_capture = tasks.Task("stop-capture", self._stopCapture) taskset.add([delete_pipes, stop_capture]) return taskset
def getStopTasks(self): taskset = Connection.getStopTasks(self) taskset.add(tasks.Task("stop", self._stop)) return taskset
def getStartTasks(self): taskset = Connection.getStartTasks(self) start_task = tasks.Task("start", self._start) taskset.add([start_task]) return taskset