def mod_port_behavior(self, req, cmd, **_kwargs): try: port_config = ast.literal_eval(req.body) except SyntaxError: LOG.debug('invalid syntax %s', req.body) return Response(status=400) dpid = port_config.get('dpid') port_no = int(port_config.get('port_no', 0)) port_info = self.dpset.port_state[int(dpid)].get(port_no) if port_info: port_config.setdefault('hw_addr', port_info.hw_addr) port_config.setdefault('advertise', port_info.advertised) else: return Response(status=404) dp = self.dpset.get(int(dpid)) if dp is None: return Response(status=404) if cmd != 'modify': return Response(status=404) if dp.ofproto.OFP_VERSION == ofproto_v1_0.OFP_VERSION: ofctl_v1_0.mod_port_behavior(dp, port_config) elif dp.ofproto.OFP_VERSION == ofproto_v1_2.OFP_VERSION: ofctl_v1_2.mod_port_behavior(dp, port_config) elif dp.ofproto.OFP_VERSION == ofproto_v1_3.OFP_VERSION: ofctl_v1_3.mod_port_behavior(dp, port_config) else: LOG.debug('Unsupported OF protocol') return Response(status=501)
def mod_port_behavior(self, req, cmd, **_kwargs): try: port_config = eval(req.body) except SyntaxError: LOG.debug('invalid syntax %s', req.body) return Response(status=400) dpid = port_config.get('dpid') port_no = int(port_config.get('port_no', 0)) port_info = self.dpset.port_state[int(dpid)].get(port_no) if 'hw_addr' not in port_config: if port_info is not None: port_config['hw_addr'] = port_info.hw_addr else: return Response(status=404) if 'advertise' not in port_config: if port_info is not None: port_config['advertise'] = port_info.advertised else: return Response(status=404) dp = self.dpset.get(int(dpid)) if dp is None: return Response(status=404) if cmd != 'modify': return Response(status=404) if dp.ofproto.OFP_VERSION == ofproto_v1_0.OFP_VERSION: ofctl_v1_0.mod_port_behavior(dp, port_config) elif dp.ofproto.OFP_VERSION == ofproto_v1_2.OFP_VERSION: ofctl_v1_2.mod_port_behavior(dp, port_config) elif dp.ofproto.OFP_VERSION == ofproto_v1_3.OFP_VERSION: ofctl_v1_3.mod_port_behavior(dp, port_config) else: LOG.debug('Unsupported OF protocol') return Response(status=501) res = Response(status=200) res.headers.add('Access-Control-Allow-Origin', '*') return res