private void updateSnapshotNodeRoles() { // Compute new auto role data and updates existing auto data with it NetworkId networkId = _settings.getContainer(); SnapshotId snapshotId = _settings.getTestrig(); NodeRolesId snapshotNodeRolesId = _idResolver.getSnapshotNodeRolesId(networkId, snapshotId); Set<String> nodeNames = loadConfigurations().keySet(); Topology rawLayer3Topology = _topologyProvider.getRawLayer3Topology(getNetworkSnapshot()); SortedSet<NodeRoleDimension> autoRoles = new InferRoles(nodeNames, rawLayer3Topology).inferRoles(); NodeRolesData.Builder snapshotNodeRoles = NodeRolesData.builder(); try { if (!autoRoles.isEmpty()) { snapshotNodeRoles.setDefaultDimension(autoRoles.first().getName()); snapshotNodeRoles.setRoleDimensions(autoRoles); } _storage.storeNodeRoles(snapshotNodeRoles.build(), snapshotNodeRolesId); } catch (IOException e) { _logger.warnf("Could not update node roles: %s", e); } }