From 1bf843f3dce013aee3b8ce82253a404d4ed5c761 Mon Sep 17 00:00:00 2001
From: Yves Noirjean <yves.noirjean@id.ethz.ch>
Date: Tue, 15 May 2018 17:46:54 +0200
Subject: [PATCH] SSDM-6476: removed data_set_ prefix from data set settings

---
 .../OBis/integration_tests/integration_tests.py  | 16 ++++++++--------
 .../OBis/obis/dm/commands/openbis_command.py     | 10 +++++-----
 src/python/OBis/obis/dm/commands/openbis_sync.py |  6 +++---
 src/python/OBis/obis/dm/config.py                | 12 ++----------
 src/python/OBis/obis/dm/data_mgmt.py             |  2 +-
 src/python/OBis/obis/dm/data_mgmt_test.py        | 10 +++++-----
 src/python/OBis/obis/scripts/cli.py              | 15 ++++++++-------
 7 files changed, 32 insertions(+), 39 deletions(-)

diff --git a/src/python/OBis/integration_tests/integration_tests.py b/src/python/OBis/integration_tests/integration_tests.py
index 85d7c84d814..cf803f13e98 100644
--- a/src/python/OBis/integration_tests/integration_tests.py
+++ b/src/python/OBis/integration_tests/integration_tests.py
@@ -39,13 +39,13 @@ def test_obis(tmpdir):
     cmd('obis config -g set user=admin')
     cmd('obis config -g set verify_certificates=false')
     cmd('obis config -g set hostname=' + socket.gethostname())
-    cmd('obis data_set -g set data_set_type=UNKNOWN')
+    cmd('obis data_set -g set type=UNKNOWN')
     settings = get_settings_global()
     assert settings['config']['openbis_url'] == 'https://obisserver:8443'
     assert settings['config']['user'] == 'admin'
     assert settings['config']['verify_certificates'] == False
     assert settings['config']['hostname'] == socket.gethostname()
-    assert settings['data_set']['data_set_type'] == 'UNKNOWN'
+    assert settings['data_set']['type'] == 'UNKNOWN'
 
     with cd(tmpdir): cmd('mkdir obis_data')
     with cd(tmpdir + '/obis_data'):
@@ -243,12 +243,12 @@ def test_obis(tmpdir):
         with cd('data8'):
             result = cmd('obis data_set -p set a=0')
             settings = get_settings()
-            assert settings['data_set']['data_set_properties'] == { 'A': '0' }
-            cmd('obis data_set set data_set_properties={"a":"0","b":"1","c":"2"}')
+            assert settings['data_set']['properties'] == { 'A': '0' }
+            cmd('obis data_set set properties={"a":"0","b":"1","c":"2"}')
             cmd('obis data_set -p set c=3')
             settings = get_settings()
-            assert settings['data_set']['data_set_properties'] == { 'A': '0', 'B': '1', 'C': '3' }
-            result = cmd('obis data_set set data_set_properties={"a":"0","A":"1"}')
+            assert settings['data_set']['properties'] == { 'A': '0', 'B': '1', 'C': '3' }
+            result = cmd('obis data_set set properties={"a":"0","A":"1"}')
             assert 'Duplicate key after capitalizing JSON config: A' in result
 
         output_buffer = '=================== 15. Removeref ===================\n'
@@ -303,7 +303,7 @@ def test_obis(tmpdir):
             settings = get_settings()
             assert "Created data set {}.".format(settings['repository']['data_set_id']) in result
             cmd('touch file2')
-            cmd('obis config user=watney')
+            cmd('obis config set user=watney')
             # expect timeout because obis is asking for the password of the new user
             try:
                 timeout = False
@@ -351,7 +351,7 @@ def get_cmd_result(completed_process, tmpdir=''):
 def assert_matching(settings, data_set, tmpdir, path):
     content_copies = data_set['linkedData']['contentCopies']
     content_copy = list(filter(lambda cc: cc['path'].endswith(path) == 1, content_copies))[0]
-    assert data_set['type']['code'] == settings['data_set']['data_set_type']
+    assert data_set['type']['code'] == settings['data_set']['type']
     assert content_copy['externalDms']['code'] == settings['repository']['external_dms_id']
     assert content_copy['gitCommitHash'] == cmd('git rev-parse --short HEAD')
     assert content_copy['gitRepositoryId'] == settings['repository']['repository_id']
diff --git a/src/python/OBis/obis/dm/commands/openbis_command.py b/src/python/OBis/obis/dm/commands/openbis_command.py
index 66fe02b99f3..2703c943f54 100644
--- a/src/python/OBis/obis/dm/commands/openbis_command.py
+++ b/src/python/OBis/obis/dm/commands/openbis_command.py
@@ -46,16 +46,16 @@ class OpenbisCommand(object):
         self.config_dict['repository']['data_set_id'] = value
 
     def data_set_type(self):
