Skip to content

Commit d48cc66

Browse files
author
awstools
committed
feat(client-device-farm): This release adds the support for VPC-ENI based connectivity for private devices on AWS Device Farm.
1 parent 8125968 commit d48cc66

File tree

3 files changed

+1499
-943
lines changed

3 files changed

+1499
-943
lines changed

clients/client-device-farm/src/models/models_0.ts

Lines changed: 69 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ export interface AccountSettings {
7272
/**
7373
* <p>When set to <code>true</code>, for private devices, Device Farm does not sign your app again. For public
7474
* devices, Device Farm always signs your apps again.</p>
75-
* <p>For more information about how Device Farm re-signs your apps, see <a href="https://aws.amazon.com/device-farm/faq/">Do you modify my app?</a> in the <i>AWS Device
75+
* <p>For more information about how Device Farm re-signs your apps, see <a href="http://aws.amazon.com/device-farm/faqs/">Do you modify my app?</a> in the <i>AWS Device
7676
* Farm FAQs</i>.</p>
7777
*/
7878
skipAppResign?: boolean;
@@ -466,8 +466,8 @@ export interface Rule {
466466
* TRUE or FALSE.</p>
467467
* <p>Supported operators: <code>EQUALS</code>
468468
* </p>
469-
* <p>Because remote debugging is <a href="https://docs.aws.amazon.com/devicefarm/latest/developerguide/history.html">no longer
470-
* supported</a>, this filter is ignored.</p>
469+
* <p>Because remote debugging is <a href="https://docs.aws.amazon.com/devicefarm/latest/developerguide/history.html">no
470+
* longer supported</a>, this filter is ignored.</p>
471471
* </dd>
472472
* </dl>
473473
*/
@@ -878,6 +878,26 @@ export interface CreateNetworkProfileResult {
878878
networkProfile?: NetworkProfile;
879879
}
880880

881+
/**
882+
* <p>Contains the VPC configuration data necessary to interface with AWS Device Farm's services.</p>
883+
*/
884+
export interface VpcConfig {
885+
/**
886+
* <p>An array of one or more security groups IDs in your Amazon VPC.</p>
887+
*/
888+
securityGroupIds: string[] | undefined;
889+
890+
/**
891+
* <p>An array of one or more subnet IDs in your Amazon VPC.</p>
892+
*/
893+
subnetIds: string[] | undefined;
894+
895+
/**
896+
* <p>The ID of the Amazon VPC.</p>
897+
*/
898+
vpcId: string | undefined;
899+
}
900+
881901
/**
882902
* <p>Represents a request to the create project operation.</p>
883903
*/
@@ -892,6 +912,11 @@ export interface CreateProjectRequest {
892912
* specified execution timeout value unless overridden when scheduling a run.</p>
893913
*/
894914
defaultJobTimeoutMinutes?: number;
915+
916+
/**
917+
* <p>The VPC security groups and subnets that are attached to a project.</p>
918+
*/
919+
vpcConfig?: VpcConfig;
895920
}
896921

897922
/**
@@ -919,6 +944,11 @@ export interface Project {
919944
* <p>When the project was created.</p>
920945
*/
921946
created?: Date;
947+
948+
/**
949+
* <p>The VPC security groups and subnets that are attached to a project.</p>
950+
*/
951+
vpcConfig?: VpcConfig;
922952
}
923953

924954
/**
@@ -1000,15 +1030,15 @@ export interface CreateRemoteAccessSessionRequest {
10001030
* devices in your remote debugging session. This key is required only if <code>remoteDebugEnabled</code> is
10011031
* set to <code>true</code>.</p>
10021032
* <p>Remote debugging is <a href="https://docs.aws.amazon.com/devicefarm/latest/developerguide/history.html">no
1003-
* longer supported</a>.</p>
1033+
* longer supported</a>.</p>
10041034
*/
10051035
sshPublicKey?: string;
10061036

10071037
/**
10081038
* <p>Set to <code>true</code> if you want to access devices remotely for debugging in
10091039
* your remote access session.</p>
10101040
* <p>Remote debugging is <a href="https://docs.aws.amazon.com/devicefarm/latest/developerguide/history.html">no
1011-
* longer supported</a>.</p>
1041+
* longer supported</a>.</p>
10121042
*/
10131043
remoteDebugEnabled?: boolean;
10141044

@@ -1034,7 +1064,7 @@ export interface CreateRemoteAccessSessionRequest {
10341064
* pass the same <code>clientId</code> value in each call to <code>CreateRemoteAccessSession</code>. This
10351065
* identifier is required only if <code>remoteDebugEnabled</code> is set to <code>true</code>.</p>
10361066
* <p>Remote debugging is <a href="https://docs.aws.amazon.com/devicefarm/latest/developerguide/history.html">no
1037-
* longer supported</a>.</p>
1067+
* longer supported</a>.</p>
10381068
*/
10391069
clientId?: string;
10401070

@@ -1067,7 +1097,7 @@ export interface CreateRemoteAccessSessionRequest {
10671097
/**
10681098
* <p>When set to <code>true</code>, for private devices, Device Farm does not sign your app again. For public
10691099
* devices, Device Farm always signs your apps again.</p>
1070-
* <p>For more information on how Device Farm modifies your uploads during tests, see <a href="https://aws.amazon.com/device-farm/faq/">Do you modify my app?</a>
1100+
* <p>For more information on how Device Farm modifies your uploads during tests, see <a href="http://aws.amazon.com/device-farm/faqs/">Do you modify my app?</a>
10711101
* </p>
10721102
*/
10731103
skipAppResign?: boolean;
@@ -1250,7 +1280,7 @@ export interface Device {
12501280
* <p>This flag is set to <code>true</code> if remote debugging is enabled for the
12511281
* device.</p>
12521282
* <p>Remote debugging is <a href="https://docs.aws.amazon.com/devicefarm/latest/developerguide/history.html">no
1253-
* longer supported</a>.</p>
1283+
* longer supported</a>.</p>
12541284
*/
12551285
remoteDebugEnabled?: boolean;
12561286

@@ -1431,7 +1461,7 @@ export interface RemoteAccessSession {
14311461
* <p>This flag is set to <code>true</code> if remote debugging is enabled for the remote
14321462
* access session.</p>
14331463
* <p>Remote debugging is <a href="https://docs.aws.amazon.com/devicefarm/latest/developerguide/history.html">no
1434-
* longer supported</a>.</p>
1464+
* longer supported</a>.</p>
14351465
*/
14361466
remoteDebugEnabled?: boolean;
14371467

@@ -1450,15 +1480,15 @@ export interface RemoteAccessSession {
14501480
* <p>IP address of the EC2 host where you need to connect to remotely debug devices.
14511481
* Only returned if remote debugging is enabled for the remote access session.</p>
14521482
* <p>Remote debugging is <a href="https://docs.aws.amazon.com/devicefarm/latest/developerguide/history.html">no
1453-
* longer supported</a>.</p>
1483+
* longer supported</a>.</p>
14541484
*/
14551485
hostAddress?: string;
14561486

14571487
/**
14581488
* <p>Unique identifier of your client for the remote access session. Only returned if
14591489
* remote debugging is enabled for the remote access session.</p>
14601490
* <p>Remote debugging is <a href="https://docs.aws.amazon.com/devicefarm/latest/developerguide/history.html">no
1461-
* longer supported</a>.</p>
1491+
* longer supported</a>.</p>
14621492
*/
14631493
clientId?: string;
14641494

@@ -1484,7 +1514,7 @@ export interface RemoteAccessSession {
14841514
* <p>Unique device identifier for the remote device. Only returned if remote debugging
14851515
* is enabled for the remote access session.</p>
14861516
* <p>Remote debugging is <a href="https://docs.aws.amazon.com/devicefarm/latest/developerguide/history.html">no
1487-
* longer supported</a>.</p>
1517+
* longer supported</a>.</p>
14881518
*/
14891519
deviceUdid?: string;
14901520

@@ -1512,10 +1542,15 @@ export interface RemoteAccessSession {
15121542
/**
15131543
* <p>When set to <code>true</code>, for private devices, Device Farm does not sign your app again. For public
15141544
* devices, Device Farm always signs your apps again.</p>
1515-
* <p>For more information about how Device Farm re-signs your apps, see <a href="https://aws.amazon.com/device-farm/faq/">Do you modify my app?</a> in the <i>AWS Device
1545+
* <p>For more information about how Device Farm re-signs your apps, see <a href="http://aws.amazon.com/device-farm/faqs/">Do you modify my app?</a> in the <i>AWS Device
15161546
* Farm FAQs</i>.</p>
15171547
*/
15181548
skipAppResign?: boolean;
1549+
1550+
/**
1551+
* <p>The VPC security groups and subnets that are attached to a project.</p>
1552+
*/
1553+
vpcConfig?: VpcConfig;
15191554
}
15201555

15211556
/**
@@ -3362,8 +3397,8 @@ export interface DeviceFilter {
33623397
* <p>Whether the device is enabled for remote debugging. Valid values are TRUE or FALSE.</p>
33633398
* <p>Supported operators: <code>EQUALS</code>
33643399
* </p>
3365-
* <p>Because remote debugging is <a href="https://docs.aws.amazon.com/devicefarm/latest/developerguide/history.html">no longer
3366-
* supported</a>, this filter is ignored.</p>
3400+
* <p>Because remote debugging is <a href="https://docs.aws.amazon.com/devicefarm/latest/developerguide/history.html">no
3401+
* longer supported</a>, this filter is ignored.</p>
33673402
* </dd>
33683403
* <dt>INSTANCE_ARN</dt>
33693404
* <dd>
@@ -3740,7 +3775,7 @@ export interface Run {
37403775
/**
37413776
* <p>When set to <code>true</code>, for private devices, Device Farm does not sign your app again. For public
37423777
* devices, Device Farm always signs your apps again.</p>
3743-
* <p>For more information about how Device Farm re-signs your apps, see <a href="https://aws.amazon.com/device-farm/faq/">Do you modify my app?</a> in the <i>AWS Device
3778+
* <p>For more information about how Device Farm re-signs your apps, see <a href="http://aws.amazon.com/device-farm/faqs/">Do you modify my app?</a> in the <i>AWS Device
37443779
* Farm FAQs</i>.</p>
37453780
*/
37463781
skipAppResign?: boolean;
@@ -3754,6 +3789,11 @@ export interface Run {
37543789
* <p>The results of a device filter used to select the devices for a test run.</p>
37553790
*/
37563791
deviceSelectionResult?: DeviceSelectionResult;
3792+
3793+
/**
3794+
* <p>The VPC security groups and subnets that are attached to a project.</p>
3795+
*/
3796+
vpcConfig?: VpcConfig;
37573797
}
37583798

37593799
/**
@@ -5870,7 +5910,7 @@ export interface ExecutionConfiguration {
58705910
/**
58715911
* <p>When set to <code>true</code>, for private devices, Device Farm does not sign your app again. For public
58725912
* devices, Device Farm always signs your apps again.</p>
5873-
* <p>For more information about how Device Farm re-signs your apps, see <a href="https://aws.amazon.com/device-farm/faq/">Do you modify my app?</a> in the <i>AWS Device
5913+
* <p>For more information about how Device Farm re-signs your apps, see <a href="http://aws.amazon.com/device-farm/faqs/">Do you modify my app?</a> in the <i>AWS Device
58745914
* Farm FAQs</i>.</p>
58755915
*/
58765916
skipAppResign?: boolean;
@@ -6300,6 +6340,11 @@ export interface UpdateProjectRequest {
63006340
* <p>The number of minutes a test run in the project executes before it times out.</p>
63016341
*/
63026342
defaultJobTimeoutMinutes?: number;
6343+
6344+
/**
6345+
* <p>The VPC security groups and subnets that are attached to a project.</p>
6346+
*/
6347+
vpcConfig?: VpcConfig;
63036348
}
63046349

63056350
/**
@@ -6513,6 +6558,13 @@ export const CreateNetworkProfileResultFilterSensitiveLog = (obj: CreateNetworkP
65136558
...obj,
65146559
});
65156560

6561+
/**
6562+
* @internal
6563+
*/
6564+
export const VpcConfigFilterSensitiveLog = (obj: VpcConfig): any => ({
6565+
...obj,
6566+
});
6567+
65166568
/**
65176569
* @internal
65186570
*/

clients/client-device-farm/src/protocols/Aws_json1_1.ts

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -411,6 +411,7 @@ import {
411411
UpdateVPCEConfigurationRequest,
412412
UpdateVPCEConfigurationResult,
413413
Upload,
414+
VpcConfig,
414415
VPCEConfiguration,
415416
} from "../models/models_0";
416417

@@ -5468,6 +5469,7 @@ const serializeAws_json1_1CreateProjectRequest = (input: CreateProjectRequest, c
54685469
return {
54695470
...(input.defaultJobTimeoutMinutes != null && { defaultJobTimeoutMinutes: input.defaultJobTimeoutMinutes }),
54705471
...(input.name != null && { name: input.name }),
5472+
...(input.vpcConfig != null && { vpcConfig: serializeAws_json1_1VpcConfig(input.vpcConfig, context) }),
54715473
};
54725474
};
54735475

@@ -6338,6 +6340,7 @@ const serializeAws_json1_1UpdateProjectRequest = (input: UpdateProjectRequest, c
63386340
...(input.arn != null && { arn: input.arn }),
63396341
...(input.defaultJobTimeoutMinutes != null && { defaultJobTimeoutMinutes: input.defaultJobTimeoutMinutes }),
63406342
...(input.name != null && { name: input.name }),
6343+
...(input.vpcConfig != null && { vpcConfig: serializeAws_json1_1VpcConfig(input.vpcConfig, context) }),
63416344
};
63426345
};
63436346

@@ -6377,6 +6380,32 @@ const serializeAws_json1_1UpdateVPCEConfigurationRequest = (
63776380
};
63786381
};
63796382

6383+
const serializeAws_json1_1VpcConfig = (input: VpcConfig, context: __SerdeContext): any => {
6384+
return {
6385+
...(input.securityGroupIds != null && {
6386+
securityGroupIds: serializeAws_json1_1VpcSecurityGroupIds(input.securityGroupIds, context),
6387+
}),
6388+
...(input.subnetIds != null && { subnetIds: serializeAws_json1_1VpcSubnetIds(input.subnetIds, context) }),
6389+
...(input.vpcId != null && { vpcId: input.vpcId }),
6390+
};
6391+
};
6392+
6393+
const serializeAws_json1_1VpcSecurityGroupIds = (input: string[], context: __SerdeContext): any => {
6394+
return input
6395+
.filter((e: any) => e != null)
6396+
.map((entry) => {
6397+
return entry;
6398+
});
6399+
};
6400+
6401+
const serializeAws_json1_1VpcSubnetIds = (input: string[], context: __SerdeContext): any => {
6402+
return input
6403+
.filter((e: any) => e != null)
6404+
.map((entry) => {
6405+
return entry;
6406+
});
6407+
};
6408+
63806409
const deserializeAws_json1_1AccountSettings = (output: any, context: __SerdeContext): AccountSettings => {
63816410
return {
63826411
awsAccountNumber: __expectString(output.awsAccountNumber),
@@ -7554,6 +7583,7 @@ const deserializeAws_json1_1Project = (output: any, context: __SerdeContext): Pr
75547583
output.created != null ? __expectNonNull(__parseEpochTimestamp(__expectNumber(output.created))) : undefined,
75557584
defaultJobTimeoutMinutes: __expectInt32(output.defaultJobTimeoutMinutes),
75567585
name: __expectString(output.name),
7586+
vpcConfig: output.vpcConfig != null ? deserializeAws_json1_1VpcConfig(output.vpcConfig, context) : undefined,
75577587
} as any;
75587588
};
75597589

@@ -7645,6 +7675,7 @@ const deserializeAws_json1_1RemoteAccessSession = (output: any, context: __Serde
76457675
status: __expectString(output.status),
76467676
stopped:
76477677
output.stopped != null ? __expectNonNull(__parseEpochTimestamp(__expectNumber(output.stopped))) : undefined,
7678+
vpcConfig: output.vpcConfig != null ? deserializeAws_json1_1VpcConfig(output.vpcConfig, context) : undefined,
76487679
} as any;
76497680
};
76507681

@@ -7739,6 +7770,7 @@ const deserializeAws_json1_1Run = (output: any, context: __SerdeContext): Run =>
77397770
testSpecArn: __expectString(output.testSpecArn),
77407771
totalJobs: __expectInt32(output.totalJobs),
77417772
type: __expectString(output.type),
7773+
vpcConfig: output.vpcConfig != null ? deserializeAws_json1_1VpcConfig(output.vpcConfig, context) : undefined,
77427774
webUrl: __expectString(output.webUrl),
77437775
} as any;
77447776
};
@@ -8207,6 +8239,17 @@ const deserializeAws_json1_1Uploads = (output: any, context: __SerdeContext): Up
82078239
return retVal;
82088240
};
82098241

8242+
const deserializeAws_json1_1VpcConfig = (output: any, context: __SerdeContext): VpcConfig => {
8243+
return {
8244+
securityGroupIds:
8245+
output.securityGroupIds != null
8246+
? deserializeAws_json1_1VpcSecurityGroupIds(output.securityGroupIds, context)
8247+
: undefined,
8248+
subnetIds: output.subnetIds != null ? deserializeAws_json1_1VpcSubnetIds(output.subnetIds, context) : undefined,
8249+
vpcId: __expectString(output.vpcId),
8250+
} as any;
8251+
};
8252+
82108253
const deserializeAws_json1_1VPCEConfiguration = (output: any, context: __SerdeContext): VPCEConfiguration => {
82118254
return {
82128255
arn: __expectString(output.arn),
@@ -8229,6 +8272,30 @@ const deserializeAws_json1_1VPCEConfigurations = (output: any, context: __SerdeC
82298272
return retVal;
82308273
};
82318274

8275+
const deserializeAws_json1_1VpcSecurityGroupIds = (output: any, context: __SerdeContext): string[] => {
8276+
const retVal = (output || [])
8277+
.filter((e: any) => e != null)
8278+
.map((entry: any) => {
8279+
if (entry === null) {
8280+
return null as any;
8281+
}
8282+
return __expectString(entry) as any;
8283+
});
8284+
return retVal;
8285+
};
8286+
8287+
const deserializeAws_json1_1VpcSubnetIds = (output: any, context: __SerdeContext): string[] => {
8288+
const retVal = (output || [])
8289+
.filter((e: any) => e != null)
8290+
.map((entry: any) => {
8291+
if (entry === null) {
8292+
return null as any;
8293+
}
8294+
return __expectString(entry) as any;
8295+
});
8296+
return retVal;
8297+
};
8298+
82328299
const deserializeMetadata = (output: __HttpResponse): __ResponseMetadata => ({
82338300
httpStatusCode: output.statusCode,
82348301
requestId: output.headers["x-amzn-requestid"] ?? output.headers["x-amzn-request-id"],

0 commit comments

Comments
 (0)