Example #1
0
 def publish_proto_metadata_update(self):
     """ Publish protobuf model in ipfs and update existing metadata file """
     metadata = load_mpe_service_metadata(self.args.metadata_file)
     ipfs_hash_base58 = utils_ipfs.publish_proto_in_ipfs(
         self._get_ipfs_client(), self.args.protodir)
     metadata.set_simple_field("model_ipfs_hash", ipfs_hash_base58)
     metadata.save_pretty(self.args.metadata_file)
Example #2
0
 def publish_metadata_in_ipfs_and_update_registration(self):
     # first we check that we do not change payment_address or group_id in existed payment groups
     old_metadata = self._get_service_metadata_from_registry()
     new_metadata = load_mpe_service_metadata(self.args.metadata_file)
     for old_group in old_metadata["groups"]:
         if (new_metadata.is_group_name_exists(old_group["group_name"])):
             new_group = new_metadata.get_group(old_group["group_name"])
             if (new_group["group_id"] != old_group["group_id"]
                     or new_group["payment_address"] !=
                     old_group["payment_address"]):
                 raise Exception(
                     "\n\nYou are trying to change group_id or payment_address in group '%s'.\n"
                     % old_group["group_name"] +
                     "It would make all open channels invalid.\n" +
                     "You shoudn't use 'metadata-init' for existed service, because it reinitialize group_id\n"
                     +
                     "Please use 'metadata-set-model' for change your protobuf file\n"
                     +
                     "Please use 'metadata-remove-all-endpoints/metadata-add-endpoints to update endpoints'\n\n"
                 )
     metadata_uri = hash_to_bytesuri(
         self._publish_metadata_in_ipfs(self.args.metadata_file))
     params = [
         type_converter("bytes32")(self.args.org_id),
         type_converter("bytes32")(self.args.service_id), metadata_uri
     ]
     self.transact_contract_command("Registry", "updateServiceRegistration",
                                    params)
 def metadata_set_method_price(self):
     metadata = load_mpe_service_metadata(self.args.metadata_file)
     metadata.set_method_price_in_cogs(self.args.group_name,
                                       self.args.package_name,
                                       self.args.service_name,
                                       self.args.method, self.args.price)
     metadata.save_pretty(self.args.metadata_file)
Example #4
0
 def metadata_add_endpoints(self):
     """ Metadata: add endpoint to the group """
     metadata = load_mpe_service_metadata(self.args.metadata_file)
     group_name = metadata.get_group_name_nonetrick(self.args.group_name)
     for endpoint in self.args.endpoints:
         metadata.add_endpoint(group_name, endpoint)
     metadata.save_pretty(self.args.metadata_file)
Example #5
0
    def metadata_add_asset_to_ipfs(self):
        metadata = load_mpe_service_metadata(self.args.metadata_file)
        asset_file_ipfs_hash_base58 = utils_ipfs.publish_file_in_ipfs(
            self._get_ipfs_client(), self.args.asset_file_path)

        metadata.add_asset(asset_file_ipfs_hash_base58, self.args.asset_type)
        metadata.save_pretty(self.args.metadata_file)
 def metadata_add_daemon_addresses(self):
     """ Metadata: add daemon addresses to the group """
     metadata = load_mpe_service_metadata(self.args.metadata_file)
     group_name = metadata.get_group_name_nonetrick(self.args.group_name)
     for daemon_address in self.args.daemon_addresses:
         metadata.add_daemon_address_to_group(group_name, daemon_address)
     metadata.save_pretty(self.args.metadata_file)
Example #7
0
 def metadata_add_description(self):
     """ Metadata: add description """
     service_description = {}
     if (self.args.json):
         service_description = json.loads(self.args.json)
     if (self.args.url):
         if "url" in service_description:
             raise Exception(
                 "json service description already contains url field")
         service_description["url"] = self.args.url
     if (self.args.description):
         if "description" in service_description:
             raise Exception(
                 "json service description already contains description field"
             )
         service_description["description"] = self.args.description
     metadata = load_mpe_service_metadata(self.args.metadata_file)
     # merge with old service_description if necessary
     if ("service_description" in metadata):
         service_description = {
             **metadata["service_description"],
             **service_description
         }
     metadata.set_simple_field("service_description", service_description)
     metadata.save_pretty(self.args.metadata_file)
 def _read_metadata_for_service(self, org_id, service_id):
     sdir = self.get_service_spec_dir(org_id, service_id)
     if (not os.path.exists(sdir)):
         raise Exception(
             "Service with org_id=%s and service_id=%s is not initialized" %
             (org_id, service_id))
     return load_mpe_service_metadata(
         sdir.joinpath("service_metadata.json"))
Example #9
0
 def metadata_update_endpoints(self):
     """ Metadata: Remove all endpoints from the group and add new ones """
     metadata = load_mpe_service_metadata(self.args.metadata_file)
     group_name = metadata.get_group_name_nonetrick(self.args.group_name)
     metadata.remove_all_endpoints_for_group(group_name)
     for endpoint in self.args.endpoints:
         metadata.add_endpoint(group_name, endpoint)
     metadata.save_pretty(self.args.metadata_file)
 def metadata_update_daemon_addresses(self):
     """ Metadata: Remove all daemon addresses from the group and add new ones """
     metadata = load_mpe_service_metadata(self.args.metadata_file)
     group_name = metadata.get_group_name_nonetrick(self.args.group_name)
     metadata.remove_all_daemon_addresses_for_group(group_name)
     for daemon_address in self.args.daemon_addresses:
         metadata.add_daemon_address_to_group(group_name, daemon_address)
     metadata.save_pretty(self.args.metadata_file)
