16 package org.openkilda.wfm.topology.nbworker.converters;
18 import static java.lang.String.format;
28 import org.apache.commons.lang3.math.NumberUtils;
29 import org.neo4j.driver.v1.Value;
30 import org.neo4j.driver.v1.types.Node;
31 import org.neo4j.driver.v1.types.Relationship;
32 import org.slf4j.Logger;
33 import org.slf4j.LoggerFactory;
35 import java.util.ArrayList;
36 import java.util.List;
38 import java.util.Optional;
39 import java.util.stream.Collectors;
43 private static final String SRC_SWITCH_FIELD =
"src_switch";
44 private static final String SRC_PORT_FIELD =
"src_port";
45 private static final String DST_SWITCH_FIELD =
"dst_switch";
46 private static final String DST_PORT_FIELD =
"dst_port";
47 private static final String CREATED_FIELD =
"time_create";
48 private static final String MODIFIED_FIELD =
"time_modify";
50 private static final Logger logger = LoggerFactory.getLogger(
LinksConverter.class);
61 src.
setPortNo(parseIntValue(relationship.get(SRC_PORT_FIELD)));
62 src.
setSegLatency(parseIntValue(relationship.get(
"latency")));
67 dst.
setPortNo(parseIntValue(relationship.get(DST_PORT_FIELD)));
68 dst.
setSegLatency(parseIntValue(relationship.get(
"latency")));
71 List<PathNode> pathNodes =
new ArrayList<>();
75 IslChangeType state = getStatus(relationship.get(
"status").asString());
77 parseIntValue(relationship.get(
"latency")),
79 parseIntValue(relationship.get(
"speed")),
81 parseIntValue(relationship.get(
"available_bandwidth"))
83 isl.setTimestamp(System.currentTimeMillis());
96 Map<String, String> properties =
node.asMap().entrySet()
98 .collect(Collectors.toMap(Map.Entry::getKey, el -> String.valueOf(el.getValue())));
102 int srcPort = NumberUtils.toInt(properties.remove(SRC_PORT_FIELD));
104 int dstPort = NumberUtils.toInt(properties.remove(DST_PORT_FIELD));
107 properties.remove(CREATED_FIELD);
108 properties.remove(MODIFIED_FIELD);
115 private static int parseIntValue(Value
value) {
118 intValue = Optional.ofNullable(
value)
119 .filter(val -> !val.isNull())
120 .map(Value::asObject)
121 .map(Object::toString)
122 .filter(NumberUtils::isCreatable)
123 .map(Integer::parseInt)
125 }
catch (Exception e) {
126 logger.warn(
format(
"Exception trying to get an Integer; the String isn't parseable. Value: %s",
value), e);
140 logger.warn(
"Found incorrect ISL status: {}",
status);
145 private LinksConverter() {
void setPortNo(final int portNo)
void setSegLatency(final long latency)
void setSwitchId(final SwitchId switchId)
static IslInfoData toIslInfoData(Relationship relationship)
void setSeqId(final int seqId)
static LinkPropsData toLinkPropsData(Node node)