Skip to content

Commit 2d410e7

Browse files
authored
[Microsoft.CloudHealth] Adding read-only signal property and removing outdated properties (#39982)
* Adding external signal to entity * eval * remove obsolete properties * rename kind
1 parent e9f0ff7 commit 2d410e7

10 files changed

Lines changed: 173 additions & 114 deletions

File tree

specification/cloudhealth/CloudHealth.Management/examples/2026-01-01-preview/Entities_Get.json

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,29 @@
138138
"aggregationType": "Thresholds",
139139
"degradedThreshold": "3",
140140
"unhealthyThreshold": "50%"
141+
},
142+
"external": {
143+
"signals": [
144+
{
145+
"name": "external-signal-1",
146+
"signalKind": "External",
147+
"status": {
148+
"healthState": "Degraded",
149+
"value": 75.5,
150+
"reportedAt": "2025-12-15T12:00:00Z"
151+
},
152+
"evaluationRules": {
153+
"degradedRule": {
154+
"operator": "GreaterThan",
155+
"threshold": 70
156+
},
157+
"unhealthyRule": {
158+
"operator": "GreaterThan",
159+
"threshold": 90
160+
}
161+
}
162+
}
163+
]
141164
}
142165
},
143166
"discoveredBy": "discoveryRule1",

specification/cloudhealth/CloudHealth.Management/examples/2026-01-01-preview/Entities_ListByHealthModel.json

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,29 @@
134134
"aggregationType": "Thresholds",
135135
"degradedThreshold": "3",
136136
"unhealthyThreshold": "50%"
137+
},
138+
"external": {
139+
"signals": [
140+
{
141+
"name": "external-signal-1",
142+
"signalKind": "External",
143+
"status": {
144+
"healthState": "Degraded",
145+
"value": 75.5,
146+
"reportedAt": "2025-12-15T12:00:00Z"
147+
},
148+
"evaluationRules": {
149+
"degradedRule": {
150+
"operator": "GreaterThan",
151+
"threshold": 70
152+
},
153+
"unhealthyRule": {
154+
"operator": "GreaterThan",
155+
"threshold": 90
156+
}
157+
}
158+
}
159+
]
137160
}
138161
},
139162
"discoveredBy": "discoveryRule1",

specification/cloudhealth/CloudHealth.Management/examples/2026-01-01-preview/HealthModels_Create.json

