Add writer to token index deploy in eth tests

This commit is contained in:
nolash
2021-11-29 15:05:09 +01:00
parent b85390fc36
commit 69a0aea7ed
6 changed files with 69 additions and 2 deletions

View File

@@ -4,6 +4,11 @@ from chainlib.eth.connection import RPCConnection
def extension_start(network, *args, **kwargs):
"""Called by the "export" cli tool subcommand for initialization of the eth extension.
:param network: Network object to read and write settings from
:type network: cic.network.Network
"""
CICRegistry.address = kwargs['registry_address']
RPCConnection.register_location(kwargs['rpc_provider'], kwargs['chain_spec'])

View File

@@ -16,7 +16,15 @@ logg = logging.getLogger(__name__)
class Network(Data):
"""Contains network settings for token deployments across extensions.
Extension targets are defined by the keys immediately following the "resources" key in the network settings file.
:param path: Path to settings directory
:type path: str
:param targets: Extension targets to execute
:type targets: list of str
"""
def __init__(self, path='.', targets=[]):
super(Network, self).__init__()
self.resources = None
@@ -26,6 +34,8 @@ class Network(Data):
def load(self):
"""Load network settings from file.
"""
super(Network, self).load()
f = open(self.network_path, 'r')
@@ -38,6 +48,10 @@ class Network(Data):
def start(self):
"""Initialize network settings with targets chosen at object instantiation.
Will save to network settings file.
"""
super(Network, self).load()
network_template_file_path = os.path.join(data_dir, 'network_template_v{}.json'.format(self.version()))
@@ -54,6 +68,8 @@ class Network(Data):
def save(self):
"""Save network settings to file.
"""
f = open(self.network_path, 'w')
json.dump({
'resources': self.resources,
@@ -62,6 +78,13 @@ class Network(Data):
def resource(self, k):
"""Get settings definitions for a given extension.
:param k: Extension key
:type k: str
:rtype: dict
:return: Extension settings
"""
v = self.resources.get(k)
if v == None:
raise AttributeError('no defined reference for {}'.format(k))
@@ -69,16 +92,44 @@ class Network(Data):
def resource_set(self, resource_key, content_key, reference, key_account=None):
"""Set the values a content part of an extension setting.
The content parts define network application resources. Each entry is keyed by the name of the application. Each value consists of a key_account used to write/deploy to the contract, and the reference (address) of the application resource. If no application resource yet exists on the network for the part, the reference value will be None.
:param resource_key: Extension key
:type resource_key: str
:param content_key: Resource name (e.g. smart contract name)
:type content_key: str
:param reference: Reference to resource on network (e.g. smart contract address)
:type reference: str
:param key_account: Address of account to sign transaction for the resource with
:type key_account: str
"""
self.resources[resource_key]['contents'][content_key]['reference'] = reference
self.resources[resource_key]['contents'][content_key]['key_account'] = key_account
def chain_spec(self, k):
"""Retrieve chain spec for the given extension
:param k: Extension key
:type k: str
:rtype: chainlib.chain.ChainSpec
:return: Chain spec object
"""
v = self.resource(k)
return ChainSpec.from_dict(v['chain_spec'])
def set(self, resource_key, chain_spec):
"""Set chain spec for resource.
:param resource_key: Extension key
:type resource_key: str
:param chain_spec: Chain spec to set
:type chain_spec: chainlib.chain.ChainSpec
"""
chain_spec_dict = chain_spec.asdict()
for k in chain_spec_dict.keys():
logg.debug('resources {}'.format(self.resources))