Skip to content

Commit

Permalink
Merge pull request #3180 from craig8/issue/3179
Browse files Browse the repository at this point in the history
Issue/3179
  • Loading branch information
craig8 authored May 8, 2024
2 parents 80afd8a + a1aa056 commit 61278c8
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 8 deletions.
6 changes: 2 additions & 4 deletions volttron/platform/vip/agent/subsystems/auth.py
Original file line number Diff line number Diff line change
Expand Up @@ -265,6 +265,7 @@ def update_rpc_method_capabilities(self):
"""
rpc_method_authorizations = {}
rpc_methods = self.get_rpc_exports()
updated_rpc_authorizations = None
for method in rpc_methods:
if len(method.split(".")) > 1:
pass
Expand Down Expand Up @@ -295,9 +296,7 @@ def update_rpc_method_capabilities(self):
_log.info(
f"Skipping updating rpc auth capabilities for agent "
f"{self._core().identity} connecting to remote address: {self._core().address} ")
updated_rpc_authorizations = None
except gevent.timeout.Timeout:
updated_rpc_authorizations = None
_log.warning(f"update_id_rpc_authorization rpc call timed out for {self._core().identity} {rpc_method_authorizations}")
except MethodNotFound:
_log.warning("update_id_rpc_authorization method is missing from "
Expand All @@ -306,7 +305,6 @@ def update_rpc_method_capabilities(self):
"dynamic RPC authorizations.")
return
except Exception as e:
updated_rpc_authorizations = None
_log.exception(f"Exception when calling rpc method update_id_rpc_authorizations for identity: "
f"{self._core().identity} Exception:{e}")
if updated_rpc_authorizations is None:
Expand All @@ -318,7 +316,7 @@ def update_rpc_method_capabilities(self):
f"the identity of the agent"
)
return
if rpc_method_authorizations != updated_rpc_authorizations:
if rpc_method_authorizations != updated_rpc_authorizations and updated_rpc_authorizations is not None:
for method in updated_rpc_authorizations:
self.set_rpc_authorizations(
method, updated_rpc_authorizations[method]
Expand Down
15 changes: 11 additions & 4 deletions volttron/platform/web/admin_endpoints.py
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,6 @@
from volttron.platform import get_home
from volttron.platform import jsonapi
from volttron.utils import VolttronHomeFileReloader
from volttron.utils.persistance import PersistentDict


_log = logging.getLogger(__name__)
Expand Down Expand Up @@ -84,7 +83,7 @@ def __init__(self, rmq_mgmt=None, ssl_public_key: bytes = None, rpc_caller=None)
else:
self._ssl_public_key = None

self._userdict = None
self._userdict = {}
self.reload_userdict()

self._observer = Observer()
Expand All @@ -96,7 +95,14 @@ def __init__(self, rmq_mgmt=None, ssl_public_key: bytes = None, rpc_caller=None)

def reload_userdict(self):
webuserpath = os.path.join(get_home(), 'web-users.json')
self._userdict = PersistentDict(webuserpath, format="json")
if os.path.exists(webuserpath):
with open(webuserpath) as fp:
try:
self._userdict = jsonapi.loads(fp.read())
except json.decoder.JSONDecodeError:
self._userdict = {}
# Keep same behavior as with PersistentDict
raise ValueError("File not in a supported format")

def get_routes(self):
"""
Expand Down Expand Up @@ -339,4 +345,5 @@ def add_user(self, username, unencrypted_pw, groups=None, overwrite=False):
groups=groups
)

self._userdict.sync()
with open(os.path.join(get_home(), 'web-users.json'), 'w') as fp:
fp.write(jsonapi.dumps(self._userdict, indent=2))

0 comments on commit 61278c8

Please sign in to comment.