Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
104 commits
Select commit Hold shift + click to select a range
2bf4925
Initial project for Google Cloud DNS in gcloud-java
mderka Jan 16, 2016
fe4e137
Added DnsRecord as a part of the basic data model.
mderka Jan 16, 2016
f652277
Implemented comments by @mziccard
mderka Jan 19, 2016
b29945f
Second round of comments from @mziccard
mderka Jan 20, 2016
1fc0e32
Implemented comments by @aozarov. Also removed incomplete
mderka Jan 21, 2016
01662be
Implements comments by @ajkannan
mderka Jan 21, 2016
1c65715
Removed the method for removing a record by index.
mderka Jan 21, 2016
f994057
Another round of comments from @aozarov.
mderka Jan 22, 2016
7493f1a
Merge pull request #559 from mderka/gcloud-dns
aozarov Jan 22, 2016
1c69b05
Merge pull request #574 from GoogleCloudPlatform/master
mderka Jan 22, 2016
e8dd142
Created a ManagedZoneInfo class as part of the model.
mderka Jan 20, 2016
c95c3aa
Implemented comments by @aozarov.
mderka Jan 23, 2016
dacea19
Another round of comments from @aozarov.
mderka Jan 25, 2016
20f325b
Merge pull request #575 from mderka/dns-managed-zone
aozarov Jan 26, 2016
273b441
Implemented ChangeRequest.
mderka Jan 26, 2016
35cfd61
Added test for ChangeRequest.
mderka Jan 26, 2016
6f9e1c0
Implements comments from @ajkannan and @aozarov.
mderka Jan 27, 2016
438c05a
Merge pull request #587 from mderka/dns-change
mderka Jan 27, 2016
9b4ff48
Added ProjectInfo.
mderka Jan 26, 2016
a47158d
Fixed serialization, javadoc and checkstyle.
mderka Jan 27, 2016
9db27d4
Implements comment from @aozarov and @ajkannan into ProjectInfo.
mderka Jan 28, 2016
4412c73
Changed documentation @code to @link where applicable.
mderka Jan 28, 2016
2c87334
Merge pull request #590 from mderka/dns-project
mderka Jan 28, 2016
81a46d8
Renames ManagedZone to Zone. Acommodates codecheck. Fixes #579.
mderka Jan 28, 2016
c364ff3
Modified ttl to accept time unit. Fixed #581.
mderka Jan 28, 2016
7bcff48
Implemented comments by @aozarov.
mderka Jan 28, 2016
a2fdb69
Merge pull request #592 from mderka/dns-polishing
mderka Jan 28, 2016
f9b6f6a
Added DnsService interface.
mderka Jan 28, 2016
4fdc8ee
Added AbstractOption.
mderka Jan 28, 2016
06becd8
Added DnsException.
mderka Jan 28, 2016
81cedc4
Added DnsServiceRpc.
mderka Jan 29, 2016
bf1361c
Added DnsServiceOptions and necessary dependencies.
mderka Jan 29, 2016
465f532
Modified DnsException to pass tests.
mderka Jan 29, 2016
a8bee9c
Implements comments by @aozarov.
mderka Jan 30, 2016
762483b
Makes ProjectInfo.Quota serializable. Fixed #599.
mderka Jan 30, 2016
e17bedb
Implemented DnsOptions up to two unavailable classes.
mderka Jan 30, 2016
adf5c1c
Added test for AbstractOption.
mderka Feb 1, 2016
a9cc927
Implemented comments by @aozarov. Added test for option accessors.
mderka Feb 1, 2016
6ecde35
Comments by @aozarov second round.
mderka Feb 2, 2016
c5566eb
Merge pull request #597 from mderka/dns-options
mderka Feb 2, 2016
a69101a
Added Dns methods. Fixes #596. Added Zone and ZoneTest
mderka Feb 2, 2016
e083dfd
Fixed documentation and some code formatting. Declared exceptions to be
mderka Feb 2, 2016
d6daf09
Adjusted documentation, removed getProjectId and getProjectNumber
mderka Feb 3, 2016
e3686e3
Merge pull request #606 from mderka/dns-options
mderka Feb 3, 2016
0338ead
Completes DnsRpc interface by adding methods and doc.
mderka Feb 3, 2016
bc4b820
Implements DefaultDnsRpc. Progress in #595.
mderka Feb 3, 2016
896de75
Fixed documentation and null returns from rpc.
mderka Feb 3, 2016
3ae0f21
Change Tuple<X,Y> into ListResult<X>, added NAME option.
mderka Feb 4, 2016
35dbb34
Merge pull request #616 from mderka/dns-options
aozarov Feb 4, 2016
71f5ae2
Makes name of Zone mandatory and removes id-based methods.
mderka Feb 4, 2016
3183f4a
Added field options for zone create method.
mderka Feb 4, 2016
4057dcd
Fixed doc after refactoring. Made zone name mandatory in fields.
mderka Feb 5, 2016
d722635
Javadoc fixed.
mderka Feb 5, 2016
b128548
Merge pull request #620 from mderka/dns-options
mderka Feb 5, 2016
5be58b3
Makes Zone subclass of ZoneInfo. Fixes #605.
mderka Feb 7, 2016
d1c4512
Added implementation of Dns and test. Renamed getProjectInfo.
mderka Feb 7, 2016
c0c5451
Included options attribute to Zone. Fixed symmetry of toPb and fromPb.
mderka Feb 8, 2016
ee5bb8f
Removed zone.get() and optimized retries.
mderka Feb 9, 2016
86b4356
Merge pull request #629 from mderka/rpc-default
aozarov Feb 9, 2016
db52e09
Made nameServerSet read only and setters package private.
mderka Feb 9, 2016
fa081ac
Merge pull request #633 from mderka/rpc-default
mderka Feb 9, 2016
a1ec7f4
Added local implementation of the service and tests.
mderka Feb 19, 2016
04f354a
Added RPC layer of tests for local helpers. Closes #665.
mderka Feb 23, 2016
cbf737d
Added integration tests.
mderka Feb 24, 2016
75269ff
Removed unnecessary integration tests. Adjusted deleting objects.
mderka Feb 26, 2016
9b6929b
Added retryable errors.
mderka Mar 1, 2016
22153aa
Added sleep and renamed change completion check.
mderka Mar 1, 2016
44b1998
Merge pull request #674 from mderka/integration
mderka Mar 2, 2016
4f28101
Added retries for userRateLimitExceeded and rateLimitExceeded.
mderka Mar 2, 2016
030e819
Merge pull request #700 from mderka/retries
mderka Mar 3, 2016
5a1d93f
Merge branch 'master' into merge-master
mderka Mar 3, 2016
5858809
pom.xml version edit
mderka Mar 3, 2016
d163bfb
Merge pull request #707 from mderka/merge-master
ajkannan Mar 3, 2016
8684506
Added missing waits for change completion.
mderka Mar 3, 2016
8e6aeef
Merge pull request #708 from mderka/integration
mderka Mar 3, 2016
b8031e1
Adjusted clear not to collide when parallel test are running.
mderka Mar 4, 2016
481db7a
Merge pull request #713 from mderka/integration
mderka Mar 4, 2016
1f06caf
The following has been done within multiple iterations:
mderka Feb 24, 2016
53e87fe
Merge pull request #656 from mderka/dummy
mderka Mar 9, 2016
3cf0722
Switched ZoneInfo.builder(). to ZoneInfo.of(). Fixes #698.
mderka Mar 1, 2016
90897f3
Renamed a test method and a variable.
mderka Mar 10, 2016
a26bd59
Merge pull request #736 from mderka/zone-of
mziccard Mar 10, 2016
767be65
LocalDnsHelper adds the default change upon creating a zone.
mderka Mar 14, 2016
f5c0587
Merge pull request #746 from mderka/local-adjustment
mderka Mar 14, 2016
96e380c
Moved spi package to dns.spi as per #742
mderka Mar 14, 2016
6be68bc
Merge pull request #748 from mderka/spi-refactor
ajkannan Mar 14, 2016
886a8bd
Added a DNS example and documentation.
mderka Mar 2, 2016
8e82f35
Fixed based on first round of comments:
mderka Mar 10, 2016
da877d8
Added code snippets for DNS.
mderka Mar 10, 2016
3cdc3a4
Merge pull request #717 from mderka/example
mderka Mar 15, 2016
baee7d7
Added integration test for invalid change request.
mderka Mar 14, 2016
736b6e1
Merge pull request #749 from mderka/spi-refactor
mderka Mar 15, 2016
f7f4de8
Added READMEs. This includes:
mderka Mar 1, 2016
17442b0
Merge pull request #750 from mderka/readme
mderka Mar 16, 2016
d974887
Merge remote-tracking branch 'upstream/master' into dns-alpha
mderka Mar 23, 2016
e946b76
Updated the version in pom.
mderka Mar 23, 2016
9ac6a82
Merge pull request #782 from mderka/merge-master
ajkannan Mar 23, 2016
5c3fc94
Refactored the serialization test to use the base test
mderka Mar 23, 2016
2f90e7e
Merge pull request #783 from mderka/newserialization
ajkannan Mar 23, 2016
1a5aade
Renamed DnsRecord to RecordSet. Fixes #779.
mderka Mar 23, 2016
96e28d6
Merge pull request #784 from mderka/rename-dns-record
mderka Mar 24, 2016
01e2310
Turned ChangeRequest into a functional object.
mderka Mar 24, 2016
de8bf4b
Addressed comments. This includes:
mderka Mar 25, 2016
104f9e5
Merge pull request #789 from mderka/change-request-functional
mderka Mar 26, 2016
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Implements comments from @ajkannan and @aozarov.
  • Loading branch information
