Skip to content

Commit 914bf61

Browse files
authored
get all chassis once (#3103)
1 parent 42e0574 commit 914bf61

File tree

2 files changed

+36
-19
lines changed

2 files changed

+36
-19
lines changed

pkg/controller/init.go

+16-19
Original file line numberDiff line numberDiff line change
@@ -855,31 +855,28 @@ func (c *Controller) initNodeChassis() error {
855855
klog.Errorf("failed to list nodes: %v", err)
856856
return err
857857
}
858-
858+
chssisNodes, err := c.ovnLegacyClient.GetAllChassisMap()
859+
if err != nil {
860+
klog.Errorf("failed to get chassis nodes: %v", err)
861+
return err
862+
}
859863
for _, node := range nodes {
860864
chassisName := node.Annotations[util.ChassisAnnotation]
861865
if chassisName != "" {
862-
existChasisId, err := c.ovnLegacyClient.GetChassis(node.Name)
863-
if err != nil {
864-
klog.Errorf("failed to get chassis id: %v", err)
865-
return err
866-
}
867-
if existChasisId == chassisName {
868-
continue
869-
}
870-
exist, err := c.ovnLegacyClient.ChassisExist(chassisName)
871-
if err != nil {
872-
klog.Errorf("failed to check chassis exist: %v", err)
873-
return err
874-
}
875-
if exist {
876-
err = c.ovnLegacyClient.InitChassisNodeTag(chassisName, node.Name)
877-
if err != nil {
878-
klog.Errorf("failed to set chassis nodeTag: %v", err)
879-
return err
866+
if hostname, exist := chssisNodes[chassisName]; exist {
867+
if hostname == node.Name {
868+
continue
869+
} else {
870+
klog.Infof("node %s sbdb chassis %s host name %s", node.Name, chassisName, hostname)
871+
err = c.ovnLegacyClient.InitChassisNodeTag(chassisName, node.Name)
872+
if err != nil {
873+
klog.Errorf("failed to set chassis nodeTag: %v", err)
874+
return err
875+
}
880876
}
881877
}
882878
}
883879
}
880+
884881
return nil
885882
}

pkg/ovs/ovn-sbctl.go

+20
Original file line numberDiff line numberDiff line change
@@ -151,3 +151,23 @@ func (c LegacyClient) GetAllChassis() ([]string, error) {
151151
}
152152
return result, nil
153153
}
154+
155+
// GetAllChassisMap return a map of chassis uuid : node name
156+
func (c LegacyClient) GetAllChassisMap() (map[string]string, error) {
157+
output, err := c.ovnSbCommand("--format=csv", "--no-heading", "--data=bare", "--columns=name,hostname", "find", "chassis", fmt.Sprintf("external_ids:vendor=%s", util.CniTypeName))
158+
if err != nil {
159+
return nil, fmt.Errorf("failed to find node chassis, %v", err)
160+
}
161+
lines := strings.Split(output, "\n")
162+
result := make(map[string]string, len(lines))
163+
for _, l := range lines {
164+
if len(strings.TrimSpace(l)) == 0 {
165+
continue
166+
}
167+
res := strings.Split(l, ",")
168+
if len(res) == 2 {
169+
result[res[0]] = res[1]
170+
}
171+
}
172+
return result, nil
173+
}

0 commit comments

Comments
 (0)