MCPcopy
hub / github.com/purpleidea/mgmt / Init

Method Init

engine/resources/dhcp.go:367–451  ·  view source on GitHub ↗

Init runs some startup code for this resource.

(init *engine.Init)

Source from the content-addressed store, hash-verified

365
366// Init runs some startup code for this resource.
367func (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

Callers

nothing calls this directly

Calls 3

WrapfFunction · 0.92
GetGroupMethod · 0.65
InitMethod · 0.65

Tested by

no test coverage detected