Skip to content

Commit

Permalink
Releases/9.0.1 (#3171) (#3181)
Browse files Browse the repository at this point in the history
* Update readthedocs requirements.txt

* Update conf.py

* Update requirements_demo.txt

Add missing pandas requirement for demo

* work around for issue #3154

* Fix for security issue #3168 (#3169)

* Fix for security issue #3168

* handling clean up errors in test

* testing group commands in different test module

* moved group and role test to different module

* moved group and role test to different module

* Added a cache for agent names since platform start

* Fixes process overload from file events

* fixed issue with variable definition.

* Remove PersistentDict from web-user.json file.

* Update admin_endpoints.py

Handle behavior of removing PersistentDict

* Update version to 9.0.1

---------

Co-authored-by: Chandrika Sivaramakrishnan <chandrika@pnnl.gov>
Co-authored-by: Chandrika <schandrika@users.noreply.github.com>
Co-authored-by: Andrew Rodgers <andrew@aceiotsolutions.com>
  • Loading branch information
4 people committed May 10, 2024
1 parent 5e77b59 commit 90d6f25
Show file tree
Hide file tree
Showing 4 changed files with 16 additions and 11 deletions.
4 changes: 2 additions & 2 deletions docs/source/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -90,9 +90,9 @@ def __getattr__(cls, name):
author = 'The VOLTTRON Community'

# The short X.Y version
version = '9.0'
version = '9.0.1'
# The full version, including alpha/beta/rc tags
release = '9.0'
release = '9.0.1'

# -- General configuration ---------------------------------------------------

Expand Down
2 changes: 1 addition & 1 deletion volttron/platform/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@
from urllib.parse import urlparse

from ..utils.frozendict import FrozenDict
__version__ = '9.0rc0'
__version__ = '9.0.1'

_log = logging.getLogger(__name__)

Expand Down
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 90d6f25

Please sign in to comment.