Skip to content

Commit 4a78d51

Browse files
siddharth kumarSrividyaKamakshi
authored andcommitted
Added - Support for Oracle Cloud Infrastructure (OCI) Internet of Things (IoT) Service
1 parent 93716ca commit 4a78d51

File tree

63 files changed

+9433
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

63 files changed

+9433
-0
lines changed

examples/iot/description.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
# Overview
2+
This is a Terraform configuration that creates the IoT service on Oracle Cloud Infrastructure.
3+
4+
The Terraform code is used to create a Resource Manager stack, that creates the required resources and configures the application on the created resources.
Lines changed: 146 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,146 @@
1+
// Copyright (c) 2017, 2024, Oracle and/or its affiliates. All rights reserved.
2+
// Licensed under the Mozilla Public License v2.0
3+
4+
variable "tenancy_ocid" {}
5+
variable "user_ocid" {}
6+
variable "fingerprint" {}
7+
variable "private_key_path" {}
8+
variable "region" {}
9+
variable "iot_domain_ocid" {}
10+
variable "digital_twin_model_ocid" {}
11+
12+
variable "digital_twin_adapter_defined_tags_value" {
13+
default = "value"
14+
}
15+
16+
variable "digital_twin_adapter_description" {
17+
default = "description"
18+
}
19+
20+
variable "digital_twin_adapter_digital_twin_model_spec_uri" {
21+
default = "dtmi:example:device;1"
22+
}
23+
24+
variable "digital_twin_adapter_display_name" {
25+
default = "displayName"
26+
}
27+
28+
variable "digital_twin_adapter_freeform_tags" {
29+
default = { "Protocol" = "MQTT" }
30+
}
31+
32+
variable "digital_twin_adapter_id" {
33+
default = "id"
34+
}
35+
36+
variable "digital_twin_adapter_inbound_envelope_envelope_mapping_time_observed" {
37+
default = "$.time"
38+
}
39+
40+
variable "digital_twin_adapter_inbound_envelope_reference_endpoint" {
41+
default = "telemetry/temperature"
42+
}
43+
44+
variable "digital_twin_adapter_inbound_envelope_reference_payload_data" {
45+
default = {
46+
"time" = "<timestamp>"
47+
"temperature" = 98.6
48+
}
49+
}
50+
51+
variable "digital_twin_adapter_inbound_envelope_reference_payload_data_format" {
52+
default = "JSON"
53+
}
54+
55+
variable "digital_twin_adapter_inbound_routes_condition" {
56+
default = "*"
57+
}
58+
59+
variable "digital_twin_adapter_inbound_routes_description" {
60+
default = "description"
61+
}
62+
63+
variable "digital_twin_adapter_inbound_routes_payload_mapping" {
64+
default = {
65+
"$.temperature" = "$.temperature"
66+
}
67+
}
68+
69+
variable "digital_twin_adapter_inbound_routes_reference_payload_data" {
70+
default = {
71+
"temperature" = 98.6
72+
}
73+
}
74+
75+
variable "digital_twin_adapter_inbound_routes_reference_payload_data_format" {
76+
default = "JSON"
77+
}
78+
79+
variable "digital_twin_adapter_state" {
80+
default = "ACTIVE"
81+
}
82+
83+
84+
85+
provider "oci" {
86+
tenancy_ocid = var.tenancy_ocid
87+
user_ocid = var.user_ocid
88+
fingerprint = var.fingerprint
89+
private_key_path = var.private_key_path
90+
region = var.region
91+
}
92+
93+
resource "oci_iot_digital_twin_adapter" "test_digital_twin_adapter" {
94+
#Required
95+
iot_domain_id = var.iot_domain_ocid
96+
97+
#Optional
98+
#defined_tags = map(oci_identity_tag_namespace.tag-namespace1.name.oci_identity_tag.tag1.name, var.digital_twin_adapter_defined_tags_value)
99+
description = var.digital_twin_adapter_description
100+
digital_twin_model_id = var.digital_twin_model_ocid
101+
#digital_twin_model_spec_uri = var.digital_twin_adapter_digital_twin_model_spec_uri ## either digital_twin_model_id or digital_twin_model_spec_uri
102+
display_name = var.digital_twin_adapter_display_name
103+
freeform_tags = var.digital_twin_adapter_freeform_tags
104+
inbound_envelope {
105+
#Required
106+
reference_endpoint = var.digital_twin_adapter_inbound_envelope_reference_endpoint
107+
108+
#Optional
109+
envelope_mapping {
110+
111+
#Optional
112+
time_observed = var.digital_twin_adapter_inbound_envelope_envelope_mapping_time_observed
113+
}
114+
reference_payload {
115+
#Required
116+
data = var.digital_twin_adapter_inbound_envelope_reference_payload_data
117+
data_format = var.digital_twin_adapter_inbound_envelope_reference_payload_data_format
118+
}
119+
}
120+
inbound_routes {
121+
#Required
122+
condition = var.digital_twin_adapter_inbound_routes_condition
123+
124+
#Optional
125+
description = var.digital_twin_adapter_inbound_routes_description
126+
payload_mapping = var.digital_twin_adapter_inbound_routes_payload_mapping
127+
reference_payload {
128+
#Required
129+
data = var.digital_twin_adapter_inbound_routes_reference_payload_data
130+
data_format = var.digital_twin_adapter_inbound_routes_reference_payload_data_format
131+
}
132+
}
133+
}
134+
135+
data "oci_iot_digital_twin_adapters" "test_digital_twin_adapters" {
136+
#Required
137+
iot_domain_id = var.iot_domain_ocid
138+
139+
#Optional
140+
digital_twin_model_id = var.digital_twin_model_ocid
141+
digital_twin_model_spec_uri = var.digital_twin_adapter_digital_twin_model_spec_uri
142+
display_name = var.digital_twin_adapter_display_name
143+
id = oci_iot_digital_twin_adapter.test_digital_twin_adapter.id
144+
state = var.digital_twin_adapter_state
145+
}
146+
Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
// Copyright (c) 2017, 2024, Oracle and/or its affiliates. All rights reserved.
2+
// Licensed under the Mozilla Public License v2.0
3+
4+
###########################################################################
5+
# This example assumes the following prerequisites:
6+
# - The DTDL Models and Adapter have already been created.
7+
# You can refer to the model example for guidance.
8+
###########################################################################
9+
10+
variable "tenancy_ocid" {}
11+
variable "user_ocid" {}
12+
variable "fingerprint" {}
13+
variable "private_key_path" {}
14+
variable "region" {}
15+
variable "iot_domain_ocid" {}
16+
variable "digital_twin_model_ocid" {}
17+
variable "digital_twin_adapter_ocid" {}
18+
variable "auth_ocid" {}
19+
20+
variable "digital_twin_instance_defined_tags_value" {
21+
default = "value"
22+
}
23+
24+
variable "digital_twin_instance_description" {
25+
default = "description"
26+
}
27+
28+
variable "digital_twin_instance_digital_twin_model_spec_uri" {
29+
// Refer model example
30+
default = "dtmi:example:device;1"
31+
}
32+
33+
variable "digital_twin_instance_display_name" {
34+
default = "displayName"
35+
}
36+
37+
variable "digital_twin_instance_external_key" {
38+
default = "externalKey"
39+
}
40+
41+
variable "digital_twin_instance_freeform_tags" {
42+
default = { "Protocol" = "MQTT" }
43+
}
44+
45+
variable "digital_twin_instance_id" {
46+
default = "id"
47+
}
48+
49+
variable "digital_twin_instance_state" {
50+
default = "ACTIVE"
51+
}
52+
53+
variable "digital_twin_instance_content_should_include_metadata" {
54+
default = true
55+
}
56+
57+
provider "oci" {
58+
tenancy_ocid = var.tenancy_ocid
59+
user_ocid = var.user_ocid
60+
fingerprint = var.fingerprint
61+
private_key_path = var.private_key_path
62+
region = var.region
63+
}
64+
65+
resource "oci_iot_digital_twin_instance" "test_digital_twin_instance" {
66+
#Required
67+
auth_id = var.auth_ocid
68+
iot_domain_id = var.iot_domain_ocid
69+
70+
#Optional
71+
#defined_tags = map(oci_identity_tag_namespace.tag-namespace1.name.oci_identity_tag.tag1.name, var.digital_twin_instance_defined_tags_value)
72+
description = var.digital_twin_instance_description
73+
digital_twin_adapter_id = var.digital_twin_adapter_ocid
74+
display_name = var.digital_twin_instance_display_name
75+
external_key = var.digital_twin_instance_external_key
76+
freeform_tags = var.digital_twin_instance_freeform_tags
77+
}
78+
79+
data "oci_iot_digital_twin_instances" "test_digital_twin_instances" {
80+
#Required
81+
iot_domain_id = var.iot_domain_ocid
82+
83+
#Optional
84+
digital_twin_model_id = var.digital_twin_model_ocid
85+
digital_twin_model_spec_uri = var.digital_twin_instance_digital_twin_model_spec_uri
86+
display_name = var.digital_twin_instance_display_name
87+
id = var.digital_twin_instance_id
88+
state = var.digital_twin_instance_state
89+
}
90+
91+
data "oci_iot_digital_twin_instance_content" "test_digital_twin_instance_content" {
92+
#Required
93+
digital_twin_instance_id = oci_iot_digital_twin_instance.test_digital_twin_instance.id
94+
95+
#Optional
96+
should_include_metadata = var.digital_twin_instance_content_should_include_metadata
97+
}
Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,108 @@
1+
// Copyright (c) 2017, 2024, Oracle and/or its affiliates. All rights reserved.
2+
// Licensed under the Mozilla Public License v2.0
3+
4+
variable "tenancy_ocid" {}
5+
variable "user_ocid" {}
6+
variable "fingerprint" {}
7+
variable "private_key_path" {}
8+
variable "region" {}
9+
variable "iot_domain_ocid" {}
10+
11+
variable "digital_twin_model_defined_tags_value" {
12+
default = "value"
13+
}
14+
15+
variable "digital_twin_model_description" {
16+
default = "description"
17+
}
18+
19+
variable "spec_uri_starts_with" {
20+
default = "dtmi:example"
21+
}
22+
23+
variable "digital_twin_model_display_name" {
24+
default = "displayName"
25+
}
26+
27+
variable "digital_twin_model_freeform_tags" {
28+
default = { "Protocol" = "MQTT" }
29+
}
30+
31+
variable "digital_twin_model_id" {
32+
default = "id"
33+
}
34+
35+
variable "digital_twin_model_spec" {
36+
default = {
37+
"@id" = "dtmi:example:device;1"
38+
"@type" = "Interface"
39+
"@context" = "dtmi:dtdl:context;3"
40+
"displayName" = "IoT Device Model"
41+
"description" = "Represents a simple IoT device with temperature property."
42+
"contents" = [
43+
{
44+
"@type" = "Property"
45+
"name" = "temperature"
46+
"displayName" = "Temperature"
47+
"description" = "The current temperature reading of the device."
48+
"schema" = "double"
49+
},
50+
{
51+
"@type" = "Relationship"
52+
"name" = "connectedHumidity"
53+
"target" = "dtmi:example:device;2"
54+
"properties" = [
55+
{
56+
"@type" = "Property"
57+
"name" = "connectionStrength"
58+
"schema" = "integer"
59+
"description" = "Strength of the connection between devices (0–100)."
60+
}
61+
]
62+
}
63+
]
64+
}
65+
}
66+
67+
variable "digital_twin_model_state" {
68+
default = "ACTIVE"
69+
}
70+
71+
72+
73+
provider "oci" {
74+
tenancy_ocid = var.tenancy_ocid
75+
user_ocid = var.user_ocid
76+
fingerprint = var.fingerprint
77+
private_key_path = var.private_key_path
78+
region = var.region
79+
}
80+
81+
resource "oci_iot_digital_twin_model" "test_digital_twin_model" {
82+
#Required
83+
iot_domain_id = var.iot_domain_ocid
84+
spec = jsonencode(var.digital_twin_model_spec)
85+
86+
#Optional
87+
#defined_tags = map(oci_identity_tag_namespace.tag-namespace1.name.oci_identity_tag.tag1.name, var.digital_twin_model_defined_tags_value)
88+
description = var.digital_twin_model_description
89+
display_name = var.digital_twin_model_display_name
90+
freeform_tags = var.digital_twin_model_freeform_tags
91+
}
92+
93+
data "oci_iot_digital_twin_models" "test_digital_twin_models" {
94+
#Required
95+
iot_domain_id = var.iot_domain_ocid
96+
97+
#Optional
98+
spec_uri_starts_with = var.spec_uri_starts_with
99+
display_name = var.digital_twin_model_display_name
100+
id = oci_iot_digital_twin_model.test_digital_twin_model.id
101+
state = var.digital_twin_model_state
102+
}
103+
104+
data "oci_iot_digital_twin_model_spec" "test_digital_twin_model_spec" {
105+
#Required
106+
digital_twin_model_id = oci_iot_digital_twin_model.test_digital_twin_model.id
107+
}
108+

0 commit comments

Comments
 (0)