Skip to content

Commit

Permalink
chore: Remove unused attributes code
Browse files Browse the repository at this point in the history
Signed-off-by: Fred Rolland <frolland@nvidia.com>
  • Loading branch information
rollandf committed May 19, 2024
1 parent 77d3540 commit 3086661
Show file tree
Hide file tree
Showing 8 changed files with 2 additions and 357 deletions.
75 changes: 0 additions & 75 deletions pkg/nodeinfo/attributes.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,7 @@ limitations under the License.
package nodeinfo

import (
"github.com/pkg/errors"
corev1 "k8s.io/api/core/v1"
logf "sigs.k8s.io/controller-runtime/pkg/log"

"github.com/Mellanox/network-operator/pkg/consts"
)

var log = logf.Log.WithName("nodeinfo")
Expand All @@ -39,74 +35,3 @@ const (
NodeLabelCudaVersionMajor = "nvidia.com/cuda.driver.major"
NodeLabelOSTreeVersion = "feature.node.kubernetes.io/system-os_release.OSTREE_VERSION"
)

// AttributeType categorizes Attributes of the host.
type AttributeType int

// Attribute type Enum, add new types before Last and update the mapping below
const (
// required attrs
AttrTypeHostname = iota
AttrTypeCPUArch
AttrTypeOSName
AttrTypeOSVer
// optional attrs
AttrTypeCudaVersionMajor
AttrTypeOSTreeVersion

OptionalAttrsStart = AttrTypeCudaVersionMajor
)

var attrToLabel = []string{
// AttrTypeHostname
NodeLabelHostname,
// AttrTypeCPUArch
NodeLabelCPUArch,
// AttrTypeOSName
NodeLabelOSName,
// AttrTypeOSVer
NodeLabelOSVer,
// AttrTypeCudaVersionMajor
NodeLabelCudaVersionMajor,
// AttrTypeOSTreeVersion
NodeLabelOSTreeVersion,
}

// NodeAttributes provides attributes of a specific node
type NodeAttributes struct {
// Node Name
Name string
// Node Attributes
Attributes map[AttributeType]string
}

// fromLabel adds a new attribute of type attrT to NodeAttributes by extracting value of selectedLabel
func (a *NodeAttributes) fromLabel(attrT AttributeType, nodeLabels map[string]string, selectedLabel string) error {
attrVal, ok := nodeLabels[selectedLabel]
if !ok {
return errors.Errorf("cannot create node attribute, missing label: %s", selectedLabel)
}

// Note: attrVal may be empty, this could indicate a binary attribute which relies on key existence
a.Attributes[attrT] = attrVal
return nil
}

// newNodeAttributes creates a new NodeAttributes
func newNodeAttributes(node *corev1.Node) NodeAttributes {
attr := NodeAttributes{
Name: node.GetName(),
Attributes: make(map[AttributeType]string),
}
var err error

nLabels := node.GetLabels()
for attrType, label := range attrToLabel {
err = attr.fromLabel(AttributeType(attrType), nLabels, label)
if err != nil && attrType < OptionalAttrsStart {
log.V(consts.LogLevelWarning).Info("Cannot create NodeAttribute",
"attribute", attrType, "error:", err.Error())
}
}
return attr
}
96 changes: 0 additions & 96 deletions pkg/nodeinfo/attributes_test.go

This file was deleted.

92 changes: 0 additions & 92 deletions pkg/nodeinfo/mocks/Provider.go

This file was deleted.

