Skip to content

Commit 03b0dc4

Browse files
committed
[supervisor] respond PortsStatus with order
1 parent ed62ab9 commit 03b0dc4

File tree

3 files changed

+22
-1
lines changed

3 files changed

+22
-1
lines changed

Diff for: components/gitpod-protocol/go/gitpod-service.go

+1
Original file line numberDiff line numberDiff line change
@@ -1756,6 +1756,7 @@ type PortConfig struct {
17561756
Visibility string `json:"visibility,omitempty"`
17571757
Description string `json:"description,omitempty"`
17581758
Name string `json:"name,omitempty"`
1759+
Sort uint32 `json:"sort,omitempty"`
17591760
}
17601761

17611762
// TaskConfig is the TaskConfig message type

Diff for: components/supervisor/pkg/ports/ports-config.go

+5-1
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ type RangeConfig struct {
2121
*gitpod.PortsItems
2222
Start uint32
2323
End uint32
24+
Sort uint32
2425
}
2526

2627
// Configs provides access to port configurations.
@@ -79,6 +80,7 @@ func (configs *Configs) Get(port uint32) (*gitpod.PortConfig, ConfigKind, bool)
7980
Visibility: rangeConfig.Visibility,
8081
Description: rangeConfig.Description,
8182
Name: rangeConfig.Name,
83+
Sort: rangeConfig.Sort,
8284
}, RangeConfigKind, true
8385
}
8486
}
@@ -184,7 +186,7 @@ func parseWorkspaceConfigs(ports []*gitpod.PortConfig) (portConfigs map[uint32]*
184186
}
185187

186188
func parseInstanceConfigs(ports []*gitpod.PortsItems) (portConfigs map[uint32]*gitpod.PortConfig, rangeConfigs []*RangeConfig) {
187-
for _, config := range ports {
189+
for index, config := range ports {
188190
if config == nil {
189191
continue
190192
}
@@ -204,6 +206,7 @@ func parseInstanceConfigs(ports []*gitpod.PortsItems) (portConfigs map[uint32]*g
204206
Visibility: config.Visibility,
205207
Description: config.Description,
206208
Name: config.Name,
209+
Sort: uint32(index),
207210
}
208211
}
209212
continue
@@ -224,6 +227,7 @@ func parseInstanceConfigs(ports []*gitpod.PortsItems) (portConfigs map[uint32]*g
224227
PortsItems: config,
225228
Start: uint32(start),
226229
End: uint32(end),
230+
Sort: uint32(index),
227231
})
228232
}
229233
return portConfigs, rangeConfigs

Diff for: components/supervisor/pkg/ports/ports.go

+16
Original file line numberDiff line numberDiff line change
@@ -742,6 +742,22 @@ func (pm *Manager) getStatus() []*api.PortsStatus {
742742
for port := range pm.state {
743743
res = append(res, pm.getPortStatus(port))
744744
}
745+
sort.SliceStable(res, func(i, j int) bool {
746+
// Max number of port 65536
747+
score1 := 100000 + res[i].LocalPort
748+
score2 := 100000 + res[j].LocalPort
749+
if c, _, ok := pm.configs.Get(res[i].LocalPort); ok {
750+
score1 = c.Sort
751+
}
752+
if c, _, ok := pm.configs.Get(res[j].LocalPort); ok {
753+
score2 = c.Sort
754+
}
755+
if score1 != score2 {
756+
return score1 < score2
757+
}
758+
// Ranged ports
759+
return res[i].LocalPort < res[j].LocalPort
760+
})
745761
return res
746762
}
747763

0 commit comments

Comments
 (0)