Init runs some startup code for this resource.
(init *engine.Init)
| 365 | |
| 366 | // Init runs some startup code for this resource. |
| 367 | func (obj *DHCPServerRes) Init(init *engine.Init) error { |
| 368 | obj.init = init // save for later |
| 369 | |
| 370 | // NOTE: If we don't Init anything that's autogrouped, then it won't |
| 371 | // even get an Init call on it. |
| 372 | // TODO: should we do this in the engine? Do we want to decide it here? |
| 373 | for _, res := range obj.GetGroup() { // grouped elements |
| 374 | if err := res.Init(init); err != nil { |
| 375 | return errwrap.Wrapf(err, "autogrouped Init failed") |
| 376 | } |
| 377 | } |
| 378 | |
| 379 | // Ensure the lease time is valid before we try and use it. |
| 380 | if obj.LeaseTime == nil || *obj.LeaseTime != "" { |
| 381 | leaseTime := DHCPDefaultLeaseTime |
| 382 | if obj.LeaseTime != nil { |
| 383 | leaseTime = *obj.LeaseTime |
| 384 | } |
| 385 | |
| 386 | var err error |
| 387 | if obj.leaseTime, err = time.ParseDuration(leaseTime); err != nil { |
| 388 | return errwrap.Wrapf(err, "unexpected invalid duration: %s", leaseTime) |
| 389 | } |
| 390 | } |
| 391 | |
| 392 | obj.sidMutex = &sync.Mutex{} |
| 393 | // We can't do this here, because our network might not be up yet, and |
| 394 | // if this happens in Init, that's before a Net resource might do it! |
| 395 | //var err error |
| 396 | //if obj.serverID, err = obj.getServerID(); err != nil { |
| 397 | // return errwrap.Wrapf(err, "could not determine the ServerID") |
| 398 | //} |
| 399 | |
| 400 | obj.dnsServers4 = []net.IP{} |
| 401 | for _, ip := range obj.DNS { |
| 402 | dns := net.ParseIP(ip).To4() |
| 403 | if dns == nil { |
| 404 | return fmt.Errorf("unexpected invalid DNS server address, got: %s", ip) |
| 405 | } |
| 406 | obj.dnsServers4 = append(obj.dnsServers4, dns) |
| 407 | } |
| 408 | |
| 409 | obj.routers4 = []net.IP{} |
| 410 | for _, ip := range obj.Routers { |
| 411 | router := net.ParseIP(ip).To4() |
| 412 | if router == nil { |
| 413 | return fmt.Errorf("unexpected invalid router address, got: %s", ip) |
| 414 | } |
| 415 | obj.routers4 = append(obj.routers4, router) |
| 416 | } |
| 417 | |
| 418 | //obj.mutex = &sync.RWMutex{} |
| 419 | //obj.mutex.RLock() |
| 420 | |
| 421 | //obj.reservedMacs = make(map[string]engine.Res) |
| 422 | obj.reservedIPs = make(map[netip.Addr]engine.Res) |
| 423 | |
| 424 | for _, x := range obj.GetGroup() { // grouped elements |