-        return self.config_dict['data_set']['data_set_type']
+        return self.config_dict['data_set']['type']
 
     def set_data_set_type(self, value):
-        self.config_dict['data_set']['data_set_type'] = value
+        self.config_dict['data_set']['type'] = value
 
     def data_set_properties(self):
-        return self.config_dict['data_set']['data_set_properties']
+        return self.config_dict['data_set']['properties']
 
     def set_data_set_properties(self, value):
-        self.config_dict['data_set']['data_set_properties'] = value
+        self.config_dict['data_set']['properties'] = value
 
     def object_id(self):
         return self.config_dict['object']['object_id']
@@ -135,7 +135,7 @@ class OpenbisCommand(object):
         if result.failure():
             return result
         external_dms = result.output
-        self.settings_resolver.set_value_for_parameter('external_dms_id', external_dms.code, 'local')
+        self.settings_resolver.repository_resolver.set_value_for_parameter('external_dms_id', external_dms.code, 'local')
         self.set_external_dms_id(external_dms.code)
         return result
 
diff --git a/src/python/OBis/obis/dm/commands/openbis_sync.py b/src/python/OBis/obis/dm/commands/openbis_sync.py
index 8499d92741d..d087dd399f7 100644
--- a/src/python/OBis/obis/dm/commands/openbis_sync.py
+++ b/src/python/OBis/obis/dm/commands/openbis_sync.py
@@ -22,7 +22,7 @@ class OpenbisSync(OpenbisCommand):
         if self.user() is None:
             missing_config_settings.append('user')
         if self.data_set_type() is None:
-            missing_config_settings.append('data_set_type')
+            missing_config_settings.append('data_set type')
         if self.object_id() is None and self.collection_id() is None:
             missing_config_settings.append('object_id')
             missing_config_settings.append('collection_id')
@@ -71,7 +71,7 @@ class OpenbisSync(OpenbisCommand):
         repository_id = self.repository_id()
         if self.repository_id() is None:
             repository_id = str(uuid.uuid4())
-            self.settings_resolver.set_value_for_parameter('repository_id', repository_id, 'local')
+            self.settings_resolver.repository_resolver.set_value_for_parameter('repository_id', repository_id, 'local')
         return CommandResult(returncode=0, output=repository_id)
 
 
@@ -159,7 +159,7 @@ class OpenbisSync(OpenbisCommand):
         self.commit_metadata_updates()
 
         # Update data set id as last commit so we can easily revert it on failure
-        self.settings_resolver.set_value_for_parameter('data_set_id', data_set_code, 'local')
+        self.settings_resolver.repository_resolver.set_value_for_parameter('data_set_id', data_set_code, 'local')
         self.commit_metadata_updates("data set id")
 
         # create a data set, using the existing data set as a parent, if there is one
diff --git a/src/python/OBis/obis/dm/config.py b/src/python/OBis/obis/dm/config.py
index d81ee21df03..57ef0a32faf 100644
--- a/src/python/OBis/obis/dm/config.py
+++ b/src/python/OBis/obis/dm/config.py
@@ -133,10 +133,9 @@ class ObjectEnv(ConfigEnv):
 
 class DataSetEnv(ConfigEnv):
 
-    # TODO remove data_set from property names
     def initialize_params(self):
-        self.add_param(ConfigParam(name='data_set_type', private=False))
-        self.add_param(ConfigParam(name='data_set_properties', private=False, is_json=True))        
+        self.add_param(ConfigParam(name='type', private=False))
+        self.add_param(ConfigParam(name='properties', private=False, is_json=True))        
 
 
 class RepositoryEnv(ConfigEnv):
@@ -331,18 +330,11 @@ class SettingsResolver(object):
             combined_dict[key] = resolver.config_dict(local_only=local_only)
         return combined_dict
 
-    def set_value_for_parameter(self, name, value, loc):
-        for resolver in self.resolvers:
-            if name in resolver.env.params:
-                return resolver.set_value_for_parameter(name, value, loc)
-        raise ValueError('Config does not exist: ' + name)
-
     def set_value_for_json_parameter(self, json_param_name, name, value, loc):
         for resolver in self.resolvers:
             if json_param_name in resolver.env.params:
                 return resolver.set_value_for_json_parameter(json_param_name, name, value, loc)
 
-    # TODO return a list
     def local_public_properties_paths(self, get_usersettings=False):
         paths = []
         for resolver in self.resolvers:
