Skip to content

Commit ce69a12

Browse files
committed
fix: fix several bugs, now service call is working
1 parent 88aa179 commit ce69a12

File tree

4 files changed

+22
-24
lines changed

4 files changed

+22
-24
lines changed

snet/sdk/__init__.py

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
from google.protobuf import symbol_database as _symbol_database
1111

1212
from snet.sdk.exceptions import NoGroupsFoundError, GroupNotFoundError, ServiceMetadataMismatchError
13-
from snet.sdk.registry.models import StorageType
13+
from snet.sdk.registry.models import StorageType, FileURI
1414
from snet.sdk.registry.organization_metadata import OrganizationMetadata
1515
from snet.sdk.registry.registry_contract import RegistryContract
1616
from snet.sdk.registry.service_metadata import ServiceMetadata, Group
@@ -75,15 +75,18 @@ def create_service_client(
7575
options=None,
7676
concurrent_calls: int = 1,
7777
):
78-
79-
# Create and instance of the Config object,
80-
# so we can create an instance of ClientLibGenerator
78+
service_metadata = self._enhance_service_metadata(org_id, service_id)
8179
lib_generator = ClientLibGenerator(self.storage_provider, org_id, service_id)
8280

83-
# Download the proto file and generate stubs if needed
81+
if service_metadata.service_api_source is not None:
82+
service_api_source = service_metadata.service_api_source
83+
else:
84+
service_api_source = service_metadata.model_ipfs_hash
85+
service_api_source = FileURI.from_raw_uri(service_api_source)
86+
8487
force_update = config.FORCE_UPDATE
8588
if force_update:
86-
lib_generator.generate_client_library()
89+
lib_generator.generate_client_library(service_api_source)
8790
else:
8891
path_to_pb_files = lib_generator.proto_dir
8992
pb_2_file_name = find_file_by_keyword(
@@ -94,7 +97,7 @@ def create_service_client(
9497
)
9598
if not pb_2_file_name or not pb_2_grpc_file_name:
9699
print("Generating client library...")
97-
lib_generator.generate_client_library()
100+
lib_generator.generate_client_library(service_api_source)
98101

99102
if options is None:
100103
options = dict()
@@ -104,7 +107,6 @@ def create_service_client(
104107
if payment_strategy is None:
105108
payment_strategy = payment_strategy_type.value()
106109

107-
service_metadata = self._enhance_service_metadata(org_id, service_id)
108110
group = self._get_service_group(org_id, service_id, service_metadata, group_name)
109111

110112
service_stubs = self.get_service_stub(lib_generator)
@@ -249,7 +251,9 @@ def update_organization(
249251
organization_metadata: OrganizationMetadata,
250252
storage_type: StorageType = StorageType.IPFS,
251253
) -> bool:
252-
metadata_uri = self.storage_provider.publish_organization_metadata(organization_metadata, storage_type)
254+
metadata_uri = self.storage_provider.publish_organization_metadata(
255+
organization_metadata, storage_type
256+
)
253257
receipt = self.registry_contract.update_org_metadata(self.account, org_id, metadata_uri)
254258

255259
return receipt["status"] != 0

snet/sdk/client_lib_generator.py

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import os
22
from pathlib import Path
33

4+
from snet.sdk.registry.models import FileURI
45
from snet.sdk.registry.storage_provider import StorageProvider
56
from snet.sdk.utils.utils import compile_proto
67

@@ -20,9 +21,9 @@ def __init__(
2021
self.proto_dir: Path = proto_dir if proto_dir else Path.home().joinpath(".snet")
2122
self.generate_directories_by_params()
2223

23-
def generate_client_library(self) -> None:
24+
def generate_client_library(self, service_api_source: FileURI) -> None:
2425
try:
25-
self.receive_proto_files()
26+
self.receive_proto_files(service_api_source)
2627
compilation_result = compile_proto(
2728
entry_path=self.proto_dir,
2829
codegen_dir=self.proto_dir,
@@ -35,8 +36,8 @@ def generate_client_library(self) -> None:
3536
f'in org with id "{self.org_id}" '
3637
f"generated at {self.proto_dir}"
3738
)
38-
except Exception as e:
39-
print(str(e))
39+
except Exception:
40+
raise Exception("Error while proto compilation!")
4041

4142
def generate_directories_by_params(self) -> None:
4243
if not self.proto_dir.is_absolute():
@@ -47,13 +48,7 @@ def create_service_client_libraries_path(self) -> None:
4748
self.proto_dir = self.proto_dir.joinpath(self.org_id, self.service_id, self.language)
4849
self.proto_dir.mkdir(parents=True, exist_ok=True)
4950

50-
def receive_proto_files(self) -> None:
51-
metadata = self._metadata_provider.fetch_service_metadata(
52-
org_id=self.org_id, service_id=self.service_id
53-
)
54-
service_api_source = metadata.get("service_api_source") or metadata.get("model_ipfs_hash")
55-
56-
# Receive proto files
51+
def receive_proto_files(self, service_api_source: FileURI) -> None:
5752
if self.proto_dir.exists():
5853
self._metadata_provider.fetch_and_extract_proto(service_api_source, self.proto_dir)
5954
else:

snet/sdk/mpe/mpe_contract.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,6 @@ def channel_extend_and_add_funds(self, account: Account, channel_id, expiration,
6969
)
7070

7171
def _fund_escrow_account(self, account: Account, amount):
72-
current_escrow_balance = self.balance(account.address)
72+
current_escrow_balance = self.balance(account)
7373
if amount > current_escrow_balance:
7474
self.deposit(account, amount - current_escrow_balance)

snet/sdk/registry/storage_provider.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,9 +44,8 @@ def fetch_service_metadata(self, metadata_uri: FileURI) -> ServiceMetadata:
4444

4545
return service_metadata
4646

47-
def fetch_and_extract_proto(self, service_api_source, proto_dir) -> None:
48-
tar_uri = FileURI.from_raw_uri(service_api_source)
49-
spec_tar = self._get_from_storage(tar_uri)
47+
def fetch_and_extract_proto(self, service_api_source: FileURI, proto_dir) -> None:
48+
spec_tar = self._get_from_storage(service_api_source, decode=False)
5049
self._safe_extract_proto(spec_tar, proto_dir)
5150

5251
def publish_organization_metadata(

0 commit comments

Comments
 (0)