Code Duplication    Length = 29-29 lines in 2 locations

main.py 2 locations

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