Exemple #1
0
 def _get_params_for_tags_update(self):
     tags = self._get_converted_tags()
     params = [
         type_converter("bytes32")(self.args.org_id),
         type_converter("bytes32")(self.args.service_id), tags
     ]
     return params
Exemple #2
0
 def delete_service_registration(self):
     params = [
         type_converter("bytes32")(self.args.org_id),
         type_converter("bytes32")(self.args.service_id)
     ]
     self.transact_contract_command("Registry", "deleteServiceRegistration",
                                    params)
Exemple #3
0
 def _get_service_registration(self):
     params = [type_converter("bytes32")(self.args.org_id), type_converter(
         "bytes32")(self.args.service_id)]
     rez = self.call_contract_command(
         "Registry", "getServiceRegistrationById", params)
     if (rez[0] == False):
         raise Exception("Cannot find Service with id=%s in Organization with id=%s" % (
             self.args.service_id, self.args.org_id))
     return {"metadataURI": rez[2], "tags": rez[3]}
Exemple #4
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
     self._validate_service_group_with_org_group_and_update_group_id(
         self.args.org_id, self.args.metadata_file)
     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)
Exemple #5
0
    def publish_service_with_metadata(self):

        self._validate_service_group_with_org_group_and_update_group_id(
            self.args.org_id, self.args.metadata_file)
        metadata_uri = hash_to_bytesuri(
            self._publish_metadata_in_ipfs(self.args.metadata_file))
        tags = self._get_converted_tags()
        params = [type_converter("bytes32")(self.args.org_id), type_converter(
            "bytes32")(self.args.service_id), metadata_uri, tags]
        self.transact_contract_command(
            "Registry", "createServiceRegistration", params)
Exemple #6
0
    def add_members(self):
        org_id = self.args.org_id
        # Check if Organization exists and member is not part of it
        (found, _, _, _, members, _, _) = self._get_organization_by_id(org_id)
        self.error_organization_not_found(org_id, found)

        members = [member.lower() for member in members]
        add_members = []
        for add_member in self.get_members_from_args():
            if add_member.lower() in members:
                self._printout(
                    "{} is already a member of organization {}".format(
                        add_member, org_id))
            else:
                add_members.append(add_member)

        if not add_members:
            self._printout("No member was added to {}!\n".format(org_id))
            return

        params = [type_converter("bytes32")(org_id), add_members]
        self._printout(
            "Creating transaction to add {} members into organization {}...\n".
            format(len(add_members), org_id))
        try:
            self.transact_contract_command("Registry",
                                           "addOrganizationMembers", params)
        except Exception as e:
            self._printerr(
                "\nTransaction error!\nHINT: Check if you are the owner of {}\n"
                .format(org_id))
            raise
Exemple #7
0
    def rem_members(self):
        org_id = self.args.org_id
        # Check if Organization exists and member is part of it
        (found, _, _, _, members, _, _) = self._get_organization_by_id(org_id)
        self.error_organization_not_found(org_id, found)

        members = [member.lower() for member in members]
        rem_members = []
        for rem_member in self.get_members_from_args():
            if rem_member.lower() not in members:
                self._printout("{} is not a member of organization {}".format(
                    rem_member, org_id))
            else:
                rem_members.append(rem_member)

        if not rem_members:
            self._printout("No member was removed from {}!\n".format(org_id))
            return

        params = [type_converter("bytes32")(org_id), rem_members]
        self._printout(
            "Creating transaction to remove {} members from organization with id={}...\n"
            .format(len(rem_members), org_id))
        try:
            self.transact_contract_command("Registry",
                                           "removeOrganizationMembers", params)
        except Exception as e:
            self._printerr(
                "\nTransaction error!\nHINT: Check if you are the owner of {}\n"
                .format(org_id))
            raise