mderka committed Jan 27, 2016
commit 6f9e1c09b831b39def386076826eecf20daa1bc2
126 changes: 55 additions & 71 deletions gcloud-java-dns/src/main/java/com/google/gcloud/dns/ChangeRequest.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,12 @@

package com.google.gcloud.dns;

import static com.google.common.base.Preconditions.checkNotNull;

import com.google.api.services.dns.model.ResourceRecordSet;
import com.google.common.base.Function;
import com.google.common.base.MoreObjects;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Lists;

import org.joda.time.DateTime;
Expand All @@ -27,17 +32,29 @@
import java.util.List;
import java.util.Objects;

import static com.google.common.base.Preconditions.checkNotNull;

/**
* A class representing a change. A change is an atomic update to a collection of {@link DnsRecord}s
* within a {@code ManagedZone}.
* A class representing an atomic update to a collection of {@link DnsRecord}s within a {@code
* ManagedZone}.
*
* @see <a href="https://cloud.google.com/dns/api/v1/changes">Google Cloud DNS documentation</a>
*/
public class ChangeRequest implements Serializable {

private static final long serialVersionUID = 201601251649L;
private static final Function<ResourceRecordSet, DnsRecord> FROM_PB_FUNCTION =
new Function<com.google.api.services.dns.model.ResourceRecordSet, DnsRecord>() {
@Override
public DnsRecord apply(com.google.api.services.dns.model.ResourceRecordSet pb) {
return DnsRecord.fromPb(pb);
}
};
private static final Function<DnsRecord, ResourceRecordSet> TO_PB_FUNCTION =
new Function<DnsRecord, ResourceRecordSet>() {
@Override
public com.google.api.services.dns.model.ResourceRecordSet apply(DnsRecord error) {
return error.toPb();
}
};
private static final long serialVersionUID = -8703939628990291682L;
private final List<DnsRecord> additions;
private final List<DnsRecord> deletions;
private final String id;
Expand All @@ -51,24 +68,8 @@ public class ChangeRequest implements Serializable {
* documentation</a>
*/
public enum Status {
PENDING("pending"),
DONE("done");

private final String status;

Status(String status) {
this.status = status;
}

static Status translate(String status) {
if ("pending".equals(status)) {
return PENDING;
} else if ("done".equals(status)) {
return DONE;
} else {
throw new IllegalArgumentException("Such a status is unknown.");
}
}
PENDING,
DONE
}

/**
Expand Down Expand Up @@ -101,18 +102,27 @@ public Builder additions(List<DnsRecord> additions) {
this.additions = Lists.newLinkedList(checkNotNull(additions));
return this;
}

/**
* Sets a collection of {@link DnsRecord}s which are to be deleted from the zone upon executing
* this {@code ChangeRequest}.
*/
public Builder deletions(List<DnsRecord> deletions) {
this.deletions = Lists.newLinkedList(checkNotNull(deletions));
return this;
}

/**
* Adds a {@link DnsRecord} which to be <strong>added</strong> to the zone upon executing this
* {@code ChangeRequest}.
* Adds a {@link DnsRecord} to be <strong>added</strong> to the zone upon executing this {@code
* ChangeRequest}.
*/
public Builder add(DnsRecord record) {
this.additions.add(checkNotNull(record));
return this;
}

/**
* Adds a {@link DnsRecord} which to be <strong>deleted</strong> to the zone upon executing this
* Adds a {@link DnsRecord} to be <strong>deleted</strong> to the zone upon executing this
* {@code ChangeRequest}.
*/
public Builder delete(DnsRecord record) {
Expand All @@ -139,7 +149,7 @@ public Builder clearDeletions() {
}

/**
* Removes a single {@link DnsRecord} from the collection of of records to be
* Removes a single {@link DnsRecord} from the collection of records to be
* <strong>added</strong> to the zone upon executing this {@code ChangeRequest}.
*/
public Builder removeAddition(DnsRecord record) {
Expand All @@ -148,23 +158,14 @@ public Builder removeAddition(DnsRecord record) {
}

/**
* Removes a single {@link DnsRecord} from the collection of of records to be
* Removes a single {@link DnsRecord} from the collection of records to be
* <strong>deleted</strong> from the zone upon executing this {@code ChangeRequest}.
*/
public Builder removeDeletion(DnsRecord record) {
this.deletions.remove(record);
return this;
}

/**
* Sets a collection of {@link DnsRecord}s which are to be deleted from the zone upon executing
* this {@code ChangeRequest}.
*/
public Builder deletions(List<DnsRecord> deletions) {
this.deletions = Lists.newLinkedList(checkNotNull(deletions));
return this;
}

/**
* Associates a server-assigned id to this {@code ChangeRequest}.
*/
Expand Down Expand Up @@ -199,8 +200,8 @@ public ChangeRequest build() {
}

private ChangeRequest(Builder builder) {
this.additions = builder.additions;
this.deletions = builder.deletions;
this.additions = ImmutableList.copyOf(builder.additions);
this.deletions = ImmutableList.copyOf(builder.deletions);
this.id = builder.id;
this.startTimeMillis = builder.startTimeMillis;
this.status = builder.status;
Expand All @@ -221,15 +222,15 @@ public Builder toBuilder() {
}

/**
* Returns the list of {@link DnsRecord}s to be added to the zone upon executing this {@code
* Returns the list of {@link DnsRecord}s to be added to the zone upon submitting this {@code
* ChangeRequest}.
*/
public List<DnsRecord> additions() {
return additions;
}

/**
* Returns the list of {@link DnsRecord}s to be deleted from the zone upon executing this {@code
* Returns the list of {@link DnsRecord}s to be deleted from the zone upon submitting this {@code
* ChangeRequest}.
*/
public List<DnsRecord> deletions() {
Expand Down Expand Up @@ -270,56 +271,39 @@ com.google.api.services.dns.model.Change toPb() {
}
// set status
if (status() != null) {
pb.setStatus(status().status);
pb.setStatus(status().name().toLowerCase());
}
// set a list of additions
if (additions() != null) {
LinkedList<com.google.api.services.dns.model.ResourceRecordSet> additionsPb =
new LinkedList<>();
for (DnsRecord addition : additions()) {
additionsPb.add(addition.toPb());
}
pb.setAdditions(additionsPb);
}
pb.setAdditions(Lists.transform(additions(), TO_PB_FUNCTION));
// set a list of deletions
if (deletions() != null) {
LinkedList<com.google.api.services.dns.model.ResourceRecordSet> deletionsPb =
new LinkedList<>();
for (DnsRecord deletion : deletions()) {
deletionsPb.add(deletion.toPb());
}
pb.setDeletions(deletionsPb);
}
pb.setDeletions(Lists.transform(deletions(), TO_PB_FUNCTION));
return pb;
}

static ChangeRequest fromPb(com.google.api.services.dns.model.Change pb) {
Builder b = builder();
Builder builder = builder();
if (pb.getId() != null) {
b.id(pb.getId());
builder.id(pb.getId());
}
if (pb.getStartTime() != null) {
b.startTimeMillis(DateTime.parse(pb.getStartTime()).getMillis());
builder.startTimeMillis(DateTime.parse(pb.getStartTime()).getMillis());
}
if (pb.getStatus() != null) {
b.status(ChangeRequest.Status.translate(pb.getStatus()));
// we are assuming that status indicated in pb is a lower case version of the enum name
builder.status(ChangeRequest.Status.valueOf(pb.getStatus().toUpperCase()));
}
if (pb.getDeletions() != null) {
for (com.google.api.services.dns.model.ResourceRecordSet deletion : pb.getDeletions()) {
b.delete(DnsRecord.fromPb(deletion));
}
builder.deletions(Lists.transform(pb.getDeletions(), FROM_PB_FUNCTION));
}
if (pb.getAdditions() != null) {
for (com.google.api.services.dns.model.ResourceRecordSet addition : pb.getAdditions()) {
b.add(DnsRecord.fromPb(addition));
}
builder.additions(Lists.transform(pb.getAdditions(), FROM_PB_FUNCTION));
}
return b.build();
return builder.build();
}

@Override
public boolean equals(Object o) {
return (o instanceof ChangeRequest) && this.toPb().equals(((ChangeRequest) o).toPb());
public boolean equals(Object other) {
return (other instanceof ChangeRequest) && toPb().equals(((ChangeRequest) other).toPb());
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -273,14 +273,14 @@ com.google.api.services.dns.model.ResourceRecordSet toPb() {
}

static DnsRecord fromPb(com.google.api.services.dns.model.ResourceRecordSet pb) {
Builder b = builder(pb.getName(), Type.valueOf(pb.getType()));
Builder builder = builder(pb.getName(), Type.valueOf(pb.getType()));
if (pb.getRrdatas() != null) {
b.records(pb.getRrdatas());
builder.records(pb.getRrdatas());
}
if (pb.getTtl() != null) {
b.ttl(pb.getTtl());
builder.ttl(pb.getTtl());
}
return b.build();
return builder.build();
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -159,7 +159,7 @@ public void testClearAdditions() {
@Test
public void testAddAddition() {
try {
CHANGE.toBuilder().add(null).build();
CHANGE.toBuilder().add(null);
fail("Should not be able to add null DnsRecord.");
} catch (NullPointerException e) {
// expected
Expand All @@ -171,7 +171,7 @@ public void testAddAddition() {
@Test
public void testAddDeletion() {
try {
ChangeRequest clone = CHANGE.toBuilder().delete(null).build();
CHANGE.toBuilder().delete(null);
fail("Should not be able to delete null DnsRecord.");
} catch (NullPointerException e) {
// expected
Expand Down Expand Up @@ -203,7 +203,6 @@ public void testRemoveAddition() {
@Test
public void testRemoveDeletion() {
ChangeRequest clone = CHANGE.toBuilder().removeDeletion(RECORD3).build();
assertFalse(clone.deletions().contains(RECORD3));
assertTrue(clone.deletions().isEmpty());
}

Expand All @@ -216,16 +215,4 @@ public void testDateParsing() {
assertEquals(change, converted.toPb());
assertEquals(change.getStartTime(), converted.toPb().getStartTime());
}

@Test
public void testStatusTranslation() {
assertEquals(ChangeRequest.Status.DONE, ChangeRequest.Status.translate("done"));
assertEquals(ChangeRequest.Status.PENDING, ChangeRequest.Status.translate("pending"));
try {
ChangeRequest.Status.translate("another");
fail("Such a status does not exist.");
} catch (IllegalArgumentException e) {
// expected
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,9 @@
package com.google.gcloud.dns;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotEquals;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import static org.junit.Assert.assertNotEquals;

import org.junit.Test;

Expand Down