Skip to content

Commit 1c371ed

Browse files
committed
Added ability to set mirror usage point postRate
Fixed FSA results
1 parent d5d33aa commit 1c371ed

File tree

6 files changed

+32
-11
lines changed

6 files changed

+32
-11
lines changed

ieee_2030_5/adapters/__init__.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,10 @@ def fetch_by_property(self, prop: str, prop_value: Any) -> Optional[T]:
9595
for obj in self._item_list.values():
9696
if getattr(obj, prop) == prop_value:
9797
return obj
98-
98+
99+
def fetch_child_names(self) -> List[str]:
100+
return list(self._child_prefix.keys())
101+
99102
def add_container(self, child_type: Type, href_prefix: str):
100103
self._child_prefix[child_type] = href_prefix
101104

ieee_2030_5/adapters/enddevices.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ def initialize_end_device_adapter(sender):
106106
# fsa = FSAAdapter.create(fsa_programs)
107107
# edev.FunctionSetAssignmentsListLink = m.FunctionSetAssignmentsListLink(href=hrefs.fsa_href(edev_index=index))
108108
# self._fsa.append(fsa)
109-
EndDeviceAdapter.add_replace_child(edev, hrefs.FSA, fsa)
109+
EndDeviceAdapter.add_replace_child(edev, hrefs.FSA, FSAAdapter)
110110

111111
if dev.ders:
112112
der_href = hrefs.EdevHref(index, hrefs.EDevSubType.DER)

ieee_2030_5/adapters/mupupt.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
import ieee_2030_5.hrefs as hrefs
66
import ieee_2030_5.models as m
7-
from ieee_2030_5.adapters import ReturnCode
7+
from ieee_2030_5.adapters import BaseAdapter, ReturnCode
88
from ieee_2030_5.data.indexer import add_href, get_href
99

1010
_log = logging.getLogger(__name__)
@@ -142,7 +142,6 @@ def fetch_by_mRID(self, mRID: str) -> m.UsagePoint:
142142

143143
def _fetch_wrapper_by_mRID(self, mRID: str) -> _UsagePointWrapper:
144144
for x in self.__usage_points__:
145-
print(f"Comparing {x.usage_point.mRID} to {mRID}")
146145
if x.usage_point.mRID == mRID:
147146
return x
148147

@@ -194,7 +193,7 @@ def fetch_usage_point_by_href(self, href: str) -> m.UsagePoint:
194193

195194
def fetch_mirror_usage_point_list(self, start=0, after=0, limit=1) -> m.MirrorUsagePointList:
196195
return m.MirrorUsagePointList(href=hrefs.mirror_usage_point_href(), all=len(self.__mirror_usage_points__), results=len(self.__mirror_usage_points__),
197-
MirrorUsagePoint=self.__mirror_usage_points__)
196+
MirrorUsagePoint=self.__mirror_usage_points__, pollRate=BaseAdapter.server_config().usage_point_post_rate)
198197

199198
def fetch_mirror_usage_by_href(self, href) -> m.MirrorUsagePoint:
200199
return next(filter(lambda x: x.href == href, self.__mirror_usage_points__))
@@ -234,6 +233,7 @@ def create(self, mup: m.MirrorUsagePoint) -> Tuple[ReturnCode, str]:
234233
if after > before:
235234
# TODO: Don't hard code here.
236235
mup.href = upt.href.replace('upt', 'mup')
236+
mup.postRate = BaseAdapter.server_config().usage_point_post_rate
237237
self.__mirror_usage_points__.append(mup)
238238
return ReturnCode.CREATED.value, mup.href
239239
else:

ieee_2030_5/config.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -165,6 +165,7 @@ class ServerConfiguration:
165165

166166
log_event_list_poll_rate: int = 900
167167
device_capability_poll_rate: int = 900
168+
usage_point_post_rate: int = 300
168169
end_device_list_poll_rate: int = 86400 # daily check-in
169170

170171
generate_admin_cert: bool = False

