content: //
  // Licensed to the Apache Software Foundation (ASF) under one
  // or more contributor license agreements.  See the NOTICE file
  // distributed with this work for additional information
  // regarding copyright ownership.  The ASF licenses this file
  // to you under the Apache License, Version 2.0 (the
  // "License"); you may not use this file except in compliance
  // with the License.  You may obtain a copy of the License at
  //
  //   http://www.apache.org/licenses/LICENSE-2.0
  //
  // Unless required by applicable law or agreed to in writing,
  // software distributed under the License is distributed on an
  // "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  // KIND, either express or implied.  See the License for the
  // specific language governing permissions and limitations
  // under the License.
  //
  
  package com.cloud.network.bigswitch;
  
  import java.util.ArrayList;
  import java.util.List;
  
  import com.cloud.network.bigswitch.AttachmentData.Attachment.IpAddress;
  import com.cloud.network.bigswitch.NetworkData.AttachmentInfo;
  import com.cloud.network.bigswitch.NetworkData.Segment;
  import com.cloud.network.bigswitch.NetworkData.SegmentInfo;
  import com.cloud.network.bigswitch.RouterData.Router;
  import com.google.gson.annotations.SerializedName;
  
  public class TopologyData {
      @SerializedName("networks") private final List<Network> networks;
      @SerializedName("routers") private final List<Router> routers;
  
      public void addNetwork(Network network) {
          networks.add(network);
      }
  
      public void setNetworks(List<Network> networks) {
          this.networks.clear();
          this.networks.addAll(networks);
      }
  
      public void clearNetworks() {
          this.networks.clear();
      }
  
      public void addRouter(Router router) {
          routers.add(router);
      }
  
      public void setRouters(List<Router> routers) {
          this.routers.clear();
          this.routers.addAll(routers);
      }
  
      public void clearRouters() {
          this.routers.clear();
      }
  
      public TopologyData() {
          networks = new ArrayList<Network>();
          routers = new ArrayList<Router>();
      }
  
      public class Network {
          @SerializedName("id") private String id;
          @SerializedName("name") private String name;
          @SerializedName("tenant_id") private String tenantId;
          @SerializedName("tenant_name") private String tenantName;
          @SerializedName("provider:segmentation_id") private Integer vlan = null;
          @SerializedName("state") private String state;
          @SerializedName("ports") private List<Port> ports;
          @SerializedName("subnets") private List<Segment> segments;
  
          public String getId() {
              return id;
          }
          public void setId(String id) {
              this.id = id;
          }
          public String getName() {
              return name;
          }
          public void setName(String name) {
              this.name = name;
          }
          public String getTenantId() {
              return tenantId;
          }
          public void setTenantId(String tenantId) {
              this.tenantId = tenantId;
          }
          public String getTenantName() {
              return tenantName;
          }
          public void setTenantName(String tenantName) {
              this.tenantName = tenantName;
          }
          public Integer getVlan() {
              return vlan;
          }
          public void setVlan(Integer vlan) {
              this.vlan = vlan;
          }
          public String getState() {
              return state;
          }
          public void setState(String state) {
              this.state = state;
          }
          public List<Port> getPorts() {
              return ports;
          }
          public void setPorts(List<Port> ports) {
              this.ports = ports;
          }
          public List<Segment> getSegments() {
              return segments;
          }
          public void setSegments(List<Segment> segments) {
              this.segments = segments;
          }
          @Override
          public String toString() {
              return "Network [id=" + id + ", name=" + name + ", tenantId="
                      + tenantId + ", tenantName=" + tenantName + ", vlan="
                      + vlan + ", state=" + state + ", ports=" + ports
                      + ", segments=" + segments + "]";
          }
      }
  
      public class Port {
          @SerializedName("attachment") private AttachmentInfo attachment;
          @SerializedName("binding:host_id") private String hostId;
          @SerializedName("bound_segment") private SegmentInfo segmentInfo;
          @SerializedName("device_owner") private String owner;
          @SerializedName("fixed_ips") private List<IpAddress> ipAddresses;
          @SerializedName("id") private String id;
          @SerializedName("mac_address") private String mac;
          @SerializedName("network") private NetworkData.Network network;
          @SerializedName("state") private String state;
          @SerializedName("tenant_id") private String tenantId;
          @SerializedName("tenant_name") private String tenantName;
  
          public AttachmentInfo getAttachment() {
              return attachment;
          }
  
          public void setAttachmentInfo(AttachmentInfo attachment) {
              this.attachment = attachment;
          }
  
          public String getHostId() {
              return hostId;
          }
  
          public void setHostId(String hostId) {
              this.hostId = hostId;
          }
  
          public SegmentInfo getSegmentInfo() {
              return segmentInfo;
          }
  
          public void setSegmentInfo(SegmentInfo segmentInfo) {
              this.segmentInfo = segmentInfo;
          }
  
          public String getOwner() {
              return owner;
          }
  
          public void setOwner(String owner) {
              this.owner = owner;
          }
  
          public List<IpAddress> getIpAddresses() {
              return ipAddresses;
          }
  
          public void setIpAddresses(List<IpAddress> ipAddresses) {
              this.ipAddresses = ipAddresses;
          }
  
          public String getId() {
              return id;
          }
  
          public void setId(String id) {
              this.id = id;
          }
  
          public String getMac() {
              return mac;
          }
  
          public void setMac(String mac) {
              this.mac = mac;
          }
  
          public NetworkData.Network getNetwork() {
              return network;
          }
  
          public void setNetwork(NetworkData.Network network) {
              this.network = network;
          }
  
          public String getState() {
              return state;
          }
  
          public void setState(String state) {
              this.state = state;
          }
  
          public String getTenantId() {
              return tenantId;
          }
  
          public void setTenantId(String tenantId) {
              this.tenantId = tenantId;
          }
  
          public String getTenantName() {
              return tenantName;
          }
  
          public void setTenantName(String tenantName) {
              this.tenantName = tenantName;
          }
      }
  
      public List<Network> getNetworks() {
          return networks;
      }
  
      public List<Router> getRouters() {
          return routers;
      }
  
      @Override
      public String toString() {
          return "TopologyData [networks=" + networks + ", routers=" + routers
                  + "]";
      }
  }
  