000_unset_spf_attribute   A
last analyzed

Complexity

Total Complexity 6

Size/Duplication

Total Lines 61
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 41
dl 0
loc 61
rs 10
c 0
b 0
f 0
wmc 6

3 Functions

Rating   Name   Duplication   Size   Complexity  
A unset_primary_constraints_spf_attr() 0 12 2
A main() 0 20 2
A unset_secondary_constraints_spf_attr() 0 12 2
1
#!/usr/bin/env python
2
# -*- coding: utf-8 -*-
3
from napps.kytos.mef_eline.controllers import ELineController
4
import os
5
import sys
6
from typing import Iterable
7
8
9
def unset_primary_constraints_spf_attr(
10
    controller: ELineController, evc_ids: Iterable[str] = None
11
) -> int:
12
    """Unset primary_constraints.spf_attribute."""
13
    db = controller.db
14
    filter_expr = {"primary_constraints.spf_attribute": "hop"}
15
    if evc_ids:
16
        {"_id": {"$in": [evc_ids]}}
17
    return db.evcs.update_many(
18
        filter_expr,
19
        {"$unset": {"primary_constraints.spf_attribute": 1}},
20
    ).modified_count
21
22
23
def unset_secondary_constraints_spf_attr(
24
    controller: ELineController, evc_ids: Iterable[str] = None
25
) -> int:
26
    """Unset secondary_constraints.spf_attribute."""
27
    db = controller.db
28
    if evc_ids:
29
        {"_id": {"$in": [evc_ids]}}
30
    filter_expr = {"secondary_constraints.spf_attribute": "hop"}
31
    return db.evcs.update_many(
32
        filter_expr,
33
        {"$unset": {"secondary_constraints.spf_attribute": 1}},
34
    ).modified_count
35
36
37
def main() -> None:
38
    """Main function."""
39
    controller = ELineController()
40
    evc_ids = [e for e in os.getenv("EVC_IDS", "").split(",") if e]
41
42
    not_found = []
43
    circuits = controller.get_circuits()["circuits"]
44
    not_found = [e for e in evc_ids if e not in circuits]
45
    if not_found:
46
        print(
47
            f"The following evc_ids weren't found: {not_found}\n"
48
            f"Make sure that evc string in EVC_IDS is a valid evc_id "
49
            "and it's separated by a comma"
50
        )
51
        sys.exit(1)
52
53
    count = unset_primary_constraints_spf_attr(controller, evc_ids)
54
    print(f"Unset {count} primary_constraints spf_attribute, evc_ids: {evc_ids}")
55
    count = unset_secondary_constraints_spf_attr(controller, evc_ids)
56
    print(f"Unset {count} secondary_constraints spf_attribute, evc_ids: {evc_ids}")
57
58
59
if __name__ == "__main__":
60
    main()
61