OpenstackSubnet.java 3.87 KB
/*
 * Copyright 2015 Open Networking Laboratory
 *
 * Licensed 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 org.onosproject.openstackswitching;

import static com.google.common.base.Preconditions.checkNotNull;

/**
 * Represents the subnet information given by Neutron.
 *
 */
public final class OpenstackSubnet {
    private String name;
    private boolean enableHhcp;
    private String networkId;
    private String tenantId;
    private String dnsNameservers;
    private String gatewayIp;
    private String cidr;
    private String id;

    private OpenstackSubnet(String name, boolean enableHhcp, String networkId,
                            String tenantId, String dnsNameservers, String gatewayIp,
                            String cidr, String id) {
        this.name = name;
        this.enableHhcp = enableHhcp;
        this.networkId = checkNotNull(networkId);
        this.tenantId = checkNotNull(tenantId);
        this.dnsNameservers = dnsNameservers;
        this.gatewayIp = gatewayIp;
        this.cidr = checkNotNull(cidr);
        this.id = checkNotNull(id);
    }

    /**
     * Returns OpenstackSubnet builder object.
     *
     * @return OpenstackSubnet builder
     */
    public static OpenstackSubnet.Builder builder() {
        return new Builder();
    }

    public String name() {
        return name;
    }

    public boolean enableHhcp() {
        return enableHhcp;
    }

    public String networkId() {
        return networkId;
    }

    public String tenantId() {
        return tenantId;
    }

    public String dnsNameservers() {
        return dnsNameservers;
    }

    public String gatewayIp() {
        return gatewayIp;
    }

    public String cidr() {
        return cidr;
    }

    public String id() {
        return id;
    }

    // TODO : Implement the following functions when necessary

    /**
     * OpenstackSubnet Builder class.
     *
     */
    public static final class Builder {
        private String name;
        private boolean enableDhcp;
        private String networkId;
        private String tenantId;
        private String dnsNameservers;
        private String gatewayIp;
        private String cidr;
        private String id;

        Builder() {}

        public Builder setName(String name) {
            this.name = name;

            return this;
        }

        public Builder setEnableDhcp(boolean enableDhcp) {
            this.enableDhcp = enableDhcp;

            return this;
        }

        public Builder setNetworkId(String networkId) {
            this.networkId = networkId;

            return this;
        }

        public Builder setTenantId(String tenantId) {
            this.tenantId = tenantId;

            return this;
        }

        public Builder setDnsNameservers(String dnsNameservers) {
            this.dnsNameservers = dnsNameservers;

            return this;
        }

        public Builder setGatewayIp(String gatewayIp) {
            this.gatewayIp = gatewayIp;

            return this;
        }

        public Builder setCidr(String cidr) {
            this.cidr = cidr;

            return this;
        }

        public Builder setId(String id) {
            this.id = id;

            return this;
        }

        public OpenstackSubnet build() {
            return new OpenstackSubnet(name, enableDhcp, networkId, tenantId,
                    dnsNameservers, gatewayIp, cidr, id);
        }
    }
}