package io.fathom.cloud.dns.command; import io.fathom.cloud.commands.AuthenticatedCmdlet; import io.fathom.cloud.dns.model.DnsRecordset; import io.fathom.cloud.dns.model.DnsZone; import io.fathom.cloud.dns.services.DnsServiceImpl; import io.fathom.cloud.protobuf.DnsModel.DnsRecordsetData; import io.fathom.cloud.server.auth.Auth; import io.fathom.cloud.server.model.Project; import java.util.List; import javax.inject.Inject; import org.kohsuke.args4j.Option; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class DnsRecordCreateCommand extends AuthenticatedCmdlet { private static final Logger log = LoggerFactory.getLogger(DnsRecordCreateCommand.class); @Option(name = "-name", usage = "name", required = true) public String fqdn; @Option(name = "-type", usage = "type", required = false) public String type = "A"; @Option(name = "-value", usage = "value", required = true) public List<String> values; @Inject DnsServiceImpl dns; public DnsRecordCreateCommand() { super("dns-record-create"); } @Override protected DnsRecordsetData run0() throws Exception { Auth auth = getAuth(); Project project = auth.getProject(); DnsZone zone = dns.findMaximalZone(project, fqdn); if (zone == null) { throw new IllegalArgumentException("Cannot find matching zone"); } DnsRecordset created = dns.createRecordset(project, zone, fqdn, type, values); return created.getData(); } }