Code Duplication    Length = 29-29 lines in 2 locations

main.py 2 locations

@@ 336-364 (lines=29) @@
333
        return jsonify({msg_error:
334
                        error_list}), 409
335
336
    @rest('v3/interfaces/switch/<dpid>/disable', methods=['POST'])
337
    @rest('v3/interfaces/<interface_disable_id>/disable', methods=['POST'])
338
    def disable_interface(self, interface_disable_id=None, dpid=None):
339
        """Administratively disable interfaces in the topology."""
340
        error_list = []  # List of interfaces that were not deactivated.
341
        msg_error = "Some interfaces couldn't be found and deactivated: "
342
        if dpid is None:
343
            dpid = ":".join(interface_disable_id.split(":")[:-1])
344
        try:
345
            switch = self.controller.switches[dpid]
346
        except KeyError as exc:
347
            return jsonify(f"Switch not found: {exc}"), 404
348
349
        if interface_disable_id:
350
            interface_number = int(interface_disable_id.split(":")[-1])
351
352
            try:
353
                switch.interfaces[interface_number].disable()
354
            except KeyError as exc:
355
                error_list.append(f"Switch {dpid} Interface {exc}")
356
        else:
357
            for interface in switch.interfaces.values():
358
                interface.disable()
359
        if not error_list:
360
            log.info(f"Storing administrative state for disabled interfaces.")
361
            self.save_status_on_storehouse()
362
            return jsonify("Operation successful"), 200
363
        return jsonify({msg_error:
364
                        error_list}), 409
365
366
    @rest('v3/interfaces/<interface_id>/metadata')
367
    def get_interface_metadata(self, interface_id):
@@ 306-334 (lines=29) @@
303
304
        return jsonify({'interfaces': interfaces})
305
306
    @rest('v3/interfaces/switch/<dpid>/enable', methods=['POST'])
307
    @rest('v3/interfaces/<interface_enable_id>/enable', methods=['POST'])
308
    def enable_interface(self, interface_enable_id=None, dpid=None):
309
        """Administratively enable interfaces in the topology."""
310
        error_list = []  # List of interfaces that were not activated.
311
        msg_error = "Some interfaces couldn't be found and activated: "
312
        if dpid is None:
313
            dpid = ":".join(interface_enable_id.split(":")[:-1])
314
        try:
315
            switch = self.controller.switches[dpid]
316
        except KeyError as exc:
317
            return jsonify(f"Switch not found: {exc}"), 404
318
319
        if interface_enable_id:
320
            interface_number = int(interface_enable_id.split(":")[-1])
321
322
            try:
323
                switch.interfaces[interface_number].enable()
324
            except KeyError as exc:
325
                error_list.append(f"Switch {dpid} Interface {exc}")
326
        else:
327
            for interface in switch.interfaces.values():
328
                interface.enable()
329
        if not error_list:
330
            log.info(f"Storing administrative state for enabled interfaces.")
331
            self.save_status_on_storehouse()
332
            return jsonify("Operation successful"), 200
333
        return jsonify({msg_error:
334
                        error_list}), 409
335
336
    @rest('v3/interfaces/switch/<dpid>/disable', methods=['POST'])
337
    @rest('v3/interfaces/<interface_disable_id>/disable', methods=['POST'])