Skip to content

Commit

Permalink
Initial work to support extra volatile disk
Browse files Browse the repository at this point in the history
Refs #5
Refs #5
  • Loading branch information
loverdos committed Oct 6, 2014
1 parent 836337c commit 13f223e
Showing 1 changed file with 88 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -183,6 +183,94 @@ protected String getEndpoint(User user) {
).getValue();
}

static final class ExtraDisk {
final String name;
final String value;

static ExtraDisk None = new ExtraDisk();

ExtraDisk(String name, String value) {
if(name == null) {
throw new NullPointerException("null name for extra disk");
}
this.name = name;
if(value == null || value.trim().length() == 0) {
this.value = "0";
}
else {
this.value = value;
}
}

private ExtraDisk() {
this.name = null;
this.value = null;
}

boolean isNone() { return this.name == null; }

@Override
public boolean equals(Object o) {
if(this == o) {
return true;
}
if(o == null || getClass() != o.getClass()) {
return false;
}

ExtraDisk extraDisk = (ExtraDisk) o;

if(name != null ? !name.equals(extraDisk.name) : extraDisk.name != null) {
return false;
}
if(value != null ? !value.equals(extraDisk.value) : extraDisk.value != null) {
return false;
}

return true;
}

@Override
public int hashCode() {
int result = name != null ? name.hashCode() : 0;
result = 31 * result + (value != null ? value.hashCode() : 0);
return result;
}

@Override
public String toString() {
if(isNone()) {
return "ExtraDisk(<None>)";
} else {
final StringBuilder sb = new StringBuilder("ExtraDisk(");
sb.append("'").append(name).append('\'');
sb.append(", '").append(value).append('\'');
sb.append(')');
return sb.toString();
}
}
}

private ExtraDisk getVolatileDiskSize(Run run) throws NotFoundException, AbortException {
switch(run.getType()) {
case Machine:
final String extraDiskName = Run.MACHINE_NAME_PREFIX + ImageModule.EXTRADISK_PARAM_PREFIX + ".volatile";
final String extraDiskValue = run.getRuntimeParameterValue(extraDiskName);

return new ExtraDisk(extraDiskName, extraDiskValue);
default:
return ExtraDisk.None;
}
}

private List<String> getVolatileDiskParam(Run run) throws NotFoundException, AbortException {
final ExtraDisk extraDisk = getVolatileDiskSize(run);
if(extraDisk.isNone()) {
return new ArrayList<>(0);
}
return mkList("--volatile-disk-size", extraDisk.value);
}

private List<String> getCommandUserParams(User user) throws ValidationException {
return mkList(
"--username", getKey(user),
Expand Down

0 comments on commit 13f223e

Please sign in to comment.