Code Duplication    Length = 29-29 lines in 2 locations

main.py 2 locations

@@ 361-389 (lines=29) @@
358
        return jsonify({msg_error:
359
                        error_list}), 409
360
361
    @rest('v3/interfaces/switch/<dpid>/disable', methods=['POST'])
362
    @rest('v3/interfaces/<interface_disable_id>/disable', methods=['POST'])
363
    def disable_interface(self, interface_disable_id=None, dpid=None):
364
        """Administratively disable interfaces in the topology."""
365
        error_list = []  # List of interfaces that were not deactivated.
366
        msg_error = "Some interfaces couldn't be found and deactivated: "
367
        if dpid is None:
368
            dpid = ":".join(interface_disable_id.split(":")[:-1])
369
        try:
370
            switch = self.controller.switches[dpid]
371
        except KeyError as exc:
372
            return jsonify(f"Switch not found: {exc}"), 404
373
374
        if interface_disable_id:
375
            interface_number = int(interface_disable_id.split(":")[-1])
376
377
            try:
378
                switch.interfaces[interface_number].disable()
379
            except KeyError as exc:
380
                error_list.append(f"Switch {dpid} Interface {exc}")
381
        else:
382
            for interface in switch.interfaces.values():
383
                interface.disable()
384
        if not error_list:
385
            log.info(f"Storing administrative state for disabled interfaces.")
386
            self.save_status_on_storehouse()
387
            return jsonify("Operation successful"), 200
388
        return jsonify({msg_error:
389
                        error_list}), 409
390
391
    @rest('v3/interfaces/<interface_id>/metadata')
392
    def get_interface_metadata(self, interface_id):
@@ 331-359 (lines=29) @@
328
329
        return jsonify({'interfaces': interfaces})
330
331
    @rest('v3/interfaces/switch/<dpid>/enable', methods=['POST'])
332
    @rest('v3/interfaces/<interface_enable_id>/enable', methods=['POST'])
333
    def enable_interface(self, interface_enable_id=None, dpid=None):
334
        """Administratively enable interfaces in the topology."""
335
        error_list = []  # List of interfaces that were not activated.
336
        msg_error = "Some interfaces couldn't be found and activated: "
337
        if dpid is None:
338
            dpid = ":".join(interface_enable_id.split(":")[:-1])
339
        try:
340
            switch = self.controller.switches[dpid]
341
        except KeyError as exc:
342
            return jsonify(f"Switch not found: {exc}"), 404
343
344
        if interface_enable_id:
345
            interface_number = int(interface_enable_id.split(":")[-1])
346
347
            try:
348
                switch.interfaces[interface_number].enable()
349
            except KeyError as exc:
350
                error_list.append(f"Switch {dpid} Interface {exc}")
351
        else:
352
            for interface in switch.interfaces.values():
353
                interface.enable()
354
        if not error_list:
355
            log.info(f"Storing administrative state for enabled interfaces.")
356
            self.save_status_on_storehouse()
357
            return jsonify("Operation successful"), 200
358
        return jsonify({msg_error:
359
                        error_list}), 409
360
361
    @rest('v3/interfaces/switch/<dpid>/disable', methods=['POST'])
362
    @rest('v3/interfaces/<interface_disable_id>/disable', methods=['POST'])