Package io.fathom.cloud.dns.command

Source Code of io.fathom.cloud.dns.command.DnsRecordDeleteCommand

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;

import com.google.common.collect.Iterables;
import com.google.common.collect.Lists;

public class DnsRecordDeleteCommand extends AuthenticatedCmdlet {
    private static final Logger log = LoggerFactory.getLogger(DnsRecordDeleteCommand.class);

    @Option(name = "-name", usage = "name", required = true)
    public String fqdn;
    @Option(name = "-id", usage = "id", required = false)
    public String id;

    @Inject
    DnsServiceImpl dns;

    public DnsRecordDeleteCommand() {
        super("dns-record-delete");
    }

    @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");
        }

        List<DnsRecordsetData> matches = Lists.newArrayList();
        for (DnsRecordset recordset : dns.listRecordsets(project, zone)) {
            DnsRecordsetData data = recordset.getData();
            if (!fqdn.equals(data.getFqdn())) {
                continue;
            }
            if (id != null) {
                String idString = "" + data.getId();
                if (!idString.equals(id)) {
                    continue;
                }
            }
            matches.add(data);
        }

        if (matches.isEmpty()) {
            throw new IllegalArgumentException("No matching record found");
        }

        if (matches.size() > 1) {
            for (DnsRecordsetData match : matches) {
                println("\t" + match.getId() + "\t" + match.getFqdn());
            }

            throw new IllegalArgumentException("Multiple matching records found");
        }

        DnsRecordsetData data = Iterables.getOnlyElement(matches);

        dns.deleteRecordset(project, zone, data.getId());

        return data;
    }
}
TOP

Related Classes of io.fathom.cloud.dns.command.DnsRecordDeleteCommand

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.