Skip to content
This repository was archived by the owner on Oct 16, 2024. It is now read-only.

Commit 8f2199a

Browse files
byteoceanguvenc
authored andcommitted
support configure interface's metering params
1 parent 6f0b94b commit 8f2199a

File tree

5 files changed

+1634
-1495
lines changed

5 files changed

+1634
-1495
lines changed

api/conversion.go

+24
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,7 @@ func ProtoInterfaceToInterface(dpdkIface *proto.Interface) (*Interface, error) {
110110
IPv4: &primaryIpv4,
111111
IPv6: &primaryIpv6,
112112
UnderlayRoute: &underlayRoute,
113+
Metering: ProtoMeteringParamsToInterfaceMeteringParams(dpdkIface.GetMeteringParams()),
113114
},
114115
}, nil
115116
}
@@ -387,3 +388,26 @@ func ProtoIfaceInfoToCaptureIfaceInfo(request *proto.CapturedInterface) (string,
387388
return "", fmt.Errorf("unsupported interface type")
388389
}
389390
}
391+
392+
func InterfaceMeteringParamsToProtoMeteringParams(meteringParams *MeteringParams) *proto.MeteringParams {
393+
394+
if meteringParams == nil {
395+
return &proto.MeteringParams{
396+
TotalRate: 0,
397+
PublicRate: 0,
398+
}
399+
}
400+
401+
return &proto.MeteringParams{
402+
TotalRate: meteringParams.TotalRate,
403+
PublicRate: meteringParams.PublicRate,
404+
}
405+
}
406+
407+
func ProtoMeteringParamsToInterfaceMeteringParams(meteringParams *proto.MeteringParams) *MeteringParams {
408+
409+
return &MeteringParams{
410+
TotalRate: meteringParams.TotalRate,
411+
PublicRate: meteringParams.PublicRate,
412+
}
413+
}

api/types.go

+6
Original file line numberDiff line numberDiff line change
@@ -287,6 +287,11 @@ type PXE struct {
287287
FileName string `json:"boot_filename,omitempty"`
288288
}
289289

290+
type MeteringParams struct {
291+
TotalRate uint64 `json:"total_rate,omitempty"`
292+
PublicRate uint64 `json:"public_rate,omitempty"`
293+
}
294+
290295
func (m *InterfaceMeta) GetName() string {
291296
return m.ID
292297
}
@@ -305,6 +310,7 @@ type InterfaceSpec struct {
305310
PXE *PXE `json:"pxe,omitempty"`
306311
Nat *Nat `json:"-"`
307312
VIP *VirtualIP `json:"-"`
313+
Metering *MeteringParams `json:"metering,omitempty"`
308314
}
309315

310316
type VirtualFunction struct {

client/client.go

+7-6
Original file line numberDiff line numberDiff line change
@@ -344,12 +344,13 @@ func (c *client) ListInterfaces(ctx context.Context, ignoredErrors ...[]uint32)
344344

345345
func (c *client) CreateInterface(ctx context.Context, iface *api.Interface, ignoredErrors ...[]uint32) (*api.Interface, error) {
346346
req := dpdkproto.CreateInterfaceRequest{
347-
InterfaceType: dpdkproto.InterfaceType_VIRTUAL,
348-
InterfaceId: []byte(iface.ID),
349-
Vni: iface.Spec.VNI,
350-
Ipv4Config: api.NetIPAddrToProtoIPConfig(iface.Spec.IPv4),
351-
Ipv6Config: api.NetIPAddrToProtoIPConfig(iface.Spec.IPv6),
352-
DeviceName: iface.Spec.Device,
347+
InterfaceType: dpdkproto.InterfaceType_VIRTUAL,
348+
InterfaceId: []byte(iface.ID),
349+
Vni: iface.Spec.VNI,
350+
Ipv4Config: api.NetIPAddrToProtoIPConfig(iface.Spec.IPv4),
351+
Ipv6Config: api.NetIPAddrToProtoIPConfig(iface.Spec.IPv6),
352+
DeviceName: iface.Spec.Device,
353+
MeteringParameters: api.InterfaceMeteringParamsToProtoMeteringParams(iface.Spec.Metering),
353354
}
354355
if iface.Spec.PXE != nil {
355356
if iface.Spec.PXE.FileName != "" && iface.Spec.PXE.Server != "" {

client/client_test.go

+6
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,10 @@ var _ = Describe("interface", Label("interface"), func() {
3939
IPv6: &ipv6,
4040
VNI: positiveTestVNI,
4141
Device: "net_tap5",
42+
Metering: &api.MeteringParams{
43+
TotalRate: 100,
44+
PublicRate: 50,
45+
},
4246
},
4347
}
4448

@@ -72,6 +76,8 @@ var _ = Describe("interface", Label("interface"), func() {
7276

7377
Expect(res.Spec.IPv4.String()).To(Equal("10.200.1.5"))
7478
Expect(res.Spec.IPv6.String()).To(Equal("2000:200:1::5"))
79+
Expect(res.Spec.Metering.TotalRate).To(Equal(uint64(0))) //MeteringRarams shouldn't take any effect on tap devices
80+
Expect(res.Spec.Metering.PublicRate).To(Equal(uint64(0)))
7581
})
7682

7783
It("should list successfully", func() {

0 commit comments

Comments
 (0)