diff --git a/src/python/OBis/obis/dm/data_mgmt.py b/src/python/OBis/obis/dm/data_mgmt.py
index 537bfcbad44..fa7cd6f7b2a 100644
--- a/src/python/OBis/obis/dm/data_mgmt.py
+++ b/src/python/OBis/obis/dm/data_mgmt.py
@@ -258,7 +258,7 @@ class GitDataMgmt(AbstractDataMgmt):
             return CommandResult(returncode=-1, output="Not within a repository and no parent set.")
         # set data_set_id to analysis repository so it will be used as parent when committing
         with cd(path):
-            cli.set_property(self, "data_set_id", parent_data_set_id, False, False)
+            cli.set_property(self, self.settings_resolver.repository_resolver, "data_set_id", parent_data_set_id, False, False)
         return result
 
 
diff --git a/src/python/OBis/obis/dm/data_mgmt_test.py b/src/python/OBis/obis/dm/data_mgmt_test.py
index 8b4ceca636a..cf4027c4b3f 100644
--- a/src/python/OBis/obis/dm/data_mgmt_test.py
+++ b/src/python/OBis/obis/dm/data_mgmt_test.py
@@ -242,12 +242,12 @@ def test_init_analysis(tmpdir):
 
 def set_registration_configuration(dm, properties=None):
     resolver = dm.settings_resolver
-    resolver.set_value_for_parameter('openbis_url', "http://localhost:8888", 'local')
-    resolver.set_value_for_parameter('user', "auser", 'local')
-    resolver.set_value_for_parameter('data_set_type', "DS_TYPE", 'local')
-    resolver.set_value_for_parameter('object_id', "/SAMPLE/ID", 'local')
+    resolver.config_resolver.set_value_for_parameter('openbis_url', "http://localhost:8888", 'local')
+    resolver.config_resolver.set_value_for_parameter('user', "auser", 'local')
+    resolver.data_set_resolver.set_value_for_parameter('type', "DS_TYPE", 'local')
+    resolver.object_resolver.set_value_for_parameter('object_id', "/SAMPLE/ID", 'local')
     if properties is not None:
-        resolver.set_value_for_parameter('data_set_properties', properties, 'local')
+        resolver.data_set_resolver.set_value_for_parameter('properties', properties, 'local')
 
 
 def prepare_registration_expectations(dm):
diff --git a/src/python/OBis/obis/scripts/cli.py b/src/python/OBis/obis/scripts/cli.py
index 42adc1eab78..9cab46d3edc 100644
--- a/src/python/OBis/obis/scripts/cli.py
+++ b/src/python/OBis/obis/scripts/cli.py
@@ -71,13 +71,12 @@ def cli(ctx, quiet, skip_verification):
         ctx.obj['verify_certificates'] = False
 
 
-def set_property(data_mgmt, prop, value, is_global, is_data_set_property):
+def set_property(data_mgmt, resolver, prop, value, is_global, is_data_set_property=False):
     """Helper function to implement the property setting semantics."""
     loc = 'global' if is_global else 'local'
-    resolver = data_mgmt.settings_resolver
     try:
         if is_data_set_property:
-            resolver.set_value_for_json_parameter('data_set_properties', prop, value, loc)
+            resolver.set_value_for_json_parameter('properties', prop, value, loc)
         else:
             resolver.set_value_for_parameter(prop, value, loc)
     except ValueError as e:
@@ -110,9 +109,11 @@ def init_handle_cleanup(result, object_id, collection_id, folder, data_mgmt):
         return check_result("init_data", result)
     with dm.cd(folder):
         if object_id:
-            return check_result("init_data", set_property(data_mgmt, 'object_id', object_id, False, False))
+            resolver = data_mgmt.object_resolver
+            return check_result("init_data", set_property(data_mgmt, resolver, 'object_id', object_id, False, False))
         if collection_id:
-            return check_result("init_data", set_property(data_mgmt, 'collection_id', collection_id, False, False))
+            resolver = data_mgmt.collection_resolver
+            return check_result("init_data", set_property(data_mgmt, resolver, 'collection_id', collection_id, False, False))
 
 
 # settings commands
@@ -202,7 +203,7 @@ def _config_internal(data_mgmt, resolver, is_global, is_data_set_property, prop,
 
     config_dict = resolver.config_dict()
     if is_data_set_property:
-        config_dict = config_dict['data_set_properties']
+        config_dict = config_dict['properties']
     if not prop:
         config_str = json.dumps(config_dict, indent=4, sort_keys=True)
         click.echo("{}".format(config_str))
@@ -211,7 +212,7 @@ def _config_internal(data_mgmt, resolver, is_global, is_data_set_property, prop,
         config_str = json.dumps(little_dict, indent=4, sort_keys=True)
         click.echo("{}".format(config_str))
     else:
-        return check_result("config", set_property(data_mgmt, prop, value, is_global, is_data_set_property))
+        return check_result("config", set_property(data_mgmt, resolver, prop, value, is_global, is_data_set_property))
 
 
 def _set(ctx, settings):
-- 
GitLab