blob: f858915b83c744cc5561750fa14cb764c8b95602 [file] [log] [blame]
import {Injectable} from "@angular/core";
import * as grpcWeb from "grpc-web";
import {MoblabRpcServiceClient} from "./moblabrpc_grpc_web_pb";
import {
AbortJobsRequest,
AbortJobsResponse,
AddAttributeToDutsRequest,
AddAttributeToDutsResponse,
AddLabelToDutsRequest,
AddLabelToDutsResponse,
AddPoolToDutsRequest,
AddPoolToDutsResponse,
ConnectedDutFirmwareInfo,
ConnectedDutInfo,
DutTask,
EnrollDutsRequest,
EnrollDutsResponse,
GetCloudConfigurationRequest,
GetCloudConfigurationResponse,
GetDutWifiInfoRequest,
GetDutWifiInfoResponse,
GetDutDetailsRequest,
GetDutDetailsResponse,
GetDutTasksRequest,
GetDutTasksResponse,
GetJobDetailsRequest,
GetJobDetailsResponse,
GetJobIdsRequest,
GetJobIdsResponse,
GetJobsRequest,
GetJobsResponse,
GetNetworkInfoRequest,
GetNetworkInfoResponse,
GetNumDutTasksRequest,
GetNumDutTasksResponse,
GetNumJobsRequest,
GetNumJobsResponse,
GetVersionInfoRequest,
GetVersionInfoResponse,
Job,
ListBuildTargetsRequest,
ListBuildTargetsResponse,
ListBuildVersionsRequest,
ListBuildVersionsResponse,
ListConnectedDutsFirmwareResponse,
ListConnectedDutsRequest,
ListConnectedDutsResponse,
ListMilestonesRequest,
ListMilestonesResponse,
ListModelsRequest,
ListModelsResponse,
ListPoolsRequest,
ListPoolsResponse,
RebootMoblabRequest,
RebootMoblabResponse,
RemoveAttributeFromDutsRequest,
RemoveAttributeFromDutsResponse,
RemoveLabelFromDutsRequest,
RemoveLabelFromDutsResponse,
RemovePoolFromDutsRequest,
RemovePoolFromDutsResponse,
RepairHostRequest,
RepairHostResponse,
ReverifyHostRequest,
ReverifyHostResponse,
RunCtsSuiteRequest,
RunGtsSuiteRequest,
RunMemoryQualificationSuiteRequest,
RunStorageQualificationSuiteRequest,
RunSuiteRequest,
RunSuiteResponse,
SendMoblabScreenshotRequest,
SendMoblabScreenshotResponse,
SetCloudConfigurationRequest,
SetCloudConfigurationResponse,
SetDutWifiInfoRequest,
SetDutWifiInfoResponse,
UpdateDutsFirmwareRequest,
UpdateDutsFirmwareResponse
} from "./moblabrpc_pb";
@Injectable({providedIn: "root"})
export class MoblabGrpcService {
moblabRpcService = null;
constructor() {
let url = new URL(window.location.href);
let service_url = new String(url.protocol);
service_url = service_url.concat("//", url.hostname, ":", "6001");
console.log(service_url);
this.moblabRpcService = new MoblabRpcServiceClient(
service_url.toString(),
null,
null
);
}
/** Method for submitting feedback and screenshots to Moblab-associated GCS
* bucket.
* @param callback: function invoked in success scenarios.
* @param error_callback: function invoked in failure scenarios.
* @param description: User-submitted text describing motivation of feedback
* submission.
* @param screenshot: Serialized, Base64 png screenshot image.
* */
sendMoblabScreenshot(
callback: (message: string) => void,
error_callback: (message: string) => void,
description,
screenshot
) {
const request = new SendMoblabScreenshotRequest();
request.setDescription(description);
request.setScreenshot(screenshot.substring(screenshot.indexOf(',') + 1));
const call = this.moblabRpcService.send_moblab_screenshot(
request,
{},
(response) => {error_callback(response.message);}
);
call.on("data", (response) => {callback(response.getMessage())});
}
/** Generic run suite method that can run any of the specific suites defined below
* ( with no suite-specific options ).
* @param callback: function invoked in success scenarios.
* @param error_callback: function invoked in failure scenarios.
* @param suite_name: ex. CTS, GTS.
* @param build: String name of build the suite is being run under.
* @param buildtarget: ex. XXX-release/R99-99999.9.9
* @param model: Device model.
* @param pool: String identifer of a group of DUTs
* (as configured in the 'Manage DUTs' component )
* */
runSuite(
callback: (response: RunSuiteResponse) => void,
error_callback: (err: grpcWeb.Error, response: RunSuiteResponse) => void,
suite_name: string,
build: string,
milestone: string,
buildtarget: string,
model: string,
pool: string,
) {
const request = new RunSuiteRequest();
request.setSuite(suite_name);
request.setBuildVersion(build);
request.setMilestone(milestone);
request.setBuildTarget(buildtarget);
request.setModel(model);
request.setPool(pool);
const call = this.moblabRpcService.run_suite(
request,
{},
error_callback
);
call.on("data", callback);
}
/** Starts CTS suite run.
* @param callback: function invoked in success scenarios.
* @param error_callback: function invoked in failure scenarios.
* @param android_version: ex. String identifier indicating the android
* version the CTS suite is being run for (ex. CTS_N ).
* @param build: String name of build the suite is being run under.
* @param buildtarget: ex. XXX-release/R99-99999.9.9
* @param model: Device model.
* @param pool: String identifer of a group of DUTs
* (as configured in the 'Manage DUTs' component ).
* @param specific_modules_list: Comma separated string containing names of
* CTS modules. If not empty, only modules in this list will be run as a
* part of suite execution.
* */
runCtsSuite(
callback: (response: RunSuiteResponse) => void,
error_callback: (err: grpcWeb.Error, response: RunSuiteResponse) => void,
android_version: string,
build: string,
milestone: string,
buildtarget: string,
model: string,
pool: string,
specific_modules_list: string[],
) {
const request = new RunCtsSuiteRequest();
request.setAndroidVersion(android_version);
request.setBuildVersion(build);
request.setBuildTarget(buildtarget);
request.setMilestone(milestone);
request.setModel(model);
request.setPool(pool);
request.setSpecificModulesList(specific_modules_list);
const call = this.moblabRpcService.run_cts_suite(
request,
{},
error_callback
);
call.on("data", callback);
}
/** Starts GTS suite run.
* @param callback: function invoked in success scenarios.
* @param error_callback: function invoked in failure scenarios.
* @param build: String name of build the suite is being run under.
* @param buildtarget: ex. XXX-release/R99-99999.9.9
* @param model: Device model.
* @param pool: String identifer of a group of DUTs
* (as configured in the 'Manage DUTs' component ).
* @param specific_modules_list: Comma separated string containing names ofss
* GTS modules. If not empty, only modules in this list will be run as a
* part of suite execution.
* */
runGtsSuite(
callback: (response: RunSuiteResponse) => void,
error_callback: (err: grpcWeb.Error, response: RunSuiteResponse) => void,
build: string,
milestone: string,
buildtarget: string,
model: string,
pool: string,
specific_modules_list: string[],
) {
const request = new RunGtsSuiteRequest();
request.setBuildVersion(build);
request.setBuildTarget(buildtarget);
request.setModel(model);
request.setMilestone(milestone);
request.setPool(pool);
request.setSpecificModulesList(specific_modules_list);
const call = this.moblabRpcService.run_gts_suite(
request,
{},
error_callback
);
call.on("data", callback);
}
/** Starts hardware storage qualification suite run.
* @param callback: function invoked in success scenarios.
* @param error_callback: function invoked in failure scenarios.
* @param build: String name of build the suite is being run under.
* @param buildtarget: ex. XXX-release/R99-99999.9.9
* @param model: Device model.
* @param pool: String identifer of a group of DUTs
* (as configured in the 'Manage DUTs' component ).
* @param avl_process_bug_id: ID of buganizer issue associated with this
* storage qualification run.
* @param avl_part_number: Number identifier of part for which qualification
* is being run.
* @param variation: Number enum that identifies a variation of storage qual
* to run.
* */
runStorageQualificationSuite(
callback: (response: RunSuiteResponse) => void,
error_callback: (err: grpcWeb.Error, response: RunSuiteResponse) => void,
build: string,
milestone: string,
buildtarget: string,
model: string,
pool: string,
avl_process_bug_id: string,
avl_part_number: string,
variation: number
) {
const request = new RunStorageQualificationSuiteRequest();
request.setBuildVersion(build);
request.setMilestone(milestone);
request.setBuildTarget(buildtarget);
request.setModel(model);
request.setPool(pool);
request.setAvlProcessBugId(avl_process_bug_id);
request.setAvlPartNumber(avl_part_number);
request.setVariation(variation);
const call = this.moblabRpcService.run_storage_qualification_suite(
request,
{},
error_callback
);
call.on("data", callback);
}
/** Starts hardware memory qualification suite run.
* @param callback: function invoked in success scenarios.
* @param error_callback: function invoked in failure scenarios.
* @param build: String name of build the suite is being run under.
* @param buildtarget: ex. XXX-release/R99-99999.9.9
* @param model: Device model.
* @param pool: String identifer of a group of DUTs
* (as configured in the 'Manage DUTs' component ).
* @param avl_process_bug_id: ID of buganizer issue associated with this
* qualification run.
* @param avl_part_number: Number identifier of part for which qualification
* is being run.
* */
runMemoryQualificationSuite(
callback: (response: RunSuiteResponse) => void,
error_callback: (err: grpcWeb.Error, response: RunSuiteResponse) => void,
build: string,
milestone: string,
buildtarget: string,
model: string,
pool: string,
avl_process_bug_id: string,
avl_part_number: string
) {
const request = new RunMemoryQualificationSuiteRequest();
request.setBuildVersion(build);
request.setMilestone(milestone);
request.setBuildTarget(buildtarget);
request.setModel(model);
request.setPool(pool);
request.setAvlProcessBugId(avl_process_bug_id);
request.setAvlPartNumber(avl_part_number);
const call = this.moblabRpcService.run_memory_qualification_suite(
request,
{},
error_callback
);
call.on("data", callback);
}
listConnectedDuts(callback: (x: ConnectedDutInfo[]) => void) {
const request = new ListConnectedDutsRequest();
const call = this.moblabRpcService.list_connected_duts(
request,
{},
(err: grpcWeb.Error, response: ListConnectedDutsResponse) => {
console.log(err);
}
);
call.on("data", (response: ListConnectedDutsResponse) => {
callback(response.getDutsList());
});
}
getDutDetails(callback: (x: ConnectedDutInfo) => void,
errorHandlingCallback: (errorMsg: string) => void,
dut: string) {
const request = new GetDutDetailsRequest();
request.setDut(dut);
const call = this.moblabRpcService.get_dut_details(
request,
{},
(err: grpcWeb.Error, response: GetDutDetailsResponse) => {
console.log(
"Failed get_dut_details RPC call. Request: ",
request,
"Response: ",
err
);
errorHandlingCallback(err.message);
}
);
call.on("data", (response: GetDutDetailsResponse) => {
callback(response.getDutDetail());
});
}
getNumJobs(callback: (x: number) => void,
id_filter?: string,
name_filter?: string, created_time_lt?: number, created_time_gt?: number,
status_filter?: Job.QueueStatus, rel_filter?: Job.Relationship,
parent_id_filter?: string, dut_hostname_filter?: string) {
const request = new GetNumJobsRequest();
if (id_filter) {
request.setIdFilter(id_filter);
}
if (name_filter) {
request.setNameFilter(name_filter);
}
if (created_time_lt) {
request.setCreatedTimeLt(created_time_lt);
}
if (created_time_gt) {
request.setCreatedTimeGt(created_time_gt);
}
if (status_filter) {
request.setStatusFilter(status_filter);
}
if (rel_filter) {
request.setRelFilter(rel_filter);
}
if (parent_id_filter) {
request.setParentIdFilter(parent_id_filter);
}
if (dut_hostname_filter) {
request.setDutHostnameFilter(dut_hostname_filter);
}
const call = this.moblabRpcService.get_num_jobs(
request,
{},
(err: grpcWeb.Error, response: GetNumJobsResponse) => {
console.log(
"Failed get_num_jobs RPC call. Request: ",
request,
"Response: ",
err
);
}
);
call.on("data", (response: GetNumJobsResponse) => {
callback(response.getNumJobs());
});
}
getJobs(
callback: (x: Job[]) => void,
errorHandlingCallback: (errorMsg: string) => void,
queryStart: number, queryLimit: number, id_filter?: string,
name_filter?: string, created_time_lt?: number, created_time_gt?: number,
status_filter?: Job.QueueStatus, rel_filter?: Job.Relationship,
parent_id_filter?: string, dut_hostname_filter?: string) {
const request = new GetJobsRequest();
request.setQueryStart(queryStart);
request.setQueryLimit(queryLimit);
if (id_filter) {
request.setIdFilter(id_filter);
}
if (name_filter) {
request.setNameFilter(name_filter);
}
if (created_time_lt) {
request.setCreatedTimeLt(created_time_lt);
}
if (created_time_gt) {
request.setCreatedTimeGt(created_time_gt);
}
if (status_filter) {
request.setStatusFilter(status_filter);
}
if (rel_filter) {
request.setRelFilter(rel_filter);
}
if (parent_id_filter) {
request.setParentIdFilter(parent_id_filter);
}
if (dut_hostname_filter) {
request.setDutHostnameFilter(dut_hostname_filter);
}
const call = this.moblabRpcService.get_jobs(
request,
{},
(err: grpcWeb.Error, response: GetJobsResponse) => {
errorHandlingCallback(err.message);
console.log('Failed get_jobs RPC call. Request: ', request, 'Response: ', err);
}
);
call.on("data", (response: GetJobsResponse) => {
callback(response.getJobsList());
});
}
getJobIds(
callback: (job_ids: Number[]) => void,
errorHandlingCallback: (errorMsg: string) => void,
queryStart: number,
queryLimit: number,
id_filter?: string,
name_filter?: string,
created_time_lt?: number,
created_time_gt?: number,
status_filter?: Job.QueueStatus,
rel_filter?: Job.Relationship,
parent_id_filter?: string,
dut_hostname_filter?: string
) {
/**
* Calls moblab RPC for a list of job IDs matching given query parameters.
* @param callback: Invoked on successful return of job IDs.
* @param errorCallback: Invoked on call failures.
* @param queryStart: Number representing index for start of returned values.
* @param queryLimit: Number representing max number of values to return.
* @param id_filter: String filter for job id.
* @param name_filter: String filter for job name.
* @param created_time_lt: A unix timestamp in seconds granularity the sets
* upper bound for jobs returned.
* @param created_time_gt: A unix timestamp in seconds granularity the sets
* lower bound for jobs returned.
* @param status_filter: Job.QueueStatus filter for returned jobs.
* @param rel_filter: Job.Relationship (child vs parent) for returned jobs.
* @param parent_id_filter: String that filters jobs by parent job id.
* @param dut_hostname_filter: String that filters jobs by associated
* DUT.
*/
const request = new GetJobsRequest();
request.setQueryStart(queryStart);
request.setQueryLimit(queryLimit);
if (id_filter) {
request.setIdFilter(id_filter)
}
if (name_filter) {
request.setNameFilter(name_filter)
}
if (created_time_lt) {
request.setCreatedTimeLt(created_time_lt)
}
if (created_time_gt) {
request.setCreatedTimeGt(created_time_gt)
}
if (status_filter) {
request.setStatusFilter(status_filter)
}
if (rel_filter) {
request.setRelFilter(rel_filter)
}
if (parent_id_filter) {
request.setParentIdFilter(parent_id_filter);
}
if (dut_hostname_filter) {
request.setDutHostnameFilter(dut_hostname_filter);
}
const call = this.moblabRpcService.get_job_ids(
request,
{},
(err: grpcWeb.Error, response: GetJobIdsResponse) => errorHandlingCallback(err.message)
);
call.on('data', (response: GetJobIdsResponse) => {
callback(response.getJobIdsList())
});
}
abortJobs(callback: (resultMsg: string) => void,
errorHandlingCallback: (errorMsg: string) => void,
jobIds: number[]) {
const request = new AbortJobsRequest();
request.setJobIdsList(jobIds);
const call = this.moblabRpcService.abort_jobs(
request,
{},
(err: grpcWeb.Error, response: AbortJobsResponse) => {
errorHandlingCallback(err.message);
}
);
call.on("data", (response: AbortJobsResponse) => {
callback(response.getMessage());
});
}
getJobDetails(callback: (x: Job) => void,
errorHandlingCallback: (errorMsg: string) => void,
id: string) {
const request = new GetJobDetailsRequest();
request.setId(id);
const call = this.moblabRpcService.get_job_details(
request,
{},
(err: grpcWeb.Error, response: GetJobDetailsResponse) => {
console.log(
"Failed get_job_details RPC call. Request: ",
request,
"Response: ",
err
);
errorHandlingCallback(err.message);
}
);
call.on("data", (response: GetJobDetailsResponse) => {
callback(response.getJobDetail());
});
}
listBuildTargets(
callback: (x: string[]) => void,
errorHandlingCallback: (err_msg: string) => void
) {
const request = new ListBuildTargetsRequest();
const call = this.moblabRpcService.list_build_targets(
request,
{},
(err: grpcWeb.Error, response: ListBuildTargetsResponse) => {
errorHandlingCallback(err.message);
}
);
call.on("data", (response: ListBuildTargetsResponse) => {
console.log(response);
callback(response.getBuildTargetsList());
});
}
listMilestones(
buildtarget: string,
callback: (x: string[]) => void,
errorHandlingCallback: (err_msg: string) => void
) {
const request = new ListMilestonesRequest();
request.setBuildTarget(buildtarget);
const call = this.moblabRpcService.list_milestones(
request,
{},
(err: grpcWeb.Error, response: ListMilestonesResponse) => {
errorHandlingCallback(err.message);
},
);
call.on("data", (response: ListMilestonesResponse) => {
callback(response.getMilestonesList());
});
}
listBuildVersions(
buildtarget: string,
milestone: string,
callback: (x: string[]) => void,
errorHandlingCallback: (err_msg: string) => void
) {
const request = new ListBuildVersionsRequest();
request.setBuildTarget(buildtarget);
request.setMilestone(milestone);
const call = this.moblabRpcService.list_build_versions(
request,
{},
(err: grpcWeb.Error, response: ListBuildVersionsResponse) => {
errorHandlingCallback(err.message);
}
);
call.on("data", (response: ListBuildVersionsResponse) => {
callback(response.getBuildVersionsList());
});
}
listModels(
callback: (x: string[]) => void,
errorHandlingCallback: (err_msg: string) => void
) {
const request = new ListModelsRequest();
const call = this.moblabRpcService.list_models(
request,
{},
(err: grpcWeb.Error, response: ListModelsResponse) => {
errorHandlingCallback(err.message);
}
);
call.on("data", (response: ListModelsResponse) => {
callback(response.getModelsList());
});
}
listPools(
callback: (x: string[]) => void,
errorHandlingCallback: (err_msg: string) => void
) {
const request = new ListPoolsRequest();
const call = this.moblabRpcService.list_pools(
request,
{},
(err: grpcWeb.Error, response: ListPoolsResponse) => {
errorHandlingCallback(err.message);
}
);
call.on("data", (response: ListPoolsResponse) => {
callback(response.getPoolsList());
});
}
enrollDuts(ips: string[],
callback: () => void,
errorCallback: (msg: string) => void) {
const request = new EnrollDutsRequest();
request.setIpsList(ips);
const call = this.moblabRpcService.enroll_duts(
request,
{},
(err: grpcWeb.Error, response: EnrollDutsResponse) => {
errorCallback(err.message);
}
);
call.on("data", (response: EnrollDutsResponse) => {
callback();
});
}
unenrollDuts(ips: string[],
callback: () => void,
errorCallback: (msg: string) => void) {
const request = new EnrollDutsRequest();
request.setIpsList(ips);
const call = this.moblabRpcService.unenroll_duts(
request,
{},
(err: grpcWeb.Error, response: EnrollDutsResponse) => {
errorCallback(err.message);
}
);
call.on("data", (response: EnrollDutsResponse) => {
callback();
});
}
listConnectedDutsFirmware(callback: (x: ConnectedDutFirmwareInfo[]) => void) {
const request = new ListConnectedDutsRequest();
const call = this.moblabRpcService.list_connected_duts_firmware(
request,
{},
(err: grpcWeb.Error, response: ListConnectedDutsFirmwareResponse) => {
console.log(err);
}
);
call.on("data", (response: ListConnectedDutsFirmwareResponse) => {
console.log(response);
callback(response.getDutsList());
});
}
updateFirmwareOnDuts(ips: string[], callback: () => void) {
const request = new UpdateDutsFirmwareRequest();
request.setIpsList(ips);
const call = this.moblabRpcService.update_duts_firmware(
request,
{},
(err: grpcWeb.Error, response: UpdateDutsFirmwareResponse) => {
console.log(err);
}
);
call.on("data", (response: UpdateDutsFirmwareResponse) => {
callback();
});
}
getNumDutTasks(callback: (numDutTasks: number) => void,
errorHandlingCallback: (errorMsg: string) => void,
ip: string, start_time_gt?: number, end_time_lt?: number) {
const request = new GetNumDutTasksRequest();
if (start_time_gt) {
request.setStartTimeGt(start_time_gt);
}
if (end_time_lt) {
request.setEndTimeLt(end_time_lt);
}
const call = this.moblabRpcService.get_num_dut_tasks(
request,
{},
(err: grpcWeb.Error, response: GetNumDutTasksResponse) => {
console.log(
"Failed get_num_dut_actions RPC call. Request: ",
request,
"Response: ",
err
);
errorHandlingCallback(err.message);
}
);
call.on("data", (response: GetNumDutTasksResponse) => {
callback(response.getNumDutTasks());
});
}
getDutTasks(callback: (x: DutTask[]) => void,
errorHandlingCallback: (errorMsg: string) => void,
ip: string, queryStart: number, queryLimit: number,
start_time_gt?: number, end_time_lt?: number) {
const request = new GetDutTasksRequest();
request.setQueryStart(queryStart);
request.setQueryLimit(queryLimit);
if (start_time_gt) {
request.setStartTimeGt(start_time_gt);
}
if (end_time_lt) {
request.setEndTimeLt(end_time_lt);
}
const call = this.moblabRpcService.get_dut_tasks(
request,
{},
(err: grpcWeb.Error, response: GetDutTasksResponse) => {
console.log(
"Failed get_dut_actions RPC call. Request: ",
request,
"Response: ",
err
);
errorHandlingCallback(err.message);
}
);
call.on("data", (response: GetDutTasksResponse) => {
callback(response.getTasksList());
});
}
repairDut(callback: (message: string) => void, errorHandlingCallback: (errorMsg: string) => void,
dut_hostname: string) {
const request = new RepairHostRequest();
request.setDutHostname(dut_hostname);
const call = this.moblabRpcService.repair_host(
request,
{},
(err: grpcWeb.Error, response: RepairHostResponse) => {
errorHandlingCallback(err.message);
}
);
call.on("data", (response: RepairHostResponse) => {
callback(response.getMessage());
});
}
reverifyDut(callback: (message: string) => void, errorHandlingCallback: (errorMsg: string) => void,
dut_hostname: string) {
const request = new ReverifyHostRequest();
request.setDutHostname(dut_hostname);
const call = this.moblabRpcService.reverify_host(
request,
{},
(err: grpcWeb.Error, response: ReverifyHostResponse) => {
errorHandlingCallback(err.message);
}
);
call.on("data", (response: ReverifyHostResponse) => {
callback(response.getMessage());
});
}
addAttributeToDuts(callback: (message: string) => void, errorHandlingCallback: (errorMsg: string) => void,
dut_ips: string[], key: string, value: string) {
const request = new AddAttributeToDutsRequest();
request.setDutHostnamesList(dut_ips);
request.setKey(key);
request.setValue(value);
const call = this.moblabRpcService.add_attribute_to_duts(
request,
{},
(err: grpcWeb.Error, response: AddAttributeToDutsResponse) => {
errorHandlingCallback(err.message);
}
);
call.on("data", (response: AddAttributeToDutsResponse) => {
callback(response.getMessage());
});
}
removeAttributeFromDuts(callback: (message: string) => void, errorHandlingCallback: (errorMsg: string) => void,
dut_ips: string[], key: string) {
const request = new RemoveAttributeFromDutsRequest();
request.setDutHostnamesList(dut_ips);
request.setKey(key);
const call = this.moblabRpcService.remove_attribute_from_duts(
request,
{},
(err: grpcWeb.Error, response: RemoveAttributeFromDutsResponse) => {
errorHandlingCallback(err.message);
}
);
call.on("data", (response: RemoveAttributeFromDutsResponse) => {
callback(response.getMessage());
});
}
addLabelToDuts(callback: (message: string) => void, errorHandlingCallback: (errorMsg: string) => void,
dut_ips: string[], label: string) {
const request = new AddLabelToDutsRequest();
request.setDutHostnamesList(dut_ips);
request.setLabel(label);
const call = this.moblabRpcService.add_label_to_duts(
request,
{},
(err: grpcWeb.Error, response: AddLabelToDutsResponse) => {
errorHandlingCallback(err.message);
}
);
call.on("data", (response: AddLabelToDutsResponse) => {
callback(response.getMessage());
});
}
removeLabelFromDuts(callback: (message: string) => void, errorHandlingCallback: (errorMsg: string) => void,
dut_ips: string[], label: string) {
const request = new RemoveLabelFromDutsRequest();
request.setDutHostnamesList(dut_ips);
request.setLabel(label);
const call = this.moblabRpcService.remove_label_from_duts(
request,
{},
(err: grpcWeb.Error, response: RemoveLabelFromDutsResponse) => {
errorHandlingCallback(err.message);
}
);
call.on("data", (response: RemoveLabelFromDutsResponse) => {
callback(response.getMessage());
});
}
addPoolToDuts(callback: (message: string) => void, errorHandlingCallback: (errorMsg: string) => void,
dut_ips: string[], pool: string) {
/** Sends request to add pool label to given DUTs.
* @param callback: function invoked in success scenarios.
* @param error_callback: function invoked in failure scenarios.
* @param pool: Pool name to be associated with given DUT's
* @param dut_ips: Ip's of DUTs who will receive pool label.
* */
const request = new AddPoolToDutsRequest();
request.setDutHostnamesList(dut_ips);
request.setPool(pool);
const call = this.moblabRpcService.add_pool_to_duts(
request,
{},
(err: grpcWeb.Error, response: AddPoolToDutsResponse) => {
errorHandlingCallback(err.message);
}
);
call.on("data", (response: AddPoolToDutsResponse) => {
callback(response.getMessage());
});
}
removePoolFromDuts(callback: (message: string) => void, errorHandlingCallback: (errorMsg: string) => void,
dut_ips: string[], pool: string) {
/** Sends request to remove pool label to given DUTs.
* @param callback: function invoked in success scenarios.
* @param error_callback: function invoked in failure scenarios.
* @param pool: Pool name to be associated with given DUT's
* @param dut_ips: Ip's of DUTs who will have pool label removed.
* */
const request = new RemovePoolFromDutsRequest();
request.setDutHostnamesList(dut_ips);
request.setPool(pool);
const call = this.moblabRpcService.remove_pool_from_duts(
request,
{},
(err: grpcWeb.Error, response: RemovePoolFromDutsResponse) => {
errorHandlingCallback(err.message);
}
);
call.on("data", (response: RemovePoolFromDutsResponse) => {
callback(response.getMessage());
});
}
get_network_info(callback: (moblab_hostname: string, is_connected: boolean) => void,
errorHandlingCallback: (errorMsg: string) => void) {
const request = new GetNetworkInfoRequest();
const call = this.moblabRpcService.get_network_info(
request,
{},
(err: grpcWeb.Error, response: GetNetworkInfoResponse) => {
errorHandlingCallback(err.message);
}
);
call.on('data', (response: GetNetworkInfoResponse) => {
callback(response.getMoblabHostname(), response.getIsConnected());
});
}
get_cloud_configuration(callback: (
boto_key_id: string,
boto_key_secret: string,
gcs_bucket_url: string
) => void,
errorHandlingCallback: (errorMsg: string) => void) {
const request = new GetCloudConfigurationRequest();
const call = this.moblabRpcService.get_cloud_configuration(
request,
{},
(err: grpcWeb.Error, response: GetCloudConfigurationResponse) => {
errorHandlingCallback(err.message);
}
);
call.on('data', (response: GetCloudConfigurationResponse) => {
callback(
response.getBotoKeyId(),
response.getBotoKeySecret(),
response.getGcsBucketUrl()
);
});
}
set_cloud_configuration(callback: (message: string) => void,
errorHandlingCallback: (errorMsg: string) => void,
boto_key_id: string,
boto_key_secret: string,
gcs_bucket_url: string) {
const request = new SetCloudConfigurationRequest();
request.setBotoKeyId(boto_key_id);
request.setBotoKeySecret(boto_key_secret);
request.setGcsBucketUrl(gcs_bucket_url);
const call = this.moblabRpcService.set_cloud_configuration(
request,
{},
(err: grpcWeb.Error, response: SetCloudConfigurationResponse) => {
errorHandlingCallback(err.message);
}
);
call.on('data', (response: SetCloudConfigurationResponse) => {
callback(
response.getMessage()
)
});
}
get_dut_wifi_info(callback: (dut_wifi_name: string, dut_wifi_password: string) => void,
errorHandlingCallback: (errorMsg: string) => void) {
const request = new GetDutWifiInfoRequest();
const call = this.moblabRpcService.get_dut_wifi_info(
request,
{},
(err: grpcWeb.Error, response: GetDutWifiInfoResponse) => {
errorHandlingCallback(err.message);
}
);
call.on('data', (response: GetDutWifiInfoResponse) => {
callback(
response.getDutWifiName(),
response.getDutWifiPassword(),
);
});
}
set_dut_wifi_info(callback: (message: string) => void,
errorHandlingCallback: (errorMsg: string) => void,
dut_wifi_name: string,
dut_wifi_password: string) {
const request = new SetDutWifiInfoRequest();
request.setDutWifiName(dut_wifi_name);
request.setDutWifiPassword(dut_wifi_password);
const call = this.moblabRpcService.set_dut_wifi_info(
request,
{},
(err: grpcWeb.Error, response: SetDutWifiInfoResponse) => {
errorHandlingCallback(err.message);
}
);
call.on('data', (response: SetDutWifiInfoResponse) => {
callback(
response.getMessage()
)
});
}
get_version_info(callback: (
chromeos_release_version: string,
chromeos_release_track: string,
chromeos_release_description: string,
moblab_id: string,
moblab_serial_number: string
) => void,
errorHandlingCallback: (errorMsg: string) => void) {
const request = new GetVersionInfoRequest();
const call = this.moblabRpcService.get_version_info(
request,
{},
(err: grpcWeb.Error, response: GetVersionInfoResponse) => {
errorHandlingCallback(err.message);
}
);
call.on('data', (response: GetVersionInfoResponse) => {
callback(
response.getChromeosReleaseVersion(),
response.getChromeosReleaseTrack(),
response.getChromeosReleaseDescription(),
response.getMoblabId(),
response.getMoblabSerialNumber()
);
});
}
reboot_moblab(error_callback: (msg: string) => void) {
const call = this.moblabRpcService.reboot_moblab(
new RebootMoblabRequest(),
{},
(err: grpcWeb.Error, response: RebootMoblabResponse) => {
error_callback(err.message);
}
);
}
}