Skip to content

Commit 9cc858a

Browse files
committed
roachprod: allow opting out some providers
Azure in particular takes a long time - sometimes well north of 1s.
1 parent 56f005f commit 9cc858a

File tree

2 files changed

+49
-22
lines changed

2 files changed

+49
-22
lines changed

pkg/roachprod/BUILD.bazel

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ go_library(
2727
"//pkg/roachprod/vm",
2828
"//pkg/roachprod/vm/aws",
2929
"//pkg/roachprod/vm/azure",
30+
"//pkg/roachprod/vm/flagstub",
3031
"//pkg/roachprod/vm/gce",
3132
"//pkg/roachprod/vm/local",
3233
"//pkg/server/debug/replay",

pkg/roachprod/roachprod.go

Lines changed: 48 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ import (
4444
"github.com/cockroachdb/cockroach/pkg/roachprod/vm"
4545
"github.com/cockroachdb/cockroach/pkg/roachprod/vm/aws"
4646
"github.com/cockroachdb/cockroach/pkg/roachprod/vm/azure"
47+
"github.com/cockroachdb/cockroach/pkg/roachprod/vm/flagstub"
4748
"github.com/cockroachdb/cockroach/pkg/roachprod/vm/gce"
4849
"github.com/cockroachdb/cockroach/pkg/roachprod/vm/local"
4950
"github.com/cockroachdb/cockroach/pkg/server/debug/replay"
@@ -1809,33 +1810,58 @@ func StageURL(
18091810
return urls, nil
18101811
}
18111812

1813+
var disabledProviders = func() map[string]struct{} {
1814+
disabled := make(map[string]struct{})
1815+
for _, p := range strings.Split(os.Getenv("ROACHPROD_DISABLED_PROVIDERS"), ",") {
1816+
disabled[strings.TrimSpace(strings.ToLower(p))] = struct{}{}
1817+
}
1818+
return disabled
1819+
}()
1820+
18121821
// InitProviders initializes providers and returns a map that indicates
18131822
// if a provider is active or inactive.
18141823
func InitProviders() map[string]string {
18151824
providersState := make(map[string]string)
18161825

1817-
if err := aws.Init(); err != nil {
1818-
providersState[aws.ProviderName] = "Inactive - " + err.Error()
1819-
} else {
1820-
providersState[aws.ProviderName] = "Active"
1821-
}
1822-
1823-
if err := gce.Init(); err != nil {
1824-
providersState[gce.ProviderName] = "Inactive - " + err.Error()
1825-
} else {
1826-
providersState[gce.ProviderName] = "Active"
1827-
}
1828-
1829-
if err := azure.Init(); err != nil {
1830-
providersState[azure.ProviderName] = "Inactive - " + err.Error()
1831-
} else {
1832-
providersState[azure.ProviderName] = "Active"
1833-
}
1834-
1835-
if err := local.Init(localVMStorage{}); err != nil {
1836-
providersState[local.ProviderName] = "Inactive - " + err.Error()
1837-
} else {
1838-
providersState[local.ProviderName] = "Active"
1826+
for _, prov := range []struct {
1827+
name string
1828+
init func() error
1829+
empty vm.Provider
1830+
}{
1831+
{
1832+
name: aws.ProviderName,
1833+
init: aws.Init,
1834+
empty: &aws.Provider{},
1835+
},
1836+
{
1837+
name: gce.ProviderName,
1838+
init: gce.Init,
1839+
empty: &gce.Provider{},
1840+
},
1841+
{
1842+
name: azure.ProviderName,
1843+
init: azure.Init,
1844+
empty: &azure.Provider{},
1845+
},
1846+
{
1847+
name: local.ProviderName,
1848+
init: func() error {
1849+
return local.Init(localVMStorage{})
1850+
},
1851+
empty: &local.Provider{},
1852+
},
1853+
} {
1854+
if _, dis := disabledProviders[prov.name]; dis {
1855+
reason := "disabled via ROACHPROD_DISABLED_PROVIDERS"
1856+
providersState[prov.name] = "Inactive - " + reason
1857+
// We need an empty provider that emits errors or we'll
1858+
// crash as roachprod expects all providers to be present.
1859+
vm.Providers[prov.name] = flagstub.New(prov.empty, reason)
1860+
} else if err := prov.init(); err != nil {
1861+
providersState[prov.name] = "Inactive - " + err.Error()
1862+
} else {
1863+
providersState[prov.name] = "Active"
1864+
}
18391865
}
18401866

18411867
return providersState

0 commit comments

Comments
 (0)