... | ... | @@ -6,7 +6,7 @@ It is not an official part of B2SAFE and can be found in a separate development |
|
|
B2SHARE connection component is an extension of the B2SAFE core package (https://github.com/EUDAT-B2SAFE/B2SAFE-core), so following software are expected to be in place before installation:
|
|
|
* iRODS
|
|
|
* B2SAFE
|
|
|
* python
|
|
|
* python 3
|
|
|
|
|
|
To install the component you have to do following steps:
|
|
|
* clone “b2share” branch of the B2SAFE core from GitHub https://github.com/EUDAT-B2SAFE/B2SAFE-core.git to get the scripts and rules you need for B2SHARE connection establishing.
|
... | ... | @@ -15,212 +15,207 @@ To install the component you have to do following steps: |
|
|
* b2shareclientCLI.py
|
|
|
* configuration.py
|
|
|
* create_md_file.py
|
|
|
* and the whole directory “manifest”
|
|
|
* irodsUtility.py
|
|
|
* add the rule “b2share.re” from B2SAFE-core/rulebase folder to the "rulebase" folder of your iRODS instance \<your path to B2SAFE\>/B2SAFE-core/rulebase
|
|
|
* add to your configuration folder \<your path to B2SAFE\>/B2SAFE-core/conf and modify the configuration files “b2safe_b2share.conf” and “create_md_file.conf” according to your environment as described in "Configuration" section of this wiki page
|
|
|
* add to your configuration folder \<your path to B2SAFE\>/B2SAFE-core/conf and modify the configuration file “b2share_client_example.json” according to your environment as described in "Configuration" section of this wiki page and rename it to “b2share_client.json”
|
|
|
* check for missing python libraries trying to run the major scripts with -d (dry run) option
|
|
|
* b2shareclientCLI.py
|
|
|
* create_md_file.py
|
|
|
Try to install missing packages with the standard package manager like apt, yum, zypper etc.
|
|
|
If packages are not within the standards install and use pip to install the missing packages.
|
|
|
This are mostly: python-irodsclient jsonpatch requests configparser mock pytest
|
|
|
Try to install missing packages with the standard package manager like pip (sudo pip3.6 install), apt, yum, zypper etc.
|
|
|
As described in the “Example Workflow” section, the iRODS rules will trigger these scripts according to the flags user specify in the imeta of the collection.
|
|
|
|
|
|
# Configuration
|
|
|
There are two major scripts for the B2SHARE connection component b2shareclientCLI.py and create_md_file.py that are using the configuration files “b2safe_b2share.conf” and “create_md_file.conf” accordingly. The configurable options are identical. The configurations were only separated as the scripts could be used independently. It consists of 3 parts. The first two sections `Logging` and `B2SHARE_HTTP_API` are prefilled with default values.
|
|
|
* `Logging` - with 2 values needed to be specified: log level, default is **log_level=DEBUG**, and the file where to safe the logging information, default value is **log_file=log/b2safe_b2share.log**, so in a file named b2safe_b2share.log in folder log under the installation path.
|
|
|
* `B2SHARE_HTTP_API` - with 1 value needed to be specified: host_name of the B2SHARE instance, default is the address of the training instance of B2SHARE **host_name=https://trng-b2share.eudat.eu/**.
|
|
|
* `iRODS` - connection information of the iRODS instance: the name of the iRODS zone like **zone_name=Zone1** and the endpoint consisting of the host_name:port information like **zone_ep=localhost:1247** and the information about the iRODS **resources** to be used as well as the logical home directory in iRODS like **irods_home_dir=/Zone1/home**.
|
|
|
There are two major scripts for the B2SHARE connection component b2shareclientCLI.py and create_md_file.py that are using the configuration file “b2share_client.json”. If the configurations
|
|
|
It consists of 3 parts. The first two sections `logging` and `b2share_http_api` are prefilled with default values.
|
|
|
* `logging` - with 2 values needed to be specified: log level, default is **"loglevel": "DEBUG"**, and the file where to safe the logging information, default value is **"logfile": "/opt/eudat/b2safe/log/b2share_connection_client.log"**, so in a file named b2share_connection_client.log in folder log under the installation path.
|
|
|
* `b2share_http_api` - with 1 value needed to be specified: host_name of the B2SHARE instance, default is the address of the training instance of B2SHARE **"host_name": "https://trng-b2share.eudat.eu/"**. Do not change the attribute **"access_parameter": "?access_token"** or any other attributes of `b2share_http_api`. It is a part of the string needed to build the URL for the B2SHARE HTTP API and need to be changed only if the B2SHARE HTTP API will change.
|
|
|
* `irods` - connection information of the iRODS instance like the name of the iRODS zone **"zone_name": "YOUR_ZONE"** and **"irods_env": "/home/irods/.irods/irods_environment.json"**.
|
|
|
|
|
|
# Example Workflow
|
|
|
Following workflow was considered during the component development:
|
|
|
|
|
|
1. The user is registered at B2SHARE and has an B2SHARE access token. The user provides the b2share token to the B2SAFE administrator, who adds it to the user metadata: `imeta add -u <irods_user_name> access_token <token_value>`
|
|
|
2. The user adds a specific metadata attribute to the collection, which will be used to create a draft:
|
|
|
`imeta add -C \<collection_X\> EUDAT_B2SHARE_DRAFT EUDAT` (the last value is the community name)
|
|
|
3. The B2SAFE administrator executes a rule to scan the repository for drafts:
|
|
|
`irule "EUDATScanForB2shareDrafts(*user)" "*user=rods" ruleExecOut`
|
|
|
- The user in this case is the iRODS administrator user. The result of this action is the creation of a draft in B2SHARE and of a new metadata attribute in B2SAFE containing the record ID: `imeta ls -C \<collection_X\>`
|
|
|
```
|
|
|
|
|
|
2. The user adds a specific metadata attributes to the collection, that will be used to create a draft:
|
|
|
`imeta add -C \<collection_X\> EUDAT_B2SHARE_PUBLISH EUDAT` with community name as the value, to publish the collection unter
|
|
|
`imeta add -C \<collection_X\> EUDAT_B2SHARE_TITLE Some_Title` and the title of the publication.
|
|
|
|
|
|
The `imeta ls -C \<collection_X\>` will then deliver:
|
|
|
```
|
|
|
AVUs defined for collection collection_X:
|
|
|
attribute: EUDAT_B2SHARE_RECORD_ID
|
|
|
value: f77de1f5ff5c4****
|
|
|
attribute: EUDAT_B2SHARE_PUBLISH
|
|
|
value: EUDAT
|
|
|
units:
|
|
|
\----
|
|
|
attribute: EUDAT_B2SHARE_DRAFT
|
|
|
value: EUDAT
|
|
|
attribute: EUDAT_B2SHARE_TITLE
|
|
|
value: Some_Title
|
|
|
units:
|
|
|
```
|
|
|
4. The user can modify the draft via B2SHARE or the drafted collection in B2SAFE. What can be done by creating and filling a specific metadata file in the collection and using the **b2shareclientCLI.py** to add these metadata to the draft. Once she is ready, she can add a specific metadata attribute to the collection:
|
|
|
`imeta add -C \<collection_X\> EUDAT_B2SHARE_PUBLISHME null`
|
|
|
|
|
|
5. The B2SAFE administrator executes a rule to scan the repository for publications:
|
|
|
`irule "EUDATScanForPublishingOnB2share(*publishingPath, *user)"
|
|
|
"*publishingPath=/Zone1/publishing%*user=rods" ruleExecOut`
|
|
|
The publishing path is the restricted iRODS collection where are copied the data to be published, the user in this case is the B2SAFE administrator.
|
|
|
The result of this action is:
|
|
|
* the copy of the collection to the publishing path
|
|
|
* the creation of PIDs
|
|
|
* the update of the draft with the new PIDs
|
|
|
* the publication in B2SHARE
|
|
|
```
|
|
|
|
|
|
3. As preparation the user can create a meta data file **b2share_metadata.json** in the collection. The helper script **create_md_file.py** creates a sceleton file according to the B2SHARE schema of the community.
|
|
|
|
|
|
4. The B2SAFE administrator executes a rule to scan the B2SAFE repository for that meta data tag or configure a cron job or a script to do so.
|
|
|
* The workflow the rule executes will then create a draft in B2SHARE with a list of files the collection contains. (see worflow diagram below)
|
|
|
* Then it will add a meta data to the draft if the collection is containing the file **b2share_metadata.json** with describing meta data. For this it will compare the meta data in B2SHARE and that in the file and override the ones that user has added online in B2SHARE.
|
|
|
* Finaly it will publish the draft and "freez" the collection in B2SAFE by taking away the users access rights for the collection and giving the rights to the B2SAFE administrator.
|
|
|
|
|
|
5. The user has then the possibility to fill out the meta data online in the B2SHARE in the published record. The record id will be add to the imeta (EUDAT_B2SHARE_PUBLISHED_ID) of the collection and the record in B2SHARE will be accessable to the user as it will be published with his access token.
|
|
|
|
|
|
Following assumptions were made:
|
|
|
* there is just one owner for each collection.
|
|
|
* the drafts are registered in B2SHARE just one time, even if the rule to scan for draft is executed multiple times.
|
|
|
* the collections are copied and published just one time, even if the rule to publish them is executed multiple times.
|
|
|
|
|
|
# Available functions of the python scripts
|
|
|
The B2SAFE B2SHARE client **b2shareclientCLI.py** has 3 major functions: draft, meta, pub; to create a draft, add metadata to and publish it. Further it has helping functions to list all names of communities available in B2SHARE, to get the schema of a community, to understand possible key value pairs of metadata file user has to fill, to get a specific draft to check it before publishing and to delete a draft if it is not correct. The arguments that are needed to be specified for every call are the **--confpath** the path to the configuration file for the b2shareclientCLI.py and the **--userName** name if the user in iRODS, to get the B2SHARE access token of the user from his meta data.
|
|
|
# The rule will call the methods of the python script **b2shareclientCLI.py** to execute the workflow, this methods can also be called directly.
|
|
|
|
|
|
The B2SAFE B2SHARE client has 3 major functions: draft, meta, publish; to create a draft, add metadata to and publish it. Further it has helping functions to list all names of communities available in B2SHARE, to get the schema of a community, to understand possible key value pairs of metadata file user has to fill, to get a specific draft to check it before publishing and to delete a draft if it is not correct.
|
|
|
The arguments that are needed to be specified for every call are the **--collection_path** the path to the collection in B2SAFE to operate on and the **--user** name of the user in iRODS, to get the B2SHARE access token of the user from his meta data.
|
|
|
The script has to be executed by a linux user that is the same user in iRODS who is owning the collection.
|
|
|
```
|
|
|
python b2shareclientCLI.py -h
|
|
|
usage: b2shareclientCLI.py [-h] [--confpath CONFPATH] [-dbg] [-d] [-u USERNAME]
|
|
|
{draft,meta,pub,listCommunities,communitySchema,getDraft,deleteDraft}
|
|
|
B2SAFE B2SHARE client
|
|
|
e.g.
|
|
|
sudo su - irods
|
|
|
cd /opt/eudat/b2safe/cmd/
|
|
|
|
|
|
python3 b2shareclientCLI.py -h
|
|
|
usage: b2shareclientCLI.py [-h] [--confpath CONFPATH] -u USER -p
|
|
|
COLLECTION_PATH [-d] [-v]
|
|
|
{draft,compare_meta,meta,publish,listCommunities,communitySchema,getDraft,deleteDraft}
|
|
|
...
|
|
|
|
|
|
B2SAFE B2SHARE command line client
|
|
|
|
|
|
positional arguments:
|
|
|
{draft,meta,pub,listCommunities,communitySchema,getDraft,deleteDraft}
|
|
|
{draft,compare_meta,meta,publish,listCommunities,communitySchema,getDraft,deleteDraft}
|
|
|
sub-command help
|
|
|
draft create a draft record in B2Share
|
|
|
draft create a draft in B2Share
|
|
|
compare_meta compare metadata of the draft and collection
|
|
|
meta add metadata to the draft
|
|
|
pub publish the draft
|
|
|
publish publish the draft
|
|
|
listCommunities list all communities with their names and id's
|
|
|
communitySchema get community schema
|
|
|
getDraft get draft and if there write it to the log file
|
|
|
getDraft get draft and if there, write it to the log file
|
|
|
deleteDraft delete the draft
|
|
|
|
|
|
optional arguments:
|
|
|
-h, --help show this help message and exit
|
|
|
--confpath CONFPATH path to the configuration file
|
|
|
-dbg, --debug enable debug
|
|
|
-d, --dryrun run without performing any real change
|
|
|
-u USERNAME, --userName USERNAME iRODS user name
|
|
|
```
|
|
|
Depending on what function is called further options are needed to be specified.
|
|
|
-h, --help show this help message and exit
|
|
|
--confpath CONFPATH path to the configuration file if not in default
|
|
|
/path_to_b2safe/conf/b2share_client.json
|
|
|
-u USER, --user USER irods user to get B2SHARE access token
|
|
|
-p COLLECTION_PATH, --collection_path COLLECTION_PATH
|
|
|
irods path to the collection
|
|
|
-d, --dryrun run without performing any real change
|
|
|
-v, --verbose enable printouts for debug
|
|
|
```
|
|
|
python b2shareclientCLI.py draft -h
|
|
|
usage: b2shareclientCLI.py draft [-h] (-c COMMUNITYNAME | -i COMMUNITYID) [-ti TITLE] -cp COLLECTIONPATH
|
|
|
optional arguments:
|
|
|
-h, --help show this help message and exit
|
|
|
-c COMMUNITYNAME, --communityName COMMUNITYNAME B2Share community name
|
|
|
-i COMMUNITYID, --communityID COMMUNITYID B2Share community id
|
|
|
-ti TITLE, --title TITLE title of the record
|
|
|
-cp COLLECTIONPATH, --collectionPath COLLECTIONPATH path to the collection in iRODS with files
|
|
|
|
|
|
python b2shareclientCLI.py meta -h
|
|
|
usage: b2shareclientCLI.py meta [-h] -id RECORD_ID -md METADATA
|
|
|
optional arguments:
|
|
|
-h, --help show this help message and exit
|
|
|
-id RECORD_ID, --record_id RECORD_ID the b2share id of the record
|
|
|
-md METADATA, --metadata METADATA path to the metadata JSON file of the record
|
|
|
|
|
|
python b2shareclientCLI.py pub -h
|
|
|
usage: b2shareclientCLI.py pub [-h] -pi REC_ID
|
|
|
optional arguments:
|
|
|
-h, --help show this help message and exit
|
|
|
-pi REC_ID, --rec_id REC_ID the b2share id of the record
|
|
|
|
|
|
python b2shareclientCLI.py listCommunities -h
|
|
|
usage: b2shareclientCLI.py listCommunities [-h]
|
|
|
optional arguments:
|
|
|
-h, --help show this help message and exit
|
|
|
|
|
|
python b2shareclientCLI.py communitySchema -h
|
|
|
usage: b2shareclientCLI.py communitySchema [-h] (-cn COMMNAME | -ci COMMID)
|
|
|
optional arguments:
|
|
|
-h, --help show this help message and exit
|
|
|
-cn COMMNAME, --commName COMMNAME B2Share community name
|
|
|
-ci COMMID, --commID COMMID B2Share community id
|
|
|
|
|
|
python b2shareclientCLI.py getDraft -h
|
|
|
usage: b2shareclientCLI.py getDraft [-h] -di DRAFT_ID
|
|
|
optional arguments:
|
|
|
-h, --help show this help message and exit
|
|
|
-di DRAFT_ID, --draft_id DRAFT_ID the b2share id of the record
|
|
|
|
|
|
python b2shareclientCLI.py deleteDraft -h
|
|
|
usage: b2shareclientCLI.py deleteDraft [-h] -ddi DRAFT_TO_DELETE_ID
|
|
|
optional arguments:
|
|
|
-h, --help show this help message and exit
|
|
|
-ddi DRAFT_TO_DELETE_ID, --draft_to_delete_id DRAFT_TO_DELETE_ID the b2share id of the record
|
|
|
|
|
|
e.g.
|
|
|
python b2shareclient.py -dbg -d --confpath conf/b2share_connection.conf -u julia draft -c EUDAT -ti testCollectionDarft5 -cp /JuliasZone/home/julia/testcollection/collection_A
|
|
|
|
|
|
Depending on what function is called further options are needed to be specified.
|
|
|
```
|
|
|
To add some describing meta data to the collection of files, the user want to publish on B2SHARE, it is possible to add a metadata file directly into the collection before triggering the publication process. This file needs to be written in a specific way so it can be processed by the **b2shareclientCLI.py** and its information send to B2SHARE over the REST API. The script **create_md_file.py** can help one to create such a file for specified community. It is requesting the schema of the community and saves optional and required options. The user needs then fill the values in for the options he wants to be saved in the meta data of the draft.
|
|
|
e.g.
|
|
|
python3 b2shareclientCLI.py -u irods -p /JULK_ZONE/home/irods/collection_A -v draft -t "Test publication 10" -comm EUDAT
|
|
|
python3 b2shareclientCLI.py -u irods -p /JULK_ZONE/home/irods/collection_A -v compare_meta -idc 00some00B2SHARE00record00id00
|
|
|
python3 b2shareclientCLI.py -u irods -p /JULK_ZONE/home/irods/collection_A -v meta -rid 00some00B2SHARE00record00id00
|
|
|
python3 b2shareclientCLI.py -u irods -p /JULK_ZONE/home/irods/collection_A -v -d publish -pubid 00some00B2SHARE00record00id00
|
|
|
|
|
|
python3 b2shareclientCLI.py -u irods -p /JULK_ZONE/home/irods/collection_A -v listCommunities
|
|
|
python3 b2shareclientCLI.py -u irods -p /JULK_ZONE/home/irods/collection_A -v communitySchema -comm_name EUDAT
|
|
|
python3 b2shareclientCLI.py -u irods -p /JULK_ZONE/home/irods/collection_A -v getDraft -di 00some00B2SHARE00record00id00
|
|
|
python3 b2shareclientCLI.py -u irods -p /JULK_ZONE/home/irods/collection_A -v -d deleteDraft -ddi 00some00B2SHARE00record00id00
|
|
|
```
|
|
|
python create_md_file.py -h
|
|
|
usage: create_md_file.py [-h] [--confpath CONFPATH] [-c COMMUNITYNAME] [-dbg] [-d] [-u USERNAME] [--collectionName COLLECTIONNAME]
|
|
|
|
|
|
B2SAFE B2SHARE client
|
|
|
|
|
|
optional arguments:
|
|
|
-h, --help show this help message and exit
|
|
|
--confpath CONFPATH path to the configuration file
|
|
|
-dbg, --debug enable debug
|
|
|
-d, --dryrun run without performing any real change
|
|
|
-u USERNAME, --userName USERNAME iRODS user name
|
|
|
-c COMMUNITYNAME, --communityName COMMUNITYNAME B2Share community name
|
|
|
--collectionName COLLECTIONNAME path to the collection where to create the metadata file
|
|
|
e.g.
|
|
|
python create_md_file.py -dbg -d --confpath conf/create_md_file.conf -u julia -c EUDAT --collectionName /JuliasZone/home/julia/collection_A
|
|
|
To add some describing meta data to the collection of files, the user want to publish on B2SHARE, it is possible to add a metadata file directly into the collection before triggering the publication process.
|
|
|
This file needs to be written in a specific way so it can be processed by the **b2shareclientCLI.py** and its information send to B2SHARE over the REST API.
|
|
|
The script **create_md_file.py** can help one to create such a file for specified community. It is requesting the schema of the community and saves optional and required options. The user needs then fill the values (only the values) in for the options he wants to be saved in the meta data of the draft.
|
|
|
```
|
|
|
e.g. with -d dry run option that will print the resulting file content to the console and will not create the file in the collection
|
|
|
python3 create_md_file.py -u irods -p /JULK_ZONE/home/irods/collection_A -v -d -comm EUDAT
|
|
|
```
|
|
|
|
|
|
An example of a generated meta data file filled with some fake values in correct JSON format.
|
|
|
An example of a generated meta data file **b2share_metadata.json** for EUDAT community schema filled with some fake values in correct JSON format.
|
|
|
```
|
|
|
#please fill out at least the required fields with values as JSON strings in the line after the property name.
|
|
|
#e.g. string for community - EUDAT, boolean for open_access - true, array of objects for contributors - [{"contributor_name":"Hulk", "contributor_type": "Editor"}, {"contributor_name":"Banner", "contributor_type": "ContactPerson"}]
|
|
|
|
|
|
[required]
|
|
|
|
|
|
community
|
|
|
EUDAT
|
|
|
|
|
|
titles
|
|
|
[{"title":"Demo b2shareclient"}]
|
|
|
|
|
|
descriptions
|
|
|
[{"description":"A collection to demostrate the b2shareclient functionality", "description_type":"Abstract"}]
|
|
|
|
|
|
creators
|
|
|
[{"creator_name":"Kaufhold, Julia"}]
|
|
|
|
|
|
open_access
|
|
|
true
|
|
|
|
|
|
embargo_date
|
|
|
November 12, 2017
|
|
|
|
|
|
license
|
|
|
{"license":"Public Domain Mark (PD)", "license_uri":"http://creativecommons.org/publicdomain/mark/1.0/"}
|
|
|
|
|
|
disciplines
|
|
|
["4.1.5 → Computer sciences → Data structures", "4.1.4 → Computer sciences → Algorithm"]
|
|
|
|
|
|
keywords
|
|
|
["Test", "Demo"]
|
|
|
|
|
|
contact_email
|
|
|
email@example.com
|
|
|
|
|
|
|
|
|
[optional]
|
|
|
|
|
|
contributors
|
|
|
[{"contributor_name":"Hulk", "contributor_type": "Editor"}, {"contributor_name":"Banner", "contributor_type": "ContactPerson"}]
|
|
|
|
|
|
resource_types
|
|
|
[{"resource_type":"Random text", "resource_type_general":"Text"}]
|
|
|
|
|
|
alternate_identifiers
|
|
|
[{"alternate_identifier":"/Zone1/home/julia/collection_A", "alternate_identifier_type":"iRODS path"}]
|
|
|
|
|
|
version
|
|
|
V 1.0
|
|
|
|
|
|
publisher
|
|
|
Kaufhold, Julia. MPCDF
|
|
|
|
|
|
language
|
|
|
German [deu]
|
|
|
{
|
|
|
"metadata": {
|
|
|
"required": [
|
|
|
{
|
|
|
"option_name": "titles",
|
|
|
"value": [{"title":"Demo b2shareclient"}],
|
|
|
"type": "array"
|
|
|
},
|
|
|
{
|
|
|
"option_name": "descriptions",
|
|
|
"value": [{"description":"A collection to demostrate the b2shareclient functionality", "description_type":"Abstract"}],
|
|
|
"type": "array"
|
|
|
},
|
|
|
{
|
|
|
"option_name": "creators",
|
|
|
"value": [{"creator_name":"Mustermann, Max"}],
|
|
|
"type": "array"
|
|
|
},
|
|
|
{
|
|
|
"option_name": "open_access",
|
|
|
"value": true,
|
|
|
"type": "boolean"
|
|
|
},
|
|
|
{
|
|
|
"option_name": "embargo_date",
|
|
|
"value": "November 12, 2017",
|
|
|
"type": "string"
|
|
|
},
|
|
|
{
|
|
|
"option_name": "license",
|
|
|
"value": "",
|
|
|
"type": "object"
|
|
|
},
|
|
|
{
|
|
|
"option_name": "disciplines",
|
|
|
"value": "",
|
|
|
"type": "array"
|
|
|
},
|
|
|
{
|
|
|
"option_name": "keywords",
|
|
|
"value": ["Test", "Demo"],
|
|
|
"type": "array"
|
|
|
},
|
|
|
{
|
|
|
"option_name": "contact_email",
|
|
|
"value": "email@example.com",
|
|
|
"type": "string"
|
|
|
}
|
|
|
],
|
|
|
"optional": [
|
|
|
{
|
|
|
"option_name": "contributors",
|
|
|
"value": [{"contributor_name":"Hulk", "contributor_type": "Editor"}, {"contributor_name":"Banner", "contributor_type": "ContactPerson"}],
|
|
|
"type": "array"
|
|
|
},
|
|
|
{
|
|
|
"option_name": "resource_types",
|
|
|
"value": "",
|
|
|
"type": "array"
|
|
|
},
|
|
|
{
|
|
|
"option_name": "alternate_identifiers",
|
|
|
"value": "",
|
|
|
"type": "array"
|
|
|
},
|
|
|
{
|
|
|
"option_name": "version",
|
|
|
"value": "",
|
|
|
"type": "string"
|
|
|
},
|
|
|
{
|
|
|
"option_name": "publisher",
|
|
|
"value": "",
|
|
|
"type": "string"
|
|
|
},
|
|
|
{
|
|
|
"option_name": "language",
|
|
|
"value": "",
|
|
|
"type": "string"
|
|
|
}
|
|
|
]
|
|
|
}
|
|
|
}
|
|
|
```
|
|
|
|
|
|
# iRODS rules
|
... | ... | @@ -230,15 +225,18 @@ There are unit tests for the 3 scripts of the connection component in the reposi |
|
|
* b2shareclienttest.py for the worker class B2shareClient in b2shareclient.py
|
|
|
* b2shareclient_cli_test.py for the b2shareclientCLI.py
|
|
|
* configurationtest.py for the configuration.py
|
|
|
All this test can be executed at ones with the "b2shareclient_testsuite.py", that can be find one folder back in /scripts/tests, or each for its own.
|
|
|
All this test can be executed at ones with the "b2shareclient_testsuite.py", that can be found one folder back in /scripts/tests.
|
|
|
|
|
|
e.g.
|
|
|
```
|
|
|
cd /home/irods/B2SAFE-core/scripts/tests/
|
|
|
python b2shareclient_testsuite.py
|
|
|
python3 b2shareclient_testsuite.py
|
|
|
|
|
|
.......................
|
|
|
----------------------------------------------------------------------
|
|
|
Ran 23 tests in 0.107s
|
|
|
OK
|
|
|
``` |
|
|
\ No newline at end of file |
|
|
```
|
|
|
|
|
|
# worflow diagram
|
|
|
|