blob: fd174d742fffaa50135ef97aa70276ad5a171729 [file] [log] [blame]
Jian Li58b33982020-07-01 19:07:02 +09001/*
2 * Copyright 2020-present Open Networking Foundation
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16package org.onosproject.k8snode.api;
17
18import com.google.common.base.MoreObjects;
19import org.onlab.packet.IpAddress;
20import org.onlab.packet.MacAddress;
21
22import java.util.Objects;
23
24/**
25 * Representation of a external network.
26 */
27public class DefaultK8sExternalNetwork implements K8sExternalNetwork {
28
29 private final IpAddress extBridgeIp;
30 private final IpAddress extGatewayIp;
31 private final MacAddress extGatewayMac;
Jian Li9bc67772020-10-07 02:12:33 +090032 private final String extIntf;
Jian Li58b33982020-07-01 19:07:02 +090033
34 protected DefaultK8sExternalNetwork(IpAddress extBridgeIp, IpAddress extGatewayIp,
Jian Li9bc67772020-10-07 02:12:33 +090035 MacAddress extGatewayMac, String extIntf) {
Jian Li58b33982020-07-01 19:07:02 +090036 this.extBridgeIp = extBridgeIp;
37 this.extGatewayIp = extGatewayIp;
38 this.extGatewayMac = extGatewayMac;
Jian Li9bc67772020-10-07 02:12:33 +090039 this.extIntf = extIntf;
Jian Li58b33982020-07-01 19:07:02 +090040 }
41
42 @Override
43 public IpAddress extBridgeIp() {
44 return extBridgeIp;
45 }
46
47 @Override
48 public IpAddress extGatewayIp() {
49 return extGatewayIp;
50 }
51
52 @Override
53 public MacAddress extGatewayMac() {
54 return extGatewayMac;
55 }
56
Jian Li9bc67772020-10-07 02:12:33 +090057 @Override
58 public String extIntf() {
59 return extIntf;
60 }
61
Jian Li58b33982020-07-01 19:07:02 +090062 /**
63 * Returns new builder instance.
64 *
65 * @return kubernetes node builder
66 */
67 public static Builder builder() {
68 return new Builder();
69 }
70
71 @Override
72 public boolean equals(Object o) {
73 if (this == o) {
74 return true;
75 }
76 if (o == null || getClass() != o.getClass()) {
77 return false;
78 }
79 DefaultK8sExternalNetwork that = (DefaultK8sExternalNetwork) o;
80 return extBridgeIp.equals(that.extBridgeIp) &&
Jian Li9bc67772020-10-07 02:12:33 +090081 extGatewayIp.equals(that.extGatewayIp) &&
82 extIntf.equals(that.extIntf);
Jian Li58b33982020-07-01 19:07:02 +090083 }
84
85 @Override
86 public int hashCode() {
Jian Li9bc67772020-10-07 02:12:33 +090087 return Objects.hash(extBridgeIp, extGatewayIp, extGatewayMac, extIntf);
Jian Li58b33982020-07-01 19:07:02 +090088 }
89
90 @Override
91 public String toString() {
92 return MoreObjects.toStringHelper(this)
93 .add("extBridgeIp", extBridgeIp)
94 .add("extGatewayIp", extGatewayIp)
95 .add("extGatewayMac", extGatewayMac)
Jian Li9bc67772020-10-07 02:12:33 +090096 .add("extIntf", extIntf)
Jian Li58b33982020-07-01 19:07:02 +090097 .toString();
98 }
99
100 public static final class Builder implements K8sExternalNetwork.Builder {
101
102 private IpAddress extBridgeIp;
103 private IpAddress extGatewayIp;
104 private MacAddress extGatewayMac;
Jian Li9bc67772020-10-07 02:12:33 +0900105 private String extIntf;
Jian Li58b33982020-07-01 19:07:02 +0900106
107 // private constructor not intended to use from external
108 private Builder() {
109 }
110
111 @Override
112 public K8sExternalNetwork build() {
Jian Li9bc67772020-10-07 02:12:33 +0900113 return new DefaultK8sExternalNetwork(extBridgeIp, extGatewayIp, extGatewayMac, extIntf);
Jian Li58b33982020-07-01 19:07:02 +0900114 }
115
116 @Override
117 public Builder extBridgeIp(IpAddress extBridgeIp) {
118 this.extBridgeIp = extBridgeIp;
119 return this;
120 }
121
122 @Override
123 public Builder extGatewayIp(IpAddress extGatewayIp) {
124 this.extGatewayIp = extGatewayIp;
125 return this;
126 }
127
128 @Override
129 public Builder extGatewayMac(MacAddress extGatewayMac) {
130 this.extGatewayMac = extGatewayMac;
131 return this;
132 }
Jian Li9bc67772020-10-07 02:12:33 +0900133
134 @Override
135 public Builder extIntf(String extIntf) {
136 this.extIntf = extIntf;
137 return this;
138 }
Jian Li58b33982020-07-01 19:07:02 +0900139 }
140}