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  }