Example #11
0
    def _publish_metadata_in_ipfs(self, metadata_file):
        metadata = load_mpe_service_metadata(metadata_file)
        mpe_address = self.get_mpe_address()
        if (self.args.update_mpe_address):
            metadata.set_simple_field("mpe_address",  mpe_address)
            metadata.save_pretty(self.args.metadata_file)

        if (mpe_address.lower() != metadata["mpe_address"].lower()):
            raise Exception("\n\nmpe_address in metadata does not correspond to the current MultiPartyEscrow contract address\n" +
                            "You have two possibilities:\n" +
                            "1. You can use --multipartyescrow-at to set current mpe address\n" +
                            "2. You can use --update-mpe-address parameter to update mpe_address in metadata before publishing it\n")
        return self._get_ipfs_client().add_bytes(metadata.get_json().encode("utf-8"))
Example #12
0
    def _validate_service_group_with_org_group_and_update_group_id(self, org_id, metadata_file):
        org_metadata = self._get_organization_metadata_from_registry(org_id)
        new_service_metadata = load_mpe_service_metadata(metadata_file)
        org_groups = {}
        for group in org_metadata.groups:
            org_groups[group.group_name] = group

        for group in new_service_metadata.m["groups"]:
            if group["group_name"] in org_groups:
                group["group_id"] = org_groups[group["group_name"]].group_id
                new_service_metadata.save_pretty(metadata_file)
            else:
                raise Exception(
                    "Group name %s does not exist in organization" % group["group_name"])
Example #13
0
 def metadata_remove_all_assets(self):
     metadata = load_mpe_service_metadata(self.args.metadata_file)
     metadata.remove_all_assets()
     metadata.save_pretty(self.args.metadata_file)
 def metadata_add_contributor(self):
     metadata = load_mpe_service_metadata(self.args.metadata_file)
     metadata.add_contributor(self.args.name, self.args.email_id)
     metadata.save_pretty(self.args.metadata_file)
Example #15
0
 def metadata_remove_all_endpoints(self):
     """ Metadata: remove all endpoints from all groups """
     metadata = load_mpe_service_metadata(self.args.metadata_file)
     metadata.remove_all_endpoints()
     metadata.save_pretty(self.args.metadata_file)
 def metadata_remove_contributor(self):
     metadata = load_mpe_service_metadata(self.args.metadata_file)
     metadata.remove_contributor_by_email(self.args.email_id)
     metadata.save_pretty(self.args.metadata_file)
Example #17
0
 def metadata_add_group(self):
     metadata = load_mpe_service_metadata(self.args.metadata_file)
     self._metadata_add_group(metadata)
     metadata.save_pretty(self.args.metadata_file)
 def metadata_set_free_calls(self):
     metadata = load_mpe_service_metadata(self.args.metadata_file)
     metadata.set_free_calls_for_group(self.args.group_name,
                                       int(self.args.free_calls))
     metadata.save_pretty(self.args.metadata_file)
Example #19
0
 def extract_service_api_from_metadata(self):
     metadata = load_mpe_service_metadata(self.args.metadata_file)
     safe_extract_proto_from_ipfs(self._get_ipfs_client(),
                                  metadata["model_ipfs_hash"],
                                  self.args.protodir)
 def metadata_set_freecall_signer_address(self):
     metadata = load_mpe_service_metadata(self.args.metadata_file)
     metadata.set_freecall_signer_address(self.args.group_name,
                                          self.args.signer_address)
     metadata.save_pretty(self.args.metadata_file)
Example #21
0
 def metadata_remove_assets_of_a_given_type(self):
     metadata = load_mpe_service_metadata(self.args.metadata_file)
     metadata.remove_assets(self.args.asset_type)
     metadata.save_pretty(self.args.metadata_file)
Example #22
0
 def _get_service_metadata(self):
     service_dir = self.get_service_spec_dir(self.args.org_id,
                                             self.args.service_id)
     service_metadata = load_mpe_service_metadata(
         os.path.join(service_dir, "service_metadata.json"))
     return service_metadata
Example #23
0
 def metadata_remove_group(self):
     metadata = load_mpe_service_metadata(self.args.metadata_file)
     metadata.remove_group(self.args.group_name)
     metadata.save_pretty(self.args.metadata_file)
 def open_init_channel_from_metadata(self):
     metadata = load_mpe_service_metadata(self.args.metadata_file)
     self._open_init_channel_from_metadata(metadata, {})
 def metadata_remove_all_daemon_addresses(self):
     """ Metadata: remove all daemon addresses from all groups """
     metadata = load_mpe_service_metadata(self.args.metadata_file)
     metadata.remove_all_daemon_addresses_for_group(self.args.group_name)
     metadata.save_pretty(self.args.metadata_file)
Example #26
0
 def metadata_set_fixed_price(self):
     metadata = load_mpe_service_metadata(self.args.metadata_file)
     metadata.set_fixed_price_in_cogs(self.args.price)
     metadata.save_pretty(self.args.metadata_file)