package denominator; import denominator.model.ResourceRecordSet; /** * Write operations for {@link ResourceRecordSet record sets} who have a {@link * ResourceRecordSet#qualifier()}. * * @since 1.3 */ public interface QualifiedResourceRecordSetApi extends ReadOnlyResourceRecordSetApi { /** * Idempotently replaces any existing records with {@link ResourceRecordSet#name() name}, {@link * ResourceRecordSet#type() type}, and {@link ResourceRecordSet#qualifier() qualifier} * corresponding to {@code rrset}. If no records exist, they will be added. * * <br> Example of replacing the {@code A} record set for {@code www.denominator.io.} qualified as * {@code US-West}: * * <pre> * rrsApi.put(ResourceRecordSet.<AData> builder().name("www.denominator.io.").type("A").qualifier("US-West").ttl(3600) * .add(AData.create("192.0.2.1")).build()); * </pre> * * @param rrset contains the {@code rdata} elements ensure exist. If {@link * ResourceRecordSet#ttl() ttl} is not present, zone default is used. * @throws IllegalArgumentException if the zone is not found. */ void put(ResourceRecordSet<?> rrset); /** * Idempotently deletes a resource record set by {@link ResourceRecordSet#name() name}, {@link * ResourceRecordSet#type() type}, and {@link ResourceRecordSet#qualifier() qualifier}. This does * not error if the record set doesn't exist. * * @param name {@link ResourceRecordSet#name() name} of the rrset * @param type {@link ResourceRecordSet#type() type} of the rrset * @param qualifier {@link ResourceRecordSet#qualifier() qualifier} of the rrset * @throws IllegalArgumentException if the zone is not found. */ void deleteByNameTypeAndQualifier(String name, String type, String qualifier); static interface Factory { /** * @return null if this feature isn't supported on the provider. */ QualifiedResourceRecordSetApi create(String id); } }