private SignedMessage createSignedVertexSpec(LlapSigner signer, TaskSpec taskSpec,
ApplicationId applicationId, String queryUser, String queryIdString) throws IOException {
QueryIdentifierProto queryIdentifierProto =
QueryIdentifierProto.newBuilder().setApplicationIdString(applicationId.toString())
.setDagIndex(taskSpec.getDagIdentifier()).setAppAttemptNumber(0).build();
final SignableVertexSpec.Builder svsb = Converters.constructSignableVertexSpec(
taskSpec, queryIdentifierProto, applicationId.toString(), queryUser, queryIdString);
svsb.setIsExternalSubmission(true);
if (signer == null) {
SignedMessage result = new SignedMessage();
result.message = serializeVertexSpec(svsb);
return result;
}
return signer.serializeAndSign(new Signable() {
@Override
public void setSignInfo(int masterKeyId) {
svsb.setSignatureKeyId(masterKeyId);
}
@Override
public byte[] serialize() throws IOException {
return serializeVertexSpec(svsb);
}
});
}