in api/v1/src/spots/dataManager.js [58:132]
async function createSpot(options) {
const requestId = uuidv4();
const bucketName = options.destination.bucketName;
const projectId = options.config.destination.projectId;
const datasetId = options.config.destination.datasetId;
const fileName = createFileName(requestId);
options['destination']['fileName'] = fileName;
console.log(`RequestId: ${requestId}, options: ${JSON.stringify(options)}`);
var message;
if (!bucketName || !fileName) {
message = 'No Bucket Name or File Name is supplied.';
console.warn(message);
return { success: false, code: 400, errors: [message] };
}
var exists;
exists = await storageUtil.fileExists(bucketName, fileName).catch(err => {
console.warn(err);
return { success: false, errors: [err.message] };
});
if (exists) {
message = `fileName: '${fileName}' already exists in bucketName: '${bucketName}'`;
console.warn(message);
return { success: false, errors: [message] };
}
bigqueryUtil = new BigQueryUtil(projectId);
exists = await bigqueryUtil.datasetExists(datasetId).catch(err => {
console.warn(err);
return { success: false, errors: [err.message] };
});
if (!exists) {
message = `datasetId: '${datasetId}' does not exists in projectId: '${projectId}'`;
console.warn(message);
return { success: false, errors: [message] };
}
const queryOptions = await createSpotJobQueryOptions(requestId, options).catch(err => {
console.warn(err);
return { success: false, errors: [err.message] };
});
if (queryOptions.success === false) {
return { ...queryOptions };
}
const query = querystring.encode({
bucketName: bucketName,
fileName: fileName
});
const responseData = {
requestId: requestId,
query: `/${requestId}?${query}`,
bucketName: bucketName,
fileName: fileName
}
// create the spot job request now
if (options.wait === true) {
const data = await createSpotJob(requestId, options, queryOptions).catch(err => {
console.warn(err);
return { success: false, errors: [err.message] };
});
if (data.success === false ) {
return { ...data };
}
return { data: { ...responseData, ...data }, success: true };
} else {
// Don't wait for the response
createSpotJob(requestId, options, queryOptions).catch(err => {
console.warn(`createSpotJob error: ${err.message}`);
});
return { data: { ...responseData }, code: 202, success: true };
}
}