package reservation import ( "git.staur.ca/stobbsm/kea-manage/lib/types" ) const insertHostReservation = `INSERT INTO hosts (dhcp_identifier, dhcp_identifier_type, dhcp4_subnet_id, ipv4_address, hostname) VALUES (DECODE(REPLACE($1, ':', ''), 'hex'), $2, $3, (SELECT ($4::inet - '0.0.0.0'::inet)), $5);` const getHostIDWithMacAddr = `SELECT host_id FROM hosts WHERE dhcp4_subnet_id = $1 AND dhcp_identifier_type = $2 AND dhcp_identifier = (DECODE(REPLACE($3, ':', ''), 'hex'));` const insertIfNotExists = `INSERT INTO hosts (dhcp_identifier, dhcp_identifier_type, dhcp4_subnet_id, ipv4_address, hostname) SELECT DECODE(REPLACE($1, ':', ''), 'hex'), $2, $3, (SELECT ($4::inet - '0.0.0.0'::inet)), $5 WHERE NOT EXISTS ( SELECT host_id FROM hosts WHERE dhcp4_subnet_id = $3 AND dhcp_identifier_type = $2 AND dhcp_identifier = DECODE(REPLACE($1, ':', ''), 'hex'));` type ReservationV4 struct { Type int SubnetID int MacAddr string Ipv4 string Hostname string } func ReserveV4MacAddr(mac string, addr string, hostname string, subnet int) *ReservationV4 { r := &ReservationV4{ MacAddr: mac, Type: int(types.MacAddress), SubnetID: subnet, Ipv4: addr, Hostname: hostname, } return r }