Committed by
Gerrit Code Review
Add config validation for vRouter and PIM configs
Change-Id: I97ddf4f745a19df6998b15ae47ebde5aa5f46238
Showing
4 changed files
with
57 additions
and
0 deletions
... | @@ -112,4 +112,20 @@ public class PimInterfaceConfig extends Config<ConnectPoint> { | ... | @@ -112,4 +112,20 @@ public class PimInterfaceConfig extends Config<ConnectPoint> { |
112 | } | 112 | } |
113 | return Optional.of(Short.parseShort(node.path(OVERRIDE_INTERVAL).asText())); | 113 | return Optional.of(Short.parseShort(node.path(OVERRIDE_INTERVAL).asText())); |
114 | } | 114 | } |
115 | + | ||
116 | + @Override | ||
117 | + public boolean isValid() { | ||
118 | + if (!hasOnlyFields(INTERFACE_NAME, ENABLED, HELLO_INTERVAL, HOLD_TIME, | ||
119 | + PRIORITY, PROPAGATION_DELAY, OVERRIDE_INTERVAL)) { | ||
120 | + return false; | ||
121 | + } | ||
122 | + | ||
123 | + return isString(INTERFACE_NAME, FieldPresence.MANDATORY) && | ||
124 | + isBoolean(ENABLED, FieldPresence.MANDATORY) && | ||
125 | + isIntegralNumber(HELLO_INTERVAL, FieldPresence.OPTIONAL) && | ||
126 | + isIntegralNumber(HOLD_TIME, FieldPresence.OPTIONAL) && | ||
127 | + isIntegralNumber(PRIORITY, FieldPresence.OPTIONAL) && | ||
128 | + isIntegralNumber(PROPAGATION_DELAY, FieldPresence.OPTIONAL) && | ||
129 | + isIntegralNumber(OVERRIDE_INTERVAL, FieldPresence.OPTIONAL); | ||
130 | + } | ||
115 | } | 131 | } | ... | ... |
... | @@ -82,4 +82,19 @@ public class RouterConfig extends Config<ApplicationId> { | ... | @@ -82,4 +82,19 @@ public class RouterConfig extends Config<ApplicationId> { |
82 | return interfaces; | 82 | return interfaces; |
83 | } | 83 | } |
84 | 84 | ||
85 | + @Override | ||
86 | + public boolean isValid() { | ||
87 | + if (!hasOnlyFields(INTERFACES, CP_CONNECT_POINT, OSPF_ENABLED, PIM_ENABLED)) { | ||
88 | + return false; | ||
89 | + } | ||
90 | + | ||
91 | + JsonNode intfNode = object.path(INTERFACES); | ||
92 | + if (!intfNode.isMissingNode() && !intfNode.isArray()) { | ||
93 | + return false; | ||
94 | + } | ||
95 | + | ||
96 | + return isConnectPoint(CP_CONNECT_POINT, FieldPresence.MANDATORY) && | ||
97 | + isBoolean(OSPF_ENABLED, FieldPresence.OPTIONAL) && | ||
98 | + isBoolean(PIM_ENABLED, FieldPresence.OPTIONAL); | ||
99 | + } | ||
85 | } | 100 | } | ... | ... |
This diff is collapsed. Click to expand it.
... | @@ -22,6 +22,7 @@ import com.fasterxml.jackson.databind.node.ObjectNode; | ... | @@ -22,6 +22,7 @@ import com.fasterxml.jackson.databind.node.ObjectNode; |
22 | import com.google.common.annotations.Beta; | 22 | import com.google.common.annotations.Beta; |
23 | import com.google.common.collect.Lists; | 23 | import com.google.common.collect.Lists; |
24 | import com.google.common.collect.Sets; | 24 | import com.google.common.collect.Sets; |
25 | +import org.onlab.packet.IpPrefix; | ||
25 | import org.onlab.packet.MacAddress; | 26 | import org.onlab.packet.MacAddress; |
26 | import org.onlab.packet.VlanId; | 27 | import org.onlab.packet.VlanId; |
27 | import org.onosproject.incubator.net.intf.Interface; | 28 | import org.onosproject.incubator.net.intf.Interface; |
... | @@ -50,6 +51,31 @@ public class InterfaceConfig extends Config<ConnectPoint> { | ... | @@ -50,6 +51,31 @@ public class InterfaceConfig extends Config<ConnectPoint> { |
50 | private static final String INTF_NULL_ERROR = "Interface cannot be null"; | 51 | private static final String INTF_NULL_ERROR = "Interface cannot be null"; |
51 | private static final String INTF_NAME_ERROR = "Interface must have a valid name"; | 52 | private static final String INTF_NAME_ERROR = "Interface must have a valid name"; |
52 | 53 | ||
54 | + @Override | ||
55 | + public boolean isValid() { | ||
56 | + for (JsonNode node : array) { | ||
57 | + if (!hasOnlyFields((ObjectNode) node, NAME, IPS, MAC, VLAN)) { | ||
58 | + return false; | ||
59 | + } | ||
60 | + | ||
61 | + ObjectNode obj = (ObjectNode) node; | ||
62 | + | ||
63 | + if (!(isString(obj, NAME, FieldPresence.OPTIONAL) && | ||
64 | + isMacAddress(obj, MAC, FieldPresence.OPTIONAL) && | ||
65 | + isIntegralNumber(obj, VLAN, FieldPresence.OPTIONAL, 0, VlanId.MAX_VLAN))) { | ||
66 | + return false; | ||
67 | + } | ||
68 | + | ||
69 | + | ||
70 | + for (JsonNode ipNode : node.path(IPS)) { | ||
71 | + if (!ipNode.isTextual() || IpPrefix.valueOf(ipNode.asText()) == null) { | ||
72 | + return false; | ||
73 | + } | ||
74 | + } | ||
75 | + } | ||
76 | + return true; | ||
77 | + } | ||
78 | + | ||
53 | /** | 79 | /** |
54 | * Retrieves all interfaces configured on this port. | 80 | * Retrieves all interfaces configured on this port. |
55 | * | 81 | * | ... | ... |
-
Please register or login to post a comment