14 changes: 0 additions & 14 deletions pkg/nodeinfo/node_info.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,8 +35,6 @@ var MellanoxNICListOptions = []client.ListOption{
//
//go:generate mockery --name Provider
type Provider interface {
// GetNodesAttributes retrieves node attributes for nodes matching the filter criteria
GetNodesAttributes(filters ...Filter) []NodeAttributes
// GetNodePools partitions nodes into one or more node pools for nodes matching the filter criteria
GetNodePools(filters ...Filter) []NodePool
}
Expand All @@ -51,18 +49,6 @@ type provider struct {
nodes []*corev1.Node
}

// GetNodesAttributes retrieves node attributes for nodes matching the filter criteria
func (p *provider) GetNodesAttributes(filters ...Filter) (attrs []NodeAttributes) {
filtered := p.nodes
for _, filter := range filters {
filtered = filter.Apply(filtered)
}
for _, node := range filtered {
attrs = append(attrs, newNodeAttributes(node))
}
return attrs
}

// NodePool represent a set of Nodes grouped by common attributes
type NodePool struct {
Name string
Expand Down
69 changes: 0 additions & 69 deletions pkg/nodeinfo/node_info_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -43,75 +43,6 @@ func (df *dummyFilter) Apply(_ []*corev1.Node) []*corev1.Node {
}

var _ = Describe("nodeinfo Provider tests", func() {

Context("GetNodesAttributes with provided filters", func() {
It("Should Apply filters repeatedly on the nodes and return node attributes for the filtered nodes", func() {
filter1 := &dummyFilter{filtered: []*corev1.Node{
{
TypeMeta: metav1.TypeMeta{Kind: "Node"},
ObjectMeta: metav1.ObjectMeta{Name: "Node-1"},
},
{
TypeMeta: metav1.TypeMeta{Kind: "Node"},
ObjectMeta: metav1.ObjectMeta{Name: "Node-2"},
},
}}
filter2 := &dummyFilter{
filtered: []*corev1.Node{
{
TypeMeta: metav1.TypeMeta{Kind: "Node"},
ObjectMeta: metav1.ObjectMeta{Name: "Node-2"},
},
},
}
provider := NewProvider([]*corev1.Node{})
attrs := provider.GetNodesAttributes(filter1, filter2)

Expect(filter1.called).To(BeTrue())
Expect(filter2.called).To(BeTrue())
Expect(len(attrs)).To(Equal(1))
Expect(attrs[0].Name).To(Equal("Node-2"))
})
})

Context("GetNodesAttributes with empty list of filters", func() {
It("Should return all nodes attributes", func() {
provider := NewProvider([]*corev1.Node{
{
TypeMeta: metav1.TypeMeta{Kind: "Node"},
ObjectMeta: metav1.ObjectMeta{Name: "Node-1"},
},
{
TypeMeta: metav1.TypeMeta{Kind: "Node"},
ObjectMeta: metav1.ObjectMeta{Name: "Node-2"},
},
})

attrs := provider.GetNodesAttributes()
Expect(len(attrs)).To(Equal(2))
Expect(attrs[0].Name).To(Equal("Node-1"))
Expect(attrs[1].Name).To(Equal("Node-2"))
})
})

Context("GetNodesAttributes with filter returning no match", func() {
It("Should return an empty list of nodes", func() {
filter := &dummyFilter{filtered: []*corev1.Node{}}
provider := NewProvider([]*corev1.Node{
{
TypeMeta: metav1.TypeMeta{Kind: "Node"},
ObjectMeta: metav1.ObjectMeta{Name: "Node-1"},
},
{
TypeMeta: metav1.TypeMeta{Kind: "Node"},
ObjectMeta: metav1.ObjectMeta{Name: "Node-2"},
},
})
attrs := provider.GetNodesAttributes(filter)
Expect(len(attrs)).To(Equal(0))
})
})

Context("GetNodePools with filter", func() {
It("Should return an empty list of pools", func() {
filter := &dummyFilter{filtered: []*corev1.Node{}}
Expand Down
9 changes: 0 additions & 9 deletions pkg/state/dummy_provider.go
Original file line number Diff line number Diff line change
Expand Up @@ -42,15 +42,6 @@ func (d *dummyProvider) GetStaticConfig() staticconfig.StaticConfig {
return staticconfig.StaticConfig{CniBinDirectory: ""}
}

func (d *dummyProvider) GetNodesAttributes(...nodeinfo.Filter) []nodeinfo.NodeAttributes {
nodeAttr := make(map[nodeinfo.AttributeType]string)
nodeAttr[nodeinfo.AttrTypeCPUArch] = "amd64"
nodeAttr[nodeinfo.AttrTypeOSName] = "ubuntu"
nodeAttr[nodeinfo.AttrTypeOSVer] = "20.04"

return []nodeinfo.NodeAttributes{{Attributes: nodeAttr}}
}

func (d *dummyProvider) GetNodePools(...nodeinfo.Filter) []nodeinfo.NodePool {
return []nodeinfo.NodePool{
{
Expand Down
Loading

0 comments on commit 3086661

Please sign in to comment.