Skip to content

Commit

Permalink
Merge pull request #108 from singnet/development
Browse files Browse the repository at this point in the history
Development to Master
  • Loading branch information
Shyam-Khokhariya authored Oct 7, 2022
2 parents c944faa + df9cba5 commit ea67c4c
Show file tree
Hide file tree
Showing 5 changed files with 286 additions and 101 deletions.
147 changes: 133 additions & 14 deletions packages/core/src/BaseServiceClient.js
Original file line number Diff line number Diff line change
Expand Up @@ -83,17 +83,22 @@ class BaseServiceClient {
return this._options.concurrency;
}

async getExistingModel(grpcMethod, address) {
const request = await this._trainingStateRequest(address, grpcMethod);
async getExistingModel(params) {
const request = await this._trainingStateRequest(params);
return new Promise((resolve, reject) => {
this._modelServiceClient.get_all_models(request, (err, response) => {
const modelDetails = response.getListOfModelsList();
const data = modelDetails.map((item) => {
return {
modelId: item.getModelId(),
description: item.getDescription(),
methodName: item.getGrpcMethodName(),
serviceName: item.getGrpcServiceName(),
description: item.getDescription(),
status: item.getStatus(),
updatedDate: item.getUpdatedDate(),
addressList: item.getAddressListList(),
modelName: item.getModelName(),
publicAccess: item.getIsPubliclyAccessible(),
};
});
if (err) {
Expand All @@ -105,21 +110,23 @@ class BaseServiceClient {
});
}

async _trainingStateRequest(address, grpcMethod) {
async _trainingStateRequest(params) {
const message = "__get_existing_model";
const { currentBlockNumber, signatureBytes } =
await this._requestSignForModel(address, message);
await this._requestSignForModel(params.address, message);
const ModelStateRequest = this._getModelRequestMethodDescriptor();
const modelStateRequest = new ModelStateRequest();
modelStateRequest.setGrpcMethodName(grpcMethod);
modelStateRequest.setGrpcMethodName(params.grpcMethod);
modelStateRequest.setGrpcServiceName(params.grpcService);

const AuthorizationRequest =
this._getAuthorizationRequestMethodDescriptor();
const authorizationRequest = new AuthorizationRequest();

authorizationRequest.setCurrentBlock(currentBlockNumber);
authorizationRequest.setMessage(message);
authorizationRequest.setSignature(signatureBytes);
authorizationRequest.setSignerAddress(address);
authorizationRequest.setSignerAddress(params.address);
modelStateRequest.setAuthorization(authorizationRequest);
return modelStateRequest;
}
Expand All @@ -142,13 +149,18 @@ class BaseServiceClient {
const request = await this._trainingCreateModel(address, params);
return new Promise((resolve, reject) => {
this._modelServiceClient.create_model(request, (err, response) => {
logger.debug(`create model ${err} ${response}`);
const modelDetails = response.getModelDetails();
logger.debug(`create model ${err} ${modelDetails}`);
const data = {
modelId: modelDetails.getModelId(),
description: modelDetails.getDescription(),
methodName: modelDetails.getGrpcMethodName(),
serviceName: modelDetails.getGrpcServiceName(),
description: modelDetails.getDescription(),
status: modelDetails.getStatus(),
updatedDate: modelDetails.getUpdatedDate(),
addressList: modelDetails.getAddressListList(),
modelName: modelDetails.getModelName(),
publicAccess: modelDetails.getIsPubliclyAccessible(),
};
if (err) {
reject(err);
Expand All @@ -170,22 +182,22 @@ class BaseServiceClient {
this._getAuthorizationRequestMethodDescriptor();
const authorizationRequest = new AuthorizationRequest();
const ModelDetailsRequest = this._getModelDetailsRequestMethodDescriptor();

const { orgId, serviceId, groupId } = this.getServiceDetails();
const modelDetailsRequest = new ModelDetailsRequest();
authorizationRequest.setCurrentBlock(currentBlockNumber);
authorizationRequest.setMessage(message);
authorizationRequest.setSignature(signatureBytes);
authorizationRequest.setSignerAddress(address);

modelDetailsRequest.setModelId("");
modelDetailsRequest.setModelName(params.modelName);
modelDetailsRequest.setGrpcMethodName(params.method);
modelDetailsRequest.setGrpcServiceName(params.name);
modelDetailsRequest.setGrpcServiceName(params.serviceName);
modelDetailsRequest.setDescription(params.description);
modelDetailsRequest.setIsPubliclyAccessible(params.enableAccess);
modelDetailsRequest.setIsPubliclyAccessible(params.publicAccess);
modelDetailsRequest.setAddressListList(params.address);
modelDetailsRequest.setTrainingDataLink("");
modelDetailsRequest.setIsDefaultModel("");

const { orgId, serviceId, groupId } = this.getServiceDetails();
modelDetailsRequest.setOrganizationId(orgId);
modelDetailsRequest.setServiceId(serviceId);
modelDetailsRequest.setGroupId(groupId);
Expand All @@ -195,6 +207,101 @@ class BaseServiceClient {
return modelStateRequest;
}

async deleteModel(params) {
const request = await this._trainingDeleteModel(params);
return new Promise((resolve, reject) => {
this._modelServiceClient.delete_model(request, (err, response) => {
logger.debug(`delete model ${err} ${response}`);
if (err) {
reject(err);
} else {
resolve(response);
}
});
});
}

async _trainingDeleteModel(params) {
const message = "__delete_model";
const { currentBlockNumber, signatureBytes } =
await this._requestSignForModel(params.address, message);

const ModelStateRequest = this._getUpdateModelRequestMethodDescriptor();
const modelStateRequest = new ModelStateRequest();

const AuthorizationRequest =
this._getAuthorizationRequestMethodDescriptor();
const authorizationRequest = new AuthorizationRequest();
const ModelDetailsRequest = this._getModelDetailsRequestMethodDescriptor();
const modelDetailsRequest = new ModelDetailsRequest();

authorizationRequest.setCurrentBlock(currentBlockNumber);
authorizationRequest.setMessage(message);
authorizationRequest.setSignature(signatureBytes);
authorizationRequest.setSignerAddress(params.address);
modelDetailsRequest.setModelId(params.modelId);
modelDetailsRequest.setGrpcMethodName(params.method);
modelDetailsRequest.setGrpcServiceName(params.name);

modelStateRequest.setAuthorization(authorizationRequest);
modelStateRequest.setUpdateModelDetails(modelDetailsRequest);
return modelStateRequest;
}

async updateModel(params) {
const request = await this._trainingUpdateModel(params);
return new Promise((resolve, reject) => {
this._modelServiceClient.update_model_access(request, (err, response) => {
logger.debug(`update model ${err} ${response}`);
if (err) {
reject(err);
} else {
resolve(response);
}
});
});
}

async _trainingUpdateModel(params) {
const message = "__update_model";
const { currentBlockNumber, signatureBytes } =
await this._requestSignForModel(params.address, message);

const ModelStateRequest = this._getUpdateModelRequestMethodDescriptor();
const modelStateRequest = new ModelStateRequest();

const AuthorizationRequest =
this._getAuthorizationRequestMethodDescriptor();
const authorizationRequest = new AuthorizationRequest();
const ModelDetailsRequest = this._getModelDetailsRequestMethodDescriptor();
const modelDetailsRequest = new ModelDetailsRequest();

authorizationRequest.setCurrentBlock(currentBlockNumber);
authorizationRequest.setMessage(message);
authorizationRequest.setSignature(signatureBytes);
authorizationRequest.setSignerAddress(params.address);
modelDetailsRequest.setModelId(params.modelId);
modelDetailsRequest.setGrpcMethodName(params.method);
modelDetailsRequest.setGrpcServiceName(params.name);
modelDetailsRequest.setModelName(params.modelName);
modelDetailsRequest.setDescription(params.description);
modelDetailsRequest.setAddressListList(params.addressList);
modelDetailsRequest.setTrainingDataLink("");
modelDetailsRequest.setStatus(params.status);
modelDetailsRequest.setUpdatedDate(params.updatedDate);
modelDetailsRequest.setIsPubliclyAccessible(params.publicAccess);


const { orgId, serviceId, groupId } = this.getServiceDetails();
modelDetailsRequest.setOrganizationId(orgId);
modelDetailsRequest.setServiceId(serviceId);
modelDetailsRequest.setGroupId(groupId);

modelStateRequest.setAuthorization(authorizationRequest);
modelStateRequest.setUpdateModelDetails(modelDetailsRequest);
return modelStateRequest;
}

/**
* Fetches the latest channel state from the ai service daemon
* @param channelId
Expand Down Expand Up @@ -546,6 +653,18 @@ class BaseServiceClient {
);
}

_getDeleteModelRequestMethodDescriptor() {
logger.error(
"_getDeleteModelRequestMethodDescriptor must be implemented in the sub classes"
);
}

_getUpdateModelRequestMethodDescriptor() {
logger.error(
"__getUpdateModelRequestMethodDescriptor must be implemented in the sub classes"
);
}

_getModelDetailsRequestMethodDescriptor() {
logger.error(
"_getModelDetailsRequestMethodDescriptor must be implemented in the sub classes"
Expand Down
10 changes: 9 additions & 1 deletion packages/web/src/WebServiceClient.js
Original file line number Diff line number Diff line change
Expand Up @@ -132,7 +132,15 @@ class WebServiceClient extends BaseServiceClient {
_getCreateModelRequestMethodDescriptor() {
return Model.create_model.requestType;
}


_getDeleteModelRequestMethodDescriptor() {
return Model.delete_model.requestType;
}

_getUpdateModelRequestMethodDescriptor() {
return Model.update_model_access.requestType;
}

_getModelDetailsRequestMethodDescriptor() {
return training_pb.ModelDetails;
}
Expand Down
24 changes: 15 additions & 9 deletions packages/web/src/proto/training.proto
Original file line number Diff line number Diff line change
Expand Up @@ -11,17 +11,23 @@ message ModelDetails {
//define the grpc service name , under which the method is defined
string grpc_service_name = 3;
string description = 4;
//set this to true if you want your model to be used by other AI consumers
bool is_publicly_accessible = 5;

string status = 6;
string updated_date = 7;
//List of all the addresses that will have access to this model
repeated string address_list = 6;
repeated string address_list = 8;
// this is optional
string training_data_link = 7;
bool is_default_model = 8;
string training_data_link = 9;
string model_name = 10;


string organization_id = 11;
string service_id = 12 ;
string group_id = 13;

//set this to true if you want your model to be used by other AI consumers
bool is_publicly_accessible = 14;

string organization_id = 9;
string service_id = 10 ;
string group_id = 11;
}

message AuthorizationDetails {
Expand Down Expand Up @@ -103,4 +109,4 @@ service Model {
rpc get_all_models(AccessibleModelsRequest) returns (AccessibleModelsResponse) {}


}
}
Loading

0 comments on commit ea67c4c

Please sign in to comment.