51 lines
821 B
Go
51 lines
821 B
Go
package job
|
|
|
|
import (
|
|
"k8s.io/kubernetes/pkg/api"
|
|
"k8s.io/kubernetes/pkg/client"
|
|
|
|
log "github.com/Sirupsen/logrus"
|
|
)
|
|
|
|
type Job struct {
|
|
Host string
|
|
Pod *api.Pod
|
|
}
|
|
|
|
func (t Job) kubernetesClient() (*client.Client, error) {
|
|
client, err := client.New(
|
|
&client.Config{
|
|
Host: t.Host,
|
|
Version: "v1",
|
|
})
|
|
|
|
if err != nil {
|
|
return client, err
|
|
}
|
|
|
|
return client, err
|
|
}
|
|
|
|
func (t Job) String() string {
|
|
return t.Pod.ObjectMeta.Name
|
|
}
|
|
|
|
func (t Job) Start() error {
|
|
log.Print("Executing job: ", t)
|
|
client, err := t.kubernetesClient()
|
|
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
log.Print("Creating pod...")
|
|
pod, err := client.Pods(t.Pod.ObjectMeta.Namespace).Create(t.Pod)
|
|
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
log.Print("Successfully scheduled job on cluster with name: ", pod.ObjectMeta.Name)
|
|
|
|
return nil
|
|
} |