From c6fac8f72b6a27a80cb961a1dc72f1b7559f7c0c Mon Sep 17 00:00:00 2001 From: Noureddine Date: Tue, 18 Oct 2022 12:28:14 +0100 Subject: [PATCH 1/2] add misc tools --- misc/create_reflect_credentials | 29 +++++++++++++++++ misc/setup_gcp_project | 57 +++++++++++++++++++++++++++++++++ 2 files changed, 86 insertions(+) create mode 100755 misc/create_reflect_credentials create mode 100644 misc/setup_gcp_project diff --git a/misc/create_reflect_credentials b/misc/create_reflect_credentials new file mode 100755 index 0000000000..5af5c4f41d --- /dev/null +++ b/misc/create_reflect_credentials @@ -0,0 +1,29 @@ +#!/bin/bash -e +# Creates reflector credentials and device entry in UDMS-REFLECT for a site +# +# Usage: create_reflect_credentials PATH_TO_SITE_MODEL PROJECT_ID + +if [[ "$#" != 2 ]]; then + echo $0 SITE_MODEL PROJECT_ID + exit 1 +fi +SITE_MODEL=$1 +PROJECT_ID=$2 +shift 2 + +ROOT_DIR=$(git rev-parse --show-toplevel) + +registry_id=$(jq -r .registry_id $SITE_MODEL/cloud_iot_config.json) +cloud_region=$(jq -r .cloud_region $SITE_MODEL/cloud_iot_config.json) + +if [[ -f $SITE_MODEL/validator/rsa_private.pkcs8 ]]; then + echo validator credentials seem to already exist, exitting .. + exit 1 +fi + +mkdir -p $SITE_MODEL/validator +$ROOT_DIR/bin/keygen RS256 $SITE_MODEL/validator + +gcloud iot devices create $registry_id --region=us-central1 --registry=UDMS-REFLECT --project=$PROJECT_ID \ + --public-key \ + path=$SITE_MODEL/validator/rsa_public.pem,type=RSA_PEM diff --git a/misc/setup_gcp_project b/misc/setup_gcp_project new file mode 100644 index 0000000000..efa84a6a4f --- /dev/null +++ b/misc/setup_gcp_project @@ -0,0 +1,57 @@ +#!/bin/bash -e +# Setups a blank GCP project with the UDMI cloud functions and the registers +# the default site model +# +# Usage: setup_gcp_project PROJECT_ID + +if [[ "$#" != 1 ]]; then + echo $0 PROJECT_ID + exit 1 +fi +PROJECT_ID=$1 +shift 1 + +SERVICE_ACCOUNT_NAME=udmi-cloud-functions +SERVICE_ACCOUNT=$SERVICE_ACCOUNT_NAME@$PROJECT_ID.iam.gserviceaccount.com + +ROOT_DIR=$(git rev-parse --show-toplevel) + +gcloud services --project $PROJECT_ID enable \ + cloudresourcemanager.googleapis.com \ + compute.googleapis.com \ + cloudbuild.googleapis.com \ + cloudfunctions.googleapis.com \ + cloudiot.googleapis.com \ + cloudidentity.googleapis.com + +gcloud iam service-accounts create $SERVICE_ACCOUNT_NAME --display-name="UDMI Cloud Functions" --project=$PROJECT_ID +gcloud projects add-iam-policy-binding $PROJECT_ID --member="serviceAccount:$SERVICE_ACCOUNT" --role="roles/pubsub.publisher" +Gcloud projects add-iam-policy-binding $PROJECT_ID --member="serviceAccount:$SERVICE_ACCOUNT" --role="roles/cloudiot.provisioner" + +$ROOT_DIR/dashboard/deploy_dashboard_gcloud $PROJECT_ID --service-account=$SERVICE_ACCOUNT + +$ROOT_DIR/bin/clone_model +registry_id=$(jq -r .registry_id $ROOT_DIR/sites/udmi_site_model/cloud_iot_config.json) +cloud_region=$(jq -r .cloud_region $ROOT_DIR/sites/udmi_site_model/cloud_iot_config.json) + +gcloud iot registries create $registry_id \ + --project=$PROJECT_ID \ + --region=$cloud_region \ + --event-notification-config=topic=projects/$PROJECT_ID/topics/udmi_target \ + --state-pubsub-topic=projects/$PROJECT_ID/topics/udmi_state + +$ROOT_DIR/bin/registrar sites/udmi_site_model $PROJECT_ID + +gcloud iot registries create UDMS-REFLECT \ + --project=$PROJECT_ID \ + --region=us-central1 \ + --event-notification-config=topic=projects/$PROJECT_ID/topics/udmi_reflect + +gcloud iot devices create $registry_id --region=us-central1 --registry=UDMS-REFLECT --project=$PROJECT_ID \ + --public-key \ + path=$ROOT_DIR/sites/udmi_site_model/devices/AHU-1/rsa_public.pem,type=RSA_PEM + +gcloud pubsub subscriptions create udmi_target --project=$PROJECT_ID \ + --topic=udmi_target \ + --message-retention-duration=10m \ + --expiration-period=never From 387d19db1f5dedd048d2c476e7abcc0e828f5dee Mon Sep 17 00:00:00 2001 From: noursaidi Date: Thu, 27 Oct 2022 11:44:44 +0100 Subject: [PATCH 2/2] comments on pr --- misc/setup_gcp_project | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/misc/setup_gcp_project b/misc/setup_gcp_project index efa84a6a4f..b9b3f186a5 100644 --- a/misc/setup_gcp_project +++ b/misc/setup_gcp_project @@ -12,7 +12,7 @@ PROJECT_ID=$1 shift 1 SERVICE_ACCOUNT_NAME=udmi-cloud-functions -SERVICE_ACCOUNT=$SERVICE_ACCOUNT_NAME@$PROJECT_ID.iam.gserviceaccount.com +SERVICE_ACCOUNT=$(SERVICE_ACCOUNT_NAME)@$(PROJECT_ID).iam.gserviceaccount.com ROOT_DIR=$(git rev-parse --show-toplevel) @@ -26,7 +26,7 @@ gcloud services --project $PROJECT_ID enable \ gcloud iam service-accounts create $SERVICE_ACCOUNT_NAME --display-name="UDMI Cloud Functions" --project=$PROJECT_ID gcloud projects add-iam-policy-binding $PROJECT_ID --member="serviceAccount:$SERVICE_ACCOUNT" --role="roles/pubsub.publisher" -Gcloud projects add-iam-policy-binding $PROJECT_ID --member="serviceAccount:$SERVICE_ACCOUNT" --role="roles/cloudiot.provisioner" +gcloud projects add-iam-policy-binding $PROJECT_ID --member="serviceAccount:$SERVICE_ACCOUNT" --role="roles/cloudiot.provisioner" $ROOT_DIR/dashboard/deploy_dashboard_gcloud $PROJECT_ID --service-account=$SERVICE_ACCOUNT