forked from fluidos-project/REAR-data-models
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathflavor.schema.json
More file actions
140 lines (140 loc) · 4.94 KB
/
flavor.schema.json
File metadata and controls
140 lines (140 loc) · 4.94 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Flavor",
"type": "object",
"properties": {
"flavorId": {
"type": "string",
"description": "The unique identifier for a flavor"
},
"providerId": {
"type": "string",
"description": "The unique identifier for a provider"
},
"timestamp": {
"type": "string",
"description": "Timestamp of the provided Flavor offer. It allows to advertise Flavors in the (near) future"
},
"location": {
"type": "object",
"description": "Location of the Flavor",
"properties": {
"latitude": {
"type": "string",
"description": "Latitude of the location"
},
"longitude": {
"type": "string",
"description": "Longitude of the location"
},
"country": {
"type": "string",
"description": "Country of the location"
},
"city": {
"type": "string",
"description": "City of the location"
},
"additionalNotes": {
"type": "string",
"description": "Additional notes about the location"
}
},
"additionalProperties": false
},
"networkPropertyType": {
"type": "string",
"description": "Type of network property ensured by the provider (e.g., 5G, Wifi, Ethernet)"
},
"type": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "The name of the type of the Flavor.",
"enum": [
"k8slice",
"vm",
"service",
"sensor"
]
},
"data": {
"type": "object",
"description": "A reference to a specific flavor type schema using JSON references ($ref) to external files like 'k8slice.json', 'vm.json', etc. This allows defining details specific to each flavor type.",
"oneOf": [
{
"$ref": "flavor-types/k8slice.json"
},
{
"$ref": "flavor-types/vm.json"
},
{
"$ref": "flavor-types/service.json"
},
{
"$ref": "flavor-types/sensor.json"
}
]
}
}
},
"price": {
"type": "object",
"description": "Price of the Flavor.",
"properties": {
"amount": {
"type": "string",
"description": "Amount of the price."
},
"currency": {
"type": "string",
"description": "Currency of the price."
},
"period": {
"type": "string",
"description": "Period of the price."
}
},
"required": ["amount", "currency", "period"],
"additionalProperties": false
},
"owner": {
"type": "object",
"description": "Owner of the Flavor.",
"properties": {
"domain": {
"type": "string",
"description": "Domain of the node."
},
"nodeId": {
"type": "string",
"description": "ID of the node."
},
"ip": {
"type": "string",
"description": "IP of the node."
},
"additionalInformation": {
"type": "object",
"description": "Additional information about the node.",
"properties": {
"LiqoID": {
"type": "string",
"description": "Liqo ID of the node."
}
},
"additionalProperties": true
}
},
"required": ["domain", "nodeId", "ip"],
"additionalProperties": false
},
"availability": {
"type": "boolean",
"description": "Availability flag of the Flavor."
}
},
"required": ["flavorId", "providerId", "timestamp", "type", "price", "owner", "availability"],
"additionalProperties": false
}