blob: 5a3b30dac76b0111618b1cb6e447942d522300be [file] [log] [blame]
/*
* Copyright 2018-present Open Networking Foundation
*
* 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.openstacknode.impl;
import com.google.common.base.MoreObjects;
import org.onosproject.openstacknode.api.OpenstackAuth;
import java.util.Objects;
import static com.google.common.base.Preconditions.checkArgument;
/**
* Implementation class of openstack authentication.
*/
public class DefaultOpenstackAuth implements OpenstackAuth {
private final String version;
private final Integer port;
private final Protocol protocol;
private final String username;
private final String password;
private final String project;
private final Perspective perspective;
private static final String NOT_NULL_MSG = "% cannot be null";
/**
* A default constructor of keystone authentication instance.
*
* @param version version number
* @param port endpoint port number
* @param protocol endpoint protocol type
* @param username keystone username
* @param password keystone password
* @param project project name
* @param perspective user perspective
*/
protected DefaultOpenstackAuth(String version, Integer port, Protocol protocol,
String username, String password, String project,
Perspective perspective) {
this.version = version;
this.port = port;
this.protocol = protocol;
this.username = username;
this.password = password;
this.project = project;
this.perspective = perspective;
}
@Override
public String version() {
return version;
}
@Override
public Integer port() {
return port;
}
@Override
public Protocol protocol() {
return protocol;
}
@Override
public String username() {
return username;
}
@Override
public String password() {
return password;
}
@Override
public String project() {
return project;
}
@Override
public Perspective perspective() {
return perspective;
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj instanceof DefaultOpenstackAuth) {
DefaultOpenstackAuth that = (DefaultOpenstackAuth) obj;
return Objects.equals(version, that.version) &&
Objects.equals(port, that.port) &&
Objects.equals(protocol, that.protocol) &&
Objects.equals(username, that.username) &&
Objects.equals(password, that.password) &&
Objects.equals(project, that.project) &&
Objects.equals(perspective, that.perspective);
}
return false;
}
@Override
public int hashCode() {
return Objects.hash(version,
port,
protocol,
username,
password,
project,
perspective);
}
@Override
public String toString() {
return MoreObjects.toStringHelper(getClass())
.add("version", version)
.add("port", port)
.add("protocol", protocol)
.add("username", username)
.add("password", password)
.add("project", project)
.add("perspective", perspective)
.toString();
}
/**
* Returns new builder instance.
*
* @return keystone authentication instance builder
*/
public static Builder builder() {
return new Builder();
}
/**
* A builder class for openstack authentication.
*/
public static final class Builder implements OpenstackAuth.Builder {
private String version;
private Integer port;
private Protocol protocol;
private String username;
private String password;
private String project;
private Perspective perspective;
// private constructor not intended to use from external
private Builder() {
}
@Override
public OpenstackAuth build() {
checkArgument(version != null, NOT_NULL_MSG, "version");
checkArgument(port != null, NOT_NULL_MSG, "port");
checkArgument(protocol != null, NOT_NULL_MSG, "protocol");
checkArgument(username != null, NOT_NULL_MSG, "username");
checkArgument(password != null, NOT_NULL_MSG, "password");
checkArgument(project != null, NOT_NULL_MSG, "project");
return new DefaultOpenstackAuth(version,
port,
protocol,
username,
password,
project,
perspective);
}
@Override
public Builder version(String version) {
this.version = version;
return this;
}
@Override
public Builder port(Integer port) {
this.port = port;
return this;
}
@Override
public Builder protocol(Protocol protocol) {
this.protocol = protocol;
return this;
}
@Override
public Builder username(String username) {
this.username = username;
return this;
}
@Override
public Builder password(String password) {
this.password = password;
return this;
}
@Override
public Builder project(String project) {
this.project = project;
return this;
}
@Override
public Builder perspective(Perspective perspective) {
this.perspective = perspective;
return this;
}
}
}