kubernetes 获取PersistentVolumeClaim大小

kubernetes 获取PersistentVolumeClaim大小不像获取CPU和MEMORY那样方便:

pod.Spec.Containers[0].Resources.Limits.Memory().Value()
pod.Spec.Containers[0].Resources.Limits.Cpu().Value()

原因是kubernetes提供了获取CPU和Memory的指针方法但没有提供获取PersistentVolumeClaim的指针方法

package api

import (
    "k8s.io/kubernetes/pkg/api/resource"
    "k8s.io/kubernetes/pkg/api/unversioned"
)

// Returns string version of ResourceName.
func (self ResourceName) String() string {
    return string(self)
}

// Returns the CPU limit if specified.
func (self *ResourceList) Cpu() *resource.Quantity {
    if val, ok := (*self)[ResourceCPU]; ok {
        return &val
    }
    return &resource.Quantity{Format: resource.DecimalSI}
}

// Returns the Memory limit if specified.
func (self *ResourceList) Memory() *resource.Quantity {
    if val, ok := (*self)[ResourceMemory]; ok {
        return &val
    }
    return &resource.Quantity{Format: resource.BinarySI}
}

func (self *ResourceList) Pods() *resource.Quantity {
    if val, ok := (*self)[ResourcePods]; ok {
        return &val
    }
    return &resource.Quantity{}
}

func (self *ResourceList) NvidiaGPU() *resource.Quantity {
    if val, ok := (*self)[ResourceNvidiaGPU]; ok {
        return &val
    }
    return &resource.Quantity{}
}

所以,kubernetes 获取PersistentVolumeClaim的大小需要转换成指针类型,才能获取其大小

import (
    "k8s.io/kubernetes/pkg/api"
    "k8s.io/kubernetes/pkg/api/resource"
)
func NewOrderPVC(userUUID string, pvc *api.PersistentVolumeClaim) Order {
    //storage

    quantity := new(resource.Quantity)

    *quantity = pvc.Spec.Resources.Limits["storage"]

    size := quantity.Size()

    order := Order{
        UserUUID:      userUUID,
        BillingType:   "USAGE",
        BillingPeriod: "MONTHLY",
        Unit:          "月",
        PayDuration:   12,
        ProductName:   "测试创建订单",
        ProductType:   "测试存储",
        PromotionId:   0,
        Skus: []Sku{
            Sku{
                UUID:       "49fedb9c-807f-4767-9090-7960655b4112", //产品唯一标志字段(对应目录中的产品的uuid)
                Id:         "STORAGE",                              //对应的目录中的productCode
                Value:      size,
                Count:      1,
                ResourceId: fmt.Sprintf("%s", pvc.GetUID()),
            },
        },
    }
    return order
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值