Skip to content

Commit

Permalink
Onboarding discovery mapping flow (#365)
Browse files Browse the repository at this point in the history
  • Loading branch information
grafnu authored Aug 30, 2022
1 parent 9d60a6b commit ba077b1
Show file tree
Hide file tree
Showing 98 changed files with 11,174 additions and 548 deletions.
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

0 comments on commit ba077b1

Please sign in to comment.