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.google.gson.annotations.SerializedName;
  
  /**
   * AttachmentData contains information expected by Big Switch Controller
   * in CreateBcfAttachmentCommand
   */
  public class AttachmentData {
      @SerializedName("port") final private Attachment attachment;
  
      public Attachment getAttachment() {
          return this.attachment;
      }
  
      public AttachmentData() {
          this.attachment = new Attachment();
      }
  
      public class Attachment {
          @SerializedName("id") private String id;
          @SerializedName("tenant_name") private String tenantName;
          @SerializedName("vlan") private Integer vlan;
          @SerializedName("fixed_ips") final private List<IpAddress> fixedIps;
          @SerializedName("mac_address") private String macAddress;
          @SerializedName("bound_segment") final private BoundSegment boundSegment;
          @SerializedName("binding:host_id") private String hostId;
  
          public Attachment(){
              this.boundSegment = new BoundSegment();
              this.fixedIps = new ArrayList<IpAddress>();
          }
  
          public class BoundSegment {
              @SerializedName("segmentation_id") private Integer segmentationId;
  
              public Integer getSegmentationId() {
                  return segmentationId;
              }
  
              public void setSegmentationId(Integer segmentationId) {
                  this.segmentationId = segmentationId;
              }
          }
  
          public class IpAddress {
              @SerializedName("ip_address") private String address;
  
              public IpAddress(final String ipAddr) {
                  this.address = ipAddr;
              }
  
              public String getIpAddress(){
                  return address;
              }
          }
  
          private String state;
  
          public String getTenantName() {
              return tenantName;
          }
  
          public void setTenantName(final String tenantName) {
              this.tenantName = tenantName;
          }
  
          public String getId() {
              return id;
          }
  
          public void setId(final String id) {
              this.id = id;
          }
  
          public String getHostId() {
              return hostId;
          }
  
          public void setHostId(final String hostId) {
              this.hostId = hostId;
          }
  
          public Integer getVlan() {
              return vlan;
          }
  
          public void setVlan(final Integer vlan) {
              this.vlan = vlan;
              this.boundSegment.setSegmentationId(vlan);
          }
  
          public List<IpAddress> getIpv4List() {
              return fixedIps;
          }
  
          public void addIpv4(final String ipv4) {
              this.fixedIps.add(new IpAddress(ipv4));
          }
  
          public String getMac() {
              return macAddress;
          }
  
          public void setMac(final String mac) {
              this.macAddress = mac;
          }
  
          public BoundSegment getBoundSegment() {
              return boundSegment;
          }
  
          public String getState() {
              return state;
          }
  
          public void setState(final String state) {
              this.state = state;
          }
      }
  }
  