Skip to content
Draft
Show file tree
Hide file tree
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
41 changes: 22 additions & 19 deletions .gencode_hash.txt
Original file line number Diff line number Diff line change
@@ -1,33 +1,34 @@
23553972c4b777768f0f70fc0f89a0ec81f580b64031169a96379ea22bb95e79 gencode/docs/building_config_entity.html
c21266e8de23b6e8acfac16a177db782375bf71df470c343c3f8eb8b822ef56a gencode/docs/commands_discovery.html
8aa5b5f48f97771deaf5585f8ee74c605c2a43568af04996ff8439843274cce9 gencode/docs/config.html
0dcc1e8245bf0b2791a4bf9be15d8647acd89124ade475345ce4a9c56d62a824 gencode/docs/configuration_endpoint.html
40f078753386e07bfc200eaf3c35cb4362eb413101f4f00d87c88cde3ee53080 gencode/docs/configuration_execution.html
0e2f9b56fd0d3762ff7ce14e0f9fc119cba17a3c2eeb2dcdbf1ff2fad5c6c9d1 gencode/docs/configuration_pod.html
94bb566ac6a4b6b7f89cd2cf1911f658446cc0bea405014275104623f9964dd3 gencode/docs/configuration_pubber.html
0c8f1fcfbf6de18a627f2de780ad13709ca33d52b0f4610e60e896d0856b652d gencode/docs/configuration_endpoint.html
196eed8a05e15293b43848a15a869a2fc2ac4e8a5129668c6d05590e8f7189a0 gencode/docs/configuration_execution.html
26391571e63a0d1d657e100b6aaccc695e3f041161f584ff7ed2943882d3bbba gencode/docs/configuration_pod.html
c26961bb7626fccd2ed4eec07a2d391b606b7c6c5680b7a369266f9159f68a85 gencode/docs/configuration_pubber.html
1057fa40fb7a31a23bb2773d21c38cf4590a935bd8b5ea4218e695c6204f5dd9 gencode/docs/data_template.html
86ae4ba48ebec9d368b9ad2c17d583b007bcf9082f4e511903f756f5ebadb9e8 gencode/docs/download_blobset.html
1d5294b4a1fea6555e23144e594523e4793c795069b6880ce607ad09a6015581 gencode/docs/equipment_translation.html
cc29a77c12a615e23d070c4bd6337c32f0fa057efa12df771a78c4be465aac9e gencode/docs/events.html
5fe5b52ca610e4c52bfe81bba4841d37fe243221a5f61ae719c9294f00a817aa gencode/docs/events.html
70e57ad6ef39330d958727ebf9dcd61ef6ea30e4c8653eac412bf1867fdb3a70 gencode/docs/events_alarmset.html
2734f2b1fd0d22cdc2381d728376b031aecc4a3653a1faf5f743b973d43872dc gencode/docs/events_discovery.html
eafcc3c48189f605f114cde051fea9d13fc5f1a3e395d64fb0a91cb53d4c9aeb gencode/docs/events_pointset.html
b65ce6e8061e61ba676a72c624f1c425bd238e152ce8e3ebb1e9c23f0e502bcb gencode/docs/events_streams.html
81043ba732caab75704d38e6977b32b1c2bcdad89d94ad2a259d0e70ca4aa40e gencode/docs/events_system.html
46fd37b577c655965346d1e3ececf559c4384791214900eeeea1ad8fc72a02b8 gencode/docs/events_udmi.html
baf59590b1a71a49e59d8f499ae5112a1b7a555294dbd72bc821203aecceefa3 gencode/docs/events_validation.html
8d77357337531f7df7b88c332d9cac934723095c5be45ca410e31c9d1f665ee1 gencode/docs/metadata.html
18178a591940c176371fb9196048eaacd40f1323997cf907ca11eb879a095c7e gencode/docs/monitoring.html
925dd4b57d66b0a6126d0ca5521e00bd40fc7dd2400976c3d522421607186360 gencode/docs/monitoring.html
64d21cf916e20566171cf9d723e59c297b576bcba89e2a73aec2b018398cc7da gencode/docs/mosquitto_client_response.html
6f332da9cc64230df3551f9748a4eaa4060146e767cae967fc0e73b1f348be5b gencode/docs/persistent_device.html
834e05bb872630fa2e01fe106294c53c9afaeea9718803872cbaf5e615d96600 gencode/docs/persistent_device.html
e11595fd11477947a27461f8ef4fb6facb5f60e2abd6212193f7581ab123ff84 gencode/docs/properties.html
75d90e80269db99cb06199467c6c2483397370e15ac0392241e7e05ddf21852c gencode/docs/query_cloud.html
eb6c623142496b61e3c9b00c9ead0ba8541af2050d76ce652e1721c84aa3a096 gencode/docs/readme.md
15248b985f2edfb19c56cd18d5e5115beba0154c8e2244c2accce646a3a9cc3f gencode/docs/readme.md
2768fd01a875d1f58273e76fef9b421986824d2ab02251853840bca777b625c0 gencode/docs/schema_doc.css
165a29291d7d66653e46fd1ac5868f63e18f9d67c06ea9ebcb95d4830a528e68 gencode/docs/schema_doc.min.js
7ed934930aee763e0beebc349725ba3909115e8d346bb762f28bcbe745bb163a gencode/docs/schema_extras.js
7a1bbe014c739078d354ec484147325e1d0bd19468f275a53da38add43ebe089 gencode/docs/site_metadata.html
0993d21a1a0ae485bdb2f1794f279d13f782e841d07832f795624cc9f158ea93 gencode/docs/state.html
275171b2329d64d497fa54f8877656920be7c4f79bc90f67a0ff1bae6700399b gencode/docs/state_validation.html
8af14f0488d5c5cfc1d0eb1b00c9b06f80e459ea13b83615ad89ab9e5dde2e99 gencode/docs/upload_discovery.html
46347b31bc2a56bc74af9bb702ad40c7823887d5e9b1427903a4892cde3cd169 gencode/java/udmi/schema/AlarmAlarmsetConfig.java
520b12eb8cec4f043f81f898c4be12def09b7de138533922e17c038415fb8902 gencode/java/udmi/schema/AlarmAlarmsetEvents.java
0740aeb4462739e9be7e9c846ebc3f3e6f45f3bb752327c681aa013fbd5c2711 gencode/java/udmi/schema/AlarmAlarmsetModel.java
Expand All @@ -45,6 +46,7 @@ a625c62703db143d05b3f6d828d8f0c4f730b506f1b12be12112fc0288f5fa5d gencode/java/u
387b682bde5b1b74737f2f05829b192dc9f19cc33f731b4d1ab5198a9510f5b6 gencode/java/udmi/schema/BlobBlobsetState.java
c341772caa4c3b73146acac75ce21db66af9097f71a0ab85ff0e06baa4fb2ee9 gencode/java/udmi/schema/BlobUpdateTestingModel.java
378f0771197c3f6d62dbd1384e4159778969cad425a067100e7ec384cebf45e8 gencode/java/udmi/schema/BlobsetConfig.java
92457953c4cee59a66fd0c5cd7ac58467a168484de19a39da4e005794e2eb419 gencode/java/udmi/schema/BlobsetDownload.java
cc9d79ed98ab76076be089c4a2bc1e85f6b3f65591548875bf706ee0c2147a72 gencode/java/udmi/schema/BlobsetState.java
b4478bfc594cd2ea9631a16b828cdda3de6447263d56fc87e62fbb5a767d05e3 gencode/java/udmi/schema/BridgePodConfiguration.java
d9f2924753c34ea5c8c9532d3a94c0c2fe2891d2cc8766646d40b1e90636f372 gencode/java/udmi/schema/Bucket.java
Expand All @@ -69,12 +71,13 @@ a572f17a61584a32ff19968356f7f7d7bcc8430131ac3701878d0bd221e1a1fa gencode/java/u
9217b2c963003ca51ec61b9aadd40877634f2bea08d7fd412b51521e8ec61cfb gencode/java/udmi/schema/DiscoveryEvents.java
af16026c143a592562b77012dd739c02364bd1a9d6bbd6c7ede4f3a5a38b7f4a gencode/java/udmi/schema/DiscoveryModel.java
0fd348086bfd8e38a54a06b0fd205f6d01fdc6236f07ccc8bef49a1832f8c767 gencode/java/udmi/schema/DiscoveryState.java
8e6b8605ed45af1bc6c30e1efb1a29fb745e7637df72d124c03907f8a0ac9325 gencode/java/udmi/schema/DiscoveryUpload.java
baef666f5f58f790b73ba7bed8f60eacdd75ba3151b9abc32265954a9da84faa gencode/java/udmi/schema/Electricity.java
421126685b752587bd2e5f2ea7d7cfa140847500ed8c4f2a7146c9a605f0f2b0 gencode/java/udmi/schema/EndpointConfiguration.java
3c79394af0f0f8d6a9abd97e5fe759d606dc0a66b6b2c0b746c495600807512c gencode/java/udmi/schema/EndpointConfiguration.java
8610ae5a6a32fd17063ce7d488d4546e5ca1fd045c4cc9f0a4b94ad37f58dd60 gencode/java/udmi/schema/Entry.java
d8a519092ec7401ffbf3d76d1b77bb360f4429fada288154223932ab0f9ee0cb gencode/java/udmi/schema/Enumerations.java
f890a14567657f5c97c2d3c1c753d751025ee094700ef0659f63f448529cc529 gencode/java/udmi/schema/Envelope.java
9df1e0a689390bda0847a0acab5a13fd7ced8c09b8563c13a7ce000ef1ea4999 gencode/java/udmi/schema/Events.java
09916ecaab0ae9ec10f39acdfbfe1179e74051ecc25143f695247b3a1a65de60 gencode/java/udmi/schema/Envelope.java
c6ce13a723c6b966912aab9b6deabf7e2ae6e1d74812cc3d7f15726a2fbd76c9 gencode/java/udmi/schema/Events.java
8aed152c906c51a72a9224e7aec14bcdbd9ac2e00c2b1fed6bd5515082f79488 gencode/java/udmi/schema/ExecutionConfiguration.java
a5a41a2bc809988efbbc121cdf730cbc1eb066372e046747fb6ae3f30e96a8b1 gencode/java/udmi/schema/FamilyDiscovery.java
0de804fb208fdf2ef198539ed5b828b780bc6c5cdd9e31b10067372165c4b7d4 gencode/java/udmi/schema/FamilyDiscoveryConfig.java
Expand Down Expand Up @@ -137,7 +140,6 @@ b8b388f59da9ee6951ba85b2c12e171681e6abe7c97312cf758344e0850c640c gencode/java/u
81df6abb662cbf5dfc4301d770c5e0bf72d07f228dc725b8df35339e73b90762 gencode/java/udmi/schema/StateSystemHardware.java
0110ab92d49749785dc29b92685443c895efa3cbc0637ed4374d3337d2f3be54 gencode/java/udmi/schema/StateSystemOperation.java
c7e5fd53e7e1c3a439b5283f81b0555473d6b0e623aa9cdd896080b993a6f80f gencode/java/udmi/schema/States.java
5d531ecfda463512a1f6a97d0b9aa8c0e0f163f5dd63bfcfa63c406d4f820eae gencode/java/udmi/schema/StreamsEvents.java
b45a8fd3c70f75bed5f3aa2285007baa6445a23819b31fe69f38c117f837bbab gencode/java/udmi/schema/Structure.java
65babc897b81d05b69e6178433b0918e513e36e861f044b68ecf4eb5f2408b37 gencode/java/udmi/schema/SystemConfig.java
53667a5822c79a1aca9345399e9dd925b761fefb96b06ff2f7c42705256a4112 gencode/java/udmi/schema/SystemDiscoveryData.java
Expand All @@ -158,9 +160,9 @@ f08d327f322431a8be0e6018a7b8a9835af8e3e6ecc4ab8e18eb36810a44e5f3 gencode/java/u
225a2e3fa5a50c197ef50b55a81dc6efd33cd09a678c2c55112858f0086fd877 gencode/java/udmi/schema/ValidationSummary.java
5ec93668911c5b801e764b07ce538ab98cb8b2d211a530bce3c902c4a7773e40 gencode/java/udmi/schema/Values.java
c99d2ec53e670c3b91104a4a8fbc825c1c29530a2f686fe644f977eb6b6edd89 gencode/java/udmi/schema/Water.java
f4fede5fe11244aa2391dcc6dc94c126a453bc51e292555bbc5994e52beaf27c gencode/presentation/presentation.json
275306b06e95d0c2cc9be716b904ba21243daf038069f4d869a03859c3de637f gencode/presentation/presentation.json
4cf98cbd132cde0cc8813ac35cf3712cb46014154c817c04ad2902c268cdd8fe gencode/python/pyproject.toml
f6968fad6fb525139cd063b5a9dc00a55faab999d2a429f0843ca40f54f7727b gencode/python/udmi/schema/__init__.py
cee4b5935d1b60064b5d95c64df5ff9531e0c4b19815ef39ab185836fff50417 gencode/python/udmi/schema/__init__.py
f9d90861e568b27445bef241f04cce64cc44731c95c8bd9e3f65cef79d42dab0 gencode/python/udmi/schema/_base.py
de7d13c346e5d98511d02b4bdccf20afeb013eaca512694ebd7f82e584b11358 gencode/python/udmi/schema/access_iot.py
32a951e2bf13f556082f8d94be079b3df6cc081b6ff59f71a82d32782cf8f8f6 gencode/python/udmi/schema/ancillary_properties.py
Expand All @@ -186,7 +188,7 @@ b65e7e9152629a9175f62ed706701d02814d62d8f3e9c0b46c2ba49ad8b51077 gencode/python
faf4cdb1687868fadc411c144d57a5c596af790e43df4d7ddec5ee3fd10ba4bd gencode/python/udmi/schema/config_system.py
ddd6e974840a19aa75e2f322e140676f71e0715f69088b88dfea76f0625ab035 gencode/python/udmi/schema/config_system_testing.py
f187d5acbf931e97365af4283ee676786b7f26294db720b1c8535ab50387a6c1 gencode/python/udmi/schema/config_udmi.py
d1cf489cbf937f801213f1425508afcc37c548e08f1da6ac755f9282bd84992d gencode/python/udmi/schema/configuration_endpoint.py
3be556292aae210f555978dee17188e2a343b7b92741a69ede1120d9074995b4 gencode/python/udmi/schema/configuration_endpoint.py
51699ab01b8d7be4db89c8e3923e0abd41a5a05e692e252deb59f10eb8189cfe gencode/python/udmi/schema/configuration_execution.py
c0853ff1838a11291b53a40c43a6cdaff17951a34b3d7f3de10d9fcc7b44b79d gencode/python/udmi/schema/configuration_pod.py
62f2a07047c4cf635f2f5d021a0da433e3d38acfe9a02fcd96581aec5c1896af gencode/python/udmi/schema/configuration_pod_base.py
Expand All @@ -197,16 +199,16 @@ f7193dd8eddcae6c646b99fb4c33fe47f43bed7c9615ab1bd0a0bf5612527607 gencode/python
606420089c2016cf49edd1d3b570928b404b5ac05193fd3149acaaa3fd247eb0 gencode/python/udmi/schema/discovery_family.py
86f262123525f2e6119c174fe4a4cd2f2c35863ced03a66f6db32c08e5a08542 gencode/python/udmi/schema/discovery_feature.py
b978caf892bc6d0fb875b2560b81668cd1a47a09436609dc56d6353ef35b5f86 gencode/python/udmi/schema/discovery_ref.py
397067016168cf76300077d8219a74863ad0f70e455f4fe2796b94d6bf50c2af gencode/python/udmi/schema/download_blobset.py
be97796ac8949ccb7fbdecfb4ff087987cf2849bf223ff39b947771a08422156 gencode/python/udmi/schema/entry.py
ab1a8ee1f12d04dd88837b6f026030b5ed3550ef3bfbbfbcb4f77cc4df39e93a gencode/python/udmi/schema/envelope.py
118a2a5de36a328dc057a784fd631a635d9710f79d208853ea02ff7c9cb245b4 gencode/python/udmi/schema/envelope.py
04f518ca330acb6f376838bdc4425f15582eb185f4b05f00fc76d1af92bac57f gencode/python/udmi/schema/equipment_translation.py
3dcf4daa94b8450b7360e58500e20e1fbe5701502ac28358112ee1a6bd2a87f1 gencode/python/udmi/schema/events.py
555d45b8882e31095e7233bfffbade89840535aff33dbe20cd24e6808b6205a3 gencode/python/udmi/schema/events.py
af48a2d32b4ec326df6e3f165d8944b994fb426bd4e663c42c1d592f5cb41f83 gencode/python/udmi/schema/events_alarmset.py
b58371ffa7979d1598502a35859f3010ae7a2ec2d851454c010c835e426c7a14 gencode/python/udmi/schema/events_alarmset_alarm.py
3996175098735e889730c87ffc9ce1648e6624d801694458f6d4bc147ff29741 gencode/python/udmi/schema/events_discovery.py
84700f9d8a8975130ff9c62891003f7a12f367fa7dd1ca1db5f5fae7225bf005 gencode/python/udmi/schema/events_pointset.py
9f568bd573d4992e3efa3cc3cb8cdefecb95b15675b0442873abdc7850d108f9 gencode/python/udmi/schema/events_pointset_point.py
282439e4983ae9f310fda69dd6ff979567fa983ebdefcde407df42d631fe1bad gencode/python/udmi/schema/events_streams.py
e4cdab07942e52cae243b4dddbc72676794914947dd66df8add0f5969f31fd11 gencode/python/udmi/schema/events_system.py
8c5a6101e62c751714a7440db3993167b7d86bffd80589076bca1feb0a91d214 gencode/python/udmi/schema/events_udmi.py
72559779680c79dace3c5903022709852cbad7b77ed42af97debc8d852d61cb7 gencode/python/udmi/schema/events_validation.py
Expand Down Expand Up @@ -264,3 +266,4 @@ e23b1b67fc5066ee0c9a948fbc0b31bc425d73740a8d2104b30004173f049f4a gencode/python
6c62d12f392525e4c08d3ee6105f475b941c21e0a8b7a23eaf1650d01a5b5aae gencode/python/udmi/schema/state_validation_feature.py
8a92d352337c118831e3a3b64b350a5ab248fc29150e7cdb968d5e5cf0aae30c gencode/python/udmi/schema/state_validation_schema.py
8862c955ea0aee91db532cb076112305ce6e18d9ac5b323f758fd7fcf75db7cd gencode/python/udmi/schema/state_validation_sequence.py
53a16fed02ddd4f5f9f1cd176222f563b390a76e5d346da2e32fd55ee1faa146 gencode/python/udmi/schema/upload_discovery.py
4 changes: 4 additions & 0 deletions bin/start_mosquitto
Original file line number Diff line number Diff line change
Expand Up @@ -210,6 +210,10 @@ $MOSQUITTO_CTRL addRoleACL service subscribePattern '/uufi/#' allow || true
$MOSQUITTO_CTRL addRoleACL service publishClientSend '/uufi/#' allow || true
$MOSQUITTO_CTRL addRoleACL service subscribePattern 'events/#' allow || true
$MOSQUITTO_CTRL addRoleACL service publishClientSend 'events/#' allow || true
$MOSQUITTO_CTRL addRoleACL service subscribePattern 'upload/#' allow || true
$MOSQUITTO_CTRL addRoleACL service publishClientSend 'upload/#' allow || true
$MOSQUITTO_CTRL addRoleACL service subscribePattern 'download/#' allow || true
$MOSQUITTO_CTRL addRoleACL service publishClientSend 'download/#' allow || true
$MOSQUITTO_CTRL addRoleACL service subscribePattern 'state/#' allow || true
$MOSQUITTO_CTRL addRoleACL service publishClientSend 'state/#' allow || true
$MOSQUITTO_CTRL addRoleACL service subscribePattern 'state' allow || true
Expand Down
2 changes: 2 additions & 0 deletions bin/test_mosquitto
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,9 @@ $MOSQUITTO_CTRL addClientRole $dev_id $role_name
$MOSQUITTO_CTRL addRoleACL $role_name subscribePattern "$dev_id/config" allow
$MOSQUITTO_CTRL addRoleACL $role_name subscribePattern "$dev_id/commands" allow
$MOSQUITTO_CTRL addRoleACL $role_name subscribePattern "$dev_id/errors" allow
$MOSQUITTO_CTRL addRoleACL $role_name subscribePattern "$dev_id/download/#" allow
$MOSQUITTO_CTRL addRoleACL $role_name publishClientSend "$dev_id/events/#" allow
$MOSQUITTO_CTRL addRoleACL $role_name publishClientSend "$dev_id/upload/#" allow
$MOSQUITTO_CTRL addRoleACL $role_name publishClientSend "$dev_id/state" allow

