@@ -44,6 +44,7 @@ import (
44
44
"github.com/cockroachdb/cockroach/pkg/roachprod/vm"
45
45
"github.com/cockroachdb/cockroach/pkg/roachprod/vm/aws"
46
46
"github.com/cockroachdb/cockroach/pkg/roachprod/vm/azure"
47
+ "github.com/cockroachdb/cockroach/pkg/roachprod/vm/flagstub"
47
48
"github.com/cockroachdb/cockroach/pkg/roachprod/vm/gce"
48
49
"github.com/cockroachdb/cockroach/pkg/roachprod/vm/local"
49
50
"github.com/cockroachdb/cockroach/pkg/server/debug/replay"
@@ -1809,33 +1810,58 @@ func StageURL(
1809
1810
return urls , nil
1810
1811
}
1811
1812
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
+
1812
1821
// InitProviders initializes providers and returns a map that indicates
1813
1822
// if a provider is active or inactive.
1814
1823
func InitProviders () map [string ]string {
1815
1824
providersState := make (map [string ]string )
1816
1825
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
+ }
1839
1865
}
1840
1866
1841
1867
return providersState
0 commit comments