@@ -30,7 +30,20 @@ import { Ec2ParentNode } from '../ec2/explorer/ec2ParentNode'
30
30
import { DevSettings } from '../shared/settings'
31
31
import { Ec2Client } from '../shared/clients/ec2Client'
32
32
33
- const serviceCandidates = [
33
+ interface ServiceNode {
34
+ allRegions ?: boolean
35
+ serviceId : string
36
+ /**
37
+ * Decides if the node should be shown. Example:
38
+ * ```
39
+ * when: () => DevSettings.instance.isDevMode()
40
+ * ```
41
+ */
42
+ when ?: ( ) => boolean
43
+ createFn : ( regionCode : string , partitionId : string ) => any
44
+ }
45
+
46
+ const serviceCandidates : ServiceNode [ ] = [
34
47
{
35
48
serviceId : 'apigateway' ,
36
49
createFn : ( regionCode : string , partitionId : string ) => new ApiGatewayNode ( partitionId , regionCode ) ,
@@ -85,6 +98,11 @@ const serviceCandidates = [
85
98
serviceId : 'ssm' ,
86
99
createFn : ( regionCode : string ) => new SsmDocumentNode ( regionCode ) ,
87
100
} ,
101
+ {
102
+ allRegions : true ,
103
+ serviceId : 'cloudcontrol' ,
104
+ createFn : ( regionCode : string ) => new ResourcesNode ( regionCode ) ,
105
+ } ,
88
106
]
89
107
90
108
/**
@@ -119,14 +137,14 @@ export class RegionNode extends AWSTreeNodeBase {
119
137
if ( service . when !== undefined && ! service . when ( ) ) {
120
138
continue
121
139
}
122
- if ( this . regionProvider . isServiceInRegion ( service . serviceId , this . regionCode ) ) {
140
+ if ( service . allRegions || this . regionProvider . isServiceInRegion ( service . serviceId , this . regionCode ) ) {
123
141
const node = service . createFn ( this . regionCode , partitionId )
124
142
if ( node !== undefined ) {
143
+ node . serviceId = service . serviceId
125
144
childNodes . push ( node )
126
145
}
127
146
}
128
147
}
129
- childNodes . push ( new ResourcesNode ( this . regionCode ) )
130
148
131
149
return this . sortNodes ( childNodes )
132
150
}
0 commit comments