blob: 6db9f5fd9bea3f58db0e85ca5251d4d940e77d75 [file] [log] [blame]
/*
* 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.jclouds.openstack.nova.v2_0.domain;
import java.beans.ConstructorProperties;
import java.util.Set;
import org.jclouds.javax.annotation.Nullable;
import org.jclouds.openstack.v2_0.domain.Link;
import org.jclouds.openstack.v2_0.domain.Resource;
import com.google.common.base.Objects;
import com.google.common.base.MoreObjects.ToStringHelper;
import com.google.common.base.Optional;
/**
* Server Resource with administrative password returned by ServerApi#CreateServer calls
*
* @see <a href=
"http://docs.openstack.org/api/openstack-compute/1.1/content/Get_Server_Details-d1e2623.html"
/>
*/
public class ServerCreated extends Resource {
public static Builder builder() {
return new Builder();
}
public Builder toBuilder() {
return builder().fromServerCreated(this);
}
public static final class Builder extends Resource.Builder<Builder> {
protected String adminPass;
protected String diskConfig;
/**
* @see ServerCreated#getAdminPass()
*/
public Builder adminPass(String adminPass) {
this.adminPass = adminPass;
return self();
}
/**
* @see ServerCreated#getDiskConfig()
*/
public Builder diskConfig(String diskConfig) {
this.diskConfig = diskConfig;
return self();
}
public ServerCreated build() {
return new ServerCreated(id, name, links, adminPass, diskConfig);
}
public Builder fromServerCreated(ServerCreated in) {
return super.fromResource(in).adminPass(in.getAdminPass().orNull()).diskConfig(in.getDiskConfig().orNull());
}
@Override
protected Builder self() {
return this;
}
}
private final Optional<String> adminPass;
private final Optional<String> diskConfig;
@ConstructorProperties({
"id", "name", "links", "adminPass", "OS-DCF:diskConfig"
})
protected ServerCreated(String id, @Nullable String name, Set<Link> links, @Nullable String adminPass,
@Nullable String diskConfig) {
super(id, name, links);
this.adminPass = Optional.fromNullable(adminPass);
this.diskConfig = Optional.fromNullable(diskConfig);
}
/**
* present unless the nova install was configured with the option {@code enable_instance_password=false}
*/
public Optional<String> getAdminPass() {
return this.adminPass;
}
/**
* @see CreateServerOptions#getDiskConfig()
*/
public Optional<String> getDiskConfig() {
return this.diskConfig;
}
@Override
public int hashCode() {
return Objects.hashCode(adminPass, diskConfig);
}
@Override
public boolean equals(Object obj) {
if (this == obj) return true;
if (obj == null || getClass() != obj.getClass()) return false;
ServerCreated that = ServerCreated.class.cast(obj);
return super.equals(that) && Objects.equal(this.adminPass, that.adminPass)
&& Objects.equal(this.diskConfig, that.diskConfig);
}
@Override
protected ToStringHelper string() {
return super.string().add("adminPass", adminPass.orNull()).add("diskConfig", diskConfig.orNull());
}
}