-
Notifications
You must be signed in to change notification settings - Fork 0
/
ipam.go
39 lines (32 loc) · 1020 Bytes
/
ipam.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
package ipam
import (
"net"
"os"
log "github.com/sirupsen/logrus"
"k8s.io/client-go/kubernetes"
)
type IpamData struct {
Network *net.IPNet
}
type Ipam interface {
String() string
Reset() error
Assign(description string) (string, error)
IsAssigned(ip string) (bool, error)
Unassign(ip string) error
Get(ip string) (string, error)
Cleanup(keep []string) error
Search(search string, exact bool) ([]string, error)
List() ([]string, error)
Set(ip string, description string) error
}
func InitFromEnvironment(kube kubernetes.Interface, network, tag string) (i Ipam, err error) {
if os.Getenv("HACI_URL") != "" {
i, err = NewHaciIpam(network, os.Getenv("HACI_URL"), os.Getenv("HACI_USERNAME"), os.Getenv("HACI_PASSWORD"), os.Getenv("HACI_ROOT"), tag)
log.Debugf("Using HaCi ipam at %s with root %s and network %s", os.Getenv("HACI_URL"), os.Getenv("HACI_ROOT"), network)
} else {
i, err = NewConfigMapIpam(kube, network)
log.Debugf("Using ConfigMap ipam with network %s", network)
}
return
}