Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Issue/3179 #3180

Merged
merged 3 commits into from
May 8, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 2 additions & 4 deletions volttron/platform/vip/agent/subsystems/auth.py
Original file line number Diff line number Diff line change
@@ -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
@@ -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 "
@@ -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:
@@ -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]
15 changes: 11 additions & 4 deletions volttron/platform/web/admin_endpoints.py
Original file line number Diff line number Diff line change
@@ -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__)
@@ -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()
@@ -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 = {}
schandrika marked this conversation as resolved.
Show resolved Hide resolved
# Keep same behavior as with PersistentDict
raise ValueError("File not in a supported format")

def get_routes(self):
"""
@@ -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))
Loading