@VisibleForTesting static TableAnswerElement resolveNode(SpecifiersQuestion question, SpecifierContext context) { List<ColumnMetadata> columns = ImmutableList.of(new ColumnMetadata(COL_NODE, Schema.NODE, "Node", false, false)); TableAnswerElement table = new TableAnswerElement(new TableMetadata(columns)); Map<String, ColumnMetadata> columnMap = table.getMetadata().toColumnMap(); Set<String> nodes = question.getNodeSpecifier().resolve(context); for (String node : nodes) { table.addRow(Row.of(columnMap, COL_NODE, new Node(node))); } return table; } }
@VisibleForTesting static TableAnswerElement resolveInterface( SpecifiersQuestion question, SpecifierContext context) { List<ColumnMetadata> columns = ImmutableList.of( new ColumnMetadata(COL_INTERFACE, Schema.INTERFACE, "Interface", false, false)); TableAnswerElement table = new TableAnswerElement(new TableMetadata(columns)); Map<String, ColumnMetadata> columnMap = table.getMetadata().toColumnMap(); InterfaceSpecifier interfaceSpecifier = question.getInterfaceSpecifier(); Set<String> nodes = question.getNodeSpecifier().resolve(context); Set<Interface> interfaces = interfaceSpecifier.resolve(nodes, context); for (Interface iface : interfaces) { table.addRow(Row.of(columnMap, COL_INTERFACE, new NodeInterfacePair(iface))); } return table; }
@VisibleForTesting static TableAnswerElement resolveFilter(SpecifiersQuestion question, SpecifierContext context) { List<ColumnMetadata> columns = ImmutableList.of( new ColumnMetadata(COL_NODE, Schema.NODE, "Node", false, false), new ColumnMetadata(COL_FILTER_NAME, Schema.STRING, "Filter name", false, false)); TableAnswerElement table = new TableAnswerElement(new TableMetadata(columns)); Map<String, ColumnMetadata> columnMap = table.getMetadata().toColumnMap(); FilterSpecifier filterSpecifier = question.getFilterSpecifier(); Set<String> nodes = question.getNodeSpecifier().resolve(context); for (String node : nodes) { Set<IpAccessList> nodeFilters = filterSpecifier.resolve(node, context); for (IpAccessList filter : nodeFilters) { table.addRow( Row.of( columnMap, COL_NODE, new Node(node), COL_FILTER_NAME, Objects.toString(filter.getName()))); } } return table; }