Skip to content
This repository was archived by the owner on Sep 16, 2023. It is now read-only.

Commit 47b687f

Browse files
athakorchingor13
andauthored
feat: add supports of labels while creating managed zone (#289)
* feat: add supports of labels while creating manazed zone * fix: package import and code cleanup * chore: fix compilation error from merge * chore: fix lint Co-authored-by: Jeff Ching <chingor@google.com>
1 parent b3bdbd1 commit 47b687f

6 files changed

Lines changed: 85 additions & 4 deletions

File tree

clirr-ignored-differences.xml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<!-- see https://www.mojohaus.org/clirr-maven-plugin/examples/ignored-differences.html -->
3+
<differences>
4+
<difference>
5+
<className>com/google/cloud/dns/ZoneInfo$Builder</className>
6+
<method>com.google.cloud.dns.ZoneInfo$Builder setLabels(java.util.Map)</method>
7+
<differenceType>7013</differenceType>
8+
</difference>
9+
</differences>

src/main/java/com/google/cloud/dns/Dns.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,8 @@ enum ZoneField implements FieldSelector {
7070
NAME("name"),
7171
NAME_SERVER_SET("nameServerSet"),
7272
NAME_SERVERS("nameServers"),
73-
DNSSEC("dnssecConfig");
73+
DNSSEC("dnssecConfig"),
74+
LABELS("labels");
7475

7576
static final List<? extends FieldSelector> REQUIRED_FIELDS = ImmutableList.of(NAME);
7677

src/main/java/com/google/cloud/dns/Zone.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import java.io.IOException;
2424
import java.io.ObjectInputStream;
2525
import java.util.List;
26+
import java.util.Map;
2627
import java.util.Objects;
2728

2829
/**
@@ -100,6 +101,12 @@ public Builder setDnsSecConfig(DnsSecConfig dnsSecConfig) {
100101
return this;
101102
}
102103

104+
@Override
105+
public Builder setLabels(Map<String, String> labels) {
106+
infoBuilder.setLabels(labels);
107+
return this;
108+
}
109+
103110
@Override
104111
public Zone build() {
105112
return new Zone(dns, infoBuilder);

src/main/java/com/google/cloud/dns/ZoneInfo.java

Lines changed: 43 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import static com.google.common.base.Preconditions.checkNotNull;
2020
import static com.google.common.collect.Lists.transform;
2121

22+
import com.google.api.client.util.Data;
2223
import com.google.api.services.dns.model.DnsKeySpec;
2324
import com.google.api.services.dns.model.ManagedZone;
2425
import com.google.api.services.dns.model.ManagedZoneDnsSecConfig;
@@ -27,9 +28,11 @@
2728
import com.google.common.collect.ImmutableList;
2829
import com.google.common.collect.ImmutableSet;
2930
import com.google.common.collect.Lists;
31+
import com.google.common.collect.Maps;
3032
import java.io.Serializable;
3133
import java.math.BigInteger;
3234
import java.util.List;
35+
import java.util.Map;
3336
import java.util.Objects;
3437
import java.util.Set;
3538
import org.threeten.bp.Instant;
@@ -56,6 +59,7 @@ public class ZoneInfo implements Serializable {
5659
private final String nameServerSet;
5760
private final List<String> nameServers;
5861
private final DnsSecConfig dnsSecConfig;
62+
private final Map<String, String> labels;
5963

6064
/** This class represents the DNS key spec. */
6165
public static class KeySpec {
@@ -379,6 +383,11 @@ public Builder setDnsSecConfig(DnsSecConfig dnsSecConfig) {
379383
return this;
380384
}
381385

386+
/** Sets the label of this zone. */
387+
public Builder setLabels(Map<String, String> labels) {
388+
return this;
389+
}
390+
382391
/** Builds the instance of {@code ZoneInfo} based on the information set by this builder. */
383392
public abstract ZoneInfo build();
384393
}
@@ -392,6 +401,7 @@ static class BuilderImpl extends Builder {
392401
private String nameServerSet;
393402
private List<String> nameServers;
394403
private DnsSecConfig dnsSecConfig;
404+
private Map<String, String> labels;
395405

396406
private BuilderImpl(String name) {
397407
this.name = checkNotNull(name);
@@ -409,6 +419,7 @@ private BuilderImpl(String name) {
409419
this.nameServers = ImmutableList.copyOf(info.nameServers);
410420
}
411421
this.dnsSecConfig = info.dnsSecConfig;
422+
this.labels = info.labels;
412423
}
413424

414425
@Override
@@ -460,6 +471,23 @@ public Builder setDnsSecConfig(DnsSecConfig dnsSecConfig) {
460471
return this;
461472
}
462473

474+
@Override
475+
public Builder setLabels(Map<String, String> labels) {
476+
if (labels != null) {
477+
this.labels =
478+
Maps.transformValues(
479+
labels,
480+
new Function<String, String>() {
481+
@Override
482+
public String apply(String input) {
483+
// replace null values with empty strings
484+
return input == null ? Data.<String>nullOf(String.class) : input;
485+
}
486+
});
487+
}
488+
return this;
489+
}
490+
463491
@Override
464492
public ZoneInfo build() {
465493
return new ZoneInfo(this);
@@ -476,6 +504,7 @@ public ZoneInfo build() {
476504
this.nameServers =
477505
builder.nameServers == null ? null : ImmutableList.copyOf(builder.nameServers);
478506
this.dnsSecConfig = builder.dnsSecConfig;
507+
this.labels = builder.labels;
479508
}
480509

481510
/**
@@ -523,6 +552,11 @@ public String getNameServerSet() {
523552
return nameServerSet;
524553
}
525554

555+
/** Returns the labels for this zone. */
556+
public Map<String, String> getLabels() {
557+
return labels;
558+
}
559+
526560
/**
527561
* The nameservers that the zone should be delegated to. This is defined by the Google DNS cloud.
528562
*/
@@ -556,6 +590,9 @@ ManagedZone toPb() {
556590
if (this.dnsSecConfig != null) {
557591
pb.setDnssecConfig(this.dnsSecConfig.toPb());
558592
}
593+
if (this.getLabels() != null) {
594+
pb.setLabels(labels);
595+
}
559596
return pb;
560597
}
561598

@@ -583,6 +620,9 @@ static ZoneInfo fromPb(ManagedZone pb) {
583620
if (pb.getDnssecConfig() != null) {
584621
builder.setDnsSecConfig(DnsSecConfig.fromPb(pb.getDnssecConfig()));
585622
}
623+
if (pb.getLabels() != null) {
624+
builder.setLabels(pb.getLabels());
625+
}
586626
return builder.build();
587627
}
588628

@@ -604,7 +644,8 @@ public int hashCode() {
604644
description,
605645
nameServerSet,
606646
nameServers,
607-
dnsSecConfig);
647+
dnsSecConfig,
648+
labels);
608649
}
609650

610651
@Override
@@ -618,6 +659,7 @@ public String toString() {
618659
.add("nameServers", getNameServers())
619660
.add("creationTimeMillis", getCreationTimeMillis())
620661
.add("dnsSecConfig", getDnsSecConfig())
662+
.add("labels", getLabels())
621663
.toString();
622664
}
623665
}

src/test/java/com/google/cloud/dns/ZoneInfoTest.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,11 @@
2323

2424
import com.google.api.services.dns.model.ManagedZone;
2525
import com.google.common.collect.ImmutableList;
26+
import com.google.common.collect.ImmutableMap;
2627
import com.google.common.collect.Lists;
2728
import java.util.LinkedList;
2829
import java.util.List;
30+
import java.util.Map;
2931
import org.junit.Test;
3032

3133
public class ZoneInfoTest {
@@ -40,6 +42,8 @@ public class ZoneInfoTest {
4042
private static final String NS2 = "name server 2";
4143
private static final String NS3 = "name server 3";
4244
private static final List<String> NAME_SERVERS = ImmutableList.of(NS1, NS2, NS3);
45+
private static final Map<String, String> LABELS =
46+
ImmutableMap.of("label1", "value1", "label2", "value2");
4347
private static final String ALGORITHM = "rsasha256";
4448
private static final String KEY_TYPE1 = "zoneSigning";
4549
private static final String KEY_TYPE2 = "keySigning";
@@ -75,6 +79,7 @@ public class ZoneInfoTest {
7579
.setNameServerSet(NAME_SERVER_SET)
7680
.setNameServers(NAME_SERVERS)
7781
.setDnsSecConfig(DNS_SEC_CONFIG)
82+
.setLabels(LABELS)
7883
.build();
7984

8085
@Test
@@ -102,6 +107,7 @@ public void testBuilder() {
102107
assertEquals(DESCRIPTION, INFO.getDescription());
103108
assertEquals(DNS_NAME, INFO.getDnsName());
104109
assertEquals(DNS_SEC_CONFIG, INFO.getDnsSecConfig());
110+
assertEquals(LABELS, INFO.getLabels());
105111

106112
ZoneInfo.DnsSecConfig config = INFO.getDnsSecConfig();
107113
assertEquals(DEFAULT_KEY_SPECS, config.getDefaultKeySpecs());

src/test/java/com/google/cloud/dns/it/ITDnsTest.java

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,10 +40,12 @@
4040
import com.google.cloud.dns.Zone;
4141
import com.google.cloud.dns.ZoneInfo;
4242
import com.google.common.collect.ImmutableList;
43+
import com.google.common.collect.ImmutableMap;
4344
import com.google.common.collect.Iterables;
4445
import java.util.Iterator;
4546
import java.util.LinkedList;
4647
import java.util.List;
48+
import java.util.Map;
4749
import java.util.UUID;
4850
import java.util.concurrent.TimeUnit;
4951
import org.junit.AfterClass;
@@ -64,6 +66,8 @@ public class ITDnsTest {
6466
private static final String ZONE_DNS_NAME1 = ZONE_NAME1 + ".com.";
6567
private static final String ZONE_DNS_EMPTY_DESCRIPTION = ZONE_NAME_EMPTY_DESCRIPTION + ".com.";
6668
private static final String ZONE_DNS_NAME_NO_PERIOD = ZONE_NAME1 + ".com";
69+
private static final Map<String, String> LABELS =
70+
ImmutableMap.of("label1", "value1", "label2", "value2");
6771

6872
private static final String ALGORITHM = "rsasha256";
6973
private static final String KEY_TYPE1 = "zoneSigning";
@@ -97,14 +101,14 @@ public class ITDnsTest {
97101
.setDnsName(ZONE_DNS_EMPTY_DESCRIPTION)
98102
.setDescription(ZONE_DESCRIPTION1)
99103
.setDnsSecConfig(DNS_SEC_CONFIG)
104+
.setLabels(LABELS)
100105
.build();
101106
private static final ZoneInfo ZONE_DNSSEC =
102107
ZoneInfo.newBuilder(ZONE_NAME1)
103108
.setDnsName(ZONE_DNS_NAME1)
104109
.setDescription(ZONE_DESCRIPTION1)
105110
.setDnsSecConfig(DNS_SEC_CONFIG)
106111
.build();
107-
108112
private static final ZoneInfo ZONE_EMPTY_DESCRIPTION =
109113
ZoneInfo.of(ZONE_NAME_EMPTY_DESCRIPTION, ZONE_DNS_NAME1, ZONE_DESCRIPTION1);
110114
private static final ZoneInfo ZONE_NAME_ERROR =
@@ -212,6 +216,7 @@ public void testCreateValidZone() {
212216
assertEquals(ZONE1.getDescription(), created.getDescription());
213217
assertEquals(ZONE1.getDnsName(), created.getDnsName());
214218
assertEquals(ZONE1.getName(), created.getName());
219+
assertEquals(ZONE1.getLabels(), created.getLabels());
215220
assertNotNull(created.getCreationTimeMillis());
216221
assertNotNull(created.getNameServers());
217222
assertNull(created.getNameServerSet());
@@ -489,6 +494,15 @@ public void testGetZone() {
489494
assertFalse(created.getNameServers().isEmpty());
490495
assertNull(created.getNameServerSet());
491496
assertNull(created.getGeneratedId());
497+
created = DNS.getZone(ZONE1.getName(), Dns.ZoneOption.fields(ZoneField.LABELS));
498+
assertEquals(ZONE1.getName(), created.getName()); // always returned
499+
assertNull(created.getCreationTimeMillis());
500+
assertNull(created.getDnsName());
501+
assertNull(created.getDescription());
502+
assertTrue(created.getNameServers().isEmpty());
503+
assertNull(created.getNameServerSet());
504+
assertEquals(LABELS, created.getLabels());
505+
assertNull(created.getGeneratedId());
492506
created = DNS.getZone(ZONE1.getName(), Dns.ZoneOption.fields(ZoneField.ZONE_ID));
493507
assertEquals(ZONE1.getName(), created.getName()); // always returned
494508
assertNull(created.getCreationTimeMillis());
@@ -517,14 +531,16 @@ public void testGetZone() {
517531
ZoneField.ZONE_ID,
518532
ZoneField.NAME_SERVERS,
519533
ZoneField.NAME_SERVER_SET,
520-
ZoneField.DESCRIPTION));
534+
ZoneField.DESCRIPTION,
535+
ZoneField.LABELS));
521536
assertEquals(ZONE1.getName(), created.getName()); // always returned
522537
assertNull(created.getCreationTimeMillis());
523538
assertNull(created.getDnsName());
524539
assertEquals(ZONE1.getDescription(), created.getDescription());
525540
assertFalse(created.getNameServers().isEmpty());
526541
assertNull(created.getNameServerSet()); // we did not set it
527542
assertNotNull(created.getGeneratedId());
543+
assertEquals(ZONE1.getLabels(), created.getLabels());
528544
} finally {
529545
DNS.delete(ZONE1.getName());
530546
}

0 commit comments

Comments
 (0)