Move Job related logic to seperate package.

This commit is contained in:
James Munnelly
2015-09-07 23:02:29 +01:00
parent 9a02062e62
commit ef62a509cd
2 changed files with 60 additions and 48 deletions
+52
View File
@@ -0,0 +1,52 @@
package job
import (
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/client"
log "github.com/Sirupsen/logrus"
)
const kubernetesHost = "http://10.20.40.254:8080/"
type Job struct {
Pod *api.Pod
}
func (t Job) kubernetesClient() (*client.Client, error) {
client, err := client.New(
&client.Config{
Host: kubernetesHost,
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
}
+8 -48
View File
@@ -7,53 +7,13 @@ import (
log "github.com/Sirupsen/logrus"
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/client"
"git.marley.xyz/e720/plex-elastic-transcoder/job"
)
const kubernetesHost = "http://10.20.40.254:8080/"
const kubernetesNamespace = "plex"
const dockerImage = "registry.marley.xyz/e720/plex-new-transcoder"
type TranscodeJob struct {
pod *api.Pod
}
func kubernetesClient() (*client.Client, error) {
client, err := client.New(
&client.Config{
Host: kubernetesHost,
Version: "v1",
})
if err != nil {
return client, err
}
return client, err
}
func (t TranscodeJob) String() string {
return t.pod.ObjectMeta.Name
}
func (t TranscodeJob) start() error {
log.Print("Executing job: ", t)
client, err := kubernetesClient()
if err != nil {
return err
}
pod, err := client.Pods(t.pod.ObjectMeta.Namespace).Create(t.pod)
if err != nil {
return err
}
log.Print("Successfully scheduled transcode on pod with name: ", pod.ObjectMeta.Name)
return nil
}
const dockerImage = "timhaak/plex"
func generateName() string {
return "transcode-job"
@@ -61,13 +21,12 @@ func generateName() string {
func main() {
// Get the arguments passed to Plex New Transcoder
cmd := "/Plex New Transcoder"
args := os.Args[1:]
log.Print(fmt.Sprintf("Dispatching job: %s %s", cmd, args))
log.Print(fmt.Sprintf("Dispatching job: %s", args))
job := TranscodeJob{
pod:
job := job.Job{
Pod:
&api.Pod{
TypeMeta: api.TypeMeta{
Kind: "Pod",
@@ -82,6 +41,7 @@ func main() {
api.Container{
Name: generateName(),
Image: dockerImage,
Command: []string{"/usr/lib/plexmediaserver/Resources/Plex New Transcoder"},
Args: args,
},
},
@@ -89,7 +49,7 @@ func main() {
},
}
err := job.start()
err := job.Start()
if err != nil {
log.Fatal("Job start failed with error: ", err)
}