github.com/timstclair/heapster@v0.20.0-alpha1/Godeps/_workspace/src/k8s.io/kubernetes/pkg/client/unversioned/persistentvolumeclaim.go (about) 1 /* 2 Copyright 2014 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 "fmt" 21 22 "k8s.io/kubernetes/pkg/api" 23 "k8s.io/kubernetes/pkg/fields" 24 "k8s.io/kubernetes/pkg/labels" 25 "k8s.io/kubernetes/pkg/watch" 26 ) 27 28 // PersistentVolumeClaimsNamespacer has methods to work with PersistentVolumeClaim resources in a namespace 29 type PersistentVolumeClaimsNamespacer interface { 30 PersistentVolumeClaims(namespace string) PersistentVolumeClaimInterface 31 } 32 33 // PersistentVolumeClaimInterface has methods to work with PersistentVolumeClaim resources. 34 type PersistentVolumeClaimInterface interface { 35 List(label labels.Selector, field fields.Selector) (*api.PersistentVolumeClaimList, error) 36 Get(name string) (*api.PersistentVolumeClaim, error) 37 Create(claim *api.PersistentVolumeClaim) (*api.PersistentVolumeClaim, error) 38 Update(claim *api.PersistentVolumeClaim) (*api.PersistentVolumeClaim, error) 39 UpdateStatus(claim *api.PersistentVolumeClaim) (*api.PersistentVolumeClaim, error) 40 Delete(name string) error 41 Watch(label labels.Selector, field fields.Selector, opts api.ListOptions) (watch.Interface, error) 42 } 43 44 // persistentVolumeClaims implements PersistentVolumeClaimsNamespacer interface 45 type persistentVolumeClaims struct { 46 client *Client 47 namespace string 48 } 49 50 // newPersistentVolumeClaims returns a PodsClient 51 func newPersistentVolumeClaims(c *Client, namespace string) *persistentVolumeClaims { 52 return &persistentVolumeClaims{c, namespace} 53 } 54 55 func (c *persistentVolumeClaims) List(label labels.Selector, field fields.Selector) (result *api.PersistentVolumeClaimList, err error) { 56 result = &api.PersistentVolumeClaimList{} 57 58 err = c.client.Get(). 59 Namespace(c.namespace). 60 Resource("persistentVolumeClaims"). 61 LabelsSelectorParam(label). 62 FieldsSelectorParam(field). 63 Do(). 64 Into(result) 65 66 return result, err 67 } 68 69 func (c *persistentVolumeClaims) Get(name string) (result *api.PersistentVolumeClaim, err error) { 70 result = &api.PersistentVolumeClaim{} 71 err = c.client.Get().Namespace(c.namespace).Resource("persistentVolumeClaims").Name(name).Do().Into(result) 72 return 73 } 74 75 func (c *persistentVolumeClaims) Create(claim *api.PersistentVolumeClaim) (result *api.PersistentVolumeClaim, err error) { 76 result = &api.PersistentVolumeClaim{} 77 err = c.client.Post().Namespace(c.namespace).Resource("persistentVolumeClaims").Body(claim).Do().Into(result) 78 return 79 } 80 81 func (c *persistentVolumeClaims) Update(claim *api.PersistentVolumeClaim) (result *api.PersistentVolumeClaim, err error) { 82 result = &api.PersistentVolumeClaim{} 83 if len(claim.ResourceVersion) == 0 { 84 err = fmt.Errorf("invalid update object, missing resource version: %v", claim) 85 return 86 } 87 err = c.client.Put().Namespace(c.namespace).Resource("persistentVolumeClaims").Name(claim.Name).Body(claim).Do().Into(result) 88 return 89 } 90 91 func (c *persistentVolumeClaims) UpdateStatus(claim *api.PersistentVolumeClaim) (result *api.PersistentVolumeClaim, err error) { 92 result = &api.PersistentVolumeClaim{} 93 err = c.client.Put().Namespace(c.namespace).Resource("persistentVolumeClaims").Name(claim.Name).SubResource("status").Body(claim).Do().Into(result) 94 return 95 } 96 97 func (c *persistentVolumeClaims) Delete(name string) error { 98 return c.client.Delete().Namespace(c.namespace).Resource("persistentVolumeClaims").Name(name).Do().Error() 99 } 100 101 func (c *persistentVolumeClaims) Watch(label labels.Selector, field fields.Selector, opts api.ListOptions) (watch.Interface, error) { 102 return c.client.Get(). 103 Prefix("watch"). 104 Namespace(c.namespace). 105 Resource("persistentVolumeClaims"). 106 VersionedParams(&opts, api.Scheme). 107 LabelsSelectorParam(label). 108 FieldsSelectorParam(field). 109 Watch() 110 }