mirror of
https://github.com/VinylDNS/vinyldns
synced 2025-09-01 06:45:21 +00:00
Add ownerGroupId to RecordSet (#387)
* Add ownerGroupId to RecordSet and RecordSetInfo models.
This commit is contained in:
@@ -111,7 +111,8 @@ case class RecordSetInfo(
|
|||||||
records: List[RecordData],
|
records: List[RecordData],
|
||||||
id: String,
|
id: String,
|
||||||
account: String,
|
account: String,
|
||||||
accessLevel: AccessLevel)
|
accessLevel: AccessLevel,
|
||||||
|
ownerGroupId: Option[String])
|
||||||
object RecordSetInfo {
|
object RecordSetInfo {
|
||||||
def apply(recordSet: RecordSet, accessLevel: AccessLevel): RecordSetInfo = RecordSetInfo(
|
def apply(recordSet: RecordSet, accessLevel: AccessLevel): RecordSetInfo = RecordSetInfo(
|
||||||
zoneId = recordSet.zoneId,
|
zoneId = recordSet.zoneId,
|
||||||
@@ -124,7 +125,8 @@ object RecordSetInfo {
|
|||||||
records = recordSet.records,
|
records = recordSet.records,
|
||||||
id = recordSet.id,
|
id = recordSet.id,
|
||||||
account = recordSet.account,
|
account = recordSet.account,
|
||||||
accessLevel = accessLevel
|
accessLevel = accessLevel,
|
||||||
|
ownerGroupId = recordSet.ownerGroupId
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -178,7 +178,8 @@ trait DnsJsonProtocol extends JsonValidation {
|
|||||||
recordType
|
recordType
|
||||||
.andThen(extractRecords(_, js \ "records")),
|
.andThen(extractRecords(_, js \ "records")),
|
||||||
(js \ "id").default[String](UUID.randomUUID().toString),
|
(js \ "id").default[String](UUID.randomUUID().toString),
|
||||||
(js \ "account").default[String]("system")
|
(js \ "account").default[String]("system"),
|
||||||
|
(js \ "ownerGroupId").optional[String]
|
||||||
).mapN(RecordSet.apply)
|
).mapN(RecordSet.apply)
|
||||||
|
|
||||||
// Put additional record set level checks below
|
// Put additional record set level checks below
|
||||||
@@ -200,7 +201,8 @@ trait DnsJsonProtocol extends JsonValidation {
|
|||||||
("updated" -> Extraction.decompose(rs.updated)) ~
|
("updated" -> Extraction.decompose(rs.updated)) ~
|
||||||
("records" -> Extraction.decompose(rs.records)) ~
|
("records" -> Extraction.decompose(rs.records)) ~
|
||||||
("id" -> rs.id) ~
|
("id" -> rs.id) ~
|
||||||
("account" -> rs.account)
|
("account" -> rs.account) ~
|
||||||
|
("ownerGroupId" -> rs.ownerGroupId)
|
||||||
}
|
}
|
||||||
|
|
||||||
case object RecordSetInfoSerializer extends ValidationSerializer[RecordSetInfo] {
|
case object RecordSetInfoSerializer extends ValidationSerializer[RecordSetInfo] {
|
||||||
@@ -221,7 +223,8 @@ trait DnsJsonProtocol extends JsonValidation {
|
|||||||
("records" -> Extraction.decompose(rs.records)) ~
|
("records" -> Extraction.decompose(rs.records)) ~
|
||||||
("id" -> rs.id) ~
|
("id" -> rs.id) ~
|
||||||
("account" -> rs.account) ~
|
("account" -> rs.account) ~
|
||||||
("accessLevel" -> rs.accessLevel.toString)
|
("accessLevel" -> rs.accessLevel.toString) ~
|
||||||
|
("ownerGroupId" -> rs.ownerGroupId)
|
||||||
}
|
}
|
||||||
|
|
||||||
def extractRecords(typ: RecordType, js: JValue): ValidatedNel[String, List[RecordData]] =
|
def extractRecords(typ: RecordType, js: JValue): ValidatedNel[String, List[RecordData]] =
|
||||||
|
@@ -470,6 +470,7 @@ class ProtobufConversionsSpec
|
|||||||
pb.getTtl shouldBe aRs.ttl
|
pb.getTtl shouldBe aRs.ttl
|
||||||
pb.getTyp shouldBe aRs.typ.toString
|
pb.getTyp shouldBe aRs.typ.toString
|
||||||
pb.getZoneId shouldBe aRs.zoneId
|
pb.getZoneId shouldBe aRs.zoneId
|
||||||
|
pb.hasOwnerGroupId shouldBe false
|
||||||
|
|
||||||
pb.getRecordCount shouldBe 2
|
pb.getRecordCount shouldBe 2
|
||||||
}
|
}
|
||||||
@@ -481,6 +482,21 @@ class ProtobufConversionsSpec
|
|||||||
rs shouldBe aRs
|
rs shouldBe aRs
|
||||||
}
|
}
|
||||||
|
|
||||||
|
"convert to protobuf for a recordset with ownerGroupId defined" in {
|
||||||
|
val rs = aRs.copy(ownerGroupId = Some("ownerGroupId"))
|
||||||
|
val pb = toPB(rs)
|
||||||
|
|
||||||
|
pb.hasOwnerGroupId shouldBe true
|
||||||
|
Some(pb.getOwnerGroupId) shouldBe rs.ownerGroupId
|
||||||
|
}
|
||||||
|
|
||||||
|
"convert from protobuf for a recordset with ownerGroupId defined" in {
|
||||||
|
val rs = aRs.copy(ownerGroupId = Some("ownerGroupId"))
|
||||||
|
val pb = toPB(rs)
|
||||||
|
|
||||||
|
fromPB(pb) shouldBe rs
|
||||||
|
}
|
||||||
|
|
||||||
"convert from protobuf for AAAA recordset" in {
|
"convert from protobuf for AAAA recordset" in {
|
||||||
fromPB(toPB(aaaa)) shouldBe aaaa
|
fromPB(toPB(aaaa)) shouldBe aaaa
|
||||||
}
|
}
|
||||||
|
@@ -110,6 +110,7 @@ message RecordSet {
|
|||||||
optional int64 updated = 8;
|
optional int64 updated = 8;
|
||||||
repeated RecordData record = 9;
|
repeated RecordData record = 9;
|
||||||
required string account = 10;
|
required string account = 10;
|
||||||
|
optional string ownerGroupId = 11;
|
||||||
}
|
}
|
||||||
|
|
||||||
message RecordSetChange {
|
message RecordSetChange {
|
||||||
|
@@ -43,7 +43,8 @@ case class RecordSet(
|
|||||||
updated: Option[DateTime] = None,
|
updated: Option[DateTime] = None,
|
||||||
records: List[RecordData] = List.empty,
|
records: List[RecordData] = List.empty,
|
||||||
id: String = UUID.randomUUID().toString,
|
id: String = UUID.randomUUID().toString,
|
||||||
account: String = "system") {
|
account: String = "system",
|
||||||
|
ownerGroupId: Option[String] = None) {
|
||||||
|
|
||||||
def isPending: Boolean =
|
def isPending: Boolean =
|
||||||
(status == RecordSetStatus.Pending
|
(status == RecordSetStatus.Pending
|
||||||
@@ -60,7 +61,8 @@ case class RecordSet(
|
|||||||
sb.append("ttl=\"").append(ttl.toString).append("\"; ")
|
sb.append("ttl=\"").append(ttl.toString).append("\"; ")
|
||||||
sb.append("account=\"").append(account).append("\"; ")
|
sb.append("account=\"").append(account).append("\"; ")
|
||||||
sb.append("status=\"").append(status.toString).append("\"; ")
|
sb.append("status=\"").append(status.toString).append("\"; ")
|
||||||
sb.append("records=\"").append(records.toString).append("\"")
|
sb.append("records=\"").append(records.toString).append("\"; ")
|
||||||
|
sb.append("ownerGroupId=\"").append(ownerGroupId).append("\"")
|
||||||
sb.append("]")
|
sb.append("]")
|
||||||
|
|
||||||
sb.toString
|
sb.toString
|
||||||
|
@@ -72,7 +72,8 @@ trait ProtobufConversions {
|
|||||||
id = rs.getId,
|
id = rs.getId,
|
||||||
records =
|
records =
|
||||||
rs.getRecordList.asScala.map(rd => fromPB(rd, RecordType.withName(rs.getTyp))).toList,
|
rs.getRecordList.asScala.map(rd => fromPB(rd, RecordType.withName(rs.getTyp))).toList,
|
||||||
account = rs.getAccount
|
account = rs.getAccount,
|
||||||
|
ownerGroupId = if (rs.hasOwnerGroupId) Some(rs.getOwnerGroupId) else None
|
||||||
)
|
)
|
||||||
|
|
||||||
def fromPB(zn: VinylDNSProto.Zone): Zone =
|
def fromPB(zn: VinylDNSProto.Zone): Zone =
|
||||||
@@ -286,6 +287,7 @@ trait ProtobufConversions {
|
|||||||
.setAccount(rs.account)
|
.setAccount(rs.account)
|
||||||
|
|
||||||
rs.updated.foreach(dt => builder.setUpdated(dt.getMillis))
|
rs.updated.foreach(dt => builder.setUpdated(dt.getMillis))
|
||||||
|
rs.ownerGroupId.foreach(id => builder.setOwnerGroupId(id))
|
||||||
|
|
||||||
// Map the records, first map to bytes, and then map the bytes to a record data instance
|
// Map the records, first map to bytes, and then map the bytes to a record data instance
|
||||||
rs.records.map(toRecordData).foreach(rd => builder.addRecord(rd))
|
rs.records.map(toRecordData).foreach(rd => builder.addRecord(rd))
|
||||||
|
Reference in New Issue
Block a user