OpenstackRouter.java 4.59 KB
/*
 * Copyright 2016 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.openstackrouting;

/**
 * An Openstack Neutron Router Model.
 */
public final class OpenstackRouter {

    public enum RouterStatus {
        UP,
        DOWN,
        ACTIVE,
    }

    private String tenantId;
    private String id;
    private String name;
    private RouterStatus status;
    private boolean adminStateUp;
    private OpenstackExternalGateway gatewayExternalInfo;

    private OpenstackRouter(String id, String tenantId, String name, RouterStatus status,
                           boolean adminStateUp, OpenstackExternalGateway gatewayExternalInfo) {
        this.id = id;
        this.tenantId = tenantId;
        this.name = name;
        this.status = status;
        this.adminStateUp = adminStateUp;
        this.gatewayExternalInfo = gatewayExternalInfo;

    }

    /**
     * Returns tenant ID.
     *
     * @return tenant ID
     */
    public String tenantId() {
        return tenantId;
    }

    /**
     * Returns router ID.
     *
     * @return router ID
     */
    public String id() {
        return id;
    }

    /**
     * Returns router name.
     *
     * @return router name
     */
    public String name() {
        return name;
    }

    /**
     * Returns router status.
     *
     * @return router stauts
     */
    public RouterStatus status() {
        return status;
    }

    /**
     * Returns whether admin state up or not.
     *
     * @return true if admin state up, false otherwise
     */
    public boolean adminStateUp() {
        return adminStateUp;
    }

    /**
     * Returns external gateway information.
     *
     * @return external gateway information
     */
    public OpenstackExternalGateway gatewayExternalInfo() {
        return gatewayExternalInfo;
    }

    /**
     * An Openstack Router Builder class.
     */
    public static final class Builder {

        private String tenantId;
        private String id;
        private String name;
        private RouterStatus status;
        private Boolean adminStateUp;
        private OpenstackExternalGateway gatewayExternalInfo;

        /**
         * Sets router ID.
         *
         * @param id router ID
         * @return Builder object
         */
        public Builder id(String id) {
            this.id = id;
            return this;
        }

        /**
         * Sets router name.
         *
         * @param name router name
         * @return Builder object
         */
        public Builder name(String name) {
            this.name = name;
            return this;
        }

        /**
         * Sets router status.
         *
         * @param status router status
         * @return Builder object
         */
        public Builder status(RouterStatus status) {
            this.status = status;
            return this;
        }

        /**
         * Sets tenant ID.
         *
         * @param tenantId Tenant ID
         * @return Builder object
         */
        public Builder tenantId(String tenantId) {
            this.tenantId = tenantId;
            return this;
        }

        /**
         * Sets whether admin state up or not.
         *
         * @param adminStateUp true if admin state is up, false otherwise
         * @return Builder object
         */
        public Builder adminStateUp(boolean adminStateUp) {
            this.adminStateUp = adminStateUp;
            return this;
        }

        /**
         * Sets external gateway information.
         *
         * @param gatewayExternalInfo external gateway information
         * @return Builder object
         */
        public Builder gatewayExternalInfo(OpenstackExternalGateway gatewayExternalInfo) {
            this.gatewayExternalInfo = gatewayExternalInfo;
            return this;
        }

        /**
         * Builds an OpenstackRouter object.
         *
         * @return OpenstasckRouter object
         */
        public OpenstackRouter build() {
            return new OpenstackRouter(id, tenantId, name, status,
                    adminStateUp, gatewayExternalInfo);
        }
    }


}