Lines changed: 3 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,7 @@
77
"resourceGroupName": "rgopenapi",
88
"healthModelName": "model1",
99
"resource": {
10-
"properties": {
11-
"discovery": {
12-
"scope": "/providers/Microsoft.Management/serviceGroups/myServiceGroup",
13-
"identity": "SystemAssigned",
14-
"addRecommendedSignals": "Enabled"
15-
}
16-
},
10+
"properties": {},
1711
"identity": {
1812
"type": "SystemAssigned, UserAssigned",
1913
"userAssignedIdentities": {
@@ -30,12 +24,7 @@
3024
"200": {
3125
"body": {
3226
"properties": {
33-
"provisioningState": "Succeeded",
34-
"discovery": {
35-
"scope": "/providers/Microsoft.Management/serviceGroups/myServiceGroup",
36-
"identity": "SystemAssigned",
37-
"addRecommendedSignals": "Enabled"
38-
}
27+
"provisioningState": "Succeeded"
3928
},
4029
"identity": {
4130
"principalId": "b3f9c5a0-7c5b-4a5a-8b7a-3b5fddc1b0a1",
@@ -71,12 +60,7 @@
7160
},
7261
"body": {
7362
"properties": {
74-
"provisioningState": "Succeeded",
75-
"discovery": {
76-
"scope": "/providers/Microsoft.Management/serviceGroups/myServiceGroup",
77-
"identity": "SystemAssigned",
78-
"addRecommendedSignals": "Enabled"
79-
}
63+
"provisioningState": "Succeeded"
8064
},
8165
"identity": {
8266
"principalId": "b3f9c5a0-7c5b-4a5a-8b7a-3b5fddc1b0a1",

specification/cloudhealth/CloudHealth.Management/examples/2026-01-01-preview/HealthModels_Get.json

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,7 @@
1111
"200": {
1212
"body": {
1313
"properties": {
14-
"provisioningState": "Succeeded",
15-
"discovery": {
16-
"scope": "/providers/Microsoft.Management/serviceGroups/myServiceGroup",
17-
"addRecommendedSignals": "Enabled"
18-
}
14+
"provisioningState": "Succeeded"
1915
},
2016
"identity": {
2117
"principalId": "b3f9c5a0-7c5b-4a5a-8b7a-3b5fddc1b0a1",

specification/cloudhealth/CloudHealth.Management/main.tsp

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ model HealthModelProperties {
6666
@doc("The status of the last operation.")
6767
provisioningState?: HealthModelProvisioningState;
6868

69+
@removed(Versions.v2026_01_01_preview)
6970
@doc("Configure to automatically discover entities from a given scope, such as a Service Group. The discovered entities will be linked to the root entity of the health model.")
7071
discovery?: ModelDiscoverySettings;
7172
}
@@ -79,6 +80,7 @@ union HealthModelProvisioningState {
7980
Deleting: "Deleting",
8081
}
8182

83+
@removed(Versions.v2026_01_01_preview)
8284
@doc("Settings for automatically discovering entities for the health model.")
8385
model ModelDiscoverySettings {
8486
@doc("The scope from which entities should be automatically discovered. For example, the resource id of a Service Group.")
@@ -117,6 +119,9 @@ union SignalKind {
117119
AzureResourceMetric: "AzureResourceMetric",
118120
LogAnalyticsQuery: "LogAnalyticsQuery",
119121
PrometheusMetricsQuery: "PrometheusMetricsQuery",
122+
123+
@added(Versions.v2026_01_01_preview)
124+
ExternalSignal: "External",
120125
}
121126

122127
@doc("SignalDefinition properties")
@@ -468,6 +473,7 @@ model EntityProperties {
468473
@maxLength(260)
469474
displayName?: string;
470475

476+
@removed(Versions.v2026_01_01_preview)
471477
@doc("Entity kind")
472478
@minLength(1)
473479
@maxLength(260)
@@ -633,6 +639,10 @@ model SignalGroups {
633639

634640
@doc("Settings for dependency signals to control how the health state of child entities influences the health state of the parent entity.")
635641
dependencies?: DependenciesSignalGroup;
642+
643+
@doc("List of signals which have been externally submitted for this entity.")
644+
@visibility(Lifecycle.Read)
645+
external?: ExternalSignalGroup;
636646
}
637647

638648
@doc("Properties for dependent entities, i.e. child entities")
@@ -805,6 +815,25 @@ model AzureMonitorWorkspaceSignals {
805815
signals?: PrometheusMetricsSignal[];
806816
}
807817

818+
@added(Versions.v2026_01_01_preview)
819+
@doc("A grouping of externally submitted signals.")
820+
model ExternalSignalGroup {
821+
@doc("Signals assigned to this signal group.")
822+
@identifiers(#["name"])
823+
@visibility(Lifecycle.Read)
824+
signals?: ExternalSignal[];
825+
}
826+
827+
@added(Versions.v2026_01_01_preview)
828+
@doc("An externally submitted signal instance assigned to an entity.")
829+
model ExternalSignal extends SignalInstanceProperties {
830+
@doc("Kind of the signal instance")
831+
signalKind: SignalKind.ExternalSignal;
832+
833+
@doc("Evaluation rules for the external signal as submitted.")
834+
evaluationRules?: EvaluationRule;
835+
}
836+
808837
@doc("Type of impact an entity has on health state propagation")
809838
union EntityImpact {
810839
string,

specification/cloudhealth/resource-manager/Microsoft.CloudHealth/preview/2026-01-01-preview/cloudhealth.json

Lines changed: 44 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -2677,13 +2677,6 @@
26772677
"minLength": 1,
26782678
"maxLength": 260
26792679
},
2680-
"kind": {
2681-
"type": "string",
2682-
"description": "Entity kind",
2683-
"default": "Default",
2684-
"minLength": 1,
2685-
"maxLength": 260
2686-
},
26872680
"canvasPosition": {
26882681
"$ref": "#/definitions/EntityCoordinates",
26892682
"description": "Positioning of the entity on the model canvas"
@@ -2780,6 +2773,39 @@
27802773
"unhealthyRule"
27812774
]
27822775
},
2776+
"ExternalSignal": {
2777+
"type": "object",
2778+
"description": "An externally submitted signal instance assigned to an entity.",
2779+
"properties": {
2780+
"evaluationRules": {
2781+
"$ref": "#/definitions/EvaluationRule",
2782+
"description": "Evaluation rules for the external signal as submitted."
2783+
}
2784+
},
2785+
"allOf": [
2786+
{
2787+
"$ref": "#/definitions/SignalInstanceProperties"
2788+
}
2789+
],
2790+
"x-ms-discriminator-value": "External"
2791+
},
2792+
"ExternalSignalGroup": {
2793+
"type": "object",
2794+
"description": "A grouping of externally submitted signals.",
2795+
"properties": {
2796+
"signals": {
2797+
"type": "array",
2798+
"description": "Signals assigned to this signal group.",
2799+
"items": {
2800+
"$ref": "#/definitions/ExternalSignal"
2801+
},
2802+
"readOnly": true,
2803+
"x-ms-identifiers": [
2804+
"name"
2805+
]
2806+
}
2807+
}
2808+
},
27832809
"HealthModel": {
27842810
"type": "object",
27852811
"description": "A HealthModel resource",
@@ -2828,10 +2854,6 @@
28282854
"$ref": "#/definitions/HealthModelProvisioningState",
28292855
"description": "The status of the last operation.",
28302856
"readOnly": true
2831-
},
2832-
"discovery": {
2833-
"$ref": "#/definitions/ModelDiscoverySettings",
2834-
"description": "Configure to automatically discover entities from a given scope, such as a Service Group. The discovered entities will be linked to the root entity of the health model."
28352857
}
28362858
}
28372859
},
@@ -2890,20 +2912,6 @@
28902912
"additionalProperties": {
28912913
"type": "string"
28922914
}
2893-
},
2894-
"properties": {
2895-
"$ref": "#/definitions/HealthModelUpdateProperties",
2896-
"description": "The resource-specific properties for this resource."
2897-
}
2898-
}
2899-
},
2900-
"HealthModelUpdateProperties": {
2901-
"type": "object",
2902-
"description": "The updatable properties of the HealthModel.",
2903-
"properties": {
2904-
"discovery": {
2905-
"$ref": "#/definitions/ModelDiscoverySettingsUpdate",
2906-
"description": "Configure to automatically discover entities from a given scope, such as a Service Group. The discovered entities will be linked to the root entity of the health model."
29072915
}
29082916
}
29092917
},
@@ -3286,46 +3294,6 @@
32863294
]
32873295
}
32883296
},
3289-
"ModelDiscoverySettings": {
3290-
"type": "object",
3291-
"description": "Settings for automatically discovering entities for the health model.",
3292-
"properties": {
3293-
"scope": {
3294-
"$ref": "#/definitions/string4096",
3295-
"description": "The scope from which entities should be automatically discovered. For example, the resource id of a Service Group."
3296-
},
3297-
"addRecommendedSignals": {
3298-
"$ref": "#/definitions/DiscoveryRuleRecommendedSignalsBehavior",
3299-
"description": "Whether to add all recommended signals to the discovered entities."
3300-
},
3301-
"identity": {
3302-
"$ref": "#/definitions/string4096",
3303-
"description": "Which Managed Identity of the health model to use for discovery. Defaults to SystemAssigned, if not set. Can be set to 'SystemAssigned' or to the resource id of a user-assigned managed identity which is linked to the health model."
3304-
}
3305-
},
3306-
"required": [
3307-
"scope",
3308-
"addRecommendedSignals"
3309-
]
3310-
},
3311-
"ModelDiscoverySettingsUpdate": {
3312-
"type": "object",
3313-
"description": "Settings for automatically discovering entities for the health model.",
3314-
"properties": {
3315-
"scope": {
3316-
"$ref": "#/definitions/string4096",
3317-
"description": "The scope from which entities should be automatically discovered. For example, the resource id of a Service Group."
3318-
},
3319-
"addRecommendedSignals": {
3320-
"$ref": "#/definitions/DiscoveryRuleRecommendedSignalsBehavior",
3321-
"description": "Whether to add all recommended signals to the discovered entities."
3322-
},
3323-
"identity": {
3324-
"$ref": "#/definitions/string4096",
3325-
"description": "Which Managed Identity of the health model to use for discovery. Defaults to SystemAssigned, if not set. Can be set to 'SystemAssigned' or to the resource id of a user-assigned managed identity which is linked to the health model."
3326-
}
3327-
}
3328-
},
33293297
"PrometheusMetricsSignal": {
33303298
"type": "object",
33313299
"description": "A Prometheus Metrics Query signal instance assigned to an entity.",
@@ -3759,6 +3727,11 @@
37593727
"dependencies": {
37603728
"$ref": "#/definitions/DependenciesSignalGroup",
37613729
"description": "Settings for dependency signals to control how the health state of child entities influences the health state of the parent entity."
3730+
},
3731+
"external": {
3732+
"$ref": "#/definitions/ExternalSignalGroup",
3733+
"description": "List of signals which have been externally submitted for this entity.",
3734+
"readOnly": true
37623735
}
37633736
}
37643737
},
@@ -3876,7 +3849,8 @@
38763849
"enum": [
38773850
"AzureResourceMetric",
38783851
"LogAnalyticsQuery",
3879-
"PrometheusMetricsQuery"
3852+
"PrometheusMetricsQuery",
3853+
"External"
38803854
],
38813855
"x-ms-enum": {
38823856
"name": "SignalKind",
@@ -3893,6 +3867,10 @@
38933867
{
38943868
"name": "PrometheusMetricsQuery",
38953869
"value": "PrometheusMetricsQuery"
3870+
},
3871+
{
3872+
"name": "ExternalSignal",
3873+
"value": "External"
38963874
}
38973875
]
38983876
}

specification/cloudhealth/resource-manager/Microsoft.CloudHealth/preview/2026-01-01-preview/examples/Entities_Get.json

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,29 @@
138138
"aggregationType": "Thresholds",
139139
"degradedThreshold": "3",
140140
"unhealthyThreshold": "50%"
141+
},
142+
"external": {
143+
"signals": [
144+
{
145+
"name": "external-signal-1",
146+
"signalKind": "External",
147+
"status": {
148+
"healthState": "Degraded",
149+
"value": 75.5,
150+
"reportedAt": "2025-12-15T12:00:00Z"
151+
},
152+
"evaluationRules": {
153+
"degradedRule": {
154+
"operator": "GreaterThan",
155+
"threshold": 70
156+
},
157+
"unhealthyRule": {
158+
"operator": "GreaterThan",
159+
"threshold": 90
160+
}
161+
}
162+
}
163+
]
141164
}
142165
},
143166
"discoveredBy": "discoveryRule1",

0 commit comments

Comments
 (0)