Skip to content

Commit 5c2f5e3

Browse files
craig[bot]DarrylWong
andcommitted
Merge #150514
150514: roachprod: make port expanders work with virtual clusters r=herkolategan,golgeek a=DarrylWong Previously the pgport and uiport expanders would cache results for already discovered ports. However, this cache did not keep track of which virtual cluster the ports were for. This changes the expander to do so, similar to pgurl. Release note: none Epic: none Fixes: none Co-authored-by: DarrylWong <[email protected]>
2 parents dceb3e8 + 4e3987e commit 5c2f5e3

File tree

1 file changed

+26
-12
lines changed

1 file changed

+26
-12
lines changed

pkg/roachprod/install/expander.go

Lines changed: 26 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ var parameterRe = regexp.MustCompile(`{[^{}]*}`)
3535
var pgURLRe = regexp.MustCompile(`{pgurl(:[-,0-9]+|:(?i)lb)?(:[a-z0-9\-]+)?(:[0-9]+)?}`)
3636
var pgHostRe = regexp.MustCompile(`{pghost(:[-,0-9]+|:(?i)lb)?(:[a-z0-9\-]+)?(:[0-9]+)?}`)
3737
var pgPortRe = regexp.MustCompile(`{pgport(:[-,0-9]+)?(:[a-z0-9\-]+)?(:[0-9]+)?}`)
38-
var uiPortRe = regexp.MustCompile(`{uiport(:[-,0-9]+)}`)
38+
var uiPortRe = regexp.MustCompile(`{uiport(:[-,0-9]+)?(:[a-z0-9\-]+)?(:[0-9]+)?}`)
3939
var ipAddressRe = regexp.MustCompile(`{ip(:\d+([-,]\d+)?)(:public|:private)?}`)
4040
var hostnameRe = regexp.MustCompile(`{hostname(:\d+([-,]\d+)?)}`)
4141
var storeDirRe = regexp.MustCompile(`{store-dir(:[0-9]+)?}`)
@@ -54,8 +54,8 @@ type expander struct {
5454

5555
pgURLs map[string]map[Node]string
5656
pgHosts map[Node]string
57-
pgPorts map[Node]string
58-
uiPorts map[Node]string
57+
pgPorts map[string]map[Node]string
58+
uiPorts map[string]map[Node]string
5959
publicIPs map[Node]string
6060
privateIPs map[Node]string
6161
hostnames map[Node]string
@@ -246,40 +246,54 @@ func (e *expander) maybeExpandPgPort(
246246
if err != nil {
247247
return "", false, err
248248
}
249-
250249
if e.pgPorts == nil {
251-
e.pgPorts = make(map[Node]string, len(c.VMs))
250+
e.pgPorts = make(map[string]map[Node]string)
251+
}
252+
253+
if e.pgPorts[virtualClusterName] == nil {
254+
e.pgPorts[virtualClusterName] = make(map[Node]string)
252255
for _, node := range allNodes(len(c.VMs)) {
253256
desc, err := c.ServiceDescriptor(ctx, node, virtualClusterName, ServiceTypeSQL, sqlInstance)
254257
if err != nil {
255258
return s, false, err
256259
}
257-
e.pgPorts[node] = fmt.Sprint(desc.Port)
260+
e.pgPorts[virtualClusterName][node] = fmt.Sprint(desc.Port)
258261
}
259262
}
260263

261-
s, err = e.maybeExpandMap(c, e.pgPorts, m[1])
264+
s, err = e.maybeExpandMap(c, e.pgPorts[virtualClusterName], m[1])
262265
return s, err == nil, err
263266
}
264267

265268
// maybeExpandPgURL is an expanderFunc for {uiport:<nodeSpec>}
266269
func (e *expander) maybeExpandUIPort(
267-
ctx context.Context, l *logger.Logger, c *SyncedCluster, _ ExpanderConfig, s string,
270+
ctx context.Context, l *logger.Logger, c *SyncedCluster, cfg ExpanderConfig, s string,
268271
) (string, bool, error) {
269272
m := uiPortRe.FindStringSubmatch(s)
270273
if m == nil {
271274
return s, false, nil
272275
}
276+
virtualClusterName, sqlInstance, err := extractVirtualClusterInfo(m[2:], cfg.DefaultVirtualCluster)
277+
if err != nil {
278+
return "", false, err
279+
}
273280

274281
if e.uiPorts == nil {
275-
e.uiPorts = make(map[Node]string, len(c.VMs))
282+
e.uiPorts = make(map[string]map[Node]string)
283+
}
284+
285+
if e.uiPorts[virtualClusterName] == nil {
286+
e.uiPorts[virtualClusterName] = make(map[Node]string)
276287
for _, node := range allNodes(len(c.VMs)) {
277-
// TODO(herko): Add support for separate-process services.
278-
e.uiPorts[node] = fmt.Sprint(c.NodeUIPort(ctx, node, "" /* virtualClusterName */, 0 /* sqlInstance */))
288+
desc, err := c.ServiceDescriptor(ctx, node, virtualClusterName, ServiceTypeUI, sqlInstance)
289+
if err != nil {
290+
return s, false, err
291+
}
292+
e.uiPorts[virtualClusterName][node] = fmt.Sprint(desc.Port)
279293
}
280294
}
281295

282-
s, err := e.maybeExpandMap(c, e.uiPorts, m[1])
296+
s, err = e.maybeExpandMap(c, e.uiPorts[virtualClusterName], m[1])
283297
return s, err == nil, err
284298
}
285299

0 commit comments

Comments
 (0)