diff options
author | Minoru TAKAHASHI <takahashi.minoru7@gmail.com> | 2016-01-06 17:35:16 +0900 |
---|---|---|
committer | FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> | 2016-01-19 10:03:57 +0900 |
commit | ecfd21e5f97294e236db5805f96d7fe44bf75007 (patch) | |
tree | 7e9bf02a93a721c267323c9eaacef081269de5cf | |
parent | 7826290ba6233a874e2ae1fa6fe65559c8604e76 (diff) |
fixes for mutable default arguments
modify the default argument from list to None,
because default value {}/[] as argument is dangerous.
Signed-off-by: Minoru TAKAHASHI <takahashi.minoru7@gmail.com>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
-rw-r--r-- | ryu/lib/bfdlib.py | 6 | ||||
-rw-r--r-- | ryu/lib/ovs/bridge.py | 3 | ||||
-rw-r--r-- | ryu/lib/packet/bfd.py | 9 | ||||
-rw-r--r-- | ryu/lib/packet/bgp.py | 15 | ||||
-rw-r--r-- | ryu/lib/packet/ospf.py | 27 | ||||
-rw-r--r-- | ryu/ofproto/ofproto_v1_2_parser.py | 6 | ||||
-rw-r--r-- | ryu/ofproto/ofproto_v1_3_parser.py | 30 | ||||
-rw-r--r-- | ryu/ofproto/ofproto_v1_4_parser.py | 30 | ||||
-rw-r--r-- | ryu/ofproto/ofproto_v1_5_parser.py | 51 | ||||
-rw-r--r-- | ryu/services/protocols/bgp/api/operator.py | 3 | ||||
-rw-r--r-- | ryu/utils.py | 5 |
11 files changed, 124 insertions, 61 deletions
diff --git a/ryu/lib/bfdlib.py b/ryu/lib/bfdlib.py index c3e1973d..388618a7 100644 --- a/ryu/lib/bfdlib.py +++ b/ryu/lib/bfdlib.py @@ -78,7 +78,7 @@ class BFDSession(object): detect_mult=3, desired_min_tx_interval=1000000, required_min_rx_interval=1000000, - auth_type=0, auth_keys={}): + auth_type=0, auth_keys=None): """ Initialize a BFD session. @@ -128,6 +128,7 @@ class BFDSession(object): auth_keys={1: "secret key 1", 2: "secret key 2"}) """ + auth_keys = auth_keys if auth_keys else {} assert not (auth_type and len(auth_keys) == 0) # RyuApp reference to BFDLib @@ -787,7 +788,7 @@ class BFDLib(app_manager.RyuApp): def add_bfd_session(self, dpid, ofport, src_mac, src_ip, dst_mac="FF:FF:FF:FF:FF:FF", dst_ip="255.255.255.255", - auth_type=0, auth_keys={}): + auth_type=0, auth_keys=None): """ Establish a new BFD session and return My Discriminator of new session. @@ -822,6 +823,7 @@ class BFDLib(app_manager.RyuApp): auth_keys={1: "secret key 1", 2: "secret key 2"}) """ + auth_keys = auth_keys if auth_keys else {} # Generate a unique discriminator while True: # Generate My Discriminator diff --git a/ryu/lib/ovs/bridge.py b/ryu/lib/ovs/bridge.py index 92dc28b6..02b9acb3 100644 --- a/ryu/lib/ovs/bridge.py +++ b/ryu/lib/ovs/bridge.py @@ -261,7 +261,8 @@ class OVSBridge(object): return command.result[0] return None - def set_qos(self, port_name, type='linux-htb', max_rate=None, queues=[]): + def set_qos(self, port_name, type='linux-htb', max_rate=None, queues=None): + queues = queues if queues else [] command_qos = ovs_vsctl.VSCtlCommand( 'set-qos', [port_name, type, max_rate]) diff --git a/ryu/lib/packet/bfd.py b/ryu/lib/packet/bfd.py index e12fec5d..61c7943c 100644 --- a/ryu/lib/packet/bfd.py +++ b/ryu/lib/packet/bfd.py @@ -417,7 +417,7 @@ class SimplePassword(BFDAuth): return self.serialize_hdr() + \ struct.pack(self._PACK_STR, self.auth_key_id) + self.password - def authenticate(self, prev=None, auth_keys={}): + def authenticate(self, prev=None, auth_keys=None): """Authenticate the password for this packet. This method can be invoked only when ``self.password`` is defined. @@ -431,6 +431,7 @@ class SimplePassword(BFDAuth): ``auth_keys`` is a dictionary of authentication key chain which key is an integer of *Auth Key ID* and value is a string of *Password*. """ + auth_keys = auth_keys if auth_keys else {} assert isinstance(prev, bfd) if self.auth_key_id in auth_keys and \ self.password == auth_keys[self.auth_key_id]: @@ -520,7 +521,7 @@ class KeyedMD5(BFDAuth): return auth_hdr_bin + struct.pack(self._PACK_STR, self.auth_key_id, 0, self.seq, self.digest) - def authenticate(self, prev, auth_keys={}): + def authenticate(self, prev, auth_keys=None): """Authenticate the MD5 digest for this packet. This method can be invoked only when ``self.digest`` is defined. @@ -536,6 +537,7 @@ class KeyedMD5(BFDAuth): ``auth_keys`` is a dictionary of authentication key chain which key is an integer of *Auth Key ID* and value is a string of *Auth Key*. """ + auth_keys = auth_keys if auth_keys else {} assert isinstance(prev, bfd) if self.digest is None: @@ -670,7 +672,7 @@ class KeyedSHA1(BFDAuth): return auth_hdr_bin + struct.pack(self._PACK_STR, self.auth_key_id, 0, self.seq, self.auth_hash) - def authenticate(self, prev, auth_keys={}): + def authenticate(self, prev, auth_keys=None): """Authenticate the SHA1 hash for this packet. This method can be invoked only when ``self.auth_hash`` is defined. @@ -686,6 +688,7 @@ class KeyedSHA1(BFDAuth): ``auth_keys`` is a dictionary of authentication key chain which key is an integer of *Auth Key ID* and value is a string of *Auth Key*. """ + auth_keys = auth_keys if auth_keys else {} assert isinstance(prev, bfd) if self.auth_hash is None: diff --git a/ryu/lib/packet/bgp.py b/ryu/lib/packet/bgp.py index 66dbc3c7..cad43806 100644 --- a/ryu/lib/packet/bgp.py +++ b/ryu/lib/packet/bgp.py @@ -780,7 +780,8 @@ class _LabelledAddrPrefix(_AddrPrefix): # _WITHDRAW_LABEL = 0x800000 - def __init__(self, length, addr, labels=[], **kwargs): + def __init__(self, length, addr, labels=None, **kwargs): + labels = labels if labels else [] assert isinstance(labels, list) is_tuple = isinstance(addr, tuple) if is_tuple: @@ -2246,8 +2247,9 @@ class BGPOpen(BGPMessage): } def __init__(self, my_as, bgp_identifier, type_=BGP_MSG_OPEN, - opt_param_len=0, opt_param=[], + opt_param_len=0, opt_param=None, version=_VERSION, hold_time=0, len_=None, marker=None): + opt_param = opt_param if opt_param else [] super(BGPOpen, self).__init__(marker=marker, len_=len_, type_=type_) self.version = version self.my_as = my_as @@ -2332,11 +2334,14 @@ class BGPUpdate(BGPMessage): def __init__(self, type_=BGP_MSG_UPDATE, withdrawn_routes_len=None, - withdrawn_routes=[], + withdrawn_routes=None, total_path_attribute_len=None, - path_attributes=[], - nlri=[], + path_attributes=None, + nlri=None, len_=None, marker=None): + withdrawn_routes = withdrawn_routes if withdrawn_routes else [] + path_attributes = path_attributes if path_attributes else [] + nlri = nlri if nlri else [] super(BGPUpdate, self).__init__(marker=marker, len_=len_, type_=type_) self.withdrawn_routes_len = withdrawn_routes_len self.withdrawn_routes = withdrawn_routes diff --git a/ryu/lib/packet/ospf.py b/ryu/lib/packet/ospf.py index 0cc20267..98c5d71c 100644 --- a/ryu/lib/packet/ospf.py +++ b/ryu/lib/packet/ospf.py @@ -280,7 +280,8 @@ class RouterLSA(LSA): def __init__(self, ls_age=0, options=0, type_=OSPF_ROUTER_LSA, id_='0.0.0.0', adv_router='0.0.0.0', ls_seqnum=0, - checksum=None, length=None, flags=0, links=[]): + checksum=None, length=None, flags=0, links=None): + links = links if links else [] self.flags = flags self.links = links super(RouterLSA, self).__init__(ls_age, options, type_, id_, @@ -320,7 +321,8 @@ class NetworkLSA(LSA): def __init__(self, ls_age=0, options=0, type_=OSPF_NETWORK_LSA, id_='0.0.0.0', adv_router='0.0.0.0', ls_seqnum=0, - checksum=None, length=None, mask='0.0.0.0', routers=[]): + checksum=None, length=None, mask='0.0.0.0', routers=None): + routers = routers if routers else [] self.mask = mask self.routers = routers super(NetworkLSA, self).__init__(ls_age, options, type_, id_, @@ -439,7 +441,8 @@ class ASExternalLSA(LSA): def __init__(self, ls_age=0, options=0, type_=OSPF_AS_EXTERNAL_LSA, id_='0.0.0.0', adv_router='0.0.0.0', ls_seqnum=0, - checksum=None, length=None, extnws=[]): + checksum=None, length=None, extnws=None): + extnws = extnws if extnws else [] self.extnws = extnws super(ASExternalLSA, self).__init__(ls_age, options, type_, id_, adv_router, ls_seqnum, checksum, @@ -539,7 +542,8 @@ class PrefixSIDSubTLV(ExtendedPrefixTLV): class OpaqueBody(StringifyMixin, _TypeDisp): - def __init__(self, tlvs=[]): + def __init__(self, tlvs=None): + tlvs = tlvs if tlvs else [] self.tlvs = tlvs def serialize(self): @@ -718,7 +722,8 @@ class OSPFHello(OSPFMessage): au_type=1, authentication=0, checksum=None, version=_VERSION, mask='0.0.0.0', hello_interval=10, options=0, priority=1, dead_interval=40, designated_router='0.0.0.0', - backup_router='0.0.0.0', neighbors=[]): + backup_router='0.0.0.0', neighbors=None): + neighbors = neighbors if neighbors else [] super(OSPFHello, self).__init__(OSPF_MSG_HELLO, length, router_id, area_id, au_type, authentication, checksum, version) @@ -782,7 +787,8 @@ class OSPFDBDesc(OSPFMessage): def __init__(self, length=None, router_id='0.0.0.0', area_id='0.0.0.0', au_type=1, authentication=0, checksum=None, version=_VERSION, mtu=1500, options=0, i_flag=0, m_flag=0, ms_flag=0, - sequence_number=0, lsa_headers=[]): + sequence_number=0, lsa_headers=None): + lsa_headers = lsa_headers if lsa_headers else [] super(OSPFDBDesc, self).__init__(OSPF_MSG_DB_DESC, length, router_id, area_id, au_type, authentication, checksum, version) @@ -865,7 +871,8 @@ class OSPFLSReq(OSPFMessage): def __init__(self, length=None, router_id='0.0.0.0', area_id='0.0.0.0', au_type=1, authentication=0, checksum=None, version=_VERSION, - lsa_requests=[]): + lsa_requests=None): + lsa_requests = lsa_requests if lsa_requests else [] super(OSPFLSReq, self).__init__(OSPF_MSG_LS_REQ, length, router_id, area_id, au_type, authentication, checksum, version) @@ -894,7 +901,8 @@ class OSPFLSUpd(OSPFMessage): def __init__(self, length=None, router_id='0.0.0.0', area_id='0.0.0.0', au_type=1, authentication=0, checksum=None, version=_VERSION, - lsas=[]): + lsas=None): + lsas = lsas if lsas else [] super(OSPFLSUpd, self).__init__(OSPF_MSG_LS_UPD, length, router_id, area_id, au_type, authentication, checksum, version) @@ -930,7 +938,8 @@ class OSPFLSAck(OSPFMessage): def __init__(self, length=None, router_id='0.0.0.0', area_id='0.0.0.0', au_type=1, authentication=0, checksum=None, version=_VERSION, - lsa_headers=[]): + lsa_headers=None): + lsa_headers = lsa_headers if lsa_headers else [] super(OSPFLSAck, self).__init__(OSPF_MSG_LS_ACK, length, router_id, area_id, au_type, authentication, checksum, version) diff --git a/ryu/ofproto/ofproto_v1_2_parser.py b/ryu/ofproto/ofproto_v1_2_parser.py index 7f38e36e..9292b78d 100644 --- a/ryu/ofproto/ofproto_v1_2_parser.py +++ b/ryu/ofproto/ofproto_v1_2_parser.py @@ -931,7 +931,8 @@ class OFPFlowMod(MsgBase): buffer_id=ofproto.OFP_NO_BUFFER, out_port=0, out_group=0, flags=0, match=None, - instructions=[]): + instructions=None): + instructions = instructions if instructions else [] super(OFPFlowMod, self).__init__(datapath) self.cookie = cookie self.cookie_mask = cookie_mask @@ -1725,7 +1726,8 @@ class OFPGroupMod(MsgBase): datapath.send_msg(req) """ def __init__(self, datapath, command=ofproto.OFPGC_ADD, - type_=ofproto.OFPGT_ALL, group_id=0, buckets=[]): + type_=ofproto.OFPGT_ALL, group_id=0, buckets=None): + buckets = buckets if buckets else [] super(OFPGroupMod, self).__init__(datapath) self.command = command self.type = type_ diff --git a/ryu/ofproto/ofproto_v1_3_parser.py b/ryu/ofproto/ofproto_v1_3_parser.py index 8d855256..f3e2b45d 100644 --- a/ryu/ofproto/ofproto_v1_3_parser.py +++ b/ryu/ofproto/ofproto_v1_3_parser.py @@ -99,7 +99,8 @@ class OFPHello(MsgBase): elements list of ``OFPHelloElemVersionBitmap`` instance ========== ========================================================= """ - def __init__(self, datapath, elements=[]): + def __init__(self, datapath, elements=None): + elements = elements if elements else [] super(OFPHello, self).__init__(datapath) self.elements = elements @@ -2607,7 +2608,8 @@ class OFPFlowMod(MsgBase): buffer_id=ofproto.OFP_NO_BUFFER, out_port=0, out_group=0, flags=0, match=None, - instructions=[]): + instructions=None): + instructions = instructions if instructions else [] super(OFPFlowMod, self).__init__(datapath) self.cookie = cookie self.cookie_mask = cookie_mask @@ -3504,7 +3506,8 @@ class OFPGroupMod(MsgBase): datapath.send_msg(req) """ def __init__(self, datapath, command=ofproto.OFPGC_ADD, - type_=ofproto.OFPGT_ALL, group_id=0, buckets=[]): + type_=ofproto.OFPGT_ALL, group_id=0, buckets=None): + buckets = buckets if buckets else [] super(OFPGroupMod, self).__init__(datapath) self.command = command self.type = type_ @@ -3635,7 +3638,8 @@ class OFPMeterMod(MsgBase): ================ ====================================================== """ def __init__(self, datapath, command=ofproto.OFPMC_ADD, - flags=ofproto.OFPMF_KBPS, meter_id=1, bands=[]): + flags=ofproto.OFPMF_KBPS, meter_id=1, bands=None): + bands = bands if bands else [] super(OFPMeterMod, self).__init__(datapath) self.command = command self.flags = flags @@ -5133,7 +5137,8 @@ class OFPInstructionId(StringifyMixin): @OFPTableFeatureProp.register_type(ofproto.OFPTFPT_INSTRUCTIONS) @OFPTableFeatureProp.register_type(ofproto.OFPTFPT_INSTRUCTIONS_MISS) class OFPTableFeaturePropInstructions(OFPTableFeatureProp): - def __init__(self, type_=None, length=None, instruction_ids=[]): + def __init__(self, type_=None, length=None, instruction_ids=None): + instruction_ids = instruction_ids if instruction_ids else [] super(OFPTableFeaturePropInstructions, self).__init__(type_, length) self.instruction_ids = instruction_ids @@ -5159,7 +5164,8 @@ class OFPTableFeaturePropInstructions(OFPTableFeatureProp): class OFPTableFeaturePropNextTables(OFPTableFeatureProp): _TABLE_ID_PACK_STR = '!B' - def __init__(self, type_=None, length=None, table_ids=[]): + def __init__(self, type_=None, length=None, table_ids=None): + table_ids = table_ids if table_ids else [] super(OFPTableFeaturePropNextTables, self).__init__(type_, length) self.table_ids = table_ids @@ -5219,7 +5225,8 @@ class OFPActionId(StringifyMixin): @OFPTableFeatureProp.register_type(ofproto.OFPTFPT_APPLY_ACTIONS) @OFPTableFeatureProp.register_type(ofproto.OFPTFPT_APPLY_ACTIONS_MISS) class OFPTableFeaturePropActions(OFPTableFeatureProp): - def __init__(self, type_=None, length=None, action_ids=[]): + def __init__(self, type_=None, length=None, action_ids=None): + action_ids = action_ids if action_ids else [] super(OFPTableFeaturePropActions, self).__init__(type_, length) self.action_ids = action_ids @@ -5327,7 +5334,8 @@ class OFPExperimenterOxmId(OFPOxmId): @OFPTableFeatureProp.register_type(ofproto.OFPTFPT_APPLY_SETFIELD) @OFPTableFeatureProp.register_type(ofproto.OFPTFPT_APPLY_SETFIELD_MISS) class OFPTableFeaturePropOxm(OFPTableFeatureProp): - def __init__(self, type_=None, length=None, oxm_ids=[]): + def __init__(self, type_=None, length=None, oxm_ids=None): + oxm_ids = oxm_ids if oxm_ids else [] super(OFPTableFeaturePropOxm, self).__init__(type_, length) self.oxm_ids = oxm_ids @@ -5369,8 +5377,9 @@ class OFPTableFeaturesStatsRequest(OFPMultipartRequest): ================ ====================================================== """ def __init__(self, datapath, flags=0, - body=[], + body=None, type_=None): + body = body if body else [] super(OFPTableFeaturesStatsRequest, self).__init__(datapath, flags) self.body = body @@ -5586,8 +5595,9 @@ class ONFFlowMonitorStatsRequest(OFPExperimenterStatsRequestBase): body List of ONFFlowMonitorRequest instances ================ ====================================================== """ - def __init__(self, datapath, flags, body=[], + def __init__(self, datapath, flags, body=None, type_=None, experimenter=None, exp_type=None): + body = body if body else [] super(ONFFlowMonitorStatsRequest, self).__init__(datapath, flags, experimenter=ofproto_common.ONF_EXPERIMENTER_ID, diff --git a/ryu/ofproto/ofproto_v1_4_parser.py b/ryu/ofproto/ofproto_v1_4_parser.py index 86d45683..51e86196 100644 --- a/ryu/ofproto/ofproto_v1_4_parser.py +++ b/ryu/ofproto/ofproto_v1_4_parser.py @@ -71,7 +71,8 @@ class OFPHello(MsgBase): elements list of ``OFPHelloElemVersionBitmap`` instance ========== ========================================================= """ - def __init__(self, datapath, elements=[]): + def __init__(self, datapath, elements=None): + elements = elements if elements else [] super(OFPHello, self).__init__(datapath) self.elements = elements @@ -1466,7 +1467,8 @@ class OFPMeterMod(MsgBase): ================ ====================================================== """ def __init__(self, datapath, command=ofproto.OFPMC_ADD, - flags=ofproto.OFPMF_KBPS, meter_id=1, bands=[]): + flags=ofproto.OFPMF_KBPS, meter_id=1, bands=None): + bands = bands if bands else [] super(OFPMeterMod, self).__init__(datapath) self.command = command self.flags = flags @@ -1786,7 +1788,8 @@ class OFPInstructionId(StringifyMixin): @OFPTableFeatureProp.register_type(ofproto.OFPTFPT_INSTRUCTIONS) @OFPTableFeatureProp.register_type(ofproto.OFPTFPT_INSTRUCTIONS_MISS) class OFPTableFeaturePropInstructions(OFPTableFeatureProp): - def __init__(self, type_=None, length=None, instruction_ids=[]): + def __init__(self, type_=None, length=None, instruction_ids=None): + instruction_ids = instruction_ids if instruction_ids else [] super(OFPTableFeaturePropInstructions, self).__init__(type_, length) self.instruction_ids = instruction_ids @@ -1838,7 +1841,8 @@ class OFPActionId(StringifyMixin): @OFPTableFeatureProp.register_type(ofproto.OFPTFPT_APPLY_ACTIONS) @OFPTableFeatureProp.register_type(ofproto.OFPTFPT_APPLY_ACTIONS_MISS) class OFPTableFeaturePropActions(OFPTableFeatureProp): - def __init__(self, type_=None, length=None, action_ids=[]): + def __init__(self, type_=None, length=None, action_ids=None): + action_ids = action_ids if action_ids else [] super(OFPTableFeaturePropActions, self).__init__(type_, length) self.action_ids = action_ids @@ -1864,7 +1868,8 @@ class OFPTableFeaturePropActions(OFPTableFeatureProp): class OFPTableFeaturePropNextTables(OFPTableFeatureProp): _TABLE_ID_PACK_STR = '!B' - def __init__(self, type_=None, length=None, table_ids=[]): + def __init__(self, type_=None, length=None, table_ids=None): + table_ids = table_ids if table_ids else [] super(OFPTableFeaturePropNextTables, self).__init__(type_, length) self.table_ids = table_ids @@ -1975,7 +1980,8 @@ class OFPExperimenterOxmId(OFPOxmId): @OFPTableFeatureProp.register_type(ofproto.OFPTFPT_APPLY_SETFIELD) @OFPTableFeatureProp.register_type(ofproto.OFPTFPT_APPLY_SETFIELD_MISS) class OFPTableFeaturePropOxm(OFPTableFeatureProp): - def __init__(self, type_=None, length=None, oxm_ids=[]): + def __init__(self, type_=None, length=None, oxm_ids=None): + oxm_ids = oxm_ids if oxm_ids else [] super(OFPTableFeaturePropOxm, self).__init__(type_, length) self.oxm_ids = oxm_ids @@ -2016,7 +2022,8 @@ class OFPTableFeaturesStatsRequest(OFPMultipartRequest): The default is []. ================ ====================================================== """ - def __init__(self, datapath, flags=0, body=[], type_=None): + def __init__(self, datapath, flags=0, body=None, type_=None): + body = body if body else [] super(OFPTableFeaturesStatsRequest, self).__init__(datapath, flags) self.body = body @@ -3055,7 +3062,8 @@ class OFPFlowUpdateHeader(OFPFlowUpdate): class OFPFlowUpdateFull(OFPFlowUpdateHeader): def __init__(self, length=None, event=None, table_id=None, reason=None, idle_timeout=None, hard_timeout=None, priority=None, - cookie=None, match=None, instructions=[]): + cookie=None, match=None, instructions=None): + instructions = instructions if instructions else [] super(OFPFlowUpdateFull, self).__init__(length, event) self.table_id = table_id self.reason = reason @@ -4266,7 +4274,8 @@ class OFPFlowMod(MsgBase): buffer_id=ofproto.OFP_NO_BUFFER, out_port=0, out_group=0, flags=0, importance=0, match=None, - instructions=[]): + instructions=None): + instructions = instructions if instructions else [] super(OFPFlowMod, self).__init__(datapath) self.cookie = cookie self.cookie_mask = cookie_mask @@ -5036,7 +5045,8 @@ class OFPGroupMod(MsgBase): datapath.send_msg(req) """ def __init__(self, datapath, command=ofproto.OFPGC_ADD, - type_=ofproto.OFPGT_ALL, group_id=0, buckets=[]): + type_=ofproto.OFPGT_ALL, group_id=0, buckets=None): + buckets = buckets if buckets else [] super(OFPGroupMod, self).__init__(datapath) self.command = command self.type = type_ diff --git a/ryu/ofproto/ofproto_v1_5_parser.py b/ryu/ofproto/ofproto_v1_5_parser.py index 2d671b72..a6e5136f 100644 --- a/ryu/ofproto/ofproto_v1_5_parser.py +++ b/ryu/ofproto/ofproto_v1_5_parser.py @@ -73,7 +73,8 @@ class OFPHello(MsgBase): elements list of ``OFPHelloElemVersionBitmap`` instance ========== ========================================================= """ - def __init__(self, datapath, elements=[]): + def __init__(self, datapath, elements=None): + elements = elements if elements else [] super(OFPHello, self).__init__(datapath) self.elements = elements @@ -1135,7 +1136,8 @@ class OFPPortDescPropOptical(OFPPortDescProp): @OFPPortDescProp.register_type(ofproto.OFPPDPT_PIPELINE_INPUT) @OFPPortDescProp.register_type(ofproto.OFPPDPT_PIPELINE_OUTPUT) class OFPPortDescPropOxm(OFPPortDescProp): - def __init__(self, type_=None, length=None, oxm_ids=[]): + def __init__(self, type_=None, length=None, oxm_ids=None): + oxm_ids = oxm_ids if oxm_ids else [] super(OFPPortDescPropOxm, self).__init__(type_, length) self.oxm_ids = oxm_ids @@ -1159,7 +1161,8 @@ class OFPPortDescPropOxm(OFPPortDescProp): class OFPPortDescPropRecirculate(OFPPortDescProp): _PORT_NO_PACK_STR = '!I' - def __init__(self, type_=None, length=None, port_nos=[]): + def __init__(self, type_=None, length=None, port_nos=None): + port_nos = port_nos if port_nos else [] super(OFPPortDescPropRecirculate, self).__init__(type_, length) self.port_nos = port_nos @@ -1702,7 +1705,8 @@ class OFPMeterMod(MsgBase): ================ ====================================================== """ def __init__(self, datapath, command=ofproto.OFPMC_ADD, - flags=ofproto.OFPMF_KBPS, meter_id=1, bands=[]): + flags=ofproto.OFPMF_KBPS, meter_id=1, bands=None): + bands = bands if bands else [] super(OFPMeterMod, self).__init__(datapath) self.command = command self.flags = flags @@ -2023,7 +2027,8 @@ class OFPInstructionId(StringifyMixin): @OFPTableFeatureProp.register_type(ofproto.OFPTFPT_INSTRUCTIONS) @OFPTableFeatureProp.register_type(ofproto.OFPTFPT_INSTRUCTIONS_MISS) class OFPTableFeaturePropInstructions(OFPTableFeatureProp): - def __init__(self, type_=None, length=None, instruction_ids=[]): + def __init__(self, type_=None, length=None, instruction_ids=None): + instruction_ids = instruction_ids if instruction_ids else [] super(OFPTableFeaturePropInstructions, self).__init__(type_, length) self.instruction_ids = instruction_ids @@ -2075,7 +2080,8 @@ class OFPActionId(StringifyMixin): @OFPTableFeatureProp.register_type(ofproto.OFPTFPT_APPLY_ACTIONS) @OFPTableFeatureProp.register_type(ofproto.OFPTFPT_APPLY_ACTIONS_MISS) class OFPTableFeaturePropActions(OFPTableFeatureProp): - def __init__(self, type_=None, length=None, action_ids=[]): + def __init__(self, type_=None, length=None, action_ids=None): + action_ids = action_ids if action_ids else [] super(OFPTableFeaturePropActions, self).__init__(type_, length) self.action_ids = action_ids @@ -2101,7 +2107,8 @@ class OFPTableFeaturePropActions(OFPTableFeatureProp): class OFPTableFeaturePropNextTables(OFPTableFeatureProp): _TABLE_ID_PACK_STR = '!B' - def __init__(self, type_=None, length=None, table_ids=[]): + def __init__(self, type_=None, length=None, table_ids=None): + table_ids = table_ids if table_ids else [] super(OFPTableFeaturePropNextTables, self).__init__(type_, length) self.table_ids = table_ids @@ -2216,7 +2223,8 @@ class OFPExperimenterOxmId(OFPOxmId): @OFPTableFeatureProp.register_type(ofproto.OFPTFPT_APPLY_COPYFIELD) @OFPTableFeatureProp.register_type(ofproto.OFPTFPT_APPLY_COPYFIELD_MISS) class OFPTableFeaturePropOxm(OFPTableFeatureProp): - def __init__(self, type_=None, length=None, oxm_ids=[]): + def __init__(self, type_=None, length=None, oxm_ids=None): + oxm_ids = oxm_ids if oxm_ids else [] super(OFPTableFeaturePropOxm, self).__init__(type_, length) self.oxm_ids = oxm_ids @@ -2338,7 +2346,8 @@ class OFPTableFeaturesStatsRequest(OFPMultipartRequest): The default is []. ================ ====================================================== """ - def __init__(self, datapath, flags=0, body=[], type_=None): + def __init__(self, datapath, flags=0, body=None, type_=None): + body = body if body else [] super(OFPTableFeaturesStatsRequest, self).__init__(datapath, flags) self.body = body @@ -2789,8 +2798,10 @@ class OFPGroupStatsReply(OFPMultipartReply): class OFPGroupDescStats(StringifyMixin): - def __init__(self, type_=None, group_id=None, buckets=[], properties=[], + def __init__(self, type_=None, group_id=None, buckets=None, properties=None, length=None, bucket_array_len=None): + buckets = buckets if buckets else [] + properties = properties if properties else [] super(OFPGroupDescStats, self).__init__() self.length = length self.type = type_ @@ -3405,7 +3416,8 @@ class OFPFlowUpdateHeader(OFPFlowUpdate): class OFPFlowUpdateFull(OFPFlowUpdateHeader): def __init__(self, length=None, event=None, table_id=None, reason=None, idle_timeout=None, hard_timeout=None, priority=None, - cookie=None, match=None, instructions=[]): + cookie=None, match=None, instructions=None): + instructions = instructions if instructions else [] super(OFPFlowUpdateFull, self).__init__(length, event) self.table_id = table_id self.reason = reason @@ -3716,7 +3728,8 @@ class OFPBundleFeaturesStatsRequest(OFPMultipartRequest): datapath.send_msg(req) """ def __init__(self, datapath, flags=0, feature_request_flags=0, - properties=[], type_=None): + properties=None, type_=None): + properties = properties if properties else [] super(OFPBundleFeaturesStatsRequest, self).__init__(datapath, flags) self.feature_request_flags = feature_request_flags self.properties = properties @@ -5121,7 +5134,8 @@ class OFPFlowMod(MsgBase): buffer_id=ofproto.OFP_NO_BUFFER, out_port=0, out_group=0, flags=0, importance=0, match=None, - instructions=[]): + instructions=None): + instructions = instructions if instructions else [] super(OFPFlowMod, self).__init__(datapath) self.cookie = cookie self.cookie_mask = cookie_mask @@ -5842,8 +5856,9 @@ class OFPActionCopyField(OFPAction): The default is []. ================ ====================================================== """ - def __init__(self, n_bits=0, src_offset=0, dst_offset=0, oxm_ids=[], + def __init__(self, n_bits=0, src_offset=0, dst_offset=0, oxm_ids=None, type_=None, len_=None): + oxm_ids = oxm_ids if oxm_ids else [] super(OFPActionCopyField, self).__init__() self.n_bits = n_bits self.src_offset = src_offset @@ -6029,7 +6044,9 @@ class OFPGroupMod(MsgBase): """ def __init__(self, datapath, command=ofproto.OFPGC_ADD, type_=ofproto.OFPGT_ALL, group_id=0, command_bucket_id=0, - buckets=[], properties=[], bucket_array_len=None): + buckets=None, properties=None, bucket_array_len=None): + buckets = buckets if buckets else [] + properties = properties if properties else [] super(OFPGroupMod, self).__init__(datapath) self.command = command self.type = type_ @@ -6258,8 +6275,10 @@ class OFPGroupBucketPropExperimenter(OFPPropCommonExperimenter4ByteData): class OFPBucket(StringifyMixin): - def __init__(self, bucket_id=0, actions=[], properties=[], + def __init__(self, bucket_id=0, actions=None, properties=None, len_=None, action_array_len=None): + actions = actions if actions else [] + properties = properties if properties else [] super(OFPBucket, self).__init__() self.bucket_id = bucket_id self.actions = actions diff --git a/ryu/services/protocols/bgp/api/operator.py b/ryu/services/protocols/bgp/api/operator.py index acaa5c79..5109b007 100644 --- a/ryu/services/protocols/bgp/api/operator.py +++ b/ryu/services/protocols/bgp/api/operator.py @@ -65,7 +65,8 @@ class OperatorApi(object): def clear(self, **kwargs): return self._run('clear', kw=kwargs) - def _run(self, cmd, kw={}): + def _run(self, cmd, kw=None): + kw = kw if kw else {} params = kw.get('params', []) fmt = kw.get('format', 'json') root = RootCmd(api=self.internal_api, resp_formatter_name=fmt) diff --git a/ryu/utils.py b/ryu/utils.py index e915e0d9..a8eb5094 100644 --- a/ryu/utils.py +++ b/ryu/utils.py @@ -125,8 +125,9 @@ def get_reqs_from_files(requirements_files): return [] -def parse_requirements(requirements_files=['requirements.txt', - 'tools/pip-requires']): +def parse_requirements(requirements_files=None): + requirements_files = requirements_files if requirements_files else [ + 'requirements.txt', 'tools/pip-requires'] requirements = [] for line in get_reqs_from_files(requirements_files): # For the requirements list, we need to inject only the portion |