From ef62a509cdf34862c6cc6e9adc39e18ad6b8d7b7 Mon Sep 17 00:00:00 2001 From: James Munnelly Date: Mon, 7 Sep 2015 23:02:29 +0100 Subject: [PATCH] Move Job related logic to seperate package. --- job/job.go | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++ main.go | 56 ++++++++---------------------------------------------- 2 files changed, 60 insertions(+), 48 deletions(-) create mode 100644 job/job.go diff --git a/job/job.go b/job/job.go new file mode 100644 index 0000000..847e52b --- /dev/null +++ b/job/job.go @@ -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 +} \ No newline at end of file diff --git a/main.go b/main.go index 02ad03e..4c7c47c 100644 --- a/main.go +++ b/main.go @@ -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) }