aboutsummaryrefslogtreecommitdiffstats
path: root/framework/src/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/DefaultFloatingIp.java
blob: 7a297d9044b06fe1be7a6c2bc7018f24eed103c5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
/*
 * 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.vtnrsc;

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

import java.util.Objects;

import org.onlab.packet.IpAddress;

/**
 * Default implementation of FloatingIp interface.
 */
public final class DefaultFloatingIp implements FloatingIp {

    private final FloatingIpId id;
    private final TenantId tenantId;
    private final TenantNetworkId networkId;
    private final VirtualPortId portId;
    private final RouterId routerId;
    private final IpAddress floatingIp;
    private final IpAddress fixedIp;
    private final Status status;

    /**
     *
     * Creates a floating Ip object.
     *
     * @param id  floatingIp identifier
     * @param tenantId  tenant identifier
     * @param networkId  the identifier of network associated with the floating Ip
     * @param portId  port identifier
     * @param routerId  router identifier
     * @param floatingIp  floatingIp address
     * @param fixedIp  the fixed Ip associated with the floating Ip
     * @param status  the floating Ip status
     */
    public DefaultFloatingIp(FloatingIpId id, TenantId tenantId,
                             TenantNetworkId networkId, VirtualPortId portId,
                             RouterId routerId, IpAddress floatingIp,
                             IpAddress fixedIp, Status status) {
        this.id = checkNotNull(id, "id cannot be null");
        this.tenantId = checkNotNull(tenantId, "tenantId cannot be null");
        this.networkId = checkNotNull(networkId, "networkId cannot be null");
        this.portId = portId;
        this.routerId = routerId;
        this.floatingIp = checkNotNull(floatingIp, "floatingIp cannot be null");
        this.fixedIp = fixedIp;
        this.status = checkNotNull(status, "status cannot be null");
    }

    @Override
    public FloatingIpId id() {
        return id;
    }

    @Override
    public TenantId tenantId() {
        return tenantId;
    }

    @Override
    public TenantNetworkId networkId() {
        return networkId;
    }

    @Override
    public VirtualPortId portId() {
        return portId;
    }

    @Override
    public RouterId routerId() {
        return routerId;
    }

    @Override
    public IpAddress floatingIp() {
        return floatingIp;
    }

    @Override
    public IpAddress fixedIp() {
        return fixedIp;
    }

    @Override
    public Status status() {
        return status;
    }

    @Override
    public int hashCode() {
        return Objects.hash(id, tenantId, networkId, portId, routerId,
                            floatingIp, fixedIp, status);
    }

    @Override
    public boolean equals(Object obj) {
        if (this == obj) {
            return true;
        }
        if (obj instanceof DefaultFloatingIp) {
            final DefaultFloatingIp that = (DefaultFloatingIp) obj;
            return Objects.equals(this.id, that.id)
                    && Objects.equals(this.tenantId, that.tenantId)
                    && Objects.equals(this.networkId, that.networkId)
                    && Objects.equals(this.portId, that.portId)
                    && Objects.equals(this.routerId, that.routerId)
                    && Objects.equals(this.floatingIp, that.floatingIp)
                    && Objects.equals(this.fixedIp, that.fixedIp)
                    && Objects.equals(this.status, that.status);
        }
        return false;
    }

    @Override
    public String toString() {
        return toStringHelper(this).add("id", id).add("tenantId", tenantId)
                .add("networkId", networkId).add("portId", portId)
                .add("routerId", routerId).add("floatingIp", floatingIp)
                .add("fixedIp", fixedIp).add("floatingIpStatus", status)
                .toString();
    }

}