ieee_2030_5/server/admin_endpoints.py

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
import ieee_2030_5.hrefs as hrefs
77
import ieee_2030_5.models as m
8+
from ieee_2030_5.adapters import Adapter
89
from ieee_2030_5.adapters.der import DERProgramAdapter
910
from ieee_2030_5.adapters.enddevices import EndDeviceAdapter
1011
from ieee_2030_5.adapters.fsa import FSAAdapter
@@ -33,6 +34,8 @@ def __init__(self, app: Flask, tls_repo: TLSRepository, config: ServerConfigurat
3334
app.add_url_rule("/admin/edev/<int:edevid>/fsa/<int:fsaid>", view_func=self._admin_edev_fsa)
3435
app.add_url_rule("/admin/edev/<int:edevid>/fsa", view_func=self._admin_edev_fsa)
3536
app.add_url_rule("/admin/edev/<int:edevid>/der", view_func=self._admin_edev_ders)
37+
app.add_url_rule("/admin/edev/<int:edevid>/der/<int:derid>/current_derp", view_func=self._admin_edev_ders)
38+
app.add_url_rule("/admin/edev/<int:edevid>/der/<int:derid>", view_func=self._admin_edev_ders)
3639
app.add_url_rule("/admin/edev", view_func=self._admin_edev)
3740
# END COMPLETE
3841

@@ -55,11 +58,19 @@ def __init__(self, app: Flask, tls_repo: TLSRepository, config: ServerConfigurat
5558
def _admin_edev(self) -> Response:
5659
return Response(dataclass_to_xml(EndDeviceAdapter.fetch_all(m.EndDeviceList())))
5760

58-
def _admin_edev_ders(self, edevid: int) -> Response:
61+
def _admin_edev_ders(self, edevid: int, derid: int = None) -> Response:
5962
ed = EndDeviceAdapter.fetch(edevid)
60-
deradpter = EndDeviceAdapter.fetch_child(ed, hrefs.DER)
63+
deradpter: Adapter[m.DER] = EndDeviceAdapter.fetch_child(ed, hrefs.DER)
64+
if derid:
65+
retval: m.DER = deradpter.fetch(derid)
66+
if request.path.endswith('current_derp'):
67+
derp_href = hrefs.DERProgramHref.parse(retval.CurrentDERProgramLink)
68+
retval = DERProgramAdapter.fetch(derp_href.index)
69+
else:
70+
retval = deradpter.fetch_all(m.DERList())
71+
6172

62-
return Response(dataclass_to_xml(deradpter.fetch_all(m.DERList())))
73+
return Response(dataclass_to_xml(retval))
6374

6475
def _admin_edev_fsa(self, edevid: int, fsaid: int = -1) -> Response:
6576
if edevid > -1 and fsaid > -1:
@@ -99,7 +110,7 @@ def _admin_der_update_current_derp(self, edev_index: int, der_index: int):
99110
else:
100111
program = DERProgramAdapter.create(data).data
101112
response_status = 201
102-
113+
print(EndDeviceAdapter.fetch_child_names())
103114
der = DERAdapter.fetch_at(edev_index, der_index)
104115
der.CurrentDERProgramLink = m.CurrentDERProgramLink(program.href)
105116
return Response(dataclass_to_xml(program), status=response_status)
@@ -210,7 +221,7 @@ def _admin(self) -> Response:
210221

211222
def _admin_enddevices(self, index:int = None) -> Response:
212223

213-
return Response(dataclass_to_xml(EndDeviceAdapter.fetch_list()))
224+
return Response(dataclass_to_xml(EndDeviceAdapter.fetch_all(m.EndDeviceList())))
214225

215226
def _lfdi_lists(self) -> Response:
216227
items = []

ieee_2030_5/server/enddevicesfs.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,13 @@ def get(self) -> Response:
121121

122122
elif edev_href.edev_subtype is hrefs.EDevSubType.FunctionSetAssignments:
123123

124-
raise ValueError("FSA ???")
124+
fsaadpt: FSAAdapter = EndDeviceAdapter.fetch_child(ed, hrefs.FSA, edev_href.edev_index)
125+
126+
if edev_href.edev_subtype_index == hrefs.NO_INDEX:
127+
retval = fsaadpt.fetch_all(m.FunctionSetAssignmentsList(href=request.path), start=start, after=after, limit=limit)
128+
else:
129+
retval = fsaadpt.fetch(edev_href.edev_subtype_index)
130+
125131

126132
# if edev_href.edev_subtype_index == hrefs.NO_INDEX:
127133
# retval = EndDeviceAdapter.fetch_children(m.DERList(request.path), hrefs.DERSubType)

0 commit comments

Comments
 (0)