Skip to content

Commit c8a3626

Browse files
iQQBotCopilot
andauthored
Update components/ws-proxy/pkg/proxy/infoprovider.go
Co-authored-by: Copilot <[email protected]>
1 parent fe01e07 commit c8a3626

File tree

1 file changed

+16
-8
lines changed

1 file changed

+16
-8
lines changed

components/ws-proxy/pkg/proxy/infoprovider.go

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -134,23 +134,31 @@ func (r *CRDWorkspaceInfoProvider) WorkspaceInfo(workspaceID string) *common.Wor
134134
return wsInfo
135135
}
136136

137-
wsInfos, err := r.workspacesInfoByIPAddress(wsInfo.IPAddress)
138-
if err != nil {
139-
log.WithError(err).WithField("workspaceID", workspaceID).WithField("ipAddress", wsInfo.IPAddress).Error("failed to get workspaces by IP address")
137+
if conflict, err := r.validateIPAddressConflict(workspaceID, wsInfo.IPAddress); conflict || err != nil {
140138
return nil
141139
}
142140

141+
return wsInfo
142+
}
143+
144+
func (r *CRDWorkspaceInfoProvider) validateIPAddressConflict(workspaceID, ipAddress string) (bool, error) {
145+
wsInfos, err := r.workspacesInfoByIPAddress(ipAddress)
146+
if err != nil {
147+
log.WithError(err).WithField("workspaceID", workspaceID).WithField("ipAddress", ipAddress).Error("failed to get workspaces by IP address")
148+
return true, err
149+
}
150+
143151
if len(wsInfos) > 1 {
144-
log.WithField("workspaceID", workspaceID).WithField("ipAddress", wsInfo.IPAddress).WithField("workspaceCount", len(wsInfos)).Warn("multiple workspaces found for IP address")
145-
return nil
152+
log.WithField("workspaceID", workspaceID).WithField("ipAddress", ipAddress).WithField("workspaceCount", len(wsInfos)).Warn("multiple workspaces found for IP address")
153+
return true, nil
146154
}
147155

148156
if len(wsInfos) == 1 && wsInfos[0].WorkspaceID != workspaceID {
149-
log.WithField("workspaceID", workspaceID).WithField("ipAddress", wsInfo.IPAddress).WithField("foundWorkspaceID", wsInfos[0].WorkspaceID).Warn("workspace IP address conflict detected")
150-
return nil
157+
log.WithField("workspaceID", workspaceID).WithField("ipAddress", ipAddress).WithField("foundWorkspaceID", wsInfos[0].WorkspaceID).Warn("workspace IP address conflict detected")
158+
return true, nil
151159
}
152160

153-
return wsInfo
161+
return false, nil
154162
}
155163

156164
func (r *CRDWorkspaceInfoProvider) workspacesInfoByIPAddress(ipAddress string) ([]*common.WorkspaceInfo, error) {

0 commit comments

Comments
 (0)