package io.fathom.cloud.compute.commands;
//
//import java.util.List;
//
//import org.kohsuke.args4j.Option;
//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
//
//import io.fathom.cloud.networks.IpRange;
//import io.fathom.cloud.protobuf.CloudModel.DatacenterData;
//import io.fathom.cloud.protobuf.CloudModel.RackData;
//
//public class CreateRack extends MapCmdlet {
// private static final Logger log = LoggerFactory.getLogger(CreateRack.class);
//
// @Option(name = "-dc", usage = "datacenter", required = false)
// public Long datacenterKey = null;
//
// @Option(name = "-label", usage = "label", required = false)
// public String label;
//
// @Option(name = "-cidr", usage = "cidr", required = false)
// public String cidr;
//
// public CreateRack() {
// super("create-rack");
// }
//
// @Override
// protected RackData run0() throws Exception {
// DatacenterData dc = getDatacenter(datacenterKey);
//
// IpRange range = IpRange.parse(cidr);
// if (!range.isIpv6()) {
// throw new IllegalArgumentException("Only IPV6 is supported");
// }
//
// int remaining = 128 - range.getNetmaskLength();
// if (remaining < 64) {
// throw new IllegalArgumentException("Must allocate at least a /64");
// }
//
// List<DatacenterData> dcs = networkMap.listDatacenters();
// long max = 0;
// for (DatacenterData dc : dcs) {
// long v = dc.getKey();
// max = Math.max(v, max);
// }
//
// long next = max + 1;
// if (next >= 65500) {
// // Reserve some at the end as well
// // TODO: Reclaim deleted??
// throw new IllegalArgumentException("Too many datacenters already configured");
// }
//
// RackData.Builder b = RackData.newBuilder();
// b.setKey(next);
// b.setLabel(label);
// b.setCidr(cidr);
//
// DatacenterData created = networkMap.createDatacenter(b);
//
// return created;
// }
// }