Files
kube-plex/main.go
T

76 lines
1.5 KiB
Go

package main
import (
"os"
log "github.com/Sirupsen/logrus"
"k8s.io/kubernetes/pkg/api"
"git.marley.xyz/e720/plex-elastic-transcoder/job"
)
const kubernetesHost = "http://10.20.40.254:8080/"
const kubernetesNamespace = "default"
const dockerImage = "registry.marley.xyz/e720/plex-new-transcoder"
const podBasename = "plex-transcoder"
func main() {
// Get the arguments passed to Plex New Transcoder
args := os.Args[1:]
log.Print("Dispatching job with args: ", args)
job := job.Job{
Host: kubernetesHost,
Pod:
&api.Pod{
TypeMeta: api.TypeMeta{
Kind: "Pod",
},
ObjectMeta: api.ObjectMeta{
GenerateName: podBasename,
Namespace: kubernetesNamespace,
},
Spec: api.PodSpec{
RestartPolicy: api.RestartPolicyNever,
Containers: []api.Container{
api.Container{
Name: podBasename,
Image: dockerImage,
Args: args,
},
},
},
},
}
err := job.Start()
if err != nil {
log.Fatal("Job start failed with error: ", err)
}
log.Print("Waiting for build pod to enter Running state...")
err = job.WaitForState(api.PodRunning)
if err != nil {
log.Fatal("Error waiting for pod to enter running state: ", err)
}
log.Print("Job has started running...")
log.Print("Waiting for job to complete...")
err = job.WaitForState(api.PodSucceeded)
if err != nil {
log.Fatal("Error waiting for job to complete: ", err)
}
log.Print("Job completed. Destroying pod...")
err = job.Stop()
if err != nil {
log.Fatal("Error stopping job: ", err)
}
log.Print("Pod destroyed. Exiting.")
}