本文整理汇总了Golang中k8s/io/kubernetes/pkg/apis/apps.PetSet类的典型用法代码示例。如果您正苦于以下问题:Golang PetSet类的具体用法?Golang PetSet怎么用?Golang PetSet使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了PetSet类的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Golang代码示例。
示例1: CreatePetSet
// PetSet - available only in kubernetes v1.3+
// big advantage: it allow create persistentVolume template
// this template can create persistent volumeClaim for each POD automatically
//
// create petSet for couchdb cluster
// init all necessary struct for petSet and then via kube client creates it
// @ param cluster - struct CouchdbCluster - required:
// @return extensions.Deployment - created kube deployment
// @return error - errors that occur during creation
//
func (cluster *CouchdbCluster) CreatePetSet() (*apps.PetSet, error) {
/*
PET SET, included in kube 1.3+
http://kubernetes-v1-3.github.io/docs/user-guide/petset/
// TESTING - ALPHA
*/
// pod template with volumes
podTemplate := *cluster.CouchdbPodTemplate(true, CLUSTER_PREFIX+cluster.Tag)
// pet set spec label selector
lSelector := unversioned.LabelSelector{MatchLabels: cluster.Labels}
// pvc claim
pvc := api.PersistentVolumeClaim{}
pvc.Name = CLUSTER_PREFIX + cluster.Tag
pvc.Annotations = make(map[string]string)
pvc.Annotations["volume.alpha.kubernetes.io/storage-class"] = "anything"
// resource list for pvc claim template
rsList := make(api.ResourceList)
// SIZE
rsList[api.ResourceStorage] = *(resource.NewQuantity(5*1024*1024*1024, resource.BinarySI))
// pvc SPEC
pvcSpec := api.PersistentVolumeClaimSpec{}
pvcSpec.Resources.Requests = api.ResourceList(rsList)
pvc.Spec = pvcSpec
// pet set specs
petSetSPec := apps.PetSetSpec{Replicas: int(cluster.Replicas), Template: podTemplate,
Selector: &lSelector, VolumeClaimTemplates: []api.PersistentVolumeClaim{pvc}}
// pet set
petSet := apps.PetSet{Spec: petSetSPec}
petSet.Name = CLUSTER_PREFIX + cluster.Tag
petSet.Labels = cluster.Labels
// get a new kube extensions client
c, err := KubeClientApps(KUBE_API)
// check for errors
if err != nil {
ErrorLog("kube_control: createPetSet: Cannot connect to Kubernetes api ")
ErrorLog(err)
return nil, err
} else {
// create deployment
return c.PetSets(cluster.Namespace).Create(&petSet)
}
}
开发者ID:calvix,项目名称:kanto,代码行数:57,代码来源:spawner_petset.go
示例2: petSetFromManifest
func petSetFromManifest(fileName, ns string) *apps.PetSet {
var ps apps.PetSet
framework.Logf("Parsing petset from %v", fileName)
data, err := ioutil.ReadFile(fileName)
Expect(err).NotTo(HaveOccurred())
json, err := utilyaml.ToJSON(data)
Expect(err).NotTo(HaveOccurred())
Expect(runtime.DecodeInto(api.Codecs.UniversalDecoder(), json, &ps)).NotTo(HaveOccurred())
ps.Namespace = ns
if ps.Spec.Selector == nil {
ps.Spec.Selector = &unversioned.LabelSelector{
MatchLabels: ps.Spec.Template.Labels,
}
}
return &ps
}
开发者ID:olegshaldybin,项目名称:kubernetes,代码行数:17,代码来源:petset.go
示例3: ValidatePetSetUpdate
// ValidatePetSetUpdate tests if required fields in the PetSet are set.
func ValidatePetSetUpdate(petSet, oldPetSet *apps.PetSet) field.ErrorList {
allErrs := field.ErrorList{}
// TODO: For now we're taking the safe route and disallowing all updates to spec except for Spec.Replicas.
// Enable on a case by case basis.
restoreReplicas := petSet.Spec.Replicas
petSet.Spec.Replicas = oldPetSet.Spec.Replicas
// The generation changes for this update
restoreGeneration := petSet.Generation
petSet.Generation = oldPetSet.Generation
if !reflect.DeepEqual(petSet, oldPetSet) {
allErrs = append(allErrs, field.Forbidden(field.NewPath("spec"), "updates to petset spec for fields other than 'replicas' are forbidden."))
}
petSet.Spec.Replicas = restoreReplicas
petSet.Generation = restoreGeneration
allErrs = append(allErrs, apivalidation.ValidateNonnegativeField(int64(petSet.Spec.Replicas), field.NewPath("spec", "replicas"))...)
return allErrs
}
开发者ID:ZenoRewn,项目名称:origin,代码行数:21,代码来源:validation.go
示例4: updatePetCount
// updatePetCount attempts to update the Status.Replicas of the given PetSet, with a single GET/PUT retry.
func updatePetCount(psClient appsclientset.PetSetsGetter, ps apps.PetSet, numPets int) (updateErr error) {
if ps.Status.Replicas == numPets || psClient == nil {
return nil
}
var getErr error
for i, ps := 0, &ps; ; i++ {
glog.V(4).Infof(fmt.Sprintf("Updating replica count for PetSet: %s/%s, ", ps.Namespace, ps.Name) +
fmt.Sprintf("replicas %d->%d (need %d), ", ps.Status.Replicas, numPets, ps.Spec.Replicas))
ps.Status = apps.PetSetStatus{Replicas: numPets}
_, updateErr = psClient.PetSets(ps.Namespace).UpdateStatus(ps)
if updateErr == nil || i >= statusUpdateRetries {
return updateErr
}
if ps, getErr = psClient.PetSets(ps.Namespace).Get(ps.Name); getErr != nil {
return getErr
}
}
}
开发者ID:ncdc,项目名称:kubernetes,代码行数:20,代码来源:pet_set_utils.go
注:本文中的k8s/io/kubernetes/pkg/apis/apps.PetSet类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论