package reservation import ( "log/slog" "git.staur.ca/stobbsm/kea-manage/lib/types" "git.staur.ca/stobbsm/kea-manage/lib/validators/ipv4" "git.staur.ca/stobbsm/kea-manage/lib/validators/macaddr" typeValidator "git.staur.ca/stobbsm/kea-manage/lib/validators/types" ) type ReservationV4 struct { IdentifierType types.Identifier SubnetID int Identifier string Ipv4 string Hostname string typeName string } func ReserveV4MacAddr(identifierType string, identifier string, addr string, hostname string, subnet int) *ReservationV4 { r := &ReservationV4{ typeName: identifierType, IdentifierType: types.LookupIdentifier(identifierType), SubnetID: subnet, Identifier: identifier, Ipv4: addr, Hostname: hostname, } return r } // Validate implements the Validator interface. Returns true when valid, false when not. // Will print message to the slog Error channel when an error is found to provide more information // This does not validate against the database, just validates that the written configuration // is correct func (r *ReservationV4) Validate() bool { if typeValidator.IsValid(r.typeName) { slog.Error("validate", slog.Any("reservationV4.type", "invalid")) return false } if !ipv4.IsValid(r.Ipv4) { slog.Error("validate", slog.Any("reservationV4.ipv4", r.Ipv4)) return false } if !macaddr.IsValid(r.Identifier) { slog.Error("validate", slog.Any("reservationV4.identifier", r.Identifier)) return false } return true }