Refactoring
This commit is contained in:
parent
e3184bf078
commit
ab11828911
76
dependencies/config/config.go
vendored
76
dependencies/config/config.go
vendored
@ -2,25 +2,26 @@ package config
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"net"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
"text/template"
|
||||
|
||||
entry "github.com/stackanetes/kubernetes-entrypoint/dependencies"
|
||||
entry "github.com/stackanetes/kubernetes-entrypoint/entrypoint"
|
||||
"github.com/stackanetes/kubernetes-entrypoint/logger"
|
||||
"github.com/stackanetes/kubernetes-entrypoint/util"
|
||||
"github.com/stackanetes/kubernetes-entrypoint/util/env"
|
||||
)
|
||||
|
||||
type configParams struct {
|
||||
HOSTNAME string
|
||||
IP string
|
||||
IP_ERLANG string
|
||||
}
|
||||
|
||||
type Config struct {
|
||||
name string
|
||||
params struct {
|
||||
iface string
|
||||
HOSTNAME string
|
||||
IP string
|
||||
IP_ERLANG string
|
||||
}
|
||||
params configParams
|
||||
}
|
||||
|
||||
func init() {
|
||||
@ -33,60 +34,59 @@ func init() {
|
||||
}
|
||||
|
||||
func NewConfig(name string) Config {
|
||||
var config Config
|
||||
config.name = name
|
||||
iface := os.Getenv("INTERFACE_NAME")
|
||||
if iface == "" {
|
||||
logger.Error.Print("Environment variable INTERFACE_NAME not set")
|
||||
os.Exit(1)
|
||||
}
|
||||
hostname, err := os.Hostname()
|
||||
if err != nil {
|
||||
logger.Error.Print("Environment variable HOSTNAME not set")
|
||||
logger.Error.Printf("Cannot determine hostname: %v", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
config.params.HOSTNAME = hostname
|
||||
config.params.iface = iface
|
||||
i, err := net.InterfaceByName(iface)
|
||||
|
||||
ip, err := util.GetIp()
|
||||
if err != nil {
|
||||
logger.Error.Printf("Cannot get iface: %v", err)
|
||||
logger.Error.Printf("Cannot get ip address: %v", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
address, err := i.Addrs()
|
||||
if err != nil || len(address) == 0 {
|
||||
logger.Error.Printf("Cannot get ip: %v", err)
|
||||
os.Exit(1)
|
||||
return Config{
|
||||
name: name,
|
||||
params: configParams{
|
||||
IP: ip,
|
||||
IP_ERLANG: strings.Replace(ip, ".", ",", -1),
|
||||
HOSTNAME: hostname},
|
||||
}
|
||||
config.params.IP = strings.Split(address[0].String(), "/")[0]
|
||||
config.params.IP_ERLANG = strings.Replace(config.params.IP, ".", ",", -1)
|
||||
|
||||
return config
|
||||
}
|
||||
|
||||
func (c Config) IsResolved(entrypoint *entry.Entrypoint) (bool, error) {
|
||||
logger.Info.Print(c.GetName())
|
||||
err := CreateDirectory(c.GetName())
|
||||
//Create directory to ensure it exists
|
||||
err := createDirectory(c.GetName())
|
||||
if err != nil {
|
||||
return false, fmt.Errorf("Couldn't create directory: %v", err)
|
||||
}
|
||||
config, err := os.Create(c.GetName())
|
||||
err = createAndTemplateConfig(c.GetName(), c.params)
|
||||
if err != nil {
|
||||
return false, fmt.Errorf("Couldn't touch file %v: %v", c.GetName(), err)
|
||||
}
|
||||
file := filepath.Base(c.GetName())
|
||||
temp := template.Must(template.New(file).ParseFiles(fmt.Sprintf("/configmaps/%s/%s", file, file)))
|
||||
if err = temp.Execute(config, c.params); err != nil {
|
||||
return false, err
|
||||
return false, fmt.Errorf("Cannot template %s: %v", c.GetName(), err)
|
||||
}
|
||||
return true, nil
|
||||
|
||||
}
|
||||
|
||||
func createAndTemplateConfig(name string, params configParams) (err error) {
|
||||
config, err := os.Create(name)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
file := filepath.Base(name)
|
||||
temp := template.Must(template.New(file).ParseFiles(fmt.Sprintf("/configmaps/%s/%s", file, file)))
|
||||
if err = temp.Execute(config, params); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
func (c Config) GetName() string {
|
||||
return c.name
|
||||
}
|
||||
|
||||
func CreateDirectory(file string) error {
|
||||
func createDirectory(file string) error {
|
||||
err := os.MkdirAll(filepath.Dir(file), 0644)
|
||||
if err != nil {
|
||||
return err
|
||||
|
2
dependencies/container/container.go
vendored
2
dependencies/container/container.go
vendored
@ -2,7 +2,7 @@ package container
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
entry "github.com/stackanetes/kubernetes-entrypoint/dependencies"
|
||||
entry "github.com/stackanetes/kubernetes-entrypoint/entrypoint"
|
||||
"github.com/stackanetes/kubernetes-entrypoint/util/env"
|
||||
"os"
|
||||
)
|
||||
|
6
dependencies/daemonset/daemonset.go
vendored
6
dependencies/daemonset/daemonset.go
vendored
@ -4,7 +4,7 @@ import (
|
||||
"fmt"
|
||||
"os"
|
||||
|
||||
entry "github.com/stackanetes/kubernetes-entrypoint/dependencies"
|
||||
entry "github.com/stackanetes/kubernetes-entrypoint/entrypoint"
|
||||
"github.com/stackanetes/kubernetes-entrypoint/logger"
|
||||
"github.com/stackanetes/kubernetes-entrypoint/util/env"
|
||||
"k8s.io/kubernetes/pkg/api"
|
||||
@ -19,12 +19,12 @@ func init() {
|
||||
daemonsetEnv := fmt.Sprintf("%sDAEMONSET", entry.DependencyPrefix)
|
||||
if daemonsetsDeps := env.SplitEnvToList(daemonsetEnv); daemonsetsDeps != nil {
|
||||
for _, dep := range daemonsetsDeps {
|
||||
entry.Register(NewDaemonset(dep))
|
||||
entry.Register(NewDaemonSet(dep))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func NewDaemonset(name string) Daemonset {
|
||||
func NewDaemonSet(name string) Daemonset {
|
||||
return Daemonset{name: name}
|
||||
}
|
||||
|
||||
|
2
dependencies/job/job.go
vendored
2
dependencies/job/job.go
vendored
@ -3,7 +3,7 @@ package job
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
entry "github.com/stackanetes/kubernetes-entrypoint/dependencies"
|
||||
entry "github.com/stackanetes/kubernetes-entrypoint/entrypoint"
|
||||
"github.com/stackanetes/kubernetes-entrypoint/util/env"
|
||||
)
|
||||
|
||||
|
2
dependencies/service/service.go
vendored
2
dependencies/service/service.go
vendored
@ -2,7 +2,7 @@ package service
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
entry "github.com/stackanetes/kubernetes-entrypoint/dependencies"
|
||||
entry "github.com/stackanetes/kubernetes-entrypoint/entrypoint"
|
||||
"github.com/stackanetes/kubernetes-entrypoint/util/env"
|
||||
)
|
||||
|
||||
|
2
dependencies/socket/socket.go
vendored
2
dependencies/socket/socket.go
vendored
@ -2,7 +2,7 @@ package socket
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
entry "github.com/stackanetes/kubernetes-entrypoint/dependencies"
|
||||
entry "github.com/stackanetes/kubernetes-entrypoint/entrypoint"
|
||||
"github.com/stackanetes/kubernetes-entrypoint/util/env"
|
||||
"os"
|
||||
)
|
||||
|
@ -23,7 +23,7 @@ type Entrypoint struct {
|
||||
}
|
||||
|
||||
//Constructor for entrypoint
|
||||
func NewEntrypoint(client *cl.Client) (entry *Entrypoint, err error) {
|
||||
func New(client *cl.Client) (entry *Entrypoint, err error) {
|
||||
entry = new(Entrypoint)
|
||||
if entry.Client = client; client == nil {
|
||||
if entry.Client, err = cl.NewInCluster(); err != nil {
|
||||
@ -62,7 +62,6 @@ func (e *Entrypoint) Resolve() {
|
||||
}
|
||||
|
||||
type Resolver interface {
|
||||
// GetType() string
|
||||
IsResolved(entrypoint *Entrypoint) (bool, error)
|
||||
GetName() string
|
||||
}
|
@ -3,11 +3,12 @@ package main
|
||||
import (
|
||||
"os"
|
||||
|
||||
entry "github.com/stackanetes/kubernetes-entrypoint/dependencies"
|
||||
entry "github.com/stackanetes/kubernetes-entrypoint/entrypoint"
|
||||
|
||||
"github.com/stackanetes/kubernetes-entrypoint/logger"
|
||||
comm "github.com/stackanetes/kubernetes-entrypoint/util/command"
|
||||
command "github.com/stackanetes/kubernetes-entrypoint/util/command"
|
||||
"github.com/stackanetes/kubernetes-entrypoint/util/env"
|
||||
//restclient "k8s.io/kubernetes/pkg/client/restclient"
|
||||
cl "k8s.io/kubernetes/pkg/client/unversioned"
|
||||
//Register resolvers
|
||||
_ "github.com/stackanetes/kubernetes-entrypoint/dependencies/config"
|
||||
@ -20,18 +21,22 @@ import (
|
||||
|
||||
func main() {
|
||||
var client *cl.Client
|
||||
var command []string
|
||||
var comm []string
|
||||
var entrypoint *entry.Entrypoint
|
||||
var err error
|
||||
if entrypoint, err = entry.NewEntrypoint(client); err != nil {
|
||||
if entrypoint, err = entry.New(client); err != nil {
|
||||
logger.Error.Printf("Creating entrypoint failed: %v", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
entrypoint.Resolve()
|
||||
|
||||
if command = env.SplitEnvToList("COMMAND", " "); len(command) == 0 {
|
||||
if comm = env.SplitEnvToList("COMMAND", " "); len(comm) == 0 {
|
||||
logger.Error.Printf("COMMAND env is empty")
|
||||
os.Exit(1)
|
||||
}
|
||||
comm.ExecuteCommand(command)
|
||||
err = command.Execute(comm)
|
||||
if err != nil {
|
||||
logger.Error.Printf("Cannot execute command: %v", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
}
|
||||
|
@ -8,18 +8,18 @@ import (
|
||||
"github.com/stackanetes/kubernetes-entrypoint/logger"
|
||||
)
|
||||
|
||||
func ExecuteCommand(command []string) {
|
||||
func Execute(command []string) (err error) {
|
||||
path, err := exec.LookPath(command[0])
|
||||
if err != nil {
|
||||
logger.Error.Printf("Cannot find a binary %v : %v", command[0], err)
|
||||
os.Exit(1)
|
||||
return
|
||||
}
|
||||
|
||||
env := os.Environ()
|
||||
err = syscall.Exec(path, command, env)
|
||||
if err != nil {
|
||||
logger.Error.Print("Executing command %v failed: %v", command, err)
|
||||
os.Exit(1)
|
||||
return
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user