package com.sequenceiq.cloudbreak.cloud.context;
import com.sequenceiq.cloudbreak.cloud.model.CloudPlatformVariant;
import com.sequenceiq.cloudbreak.cloud.model.Location;
import com.sequenceiq.cloudbreak.cloud.model.Platform;
import com.sequenceiq.cloudbreak.cloud.model.Variant;
/**
* Context object is used to identify messages exchanged between core and Cloud Platfrom. This context object passed along
* with the flow to all methods and also sent back in the Response objects.
*
*/
public class CloudContext {
private final Long id;
private final String name;
private final Platform platform;
private final String owner;
private final Variant variant;
private final Location location;
public CloudContext(Long id, String name, String platform, String owner) {
this.id = id;
this.name = name;
this.platform = Platform.platform(platform);
this.owner = owner;
this.variant = null;
this.location = null;
}
public CloudContext(Long id, String name, String platform, String owner, String variant, Location location) {
this.id = id;
this.name = name;
this.platform = Platform.platform(platform);
this.owner = owner;
this.variant = Variant.variant(variant);
this.location = location;
}
public Long getId() {
return id;
}
public String getName() {
return name;
}
public Platform getPlatform() {
return platform;
}
public Variant getVariant() {
return variant;
}
public String getOwner() {
return owner;
}
public CloudPlatformVariant getPlatformVariant() {
return new CloudPlatformVariant(platform, variant);
}
public Location getLocation() {
return location;
}
@Override
public String toString() {
final StringBuilder sb = new StringBuilder("CloudContext{");
sb.append("id=").append(id);
sb.append(", name='").append(name).append('\'');
sb.append(", platform='").append(platform).append('\'');
sb.append(", owner='").append(owner).append('\'');
sb.append('}');
return sb.toString();
}
}