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

Include UDMI version of deployed cloud functions #339

Merged
merged 12 commits into from
May 24, 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
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