Support advanced capacity and providerID settings in mock provider

This commit is contained in:
Jackie Lan
2023-03-15 06:37:24 +00:00
committed by Pires
parent a457d445a3
commit b7030b9dc5

View File

@@ -56,9 +56,11 @@ type MockProvider struct { //nolint:golint
// MockConfig contains a mock virtual-kubelet's configurable parameters. // MockConfig contains a mock virtual-kubelet's configurable parameters.
type MockConfig struct { //nolint:golint type MockConfig struct { //nolint:golint
CPU string `json:"cpu,omitempty"` CPU string `json:"cpu,omitempty"`
Memory string `json:"memory,omitempty"` Memory string `json:"memory,omitempty"`
Pods string `json:"pods,omitempty"` Pods string `json:"pods,omitempty"`
Others map[string]string `json:"others,omitempty"`
ProviderID string `json:"providerID,omitempty"`
} }
// NewMockProviderMockConfig creates a new MockV0Provider. Mock legacy provider does not implement the new asynchronous podnotifier interface // NewMockProviderMockConfig creates a new MockV0Provider. Mock legacy provider does not implement the new asynchronous podnotifier interface
@@ -129,6 +131,11 @@ func loadConfig(providerConfig, nodeName string) (config MockConfig, err error)
if _, err = resource.ParseQuantity(config.Pods); err != nil { if _, err = resource.ParseQuantity(config.Pods); err != nil {
return config, fmt.Errorf("Invalid pods value %v", config.Pods) return config, fmt.Errorf("Invalid pods value %v", config.Pods)
} }
for _, v := range config.Others {
if _, err = resource.ParseQuantity(v); err != nil {
return config, fmt.Errorf("Invalid other value %v", v)
}
}
return config, nil return config, nil
} }
@@ -333,6 +340,9 @@ func (p *MockProvider) ConfigureNode(ctx context.Context, n *v1.Node) { //nolint
ctx, span := trace.StartSpan(ctx, "mock.ConfigureNode") //nolint:staticcheck,ineffassign ctx, span := trace.StartSpan(ctx, "mock.ConfigureNode") //nolint:staticcheck,ineffassign
defer span.End() defer span.End()
if p.config.ProviderID != "" {
n.Spec.ProviderID = p.config.ProviderID
}
n.Status.Capacity = p.capacity() n.Status.Capacity = p.capacity()
n.Status.Allocatable = p.capacity() n.Status.Allocatable = p.capacity()
n.Status.Conditions = p.nodeConditions() n.Status.Conditions = p.nodeConditions()
@@ -350,11 +360,15 @@ func (p *MockProvider) ConfigureNode(ctx context.Context, n *v1.Node) { //nolint
// Capacity returns a resource list containing the capacity limits. // Capacity returns a resource list containing the capacity limits.
func (p *MockProvider) capacity() v1.ResourceList { func (p *MockProvider) capacity() v1.ResourceList {
return v1.ResourceList{ rl := v1.ResourceList{
"cpu": resource.MustParse(p.config.CPU), "cpu": resource.MustParse(p.config.CPU),
"memory": resource.MustParse(p.config.Memory), "memory": resource.MustParse(p.config.Memory),
"pods": resource.MustParse(p.config.Pods), "pods": resource.MustParse(p.config.Pods),
} }
for k, v := range p.config.Others {
rl[v1.ResourceName(k)] = resource.MustParse(v)
}
return rl
} }
// NodeConditions returns a list of conditions (Ready, OutOfDisk, etc), for updates to the node status // NodeConditions returns a list of conditions (Ready, OutOfDisk, etc), for updates to the node status