Skip to content

Commit 432d77f

Browse files
authored
Merge pull request #49 from DefangLabs/edw/aws-alb-dns-name
Update protobuf to add lb_dns_name
2 parents 32934ea + ce4b6c3 commit 432d77f

File tree

8 files changed

+2842
-940
lines changed

8 files changed

+2842
-940
lines changed

client.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import * as grpc from "@grpc/grpc-js";
2-
import * as fabric from "./protos/io/defang/v1/fabric_grpc_pb";
32
import { Status } from "@grpc/grpc-js/build/src/constants";
3+
import * as fabric from "./protos/io/defang/v1/fabric_grpc_pb";
44

55
function hasPort(url: string): boolean {
66
return /:\d+$/.test(url);

index.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -718,15 +718,15 @@ const defangServiceProvider: pulumi.dynamic.ResourceProvider<
718718
id: string,
719719
olds?: DefangServiceOutputs
720720
): Promise<pulumi.dynamic.ReadResult<DefangServiceOutputs>> {
721-
const serviceId = new pb.GetRequest();
722-
// serviceId.setProject(project);
723-
serviceId.setName(id);
721+
const req = new pb.GetRequest();
722+
// req.setProject(project);
723+
req.setName(id);
724724
assert(olds?.fabricDNS, "fabricDNS is required");
725725
const client = await connect(olds.fabricDNS);
726726
try {
727727
const result = await new Promise<pb.ServiceInfo | undefined>(
728728
(resolve, reject) =>
729-
client.get(serviceId, (err, res) =>
729+
client.get(req, (err, res) =>
730730
err && err.code !== grpc.status.NOT_FOUND //&& !forceUpdate
731731
? reject(err)
732732
: resolve(res)

io/defang/v1/fabric.proto

Lines changed: 76 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,14 @@ service FabricController {
8181
option idempotency_level = NO_SIDE_EFFECTS;
8282
}; // no values
8383

84+
rpc PutDeployment(PutDeploymentRequest) returns (google.protobuf.Empty) {
85+
option idempotency_level = IDEMPOTENT;
86+
};
87+
rpc ListDeployments(ListDeploymentsRequest)
88+
returns (ListDeploymentsResponse) {
89+
option idempotency_level = NO_SIDE_EFFECTS;
90+
}; // no values
91+
8492
rpc CreateUploadURL(UploadURLRequest) returns (UploadURLResponse);
8593

8694
rpc DelegateSubdomainZone(DelegateSubdomainZoneRequest)
@@ -91,6 +99,9 @@ service FabricController {
9199
returns (DelegateSubdomainZoneResponse) {
92100
option idempotency_level = NO_SIDE_EFFECTS;
93101
};
102+
rpc SetOptions(SetOptionsRequest) returns (google.protobuf.Empty) {
103+
option idempotency_level = IDEMPOTENT;
104+
}
94105
rpc WhoAmI(google.protobuf.Empty) returns (WhoAmIResponse) {
95106
option idempotency_level = NO_SIDE_EFFECTS;
96107
};
@@ -114,6 +125,10 @@ service FabricController {
114125
returns (google.protobuf.Empty) {
115126
option idempotency_level = IDEMPOTENT;
116127
}
128+
129+
rpc CanIUse(CanIUseRequest) returns (CanIUseResponse) {
130+
option idempotency_level = NO_SIDE_EFFECTS;
131+
}
117132
}
118133

119134
enum Provider {
@@ -150,6 +165,8 @@ message DebugRequest {
150165
string project = 3;
151166
string logs = 4;
152167
repeated string services = 5;
168+
bool training_opt_out = 6; // only valid for Pro users
169+
google.protobuf.Timestamp since = 7;
153170
}
154171

155172
message DebugResponse {
@@ -185,6 +202,17 @@ enum DeploymentMode {
185202
PRODUCTION = 3;
186203
}
187204

205+
message CanIUseRequest {
206+
string project = 1;
207+
Provider provider = 2;
208+
}
209+
210+
message CanIUseResponse {
211+
reserved 1;
212+
string cd_image = 2;
213+
bool gpu = 3;
214+
}
215+
188216
message DeployRequest {
189217
repeated Service services = 1
190218
[ deprecated = true ]; // deprecated; use compose
@@ -212,6 +240,7 @@ message GenerateFilesRequest {
212240
string prompt = 1;
213241
string language = 2;
214242
bool agree_tos = 3;
243+
bool training_opt_out = 4; // only valid for Pro users
215244
}
216245

217246
message File {
@@ -251,6 +280,7 @@ enum ServiceState {
251280
DEPLOYMENT_FAILED = 10;
252281

253282
BUILD_FAILED = 11;
283+
DEPLOYMENT_SCALED_IN = 12;
254284
}
255285

256286
message ServiceInfo {
@@ -272,6 +302,7 @@ message ServiceInfo {
272302
reserved 14; // was: string lb_dns
273303
ServiceState state = 15; // enumerated status of the service
274304
string domainname = 16; // domain name for the service
305+
string lb_dns_name = 17; // fully qualified domain name for the load-balancer
275306

276307
// bool is_function = 5; // true if service is a function
277308
}
@@ -325,6 +356,27 @@ message ListConfigsRequest {
325356

326357
message ListConfigsResponse { repeated ConfigKey configs = 1; }
327358

359+
enum DeploymentAction {
360+
DEPLOYMENT_ACTION_UNSPECIFIED = 0;
361+
DEPLOYMENT_ACTION_UP = 1;
362+
DEPLOYMENT_ACTION_DOWN = 2;
363+
}
364+
365+
message Deployment {
366+
string id = 1;
367+
string project = 2;
368+
string provider = 3;
369+
string provider_account_id = 4;
370+
google.protobuf.Timestamp timestamp = 5;
371+
DeploymentAction action = 6;
372+
}
373+
374+
message PutDeploymentRequest { Deployment deployment = 1; }
375+
376+
message ListDeploymentsRequest { string project = 1; }
377+
378+
message ListDeploymentsResponse { repeated Deployment deployments = 1; }
379+
328380
message TokenRequest {
329381
string tenant = 1;
330382
string auth_code = 2; // from GitHub authorization code flow
@@ -393,46 +445,46 @@ message ProjectUpdate {
393445
}
394446

395447
enum Platform {
396-
option deprecated = true; // still used by pulumi-defang provider
448+
option deprecated = true; // still used by pulumi-defang provider in state files
397449
LINUX_AMD64 = 0;
398450
LINUX_ARM64 = 1;
399451
LINUX_ANY = 2;
400452
}
401453

402-
message GetRequest { // was ServiceID
454+
message ServiceID {
455+
option deprecated = true; // still used by pulumi-defang provider in state files
403456
string name = 1;
404457
string project = 2;
405458
}
406459

407-
message ServiceID {
408-
option deprecated = true; // still used by pulumi-defang providers stored in state files
460+
message GetRequest { // was ServiceID
409461
string name = 1;
410462
string project = 2;
411463
}
412464

413465
message Device {
414-
option deprecated = true; // still used by pulumi-defang provider
466+
option deprecated = true; // still used by pulumi-defang provider in state files
415467
repeated string capabilities = 1; // "gpu", "tpu", etc.
416468
string driver = 2; // "nvidia", "amd", etc.
417469
uint32 count = 3; // number of devices to reserve
418470
}
419471

420472
message Resource {
421-
option deprecated = true; // still used by pulumi-defang provider
473+
option deprecated = true; // still used by pulumi-defang provider in state files
422474
float memory = 1; // in MiB
423475
float cpus = 2; // fractional vCPUs
424476
repeated Device devices = 3; // devices & capabilities
425477
}
426478

427479
message Resources {
428-
option deprecated = true; // still used by pulumi-defang provider
480+
option deprecated = true; // still used by pulumi-defang provider in state files
429481
Resource reservations = 1; // requested resources
430482

431483
// Resource limits = 2; // hard limits
432484
}
433485

434486
message Deploy {
435-
option deprecated = true; // still used by pulumi-defang provider
487+
option deprecated = true; // still used by pulumi-defang provider in state files
436488
uint32 replicas = 1; // number of initial replicas
437489
Resources resources = 2; // reservations and limits
438490

@@ -442,7 +494,7 @@ message Deploy {
442494
}
443495

444496
enum Protocol {
445-
option deprecated = true; // still used by pulumi-defang provider
497+
option deprecated = true; // still used by pulumi-defang provider in state files
446498
ANY = 0; // unspecified means any protocol
447499
UDP = 1;
448500
TCP = 2;
@@ -452,13 +504,13 @@ enum Protocol {
452504
}
453505

454506
enum Mode {
455-
option deprecated = true; // still used by pulumi-defang provider
507+
option deprecated = true; // still used by pulumi-defang provider in state files
456508
HOST = 0; // no load-balancer; suitable for internal services and functions
457509
INGRESS = 1; // with load-balancer; suitable for public services
458510
}
459511

460512
message Port {
461-
option deprecated = true; // still used by pulumi-defang provider
513+
option deprecated = true; // still used by pulumi-defang provider in state files
462514
uint32 target = 1;
463515
Protocol protocol = 2;
464516
Mode mode = 3; // load-balanced (ingress) or not (host)
@@ -468,13 +520,13 @@ message Port {
468520
}
469521

470522
message Secret {
471-
option deprecated = true; // still used by pulumi-defang provider
523+
option deprecated = true; // still used by pulumi-defang provider in state files
472524
string source = 1; // name of the secret
473525
// string target = 2;
474526
}
475527

476528
message Build {
477-
option deprecated = true; // still used by pulumi-defang provider
529+
option deprecated = true; // still used by pulumi-defang provider in state files
478530
string context = 1; // path or URL to the build context
479531
string dockerfile = 2; // path to the Dockerfile
480532
map<string, string> args = 3; // build-time variables
@@ -483,22 +535,22 @@ message Build {
483535
}
484536

485537
message HealthCheck {
486-
option deprecated = true; // still used by pulumi-defang provider
538+
option deprecated = true; // still used by pulumi-defang provider in state files
487539
repeated string test = 1;
488540
uint32 interval = 2; // in seconds
489541
uint32 timeout = 3; // in seconds; must be less than interval
490542
uint32 retries = 4;
491543
}
492544

493545
enum Network {
494-
option deprecated = true; // still used by pulumi-defang provider
546+
option deprecated = true; // still used by pulumi-defang provider in state files
495547
UNSPECIFIED = 0; // was: internal=false
496548
PRIVATE = 1; // was: internal=true
497549
PUBLIC = 2;
498550
}
499551

500552
message Service {
501-
option deprecated = true; // still used by pulumi-defang provider
553+
option deprecated = true; // still used by pulumi-defang provider in state files
502554
string name = 1;
503555
string image = 2;
504556
Platform platform = 3;
@@ -522,7 +574,7 @@ message Service {
522574
}
523575

524576
message StaticFiles {
525-
option deprecated = true; // still used by pulumi-defang provider
577+
option deprecated = true; // still used by pulumi-defang provider in state files
526578
string folder = 1;
527579
repeated string redirects = 2;
528580
}
@@ -580,16 +632,21 @@ message DelegateSubdomainZoneResponse { string zone = 1; }
580632

581633
enum SubscriptionTier {
582634
SUBSCRIPTION_TIER_UNSPECIFIED = 0;
583-
PERSONAL = 1;
584-
BASIC = 2;
635+
HOBBY = 1;
636+
PERSONAL = 2;
585637
PRO = 3;
586638
TEAM = 4;
587639
}
588640

641+
message SetOptionsRequest {
642+
bool training_opt_out = 1; // only valid for Pro users
643+
}
644+
589645
message WhoAmIResponse {
590646
string tenant = 1;
591647
string account = 2;
592648
string region = 3;
593649
string user_id = 4;
594650
SubscriptionTier tier = 5;
651+
bool training_opt_out = 6;
595652
}

protos/io/defang/v1/fabric_grpc_pb.d.ts

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,16 +34,20 @@ interface IFabricControllerService extends grpc.ServiceDefinition<grpc.UntypedSe
3434
putConfig: grpc.MethodDefinition<io_defang_v1_fabric_pb.PutConfigRequest, google_protobuf_empty_pb.Empty>;
3535
deleteConfigs: grpc.MethodDefinition<io_defang_v1_fabric_pb.DeleteConfigsRequest, google_protobuf_empty_pb.Empty>;
3636
listConfigs: grpc.MethodDefinition<io_defang_v1_fabric_pb.ListConfigsRequest, io_defang_v1_fabric_pb.ListConfigsResponse>;
37+
putDeployment: grpc.MethodDefinition<io_defang_v1_fabric_pb.PutDeploymentRequest, google_protobuf_empty_pb.Empty>;
38+
listDeployments: grpc.MethodDefinition<io_defang_v1_fabric_pb.ListDeploymentsRequest, io_defang_v1_fabric_pb.ListDeploymentsResponse>;
3739
createUploadURL: grpc.MethodDefinition<io_defang_v1_fabric_pb.UploadURLRequest, io_defang_v1_fabric_pb.UploadURLResponse>;
3840
delegateSubdomainZone: grpc.MethodDefinition<io_defang_v1_fabric_pb.DelegateSubdomainZoneRequest, io_defang_v1_fabric_pb.DelegateSubdomainZoneResponse>;
3941
deleteSubdomainZone: grpc.MethodDefinition<google_protobuf_empty_pb.Empty, google_protobuf_empty_pb.Empty>;
4042
getDelegateSubdomainZone: grpc.MethodDefinition<google_protobuf_empty_pb.Empty, io_defang_v1_fabric_pb.DelegateSubdomainZoneResponse>;
43+
setOptions: grpc.MethodDefinition<io_defang_v1_fabric_pb.SetOptionsRequest, google_protobuf_empty_pb.Empty>;
4144
whoAmI: grpc.MethodDefinition<google_protobuf_empty_pb.Empty, io_defang_v1_fabric_pb.WhoAmIResponse>;
4245
track: grpc.MethodDefinition<io_defang_v1_fabric_pb.TrackRequest, google_protobuf_empty_pb.Empty>;
4346
deleteMe: grpc.MethodDefinition<google_protobuf_empty_pb.Empty, google_protobuf_empty_pb.Empty>;
4447
verifyDNSSetup: grpc.MethodDefinition<io_defang_v1_fabric_pb.VerifyDNSSetupRequest, google_protobuf_empty_pb.Empty>;
4548
getSelectedProvider: grpc.MethodDefinition<io_defang_v1_fabric_pb.GetSelectedProviderRequest, io_defang_v1_fabric_pb.GetSelectedProviderResponse>;
4649
setSelectedProvider: grpc.MethodDefinition<io_defang_v1_fabric_pb.SetSelectedProviderRequest, google_protobuf_empty_pb.Empty>;
50+
canIUse: grpc.MethodDefinition<io_defang_v1_fabric_pb.CanIUseRequest, io_defang_v1_fabric_pb.CanIUseResponse>;
4751
}
4852

4953
export const FabricControllerService: IFabricControllerService;
@@ -75,16 +79,20 @@ export interface IFabricControllerServer extends grpc.UntypedServiceImplementati
7579
putConfig: grpc.handleUnaryCall<io_defang_v1_fabric_pb.PutConfigRequest, google_protobuf_empty_pb.Empty>;
7680
deleteConfigs: grpc.handleUnaryCall<io_defang_v1_fabric_pb.DeleteConfigsRequest, google_protobuf_empty_pb.Empty>;
7781
listConfigs: grpc.handleUnaryCall<io_defang_v1_fabric_pb.ListConfigsRequest, io_defang_v1_fabric_pb.ListConfigsResponse>;
82+
putDeployment: grpc.handleUnaryCall<io_defang_v1_fabric_pb.PutDeploymentRequest, google_protobuf_empty_pb.Empty>;
83+
listDeployments: grpc.handleUnaryCall<io_defang_v1_fabric_pb.ListDeploymentsRequest, io_defang_v1_fabric_pb.ListDeploymentsResponse>;
7884
createUploadURL: grpc.handleUnaryCall<io_defang_v1_fabric_pb.UploadURLRequest, io_defang_v1_fabric_pb.UploadURLResponse>;
7985
delegateSubdomainZone: grpc.handleUnaryCall<io_defang_v1_fabric_pb.DelegateSubdomainZoneRequest, io_defang_v1_fabric_pb.DelegateSubdomainZoneResponse>;
8086
deleteSubdomainZone: grpc.handleUnaryCall<google_protobuf_empty_pb.Empty, google_protobuf_empty_pb.Empty>;
8187
getDelegateSubdomainZone: grpc.handleUnaryCall<google_protobuf_empty_pb.Empty, io_defang_v1_fabric_pb.DelegateSubdomainZoneResponse>;
88+
setOptions: grpc.handleUnaryCall<io_defang_v1_fabric_pb.SetOptionsRequest, google_protobuf_empty_pb.Empty>;
8289
whoAmI: grpc.handleUnaryCall<google_protobuf_empty_pb.Empty, io_defang_v1_fabric_pb.WhoAmIResponse>;
8390
track: grpc.handleUnaryCall<io_defang_v1_fabric_pb.TrackRequest, google_protobuf_empty_pb.Empty>;
8491
deleteMe: grpc.handleUnaryCall<google_protobuf_empty_pb.Empty, google_protobuf_empty_pb.Empty>;
8592
verifyDNSSetup: grpc.handleUnaryCall<io_defang_v1_fabric_pb.VerifyDNSSetupRequest, google_protobuf_empty_pb.Empty>;
8693
getSelectedProvider: grpc.handleUnaryCall<io_defang_v1_fabric_pb.GetSelectedProviderRequest, io_defang_v1_fabric_pb.GetSelectedProviderResponse>;
8794
setSelectedProvider: grpc.handleUnaryCall<io_defang_v1_fabric_pb.SetSelectedProviderRequest, google_protobuf_empty_pb.Empty>;
95+
canIUse: grpc.handleUnaryCall<io_defang_v1_fabric_pb.CanIUseRequest, io_defang_v1_fabric_pb.CanIUseResponse>;
8896
}
8997

9098
export class FabricControllerClient extends grpc.Client {
@@ -165,6 +173,12 @@ export class FabricControllerClient extends grpc.Client {
165173
listConfigs(argument: io_defang_v1_fabric_pb.ListConfigsRequest, callback: grpc.requestCallback<io_defang_v1_fabric_pb.ListConfigsResponse>): grpc.ClientUnaryCall;
166174
listConfigs(argument: io_defang_v1_fabric_pb.ListConfigsRequest, metadataOrOptions: grpc.Metadata | grpc.CallOptions | null, callback: grpc.requestCallback<io_defang_v1_fabric_pb.ListConfigsResponse>): grpc.ClientUnaryCall;
167175
listConfigs(argument: io_defang_v1_fabric_pb.ListConfigsRequest, metadata: grpc.Metadata | null, options: grpc.CallOptions | null, callback: grpc.requestCallback<io_defang_v1_fabric_pb.ListConfigsResponse>): grpc.ClientUnaryCall;
176+
putDeployment(argument: io_defang_v1_fabric_pb.PutDeploymentRequest, callback: grpc.requestCallback<google_protobuf_empty_pb.Empty>): grpc.ClientUnaryCall;
177+
putDeployment(argument: io_defang_v1_fabric_pb.PutDeploymentRequest, metadataOrOptions: grpc.Metadata | grpc.CallOptions | null, callback: grpc.requestCallback<google_protobuf_empty_pb.Empty>): grpc.ClientUnaryCall;
178+
putDeployment(argument: io_defang_v1_fabric_pb.PutDeploymentRequest, metadata: grpc.Metadata | null, options: grpc.CallOptions | null, callback: grpc.requestCallback<google_protobuf_empty_pb.Empty>): grpc.ClientUnaryCall;
179+
listDeployments(argument: io_defang_v1_fabric_pb.ListDeploymentsRequest, callback: grpc.requestCallback<io_defang_v1_fabric_pb.ListDeploymentsResponse>): grpc.ClientUnaryCall;
180+
listDeployments(argument: io_defang_v1_fabric_pb.ListDeploymentsRequest, metadataOrOptions: grpc.Metadata | grpc.CallOptions | null, callback: grpc.requestCallback<io_defang_v1_fabric_pb.ListDeploymentsResponse>): grpc.ClientUnaryCall;
181+
listDeployments(argument: io_defang_v1_fabric_pb.ListDeploymentsRequest, metadata: grpc.Metadata | null, options: grpc.CallOptions | null, callback: grpc.requestCallback<io_defang_v1_fabric_pb.ListDeploymentsResponse>): grpc.ClientUnaryCall;
168182
createUploadURL(argument: io_defang_v1_fabric_pb.UploadURLRequest, callback: grpc.requestCallback<io_defang_v1_fabric_pb.UploadURLResponse>): grpc.ClientUnaryCall;
169183
createUploadURL(argument: io_defang_v1_fabric_pb.UploadURLRequest, metadataOrOptions: grpc.Metadata | grpc.CallOptions | null, callback: grpc.requestCallback<io_defang_v1_fabric_pb.UploadURLResponse>): grpc.ClientUnaryCall;
170184
createUploadURL(argument: io_defang_v1_fabric_pb.UploadURLRequest, metadata: grpc.Metadata | null, options: grpc.CallOptions | null, callback: grpc.requestCallback<io_defang_v1_fabric_pb.UploadURLResponse>): grpc.ClientUnaryCall;
@@ -177,6 +191,9 @@ export class FabricControllerClient extends grpc.Client {
177191
getDelegateSubdomainZone(argument: google_protobuf_empty_pb.Empty, callback: grpc.requestCallback<io_defang_v1_fabric_pb.DelegateSubdomainZoneResponse>): grpc.ClientUnaryCall;
178192
getDelegateSubdomainZone(argument: google_protobuf_empty_pb.Empty, metadataOrOptions: grpc.Metadata | grpc.CallOptions | null, callback: grpc.requestCallback<io_defang_v1_fabric_pb.DelegateSubdomainZoneResponse>): grpc.ClientUnaryCall;
179193
getDelegateSubdomainZone(argument: google_protobuf_empty_pb.Empty, metadata: grpc.Metadata | null, options: grpc.CallOptions | null, callback: grpc.requestCallback<io_defang_v1_fabric_pb.DelegateSubdomainZoneResponse>): grpc.ClientUnaryCall;
194+
setOptions(argument: io_defang_v1_fabric_pb.SetOptionsRequest, callback: grpc.requestCallback<google_protobuf_empty_pb.Empty>): grpc.ClientUnaryCall;
195+
setOptions(argument: io_defang_v1_fabric_pb.SetOptionsRequest, metadataOrOptions: grpc.Metadata | grpc.CallOptions | null, callback: grpc.requestCallback<google_protobuf_empty_pb.Empty>): grpc.ClientUnaryCall;
196+
setOptions(argument: io_defang_v1_fabric_pb.SetOptionsRequest, metadata: grpc.Metadata | null, options: grpc.CallOptions | null, callback: grpc.requestCallback<google_protobuf_empty_pb.Empty>): grpc.ClientUnaryCall;
180197
whoAmI(argument: google_protobuf_empty_pb.Empty, callback: grpc.requestCallback<io_defang_v1_fabric_pb.WhoAmIResponse>): grpc.ClientUnaryCall;
181198
whoAmI(argument: google_protobuf_empty_pb.Empty, metadataOrOptions: grpc.Metadata | grpc.CallOptions | null, callback: grpc.requestCallback<io_defang_v1_fabric_pb.WhoAmIResponse>): grpc.ClientUnaryCall;
182199
whoAmI(argument: google_protobuf_empty_pb.Empty, metadata: grpc.Metadata | null, options: grpc.CallOptions | null, callback: grpc.requestCallback<io_defang_v1_fabric_pb.WhoAmIResponse>): grpc.ClientUnaryCall;
@@ -195,4 +212,7 @@ export class FabricControllerClient extends grpc.Client {
195212
setSelectedProvider(argument: io_defang_v1_fabric_pb.SetSelectedProviderRequest, callback: grpc.requestCallback<google_protobuf_empty_pb.Empty>): grpc.ClientUnaryCall;
196213
setSelectedProvider(argument: io_defang_v1_fabric_pb.SetSelectedProviderRequest, metadataOrOptions: grpc.Metadata | grpc.CallOptions | null, callback: grpc.requestCallback<google_protobuf_empty_pb.Empty>): grpc.ClientUnaryCall;
197214
setSelectedProvider(argument: io_defang_v1_fabric_pb.SetSelectedProviderRequest, metadata: grpc.Metadata | null, options: grpc.CallOptions | null, callback: grpc.requestCallback<google_protobuf_empty_pb.Empty>): grpc.ClientUnaryCall;
215+
canIUse(argument: io_defang_v1_fabric_pb.CanIUseRequest, callback: grpc.requestCallback<io_defang_v1_fabric_pb.CanIUseResponse>): grpc.ClientUnaryCall;
216+
canIUse(argument: io_defang_v1_fabric_pb.CanIUseRequest, metadataOrOptions: grpc.Metadata | grpc.CallOptions | null, callback: grpc.requestCallback<io_defang_v1_fabric_pb.CanIUseResponse>): grpc.ClientUnaryCall;
217+
canIUse(argument: io_defang_v1_fabric_pb.CanIUseRequest, metadata: grpc.Metadata | null, options: grpc.CallOptions | null, callback: grpc.requestCallback<io_defang_v1_fabric_pb.CanIUseResponse>): grpc.ClientUnaryCall;
198218
}

0 commit comments

Comments
 (0)