Skip to content

Commit

Permalink
Include UDMI version of deployed cloud functions (#339)
Browse files Browse the repository at this point in the history
  • Loading branch information
grafnu committed May 24, 2022
1 parent 75214f8 commit db69066
Show file tree
Hide file tree
Showing 26 changed files with 718 additions and 117 deletions.
20 changes: 13 additions & 7 deletions .gencode_hash.txt
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
db8d2c22a281d8279244bd8768ee54f755a4a888633e036cc29b7f43cc6ce74c gencode/docs/config.html
9646ce55996c521d600a6e803ce46fa4031a05a6ae15fce813bdb7f3999477bb gencode/docs/config.html
e2944b13db5ff06be9caea51d03bca48f2cb093a8bb583dca14051255d34ea6b gencode/docs/envelope.html
7fe8b7e549e9b66575996a1610c3d9f61c17b8784a9722a1ca66053a6d7ec1f0 gencode/docs/event_discovery.html
cb17a57a92baeb96c3de35d614346e8e04900bc0286720aaf31f392fd81dcb0a gencode/docs/event_pointset.html
080329e12ec1adeca08546ceface6ca8ba09495da8642dc3a1a22e83a7b83879 gencode/docs/event_system.html
ffe3ff971a425218e7601a205a2e37c629f9dbdc4a15e0c7856ed24a0114eac0 gencode/docs/event_discovery.html
8133e380e40f27c56accbffc665b2eeb56ec84a4da3b52ba7aa5e439c9c40572 gencode/docs/event_pointset.html
076eb51e75281ed065a9f0236a1e19b6bf3c277b51ceca84f6aa3f76d5bb6022 gencode/docs/event_system.html
a82821e72af6d0ee35800e6262eb9bb05256309b98aed2dad1a368fd2d6882bb gencode/docs/index.html
18880462118b7f9798687899a93eb9edb579b0a93f84e3345ab8825397c8e47a gencode/docs/metadata.html
f1731b2db4d6383fb9a96d931c461560ed681498428e4ae6b9e0f1ed9feb18de gencode/docs/metadata.html
741b880216be3743f6747800a042f2dbd89f3b0344c6b0a965f4bc010f03a930 gencode/docs/schema_doc.css
878ea88206c974f40643c3cc430875f9c4e8c5e3fd6bcd6358bd3eb6d48699a9 gencode/docs/schema_doc.min.js
7ed934930aee763e0beebc349725ba3909115e8d346bb762f28bcbe745bb163a gencode/docs/schema_extras.js
c2e9ba962dca44436705438ab14e3c32e7ab637f4b279509f849cd4f33643642 gencode/docs/state.html
a4b50057f917db760fccab1128cb56655ffcfd5e11e39d6e37bc336ace7b13d5 gencode/docs/state.html
68f8919d59556c7c781958baaac0b8cc629b6c4ce86e6ffd0171d23536747ec6 gencode/java/udmi/schema/Ancillary.java
d39d7fe37a41c74a40080af7b0a429d201ab1fdff7444428c4b98eb7b38c332b gencode/java/udmi/schema/Asset.java
0edc9b905bbe4ad0ee5ffdb7fb5d65a00ad171b2dad299ef128e59c0bd9dddc0 gencode/java/udmi/schema/AuditEvent.java
Expand Down Expand Up @@ -54,6 +54,10 @@ bb1c7e0df78870b7f7bd78fdfb1ed115cb121613ffcd98ec6b95e41c01624d41 gencode/java/u
fc3a9415c04d8a06954dbdbfdff5d68ab113cce3948532c19df555778ffb04fa gencode/java/udmi/schema/PointsetState.java
ca2e7566106818ca7e5190c8041eb86f0c9b3251b0bda8c3ea7ce11a0c891a0a gencode/java/udmi/schema/Position.java
3df66bb1a37a9e0b2b6cf392f8c64d404a73c83e5e13c02bb4844f09b9a04b70 gencode/java/udmi/schema/Properties.java
7bc53cb9a61df8f804a75aa4860403d19281f7c665cbddd5364a2aa746a1f651 gencode/java/udmi/schema/ReflectorConfig.java
abe99dd74122c186403baa6982300a9d5968f8bbb7a67b1689104111b98f32fb gencode/java/udmi/schema/ReflectorState.java
5a44075bc03f2b9b2cc090f007fd1692832871f0981dcb02579d8dda96a96206 gencode/java/udmi/schema/SetupReflectorConfig.java
649c0291ad81421fc51da0c2f7da3286628127157a5a6eef77610e8c37c14941 gencode/java/udmi/schema/SetupReflectorState.java
580df660dad1b97399002271716d597f72aa1a6110a49de9e162104c231752f4 gencode/java/udmi/schema/State.java
6b8b054c5fa2baef5163d42cd6bf1b0aeb4d07aa881529d81f4ae7dfa4c2906e gencode/java/udmi/schema/SystemConfig.java
247652dd11714452adc27ffa542e3d5915f8e9b7b255d181723d6fe1e897b565 gencode/java/udmi/schema/SystemEvent.java
Expand All @@ -62,7 +66,7 @@ ca2e7566106818ca7e5190c8041eb86f0c9b3251b0bda8c3ea7ce11a0c891a0a gencode/java/u
dfe4bb7c9ba6e366a967ff475883a8ff33fc558ae51db5c71fafae2323d0f8eb gencode/java/udmi/schema/Target.java
7d6dd13e368e7f073738fee69c15e18652a9b7d7ac63bde0a200f747e3aa1b1d gencode/java/udmi/schema/TargetTestingModel.java
d3968b92497e83a63f18cc0e74484a9807f1bb92db0c92d556ec2caaa143d645 gencode/java/udmi/schema/TestingModel.java
04e5a1734f164edea681962debfa3e1f2c2ec09726fd9cc5a45848d76b8e16f4 gencode/python/udmi/schema/__init__.py
c9bf6e8763d0092d348f651da0bbff16841d1bd01e036afbb56d21f5cd29098e gencode/python/udmi/schema/__init__.py
6578d68f65b87b781086e72566de910db4bef365599fe3188862d4d8a81e84fb gencode/python/udmi/schema/command_discovery.py
704c8f0eec0b87015af8f7e524375f651b3d35f659ec89b4b022f8c1d0813ec5 gencode/python/udmi/schema/common.py
b975892df78076dabc797b4c0be87f20b33eacda11f9d1ac1c09be33d4937a87 gencode/python/udmi/schema/config.py
Expand Down Expand Up @@ -98,6 +102,8 @@ ae6a7bc93b520cdc90cd158f876a58e98a3e000402ebb1ca632f01ee492d408a gencode/python
aafe6e70c281152db958adf77a024e3e9fab8293927106297c5ec48c11f54e27 gencode/python/udmi/schema/model_testing.py
5c50847e136a033ea511209238bb570499b43fbee6189dae06603132dcb9f01f gencode/python/udmi/schema/model_testing_target.py
a58f8c98e837a5b56126ca0f410e02f1e9cfcd80a8cb429e0ef522defab1f690 gencode/python/udmi/schema/properties.py
1f521678016ad267ad1c817896c7900ba30a85fc694669577b71148193db32c1 gencode/python/udmi/schema/reflect_config.py
1a4eef286957d77418777eb7f4cd1ee13aa24c2d916ec71a7ff4e56de76e303e gencode/python/udmi/schema/reflect_state.py
32bc70a30e37e89cfae14b44add18d546a6f9e00a3ec3519ede9c7486114d39c gencode/python/udmi/schema/state.py
c8c8ecae303d9c96fb7a97106d722b32db8c3728a44a46db028cf0376d9dc79f gencode/python/udmi/schema/state_blobset.py
a5a914cb5d74c29671a4d29dfa6c700b3fec27d695d607e28814ad31307e82da gencode/python/udmi/schema/state_blobset_blob.py
Expand Down
3 changes: 3 additions & 0 deletions bin/loop_sequences
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ else
echo Executing specific tests $test_names
fi

export UDMI_VERSION=`git describe --always --dirty`

echo Parsing $VALIDATOR_CONFIG:
cat $VALIDATOR_CONFIG
project_id=`jq -r .project_id $VALIDATOR_CONFIG`
Expand All @@ -29,6 +31,7 @@ echo Target project $project_id
echo Site model $site_model
echo Target device $device_id
echo Device serial $serial_no
echo UDMI version $UDMI_VERSION

if [[ ! -d $site_model ]]; then
echo Site model $site_model not found.
Expand Down
2 changes: 1 addition & 1 deletion bin/setup_base
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@

python3 -m venv venv

venv/bin/pip3 install -r etc/requirements.txt
venv/bin/pip3 install -r etc/requirements.txt
1 change: 1 addition & 0 deletions dashboard/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,4 @@ venv/

/*.log
.attributes.json
functions/version.js
6 changes: 6 additions & 0 deletions dashboard/deploy_dashboard_firebase
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,12 @@ version=`git describe --dirty`
echo Deploying version $version to $PROJECT
echo "const udmi_deploy_version = '$version';" > public/deploy_version.js

cat <<EOF > functions/version.js
module.exports = {
udmis: '$version'
}
EOF

firebase use $PROJECT

only="functions:udmi_target"
Expand Down
6 changes: 6 additions & 0 deletions dashboard/deploy_dashboard_gcloud
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,12 @@ version=`git describe --dirty`
echo Deploying version $version to $PROJECT
echo "const udmi_deploy_version = '$version';" > public/deploy_version.js

cat <<EOF > functions/version.js
module.exports = {
udmis: '$version'
}
EOF

PUBSUB_FUNCTIONS="udmi_target udmi_state udmi_config udmi_reflect"
for func in $PUBSUB_FUNCTIONS; do
echo Deploying pubsub-trigger function $func...
Expand Down
34 changes: 27 additions & 7 deletions dashboard/functions/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,22 +10,27 @@ if (!process.env.GCLOUD_PROJECT) {
process.env.GCLOUD_PROJECT = PROJECT_ID;
}

const version = require('./version');
const functions = require('firebase-functions');
const admin = require('firebase-admin');
const { PubSub } = require(`@google-cloud/pubsub`);
const iot = require('@google-cloud/iot');
const pubsub = new PubSub();
const iot = require('@google-cloud/iot');

const REFLECT_REGISTRY = 'UDMS-REFLECT';
const UDMI_VERSION = '1.3.14';
const UDMI_VERSION = version.udmis;
const EVENT_TYPE = 'event';
const CONFIG_TYPE = 'config';
const STATE_TYPE = 'state';
const UPDATE_FOLDER = 'update';
const QUERY_FOLDER = 'query';
const SETUP_FOLDER = 'setup';

const ALL_REGIONS = ['us-central1', 'europe-west1', 'asia-east1'];
let registry_regions = null;

console.log('Using UDMI version ' + UDMI_VERSION);

if (useFirestore) {
admin.initializeApp(functions.config().firebase);
} else {
Expand Down Expand Up @@ -159,8 +164,11 @@ exports.udmi_reflect = functions.pubsub.topic('udmi_reflect').onPublish((event)
const msgString = Buffer.from(base64, 'base64').toString();
const msgObject = JSON.parse(msgString);

const parts = attributes.subFolder.split('/');
if (!attributes.subFolder) {
return udmi_reflector_state(attributes, msgObject);
}

const parts = attributes.subFolder.split('/');
attributes.deviceRegistryId = attributes.deviceId;
attributes.deviceId = parts[1];
attributes.subFolder = parts[2];
Expand All @@ -177,8 +185,20 @@ exports.udmi_reflect = functions.pubsub.topic('udmi_reflect').onPublish((event)
});
});

function udmi_reflector_state(attributes, msgObject) {
console.log('Processing reflector state change', attributes, msgObject);
const registryId = attributes.deviceRegistryId;
const deviceId = attributes.deviceId;
const subContents = {
'last_state': msgObject.timestamp
};
const startTime = currentTimestamp();
return modify_device_config(registryId, deviceId, SETUP_FOLDER, subContents, startTime);
}

function udmi_query_event(attributes, msgObject) {
if (attributes.subType == STATE_TYPE) {
const subType = attributes.subType;
if (subType == STATE_TYPE) {
return udmi_query_states(attributes);
}
throw 'Unknown query type ' + attributes.subType;
Expand Down Expand Up @@ -271,7 +291,7 @@ exports.udmi_config = functions.pubsub.topic('udmi_config').onPublish((event) =>
if (useFirestore) {
console.info('Deferring to firestore trigger for IoT Core modification.');
} else {
promises.push(modify_device_config(registryId, deviceId, subFolder, currentTimestamp(), msgObject));
promises.push(modify_device_config(registryId, deviceId, subFolder, msgObject, currentTimestamp()));
}

return Promise.all(promises);
Expand All @@ -291,7 +311,7 @@ function parse_old_config(oldConfig, resetConfig) {
}
}

async function modify_device_config(registryId, deviceId, subFolder, startTime, subContents) {
async function modify_device_config(registryId, deviceId, subFolder, subContents, startTime) {
const [oldConfig, version] = await get_device_config(registryId, deviceId);

const resetConfig = subFolder == 'system' && subContents && subContents.extra_field == 'reset_config';
Expand Down Expand Up @@ -326,7 +346,7 @@ async function modify_device_config(registryId, deviceId, subFolder, startTime,
console.log('Config accepted version', subFolder, version, startTime);
}).catch(e => {
console.log('Config update rejected', subFolder, version, startTime);
return modify_device_config(registryId, deviceId, subFolder, startTime, subContents);
return modify_device_config(registryId, deviceId, subFolder, subContents, startTime);
})
}

Expand Down
36 changes: 36 additions & 0 deletions etc/requirements.txt
Original file line number Diff line number Diff line change
@@ -1 +1,37 @@
cachetools==5.0.0
certifi==2021.10.8
charset-normalizer==2.0.11
click==8.0.3
dataclasses-json==0.5.6
google-api-core==2.5.0
google-api-python-client==2.37.0
google-auth==2.6.0
google-auth-httplib2==0.1.0
google-auth-oauthlib==0.4.6
googleapis-common-protos==1.54.0
htmlmin==0.1.12
httplib2==0.20.4
idna==3.3
Jinja2==3.0.3
json-schema-for-humans==0.40
markdown2==2.4.2
MarkupSafe==2.0.1
marshmallow==3.14.1
marshmallow-enum==1.5.1
mypy-extensions==0.4.3
oauthlib==3.2.0
protobuf==3.19.4
pyasn1==0.4.8
pyasn1-modules==0.2.8
Pygments==2.11.2
pyparsing==3.0.7
pytz==2021.3
PyYAML==5.4.1
requests==2.27.1
requests-oauthlib==1.3.1
rsa==4.8
six==1.16.0
typing-inspect==0.7.1
typing_extensions==4.0.1
uritemplate==4.1.1
urllib3==1.26.8
20 changes: 10 additions & 10 deletions gencode/docs/config.html

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

20 changes: 10 additions & 10 deletions gencode/docs/event_discovery.html

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading

0 comments on commit db69066

Please sign in to comment.