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

Onboarding discovery mapping flow #365

Merged
merged 2 commits into from
Aug 30, 2022
Merged
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
47 changes: 32 additions & 15 deletions .gencode_hash.txt
Original file line number Diff line number Diff line change
@@ -1,32 +1,40 @@
52e5e736587cb4d9615b5b48dda53d385fb4c7091864e5d7ebaf804a46519852 gencode/docs/cloud_iot_config.html
36842bbf9d023a83a3e8958fc3ae607424f4ada5b1e72be35fe2ac443cfd31cc gencode/docs/command_discovery.html
a9cf25fa459ab0122be8df276ab4d95c6b1f2ed2256e1cf202f18c178e6906c0 gencode/docs/config.html
4f5f58997cc9f95ce7f7c251db954fad3e38f5579ce943922d3911d0e55cd57a gencode/docs/command_mapping.html
d755727827955c38c6679869a4e9177e44a83770a1c6a046f953954792a6d4a4 gencode/docs/config.html
6cffb39b5071680f39a7b96bdeb8330b6a8f5fa71ed4c4d42b82d7896080dcd9 gencode/docs/config_mapping.html
62a5f579661625c0fa53320557be47711e289566b14bd0399b45395cea87ae27 gencode/docs/config_pointset.html
34e05b6966c611afd4591bdb2f1a606123326c922b0747a3b0861383d68c1177 gencode/docs/configuration_endpoint.html
90679d3d866579501e7aa00b515af05d42fc9fe399eafacaacf297d1e4a22884 gencode/docs/envelope.html
c17060843155c5605e02572a28a02c2c8272028a9874d754894a34d69ee4916f gencode/docs/event_discovery.html
01ee911c3d85ce9d5de98a77d15a78e7719bc151efdf5149082c8056b7a60bc1 gencode/docs/envelope.html
b8972d7b07d1dc6bdb82988e1e9955603a80477cac18e7745ecbd7fe78c104ba gencode/docs/event_discovery.html
71c21b380bec6723e62f9f0c44b085a5d7c49f29a3f04d01cd93bed64061169e gencode/docs/event_mapping.html
8133e380e40f27c56accbffc665b2eeb56ec84a4da3b52ba7aa5e439c9c40572 gencode/docs/event_pointset.html
095f4d562634f91fa895ae7d8b5b2faf02d4100af39c19d7527dec78566bc019 gencode/docs/event_system.html
aaf67e935fd0c99f6e4d108733e1e184c84c0c55aa03fbfd1ba31ecc9c9f0d95 gencode/docs/event_validation.html
f09d46f93fcfe0ef2ecf981bab3f9a4981da6327fb4a3b35bf12b82db2f07e56 gencode/docs/index.html
ac05c443556b92de96ec1867e72c668da27bc53012fe5821a8035a81ed46aaaf gencode/docs/event_system.html
51cc24f8ebe5daa9f165ec401cf4745994823037ba6a0753730339ef81a57fa6 gencode/docs/event_validation.html
469909f7061efeaed0942e3aad43468e56dbeb335c664412c976d9f1e4bc44c9 gencode/docs/index.html
6d5081d04c86f8bd444efb41cd788826aa66802d37e8f98e93b6b75425542d5e gencode/docs/metadata.html
a5263284652e52822c82a863fc27db765eb55861f96316f07836619376323bce gencode/docs/model_pointset.html
741b880216be3743f6747800a042f2dbd89f3b0344c6b0a965f4bc010f03a930 gencode/docs/schema_doc.css
878ea88206c974f40643c3cc430875f9c4e8c5e3fd6bcd6358bd3eb6d48699a9 gencode/docs/schema_doc.min.js
7ed934930aee763e0beebc349725ba3909115e8d346bb762f28bcbe745bb163a gencode/docs/schema_extras.js
d1cf0d9d652d7004ec60cb67fbee92dcc0b3529affafd6543ae93e8ee428cd8e gencode/docs/state.html
01e2b72dd4f3599bffc589a97c328a7069a6716a3271fde3eeacdd8cfc2e7d03 gencode/docs/state_pointset.html
f4fca4557ef479f363644fe0603fddc943f6de4f1908b3cc5e2bb8d7c79f66c7 gencode/docs/state_validation.html
7dab133dd7e23d2b61b325516a274be5007ae9fc739ced3d244bb05ba0dac648 gencode/docs/state.html
053656d21797603350e92d836e8d6cdcab6733e8c20d2ae47db5cc14bc3a61e5 gencode/docs/state_mapping.html
b0c4bf203dd8ea482d0d6b7ec9549bd8ddf597faf7afdc410351e527f4cc68b1 gencode/docs/state_pointset.html
f680b255d4b185cc96347a2c6425bb33c847cf7468d309c33aa7901567cd02b7 gencode/docs/state_validation.html
d39d7fe37a41c74a40080af7b0a429d201ab1fdff7444428c4b98eb7b38c332b gencode/java/udmi/schema/Asset.java
0825a5cec83003bb0a6488c4ed7010a04ae0d3848ef36fe01bb4e6718ba7b96d gencode/java/udmi/schema/Aux.java
1f2757c67215cf657297a009a01288108a04daeea919713871a2d34ea903b5f9 gencode/java/udmi/schema/BlobBlobsetConfig.java
a7c57d119adcd0cf6363cc5301ce562004222522242e8ffd1d0cd7010f235ae1 gencode/java/udmi/schema/BlobBlobsetState.java
b9f903444ab08907e41eb123286434ff3207b1edd01397af3ddefb8475bbdadc gencode/java/udmi/schema/BlobsetConfig.java
fcbed49f1af8b791d8c52bcbe18f65521a79d9ac3eb33ec3afd9b342ab2bfc56 gencode/java/udmi/schema/BlobsetState.java
c13c6cf8a5712fbfe8e4b10f19c1e74f1a09f13e1a0a4c8458469d5d46cb0735 gencode/java/udmi/schema/Category.java
3e5f6f89b08a1174b5786eb20fc781b36c81db6ce999b970744a0f9644c6d3a5 gencode/java/udmi/schema/BuildingConfig.java
ae7a42eadbd26d66d4d168ac090b933598c90b126346c0a72f6b82705c6324ce gencode/java/udmi/schema/BuildingConfigTranslation.java
5655b896f000b0108f438f9b04bfc092764ad5af63b70bbf750ba58b5f5527fa gencode/java/udmi/schema/Category.java
d6875f63ce67d1b945a0b75a4a660bd083cc52492371a7350c4109f6bf54968b gencode/java/udmi/schema/CloudIotConfig.java
a2eeff86f4302272736d84602e2ca36a64d27c8ef6761cc05ffb8ad17b030d4d gencode/java/udmi/schema/CloudModel.java
ff79de9390aa25bb45fb3e2ebb682c865ccab764f56d9644377d9d28c0ab10e4 gencode/java/udmi/schema/Config.java
10d67bf2080403fd196f63097e4ce2151edaafe3cf4ac77598ef83e06f94cb05 gencode/java/udmi/schema/DeviceMappingConfig.java
5ffb3bf92436c469eee16fe1e472efc89d1c466785be6ce30148188439314afe gencode/java/udmi/schema/DeviceMappingState.java
d4a82e132b2d223c4a82384d22455283c0b64aba3100fc210e72f9700b9df2d0 gencode/java/udmi/schema/DeviceValidationEvent.java
587d67a67431349939dffd37b880c44e798a1eb607d54bd6d8a077bbac668067 gencode/java/udmi/schema/DiscoveryCommand.java
d8a80ab3180d33bfa17564c969018e1d4350a47dbc70c4ae8a5abbfb25cfedc9 gencode/java/udmi/schema/DiscoveryConfig.java
Expand All @@ -35,9 +43,9 @@ d8a80ab3180d33bfa17564c969018e1d4350a47dbc70c4ae8a5abbfb25cfedc9 gencode/java/u
9962b0eb7d5adf52af6160e9f3131f8eeb52ae9e518954dbb6aead1bcad0245e gencode/java/udmi/schema/DiscoveryState.java
f9faaa8622aa289c878cf2b9bcc05ac0c90ec5b40b39a607f5b7981fac0086fc gencode/java/udmi/schema/EndpointConfiguration.java
885859ea9de29217186c34f3a90b112411d1beddaf58a88b85e7934cd3c92b6f gencode/java/udmi/schema/Entry.java
cd362f94454eba8fd5ce3fce5d5e2b5f046d0dd9c35b01de69ef4d2e38413cc5 gencode/java/udmi/schema/Envelope.java
9b92e03774ed0b9159ff3ab462822699ef7f824161b166a881889ea1eb6a62ad gencode/java/udmi/schema/Envelope.java
e9f5c77be81486b6b8c6d88f70f2d50583d8c3fafa2ac09ead80f44b8d5e751e gencode/java/udmi/schema/Event.java
aa0885ca43ab38c7597eacc38b7c512940a1a9fa061abd47d02c28e66b6fd93e gencode/java/udmi/schema/FamilyDiscoveryConfig.java
2e77a29988e6c17875d3f781be931e3b835bb310639f60d3bb28f24405a86bed gencode/java/udmi/schema/FamilyDiscoveryConfig.java
ae4a645f199c8e24b3303463d428ca17af7603ae9ae9238397a6a82e752ab454 gencode/java/udmi/schema/FamilyDiscoveryEvent.java
0afc15acd72874e5a0c47f546abc0c4569f5bc37838fdcac77bc7bd55cc53a6d gencode/java/udmi/schema/FamilyDiscoveryState.java
9959a84eea3e549c142c3edf637c86eb56eca138108ebd51fc2985e45aa41484 gencode/java/udmi/schema/FamilyDiscoveryTestingModel.java
Expand All @@ -49,6 +57,8 @@ a5e5adfc187709e8646a11c92e804acfb67743f9d72149008aaca954df3177f6 gencode/java/u
07fd4911363437b274c19b024759b04b116152176702da8d4203c4ff4cb55b7f gencode/java/udmi/schema/LocalnetConfig.java
910c68183db7703b00bcb81146ad73e6fe0d4bbc4caec4dc9c621f3cc2e5eee5 gencode/java/udmi/schema/LocalnetModel.java
2df4ae32d0bbecc21f7c3f6a416a195baa766a6210cfa8abca4a7bb45b9c7961 gencode/java/udmi/schema/Location.java
0f6f85a4aaffb90735acc2565e8e4afa349d3ded5781cb1dce1ebbaa237feaa7 gencode/java/udmi/schema/MappingConfig.java
d2bf4eea0ca3df47b9ffe31481a52170e2d2bc3a0e7f2eab582e93cc20ccc886 gencode/java/udmi/schema/MappingState.java
304164da05dc722b6e94cfa68659f0120e2425c94bfb5f5a4c6d796fe13da885 gencode/java/udmi/schema/Metadata.java
a4e8f69100ab678a8236f481c558d677bbaea3e76c853bbd9262113d2a9c031d gencode/java/udmi/schema/Metrics.java
5e1c5411fae4d7c47391ceb5d19ae864fcd484df75ac6b6db39fd2d12647dec8 gencode/java/udmi/schema/Physical_tag.java
Expand Down Expand Up @@ -83,11 +93,14 @@ d3968b92497e83a63f18cc0e74484a9807f1bb92db0c92d556ec2caaa143d645 gencode/java/u
ac6f8fd87c8986cce01e872460c15ff6fe71e3816f9bde610acfe25f7d38c8d4 gencode/java/udmi/schema/ValidationEvent.java
f7d117dc8b9764acf0c95a13a2bfdfbdf31d1a8ec83a707448aa4d7391ef07e2 gencode/java/udmi/schema/ValidationState.java
e007ddd1ceeae3603c85110c33e1bb4a418ff9c7a791ca0df25b7ea3caeafd36 gencode/java/udmi/schema/ValidationSummary.java
8db92d02ed31738ac46969a7a24dbd23d330f7855afced2a84abd9e8f44fdcc2 gencode/python/udmi/schema/__init__.py
f5f6434d1c2ba0bcbff080c6d180b3c410bbf8b25a72b3f670d3fffc2304de43 gencode/python/udmi/schema/__init__.py
4b25dd95f863059b761269f93adcae7049507924a1c6e74d6856849203c179db gencode/python/udmi/schema/ancillary_properties.py
8783e8235fb51ae3d13b241967219c6d4160627b8d62f7bfe7f0658b2a9bdcb5 gencode/python/udmi/schema/category.py
ffca96a15730668a1af22e79800a4f25e689cb801bacce0a3f9c2951dd03653c gencode/python/udmi/schema/building_config.py
1049bf13a56024a84c3ab0c64bf96fa65dd63bf64007fda23601e19ec2046d56 gencode/python/udmi/schema/building_config_translation.py
d4269e665695f7a431108233a427313e609764f421d7657a23bd68d046f11e83 gencode/python/udmi/schema/category.py
a61b1c5732f01b7efda41a773d5786fad755f371193ce4478b458387ca2a8fe8 gencode/python/udmi/schema/cloud_iot_config.py
6578d68f65b87b781086e72566de910db4bef365599fe3188862d4d8a81e84fb gencode/python/udmi/schema/command_discovery.py
6da1039b08d3b502efa5f483f9e29d7fbdf4482c9b79fa484ff99df01946c6ba gencode/python/udmi/schema/command_mapping.py
c5a62f92328e2ede167fc1f53bece6e48696a0ab0e37e3a41f65cd98494ba0d7 gencode/python/udmi/schema/common.py
b975892df78076dabc797b4c0be87f20b33eacda11f9d1ac1c09be33d4937a87 gencode/python/udmi/schema/config.py
79eb0299b3751d93c01a5de65eacc717283e99caf0996f3db48a15247f69c8eb gencode/python/udmi/schema/config_blobset.py
Expand All @@ -96,6 +109,8 @@ ec6c6ab1fb0f37a29b7ebd162aa77da7f1e261e80da376942a3b39d17ccf1be4 gencode/python
a5edb9ac5ecd5a4459f93ce613691735f299f35718f2e35410206fc91c263dd1 gencode/python/udmi/schema/config_discovery_family.py
b461bdc24310ef972faf579b5be577b5af67fb0977d6afb4c42955211b26e3d5 gencode/python/udmi/schema/config_gateway.py
8b2bf3e753c09e375f0fd59dcf1f0be61205ed247160b7a8718cb3b9ebef2c30 gencode/python/udmi/schema/config_localnet.py
ac3facbd96f7cb2f7e387e7497d6a36af379a2687329571f250c5670f9933244 gencode/python/udmi/schema/config_mapping.py
1867ee8f1f4552ff121b7a2a62815817b2c9939a8817f1e093fbd688b8faa1a4 gencode/python/udmi/schema/config_mapping_device.py
9eab64849e04b25203d5da47856c3f8dda2b96903e4dc43ab932ee35014700bd gencode/python/udmi/schema/config_pointset.py
607c5047df878a1333df3ce88dcce34668959b0b315f6954bf1a4963dcf7839e gencode/python/udmi/schema/config_pointset_point.py
ba37d2d54df565aba42ef055a0ec961175d180c2e8092a914e62029bc5388857 gencode/python/udmi/schema/config_system.py
Expand All @@ -107,7 +122,7 @@ ba37d2d54df565aba42ef055a0ec961175d180c2e8092a914e62029bc5388857 gencode/python
82182e3f569ad80dc0751027959c7db9135d10072fbe79f896d63a4cd2f4771f gencode/python/udmi/schema/event_discovery.py
ad33b91a7fabb4eed7e49c30a983a2106c96330facbe0f376f94d06e2263d6d0 gencode/python/udmi/schema/event_discovery_family.py
42e6fb6edda2b6aeae5e5b48ae66f87a5daf336bca1e746b1157e8f1ce31d5d5 gencode/python/udmi/schema/event_discovery_point.py
abe4044d2e3be6693ed39edc8ccaed4eee4eb8acad991e820b21d6ecf3812dd9 gencode/python/udmi/schema/event_mapping.py
24e71ef8c175466cb91612bd2e4428511dbb27030638221ab8cb02c5ee9ea294 gencode/python/udmi/schema/event_mapping.py
ddf849bfeb2b87d071cefd5e6feacabc57375a7fff6d72b6d42ffb89f33c859b gencode/python/udmi/schema/event_pointset.py
44aff1bc930dbdbadd51ac3fe0e7d9c83ad84a6a9f9d1c809b3fce66cbcd5e00 gencode/python/udmi/schema/event_pointset_point.py
c3bf9959c821ccc8d0847a2e022e847ac3da8309dc6d35681af3d20148464ee4 gencode/python/udmi/schema/event_system.py
Expand Down Expand Up @@ -135,6 +150,8 @@ a58f8c98e837a5b56126ca0f410e02f1e9cfcd80a8cb429e0ef522defab1f690 gencode/python
26443a1f6d0be3469ff93aa7fdb4e6682e0439a3b29a8e237998dcebec5f6901 gencode/python/udmi/schema/state_discovery.py
187400078dfc89912062ca1ad92f61e32d28126ae56119d83e6767d58cda1117 gencode/python/udmi/schema/state_discovery_family.py
05e82aa15c64842e206ae8ce3d5810d115bb890d009ea5d657822fad0e0d2165 gencode/python/udmi/schema/state_gateway.py
cb6a5558fe87dea5bce9e1cc6b22984a7d8c379babc4941c50df13edad36579a gencode/python/udmi/schema/state_mapping.py
f2a76b32a5568d87a8c9ca8b32dc8a129bc7386f9522c5399d32db433be4cb70 gencode/python/udmi/schema/state_mapping_device.py
3520ad936af70b414d9e7f90e606a011768bc4ee3bf1248714acc517ee9b393d gencode/python/udmi/schema/state_pointset.py
837ecc89c477abe3a1faf837733ca05475774891b55353d84ca231d90a1fbf31 gencode/python/udmi/schema/state_pointset_point.py
8184e783f3e2da5a6d3fb7e7fac105aaeb28106a7c146e82b610049554abf184 gencode/python/udmi/schema/state_system.py
Expand Down
10 changes: 10 additions & 0 deletions _includes/head-custom.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
<script src="https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.min.js" defer="true"></script>
<script>
document.addEventListener("DOMContentLoaded", function() {
document.querySelectorAll("pre>code.language-mermaid").forEach($element => {
$element.parentElement.outerHTML = `<div class="mermaid">${$element.textContent}</div>`
});
mermaid.initialize();
});

