/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you 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.apache.provisionr.api.access; import com.google.common.base.Objects; import static com.google.common.base.Preconditions.checkNotNull; import java.io.Serializable; /** * Describe the only user allowed to access machine from the pool over SSH * <p/> * This user will support only key-based SSH authentication have * password-less sudo access */ public class AdminAccess implements Serializable { public static AdminAccessBuilder builder() { return new AdminAccessBuilder(); } private final String username; private final String publicKey; private final String privateKey; AdminAccess(String username, String publicKey, String privateKey) { this.username = checkNotNull(username, "username is null"); this.publicKey = checkNotNull(publicKey, "publicKey is null"); this.privateKey = checkNotNull(privateKey, "privateKey is null"); } public String getUsername() { return username; } public String getPublicKey() { return publicKey; } public String getPrivateKey() { return privateKey; } public AdminAccessBuilder toBuilder() { return builder().username(username) .publicKey(publicKey).privateKey(privateKey); } @Override public int hashCode() { return Objects.hashCode(username, publicKey, privateKey); } @Override public boolean equals(Object obj) { if (obj == null) { return false; } if (getClass() != obj.getClass()) { return false; } final AdminAccess other = (AdminAccess) obj; return Objects.equal(this.username, other.username) && Objects.equal(this.publicKey, other.publicKey) && Objects.equal(this.privateKey, other.privateKey); } @Override public String toString() { return "AdminAccess{" + "username='" + username + '\'' + ", publicKey='" + publicKey + '\'' + '}'; } }