github.com/timstclair/heapster@v0.20.0-alpha1/Godeps/_workspace/src/k8s.io/kubernetes/pkg/client/unversioned/jobs.go (about) 1 /* 2 Copyright 2015 The Kubernetes Authors All rights reserved. 3 4 Licensed under the Apache License, Version 2.0 (the "License"); 5 you may not use this file except in compliance with the License. 6 You may obtain a copy of the License at 7 8 http://www.apache.org/licenses/LICENSE-2.0 9 10 Unless required by applicable law or agreed to in writing, software 11 distributed under the License is distributed on an "AS IS" BASIS, 12 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 See the License for the specific language governing permissions and 14 limitations under the License. 15 */ 16 17 package unversioned 18 19 import ( 20 "k8s.io/kubernetes/pkg/api" 21 "k8s.io/kubernetes/pkg/api/latest" 22 "k8s.io/kubernetes/pkg/apis/extensions" 23 "k8s.io/kubernetes/pkg/fields" 24 "k8s.io/kubernetes/pkg/labels" 25 "k8s.io/kubernetes/pkg/watch" 26 ) 27 28 // JobsNamespacer has methods to work with Job resources in a namespace 29 type JobsNamespacer interface { 30 Jobs(namespace string) JobInterface 31 } 32 33 // JobInterface exposes methods to work on Job resources. 34 type JobInterface interface { 35 List(label labels.Selector, field fields.Selector) (*extensions.JobList, error) 36 Get(name string) (*extensions.Job, error) 37 Create(job *extensions.Job) (*extensions.Job, error) 38 Update(job *extensions.Job) (*extensions.Job, error) 39 Delete(name string, options *api.DeleteOptions) error 40 Watch(label labels.Selector, field fields.Selector, opts api.ListOptions) (watch.Interface, error) 41 UpdateStatus(job *extensions.Job) (*extensions.Job, error) 42 } 43 44 // jobs implements JobsNamespacer interface 45 type jobs struct { 46 r *ExtensionsClient 47 ns string 48 } 49 50 // newJobs returns a jobs 51 func newJobs(c *ExtensionsClient, namespace string) *jobs { 52 return &jobs{c, namespace} 53 } 54 55 // Ensure statically that jobs implements JobInterface. 56 var _ JobInterface = &jobs{} 57 58 // List returns a list of jobs that match the label and field selectors. 59 func (c *jobs) List(label labels.Selector, field fields.Selector) (result *extensions.JobList, err error) { 60 result = &extensions.JobList{} 61 err = c.r.Get().Namespace(c.ns).Resource("jobs").LabelsSelectorParam(label).FieldsSelectorParam(field).Do().Into(result) 62 return 63 } 64 65 // Get returns information about a particular job. 66 func (c *jobs) Get(name string) (result *extensions.Job, err error) { 67 result = &extensions.Job{} 68 err = c.r.Get().Namespace(c.ns).Resource("jobs").Name(name).Do().Into(result) 69 return 70 } 71 72 // Create creates a new job. 73 func (c *jobs) Create(job *extensions.Job) (result *extensions.Job, err error) { 74 result = &extensions.Job{} 75 err = c.r.Post().Namespace(c.ns).Resource("jobs").Body(job).Do().Into(result) 76 return 77 } 78 79 // Update updates an existing job. 80 func (c *jobs) Update(job *extensions.Job) (result *extensions.Job, err error) { 81 result = &extensions.Job{} 82 err = c.r.Put().Namespace(c.ns).Resource("jobs").Name(job.Name).Body(job).Do().Into(result) 83 return 84 } 85 86 // Delete deletes a job, returns error if one occurs. 87 func (c *jobs) Delete(name string, options *api.DeleteOptions) (err error) { 88 if options == nil { 89 return c.r.Delete().Namespace(c.ns).Resource("jobs").Name(name).Do().Error() 90 } 91 92 body, err := api.Scheme.EncodeToVersion(options, latest.GroupOrDie("").GroupVersion) 93 if err != nil { 94 return err 95 } 96 return c.r.Delete().Namespace(c.ns).Resource("jobs").Name(name).Body(body).Do().Error() 97 } 98 99 // Watch returns a watch.Interface that watches the requested jobs. 100 func (c *jobs) Watch(label labels.Selector, field fields.Selector, opts api.ListOptions) (watch.Interface, error) { 101 return c.r.Get(). 102 Prefix("watch"). 103 Namespace(c.ns). 104 Resource("jobs"). 105 Param("resourceVersion", opts.ResourceVersion). 106 TimeoutSeconds(TimeoutFromListOptions(opts)). 107 LabelsSelectorParam(label). 108 FieldsSelectorParam(field). 109 Watch() 110 } 111 112 // UpdateStatus takes the name of the job and the new status. Returns the server's representation of the job, and an error, if it occurs. 113 func (c *jobs) UpdateStatus(job *extensions.Job) (result *extensions.Job, err error) { 114 result = &extensions.Job{} 115 err = c.r.Put().Namespace(c.ns).Resource("jobs").Name(job.Name).SubResource("status").Body(job).Do().Into(result) 116 return 117 }