Code Duplication    Length = 29-29 lines in 2 locations

main.py 2 locations

@@ 308-336 (lines=29) @@
305
        return jsonify({msg_error:
306
                        error_list}), 409
307
308
    @rest('v3/interfaces/switch/<dpid>/disable', methods=['POST'])
309
    @rest('v3/interfaces/<interface_disable_id>/disable', methods=['POST'])
310
    def disable_interface(self, interface_disable_id=None, dpid=None):
311
        """Administratively disable interfaces in the topology."""
312
        error_list = []  # List of interfaces that were not deactivated.
313
        msg_error = "Some interfaces couldn't be found and deactivated: "
314
        if dpid is None:
315
            dpid = ":".join(interface_disable_id.split(":")[:-1])
316
        try:
317
            switch = self.controller.switches[dpid]
318
        except KeyError as exc:
319
            return jsonify(f"Switch not found: {exc}"), 404
320
321
        if interface_disable_id:
322
            interface_number = int(interface_disable_id.split(":")[-1])
323
324
            try:
325
                switch.interfaces[interface_number].disable()
326
            except KeyError as exc:
327
                error_list.append(f"Switch {dpid} Interface {exc}")
328
        else:
329
            for interface in switch.interfaces.values():
330
                interface.disable()
331
        if not error_list:
332
            log.info(f"Storing administrative state for disabled interfaces.")
333
            self.save_status_on_storehouse()
334
            return jsonify("Operation successful"), 200
335
        return jsonify({msg_error:
336
                        error_list}), 409
337
338
    @rest('v3/interfaces/<interface_id>/metadata')
339
    def get_interface_metadata(self, interface_id):
@@ 278-306 (lines=29) @@
275
276
        return jsonify({'interfaces': interfaces})
277
278
    @rest('v3/interfaces/switch/<dpid>/enable', methods=['POST'])
279
    @rest('v3/interfaces/<interface_enable_id>/enable', methods=['POST'])
280
    def enable_interface(self, interface_enable_id=None, dpid=None):
281
        """Administratively enable interfaces in the topology."""
282
        error_list = []  # List of interfaces that were not activated.
283
        msg_error = "Some interfaces couldn't be found and activated: "
284
        if dpid is None:
285
            dpid = ":".join(interface_enable_id.split(":")[:-1])
286
        try:
287
            switch = self.controller.switches[dpid]
288
        except KeyError as exc:
289
            return jsonify(f"Switch not found: {exc}"), 404
290
291
        if interface_enable_id:
292
            interface_number = int(interface_enable_id.split(":")[-1])
293
294
            try:
295
                switch.interfaces[interface_number].enable()
296
            except KeyError as exc:
297
                error_list.append(f"Switch {dpid} Interface {exc}")
298
        else:
299
            for interface in switch.interfaces.values():
300
                interface.enable()
301
        if not error_list:
302
            log.info(f"Storing administrative state for enabled interfaces.")
303
            self.save_status_on_storehouse()
304
            return jsonify("Operation successful"), 200
305
        return jsonify({msg_error:
306
                        error_list}), 409
307
308
    @rest('v3/interfaces/switch/<dpid>/disable', methods=['POST'])
309
    @rest('v3/interfaces/<interface_disable_id>/disable', methods=['POST'])