</script>
13 changes: 11 additions & 2 deletions bin/pull_message
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
#!/bin/bash -e
#
# For simple debugging, just run in a shell loop:
# while true; do bin/pull_message PROJECT_ID; done
#

subscription=validation-debug
subscription=$USER-debug
out_file=/tmp/captured.json

if [[ $# -ne 1 ]]; then
Expand All @@ -13,12 +17,17 @@ shift

gcloud --format=json --project=$project_id pubsub subscriptions pull $subscription --auto-ack > $out_file || true

subType=$(jq -r '.[0].message.attributes.subType' $out_file 2> /dev/null)
subFolder=$(jq -r '.[0].message.attributes.subFolder' $out_file 2> /dev/null)
deviceId=$(jq -r '.[0].message.attributes.deviceId' $out_file 2> /dev/null)
timestamp=$(jq -r '.[0].message.data' $out_file 2>/dev/null | base64 --decode | jq -r .timestamp 2> /dev/null) || true

if [[ $subType == null ]]; then
subType=event
fi

if [[ $subFolder != null ]]; then
echo $subFolder $deviceId $timestamp
echo $subFolder $subType for $deviceId at $timestamp
else
echo No matching messages found.
fi
85 changes: 71 additions & 14 deletions common/src/main/java/com/google/udmi/util/SiteModel.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,13 @@
import com.fasterxml.jackson.databind.SerializationFeature;
import com.fasterxml.jackson.databind.util.ISO8601DateFormat;
import com.google.common.base.Preconditions;
import daq.pubber.MqttPublisher;
import java.io.File;
import java.util.Arrays;
import java.util.Map;
import java.util.Set;
import java.util.function.BiConsumer;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
import udmi.schema.CloudIotConfig;
import udmi.schema.CloudModel.Auth_type;
Expand All @@ -23,30 +24,38 @@

public class SiteModel {

private static final String ID_FORMAT = "projects/%s/locations/%s/registries/%s/devices/%s";
private static final String KEY_SITE_PATH_FORMAT = "%s/devices/%s/%s_private.pkcs8";
private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper()
.enable(SerializationFeature.INDENT_OUTPUT)
.setDateFormat(new ISO8601DateFormat())
.setSerializationInclusion(JsonInclude.Include.NON_NULL);
private static final String DEFAULT_ENDPOINT_HOSTNAME = "mqtt.googleapis.com";
private static final Pattern ID_PATTERN = Pattern.compile(
"projects/(.*)/locations/(.*)/registries/(.*)/devices/(.*)");

final String sitePath;
private Map<String, Metadata> allMetadata;
private EndpointConfiguration endpointConfig;
private CloudIotConfig cloudIotConfig;

public SiteModel(String sitePath) {
this.sitePath = sitePath;
}

public static EndpointConfiguration extractEndpointConfig(String projectId,
public static EndpointConfiguration makeEndpointConfig(String projectId,
CloudIotConfig cloudIotConfig, String deviceId) {
EndpointConfiguration endpoint = new EndpointConfiguration();
endpoint.client_id = MqttPublisher.getClientId(projectId,
endpoint.client_id = getClientId(projectId,
cloudIotConfig.cloud_region, cloudIotConfig.registry_id, deviceId);
endpoint.hostname = DEFAULT_ENDPOINT_HOSTNAME;
return endpoint;
}

public static String getClientId(String projectId, String cloudRegion, String registryId,
String deviceId) {
return String.format(ID_FORMAT, projectId, cloudRegion, registryId, deviceId);
}

private static CloudIotConfig makeCloudIotConfig(Envelope attributes) {
CloudIotConfig cloudIotConfig = new CloudIotConfig();
cloudIotConfig.registry_id = Preconditions.checkNotNull(attributes.deviceRegistryId,
Expand All @@ -58,7 +67,34 @@ private static CloudIotConfig makeCloudIotConfig(Envelope attributes) {

public static EndpointConfiguration makeEndpointConfig(Envelope attributes) {
CloudIotConfig cloudIotConfig = makeCloudIotConfig(attributes);
return extractEndpointConfig(attributes.projectId, cloudIotConfig, attributes.deviceId);
return makeEndpointConfig(attributes.projectId, cloudIotConfig, attributes.deviceId);
}

/**
* Parse a GCP clientId string into component parts including project, etc...
*
* @param clientId client id to parse
* @return bucket of parameters
*/
public static ClientInfo parseClientId(String clientId) {
if (clientId == null) {
throw new IllegalArgumentException("client_id not specified");
}
Matcher matcher = ID_PATTERN.matcher(clientId);
if (!matcher.matches()) {
throw new IllegalArgumentException(
String.format("client_id %s does not match pattern %s", clientId, ID_PATTERN.pattern()));
}
ClientInfo clientInfo = new ClientInfo();
clientInfo.projectId = matcher.group(1);
clientInfo.cloudRegion = matcher.group(2);
clientInfo.registryId = matcher.group(3);
clientInfo.deviceId = matcher.group(4);
return clientInfo;
}

public EndpointConfiguration makeEndpointConfig(String projectId, String deviceId) {
return makeEndpointConfig(projectId, cloudIotConfig, deviceId);
}

private Set<String> getAllDevices() {
Expand Down Expand Up @@ -93,24 +129,19 @@ public void forEachDevice(BiConsumer<String, Metadata> consumer) {
allMetadata.forEach(consumer);
}

private void loadEndpointConfig(String projectId, String deviceId) {
private void loadSiteConfig() {
Preconditions.checkState(sitePath != null,
"sitePath not defined in configuration");
File cloudConfig = new File(new File(sitePath), "cloud_iot_config.json");
try {
endpointConfig = extractEndpointConfig(projectId,
OBJECT_MAPPER.readValue(cloudConfig, CloudIotConfig.class), deviceId);
cloudIotConfig = OBJECT_MAPPER.readValue(cloudConfig, CloudIotConfig.class);
} catch (Exception e) {
throw new RuntimeException("While reading config file " + cloudConfig.getAbsolutePath(), e);
}
}

public EndpointConfiguration getEndpointConfig() {
return endpointConfig;
}

public void initialize(String projectId, String deviceId) {
loadEndpointConfig(projectId, deviceId);
public void initialize() {
loadSiteConfig();
loadAllDeviceMetadata();
}

Expand All @@ -134,4 +165,30 @@ private String getDeviceKeyPrefix(String targetId) {
Auth_type auth_type = getMetadata(targetId).cloud.auth_type;
return auth_type.value().startsWith("RS") ? "rsa" : "ec";
}

/**
* Get the site registry name.
*
* @return site registry
*/
public String getRegistryId() {
return cloudIotConfig.registry_id;
}

/**
* Get the update topic for the site, if defined.
*
* @return update topic
*/
public String getUpdateTopic() {
return cloudIotConfig.update_topic;
}

public static class ClientInfo {

public String cloudRegion;
public String projectId;
public String registryId;
public String deviceId;
}
}
3 changes: 3 additions & 0 deletions docs/specs/categories.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,9 @@ implicit expected `level` values, indicated by '(**LEVEL**)' in the hierarchy be
* _enumerate_: (**INFO**) Handling point enumeration for a given device
* _point_: Conditions specific to point enumeration
* _describe_: (**INFO**) Relating to describing a particular point
* _mapping_: Mapping processing for devices
* _device_: Relating to a specific individual device
* _apply_: (**INFO**) Stage of applying a device mapping
* _blobset_: Handling update of device data blobs
* _blob_: Conditions specific to an individual blob
* _receive_: (**DEBUG**) About receiving a blob update
Expand Down
Loading