sleep 1
Expand Down
15 changes: 11 additions & 4 deletions butler/bin/butler
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ sys.path.insert(0, REPO_ROOT)

from butler.src.discovery import run_discovery
from butler.src.mapping import run_mapping
from butler.src.reassemble import run_reassemble
from butler.src.service import ButlerService


Expand All @@ -40,9 +41,9 @@ def get_registry_id(site_model: str) -> str:
def main():
raw_args = sys.argv[1:]

# Check if this is a mapping/discovery command
# e.g.: butler <site_model> <project_spec> <device_id> <provision|discover|map> [targets...]
mapping_commands = {"provision", "discover", "map"}
# Check if this is a mapping/discovery/reassemble command
# e.g.: butler <site_model> <project_spec> <device_id> <provision|discover|map|reassemble> [targets...]
mapping_commands = {"provision", "discover", "map", "reassemble"}
is_mapping_cmd = False
for arg in raw_args:
if arg in mapping_commands:
Expand All @@ -54,7 +55,7 @@ def main():
parser.add_argument("site_model")
parser.add_argument("project_spec")
parser.add_argument("device_id")
parser.add_argument("command", choices=["provision", "discover", "map"])
parser.add_argument("command", choices=["provision", "discover", "map", "reassemble"])
parser.add_argument("targets", nargs="*")
parser.add_argument("--butler-port", type=int, default=None, help="Butler MCP server port")
args = parser.parse_args()
Expand All @@ -71,6 +72,12 @@ def main():
args.targets,
butler_port=args.butler_port,
)
elif args.command == "reassemble":
if len(args.targets) != 2:
raise ValueError(
"reassemble requires <input_file_or_-> and <output_path> target arguments"
)
run_reassemble(args.targets[0], args.targets[1])
elif args.command == "provision":
pass
return
Expand Down
3 changes: 3 additions & 0 deletions butler/src/dispatcher.py
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,9 @@ def dispatch(self, envelope: Dict[str, Any], payload: Dict[str, Any]) -> Dict[st
sub_folder = envelope.get("subFolder")
sub_type = envelope.get("subType")

if sub_type == "download":
return {"target": "ignored", "table": None, "count": 0}

matched_handler = None
for handler in self.handlers:
if handler.can_handle(sub_folder, sub_type, payload):
Expand Down
2 changes: 1 addition & 1 deletion butler/src/handlers/discovery.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ class DiscoveryHandler(BaseHandler):
"""Processes discovery events and saves rows into PostgreSQL udmi_discovery table."""

def can_handle(self, sub_folder: Optional[str], sub_type: Optional[str], payload: Dict[str, Any]) -> bool:
return sub_folder == "discovery"
return sub_folder == "discovery" and sub_type in ("events", None)

def process_message(
self,
Expand Down
Loading
Loading