Use of PATCH method instead of PUT for projects
[osm/osmclient.git] / osmclient / sol005 / role.py
index 6e052ba..01f3bc3 100644 (file)
@@ -46,10 +46,11 @@ class Role(object):
         :raises ClientException: when receives an unexpected from the server.
         :raises ClientException: when fails creating a role.
         """
+        self._client.get_token()
         role = {"name": name}
 
         if permissions:
-            role_permissions = yaml.load(permissions)
+            role_permissions = yaml.safe_load(permissions)
 
             if not isinstance(role_permissions, dict):
                 raise ClientException('Role permissions should be provided in a key-value fashion')
@@ -94,6 +95,7 @@ class Role(object):
         :raises ClientException: when receives an unexpected response from the server.
         :raises ClientException: when fails updating a role.
         """
+        self._client.get_token()
         if new_name is None and permissions is None and add is None and remove is None:
             raise ClientException('At least one option should be provided')
         elif permissions and (add or remove):
@@ -105,7 +107,7 @@ class Role(object):
             new_role_obj["name"] = new_name
 
         if permissions:
-            role_definition = yaml.load(permissions)
+            role_definition = yaml.safe_load(permissions)
 
             if not isinstance(role_definition, dict):
                 raise ClientException('Role permissions should be provided in a key-value fashion')
@@ -117,7 +119,7 @@ class Role(object):
             new_role_obj["permissions"] = role_definition
         else:
             if remove:
-                keys_from_remove = yaml.load(remove)
+                keys_from_remove = yaml.safe_load(remove)
 
                 if not isinstance(keys_from_remove, list):
                     raise ClientException('Keys should be provided in a list fashion')
@@ -128,7 +130,7 @@ class Role(object):
                     new_role_obj["permissions"][key] = None
 
             if add:
-                add_roles = yaml.load(add)
+                add_roles = yaml.safe_load(add)
 
                 if not isinstance(add_roles, dict):
                     raise ClientException('Add should be provided in a key-value fashion')
@@ -141,7 +143,7 @@ class Role(object):
         if not new_role_obj["permissions"]:
             del new_role_obj["permissions"]
 
-        http_code, resp = self._http.put_cmd(endpoint='{}/{}'.format(self._apiBase, role_obj['_id']),
+        http_code, resp = self._http.patch_cmd(endpoint='{}/{}'.format(self._apiBase, role_obj['_id']),
                                              postfields_dict=new_role_obj)
         # print('HTTP CODE: {}'.format(http_code))
         # print('RESP: {}'.format(resp))
@@ -171,6 +173,7 @@ class Role(object):
         :param force:
         :raises ClientException: when fails to delete a role.
         """
+        self._client.get_token()
         role = self.get(name)
         querystring = ''
         if force:
@@ -201,6 +204,7 @@ class Role(object):
         :param filter:
         :returns:
         """
+        self._client.get_token()
         filter_string = ''
         if filter:
             filter_string = '?{}'.format(filter)
@@ -218,6 +222,7 @@ class Role(object):
         :raises NotFound: when the role is not found.
         :returns: the specified role.
         """
+        self._client.get_token()
         if utils.validate_uuid4(name):
             for role in self.list():
                 if name == role['_id']: