package io.fathom.cloud.dns.command;
import io.fathom.cloud.commands.AuthenticatedCmdlet;
import io.fathom.cloud.commands.CmdletException;
import io.fathom.cloud.dns.DnsService.DnsZoneSpec;
import io.fathom.cloud.dns.model.DnsZone;
import io.fathom.cloud.dns.services.DnsServiceImpl;
import io.fathom.cloud.protobuf.DnsModel.DnsZoneData;
import io.fathom.cloud.server.auth.Auth;
import io.fathom.cloud.server.model.Project;
import io.fathom.cloud.state.DuplicateValueException;
import javax.inject.Inject;
import org.kohsuke.args4j.Option;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class DnsZoneCreateCommand extends AuthenticatedCmdlet {
private static final Logger log = LoggerFactory.getLogger(DnsZoneCreateCommand.class);
@Option(name = "-zone", usage = "zone", required = true)
public String zone;
@Option(name = "-shared", usage = "shared", required = false)
public boolean shared;
@Option(name = "-backend", usage = "backend", required = false)
public String backend;
@Inject
DnsServiceImpl dns;
public DnsZoneCreateCommand() {
super("dns-zone-create");
}
@Override
protected DnsZoneData run0() throws Exception {
Auth auth = getAuth();
Project project = auth.getProject();
DnsZoneSpec zoneSpec = new DnsZoneSpec();
zoneSpec.name = zone;
zoneSpec.backend = backend;
DnsZone created;
try {
created = dns.createZone(project, zoneSpec);
} catch (DuplicateValueException e) {
throw new CmdletException("Zone already exists (locally or in backend provider).");
}
if (shared) {
dns.createShared(created);
}
return created.getData();
}
}