Exemple #8
0
    def change_owner(self):
        org_id = self.args.org_id
        # Check if Organization exists
        (found, _, _, owner, _, _, _) = self._get_organization_by_id(org_id)
        self.error_organization_not_found(org_id, found)

        new_owner = self.args.owner
        if not is_checksum_address(new_owner):
            raise Exception(
                "New owner account %s is not a valid Ethereum checksum address"
                % new_owner)

        if new_owner.lower() == owner.lower():
            raise Exception(
                "\n{} is the owner of Organization with id={}!\n".format(
                    new_owner, org_id))

        self._printout(
            "Creating transaction to change organization {}'s owner...\n".
            format(org_id))
        try:
            self.transact_contract_command(
                "Registry", "changeOrganizationOwner",
                [type_converter("bytes32")(org_id), self.args.owner])
        except Exception as e:
            self._printerr(
                "\nTransaction error!\nHINT: Check if you are the owner of {}\n"
                .format(org_id))
            raise
Exemple #9
0
    def update_metadata(self):
        metadata_file = self.args.metadata_file

        try:
            with open(metadata_file, 'r') as f:
                org_metadata = OrganizationMetadata.from_json(json.load(f))
        except Exception as e:
            print(
                "Organization metadata json file not found ,Please check --metadata-file path ")
            raise e
        # validate the metadata before updating

        org_id = self.args.org_id
        existing_registry_org_metadata = self._get_organization_metadata_from_registry(
            org_id)
        org_metadata.validate(existing_registry_org_metadata)

        # Check if Organization already exists
        found = self._get_organization_by_id(org_id)[0]
        if not found:
            raise Exception(
                "\nOrganization with id={} does not  exists!\n".format(org_id))

        ipfs_metadata_uri = publish_file_in_ipfs(
            self._get_ipfs_client(), metadata_file, False)
        params = [type_converter("bytes32")(
            org_id), hash_to_bytesuri(ipfs_metadata_uri)]
        self._printout(
            "Creating transaction to create organization name={} id={}\n".format(org_metadata.org_name, org_id))
        self.transact_contract_command(
            "Registry", "changeOrganizationMetadataURI", params)
        self._printout("id:\n%s" % org_id)
Exemple #10
0
 def _get_organization_registration(self, org_id):
     params = [type_converter("bytes32")(org_id)]
     rez = self.call_contract_command(
         "Registry", "getOrganizationById", params)
     if (rez[0] == False):
         raise Exception("Cannot find  Organization with id=%s" % (
             self.args.org_id))
     return {"orgMetadataURI": rez[2]}
Exemple #11
0
 def _get_organization_by_id(self, org_id):
     org_id_bytes32 = type_converter("bytes32")(org_id)
     if len(org_id_bytes32) > 32:
         raise Exception(
             "Your org_id is too long, it should be 32 bytes or less. len(org_id_bytes32)=%i"
             % (len(org_id_bytes32)))
     return self.call_contract_command("Registry", "getOrganizationById",
                                       [org_id_bytes32])
Exemple #12
0
 def list_services(self):
     org_id = self.args.org_id
     (found, org_service_list) = self.call_contract_command("Registry", "listServicesForOrganization",
                                                            [type_converter("bytes32")(org_id)])
     self.error_organization_not_found(org_id, found)
     if org_service_list:
         self._printout("\nList of {}'s Services:".format(org_id))
         for idx, org_service in enumerate(org_service_list):
             self._printout("- {}".format(bytes32_to_str(org_service)))
     else:
         self._printout(
             "Organization with id={} exists but has no registered services.".format(org_id))
Exemple #13
0
    def delete(self):
        org_id = self.args.org_id
        # Check if Organization exists
        (found, _, org_name, _, _, _) = self._get_organization_by_id(org_id)
        self.error_organization_not_found(org_id, found)

        self._printout("Creating transaction to delete organization with name={} id={}".format(
            org_name, org_id))
        try:
            self.transact_contract_command("Registry", "deleteOrganization", [
                type_converter("bytes32")(org_id)])
        except Exception as e:
            self._printerr(
                "\nTransaction error!\nHINT: Check if you are the owner of organization with id={}\n".format(org_id))
            raise
Exemple #14
0
 def _get_converted_tags(self):
     return [type_converter("bytes32")(tag) for tag in self.args.tags]