package com.huawei.esdk.fusioncompute.local.model.net;

import java.util.List;

/**
 * Subnet详细信息
 * <p>
 * @since eSDK Cloud V100R003C50
 */
public class Subnet
{
    /**
     * Subnet 标识。
     */
    private String urn;
    
    /**
     * 访问subnet所用的uri。
     */
    private String uri;
    
    /**
     * Subnet名称，长度[1,256]。
     */
    private String name;
    
    /**
     * Subnet使用的Vlan号 ，范围：1 - 4094。
     */
    private Integer vlanId;
    
    /**
     * 【可选】网关IP地址。
     */
    private String gateway;
    
    /**
     * IP地址。
     */
    private String netAddr;
    
    /**
     * 掩码，范围：1-31。
     */
    private Integer netMask;
    
    /**
     * 【可选】系统预留IP地址。
     *（说明：此字段专供一体机使用，GM创建subnet时选择此字段，就不需要再选择gateway，同样，选择了gateway，就不需要再选择此字段。）
     */
    private String sysReserveIp;
    
    /**
     * 【可选】保留地址段，列表最大数量为3。
     * 如："192.168.0.1-192.168.0.5"
     */
    private List<String> reserveIps;
    
    /**
     * 【可选】描述信息，长度[0,1024]。
     */
    private String description;
    
    /**
     * dhcpOption详细信息。
     */
    private List<DhcpOption> dhcpOption;
    
    /**
     * 已分配地址数量，查询指定Subnet信息接口时返回值使用。
     */
    private Integer allocateAddrNum;
    
    /**
     * 可用地址数量，查询指定Subnet信息接口时返回值使用。
     */
    private Integer availableAddrNum;
    
    public String getUrn()
    {
        return urn;
    }
    
    public void setUrn(String urn)
    {
        this.urn = urn;
    }
    
    public String getUri()
    {
        return uri;
    }
    
    public void setUri(String uri)
    {
        this.uri = uri;
    }
    
    public String getName()
    {
        return name;
    }
    
    public void setName(String name)
    {
        this.name = name;
    }
    
    public Integer getVlanId()
    {
        return vlanId;
    }
    
    public void setVlanId(Integer vlanId)
    {
        this.vlanId = vlanId;
    }
    
    public String getGateway()
    {
        return gateway;
    }
    
    public void setGateway(String gateway)
    {
        this.gateway = gateway;
    }
    
    public String getNetAddr()
    {
        return netAddr;
    }
    
    public void setNetAddr(String netAddr)
    {
        this.netAddr = netAddr;
    }
    
    public Integer getNetMask()
    {
        return netMask;
    }
    
    public void setNetMask(Integer netMask)
    {
        this.netMask = netMask;
    }
    
    public String getSysReserveIp()
    {
        return sysReserveIp;
    }
    
    public void setSysReserveIp(String sysReserveIp)
    {
        this.sysReserveIp = sysReserveIp;
    }
    
    public List<String> getReserveIps()
    {
        return reserveIps;
    }
    
    public void setReserveIps(List<String> reserveIps)
    {
        this.reserveIps = reserveIps;
    }
    
    public String getDescription()
    {
        return description;
    }
    
    public void setDescription(String description)
    {
        this.description = description;
    }
    
    public List<DhcpOption> getDhcpOption()
    {
        return dhcpOption;
    }
    
    public void setDhcpOption(List<DhcpOption> dhcpOption)
    {
        this.dhcpOption = dhcpOption;
    }
    
    public Integer getAllocateAddrNum()
    {
        return allocateAddrNum;
    }
    
    public void setAllocateAddrNum(Integer allocateAddrNum)
    {
        this.allocateAddrNum = allocateAddrNum;
    }
    
    public Integer getAvailableAddrNum()
    {
        return availableAddrNum;
    }
    
    public void setAvailableAddrNum(Integer availableAddrNum)
    {
        this.availableAddrNum = availableAddrNum;
    }
    
}
