class Environment {

  @Override
  public String toString() {
    return MoreObjects.toStringHelper(Environment.class)
        .add(PROP_TESTRIG_NAME, _testrigName)
        .add(PROP_EDGE_BLACKLIST, _edgeBlacklist)
        .add(PROP_INTERFACE_BLACKLIST, _interfaceBlacklist)
        .add(PROP_NODE_BLACKLIST, _nodeBlacklist)
        .add(PROP_ENVIRONMENT_BGP_TABLES, _bgpTables)
        .add(PROP_ENVIRONMENT_ROUTING_TABLES, _routingTables)
        .add(PROP_EXTERNAL_BGP_ANNOUNCEMENTS, _externalBgpAnnouncements)
        .toString();
  }

  @JsonCreator public  Environment(
      @JsonProperty(PROP_TESTRIG_NAME) String testrigName,
      @JsonProperty(PROP_EDGE_BLACKLIST) @Nullable SortedSet<Edge> edgeBlacklist,
      @JsonProperty(PROP_INTERFACE_BLACKLIST) @Nullable
          SortedSet<NodeInterfacePair> interfaceBlacklist,
      @JsonProperty(PROP_NODE_BLACKLIST) @Nullable SortedSet<String> nodeBlacklist,
      @JsonProperty(PROP_ENVIRONMENT_BGP_TABLES) @Nullable SortedMap<String, String> bgpTables,
      @JsonProperty(PROP_ENVIRONMENT_ROUTING_TABLES) @Nullable
          SortedMap<String, String> routingTables,
      @JsonProperty(PROP_EXTERNAL_BGP_ANNOUNCEMENTS) @Nullable
          SortedSet<BgpAdvertisement> externalBgpAnnouncements);

}