@spinnaker/kayenta 2025.0.6 → 2025.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (468) hide show
  1. package/package.json +4 -4
  2. package/src/kayenta/actions/creators.ts +6 -0
  3. package/src/kayenta/actions/index.ts +2 -0
  4. package/src/kayenta/canary.help.ts +4 -0
  5. package/src/kayenta/domain/MetricClassificationLabel.ts +1 -0
  6. package/src/kayenta/edit/editMetricModal.spec.tsx +129 -0
  7. package/src/kayenta/edit/editMetricModal.tsx +49 -0
  8. package/src/kayenta/metricStore/datadog/index.ts +1 -0
  9. package/src/kayenta/reducers/selectedConfig.ts +17 -0
  10. package/src/kayenta/report/detail/colors.ts +1 -0
  11. package/build/dist/index-70b2ac83.js +0 -2
  12. package/build/dist/index-70b2ac83.js.map +0 -1
  13. package/build/dist/index.d.ts +0 -3
  14. package/build/dist/index.d.ts.map +0 -1
  15. package/build/dist/index.js +0 -2
  16. package/build/dist/index.js.map +0 -1
  17. package/build/dist/kayenta/actions/creators.d.ts +0 -402
  18. package/build/dist/kayenta/actions/creators.d.ts.map +0 -1
  19. package/build/dist/kayenta/actions/index.d.ts +0 -97
  20. package/build/dist/kayenta/actions/index.d.ts.map +0 -1
  21. package/build/dist/kayenta/canary.d.ts +0 -16
  22. package/build/dist/kayenta/canary.d.ts.map +0 -1
  23. package/build/dist/kayenta/canary.dataSource.bridge.d.ts +0 -2
  24. package/build/dist/kayenta/canary.dataSource.bridge.d.ts.map +0 -1
  25. package/build/dist/kayenta/canary.dataSource.stub.d.ts +0 -9
  26. package/build/dist/kayenta/canary.dataSource.stub.d.ts.map +0 -1
  27. package/build/dist/kayenta/canary.help.d.ts +0 -2
  28. package/build/dist/kayenta/canary.help.d.ts.map +0 -1
  29. package/build/dist/kayenta/canary.settings.d.ts +0 -24
  30. package/build/dist/kayenta/canary.settings.d.ts.map +0 -1
  31. package/build/dist/kayenta/components/canaryScore.component.d.ts +0 -2
  32. package/build/dist/kayenta/components/canaryScore.component.d.ts.map +0 -1
  33. package/build/dist/kayenta/components/canaryScore.d.ts +0 -23
  34. package/build/dist/kayenta/components/canaryScore.d.ts.map +0 -1
  35. package/build/dist/kayenta/components/canaryScores.component.d.ts +0 -2
  36. package/build/dist/kayenta/components/canaryScores.component.d.ts.map +0 -1
  37. package/build/dist/kayenta/components/canaryScores.d.ts +0 -21
  38. package/build/dist/kayenta/components/canaryScores.d.ts.map +0 -1
  39. package/build/dist/kayenta/components/loadStates.d.ts +0 -15
  40. package/build/dist/kayenta/components/loadStates.d.ts.map +0 -1
  41. package/build/dist/kayenta/domain/ICanaryConfig.d.ts +0 -56
  42. package/build/dist/kayenta/domain/ICanaryConfig.d.ts.map +0 -1
  43. package/build/dist/kayenta/domain/ICanaryConfigSummary.d.ts +0 -8
  44. package/build/dist/kayenta/domain/ICanaryConfigSummary.d.ts.map +0 -1
  45. package/build/dist/kayenta/domain/ICanaryConfigUpdateResponse.d.ts +0 -4
  46. package/build/dist/kayenta/domain/ICanaryConfigUpdateResponse.d.ts.map +0 -1
  47. package/build/dist/kayenta/domain/ICanaryExecutionStatusResult.d.ts +0 -69
  48. package/build/dist/kayenta/domain/ICanaryExecutionStatusResult.d.ts.map +0 -1
  49. package/build/dist/kayenta/domain/ICanaryJudgeResult.d.ts +0 -48
  50. package/build/dist/kayenta/domain/ICanaryJudgeResult.d.ts.map +0 -1
  51. package/build/dist/kayenta/domain/ICanaryJudgeResultSummary.d.ts +0 -6
  52. package/build/dist/kayenta/domain/ICanaryJudgeResultSummary.d.ts.map +0 -1
  53. package/build/dist/kayenta/domain/ICanaryScoreThresholds.d.ts +0 -5
  54. package/build/dist/kayenta/domain/ICanaryScoreThresholds.d.ts.map +0 -1
  55. package/build/dist/kayenta/domain/IJudge.d.ts +0 -5
  56. package/build/dist/kayenta/domain/IJudge.d.ts.map +0 -1
  57. package/build/dist/kayenta/domain/IKayentaAccount.d.ts +0 -14
  58. package/build/dist/kayenta/domain/IKayentaAccount.d.ts.map +0 -1
  59. package/build/dist/kayenta/domain/IKayentaStageConfig.d.ts +0 -58
  60. package/build/dist/kayenta/domain/IKayentaStageConfig.d.ts.map +0 -1
  61. package/build/dist/kayenta/domain/IMetricSetPair.d.ts +0 -27
  62. package/build/dist/kayenta/domain/IMetricSetPair.d.ts.map +0 -1
  63. package/build/dist/kayenta/domain/IMetricsServiceMetadata.d.ts +0 -3
  64. package/build/dist/kayenta/domain/IMetricsServiceMetadata.d.ts.map +0 -1
  65. package/build/dist/kayenta/domain/ISetupCanaryStage.d.ts +0 -11
  66. package/build/dist/kayenta/domain/ISetupCanaryStage.d.ts.map +0 -1
  67. package/build/dist/kayenta/domain/MetricClassificationLabel.d.ts +0 -8
  68. package/build/dist/kayenta/domain/MetricClassificationLabel.d.ts.map +0 -1
  69. package/build/dist/kayenta/domain/ScoreClassificationLabel.d.ts +0 -8
  70. package/build/dist/kayenta/domain/ScoreClassificationLabel.d.ts.map +0 -1
  71. package/build/dist/kayenta/domain/index.d.ts +0 -16
  72. package/build/dist/kayenta/domain/index.d.ts.map +0 -1
  73. package/build/dist/kayenta/edit/changeMetricGroupModal.d.ts +0 -18
  74. package/build/dist/kayenta/edit/changeMetricGroupModal.d.ts.map +0 -1
  75. package/build/dist/kayenta/edit/configDetail.d.ts +0 -2
  76. package/build/dist/kayenta/edit/configDetail.d.ts.map +0 -1
  77. package/build/dist/kayenta/edit/configDetailActionButtons.d.ts +0 -2
  78. package/build/dist/kayenta/edit/configDetailActionButtons.d.ts.map +0 -1
  79. package/build/dist/kayenta/edit/configDetailHeader.d.ts +0 -11
  80. package/build/dist/kayenta/edit/configDetailHeader.d.ts.map +0 -1
  81. package/build/dist/kayenta/edit/configDetailLoadStates.d.ts +0 -9
  82. package/build/dist/kayenta/edit/configDetailLoadStates.d.ts.map +0 -1
  83. package/build/dist/kayenta/edit/configDetailLoader.d.ts +0 -17
  84. package/build/dist/kayenta/edit/configDetailLoader.d.ts.map +0 -1
  85. package/build/dist/kayenta/edit/configJsonModal.d.ts +0 -28
  86. package/build/dist/kayenta/edit/configJsonModal.d.ts.map +0 -1
  87. package/build/dist/kayenta/edit/configList.d.ts +0 -12
  88. package/build/dist/kayenta/edit/configList.d.ts.map +0 -1
  89. package/build/dist/kayenta/edit/copyConfigButton.d.ts +0 -8
  90. package/build/dist/kayenta/edit/copyConfigButton.d.ts.map +0 -1
  91. package/build/dist/kayenta/edit/createConfigButton.d.ts +0 -8
  92. package/build/dist/kayenta/edit/createConfigButton.d.ts.map +0 -1
  93. package/build/dist/kayenta/edit/deleteModal.d.ts +0 -16
  94. package/build/dist/kayenta/edit/deleteModal.d.ts.map +0 -1
  95. package/build/dist/kayenta/edit/edit.d.ts +0 -2
  96. package/build/dist/kayenta/edit/edit.d.ts.map +0 -1
  97. package/build/dist/kayenta/edit/editMetricEffectSizes.d.ts +0 -16
  98. package/build/dist/kayenta/edit/editMetricEffectSizes.d.ts.map +0 -1
  99. package/build/dist/kayenta/edit/editMetricModal.d.ts +0 -25
  100. package/build/dist/kayenta/edit/editMetricModal.d.ts.map +0 -1
  101. package/build/dist/kayenta/edit/editMetricValidation.d.ts +0 -11
  102. package/build/dist/kayenta/edit/editMetricValidation.d.ts.map +0 -1
  103. package/build/dist/kayenta/edit/editMetricValidation.spec.d.ts +0 -2
  104. package/build/dist/kayenta/edit/editMetricValidation.spec.d.ts.map +0 -1
  105. package/build/dist/kayenta/edit/filterTemplateSelector.d.ts +0 -33
  106. package/build/dist/kayenta/edit/filterTemplateSelector.d.ts.map +0 -1
  107. package/build/dist/kayenta/edit/filterTemplateSelector.spec.d.ts +0 -2
  108. package/build/dist/kayenta/edit/filterTemplateSelector.spec.d.ts.map +0 -1
  109. package/build/dist/kayenta/edit/filterTemplatesValidation.d.ts +0 -29
  110. package/build/dist/kayenta/edit/filterTemplatesValidation.d.ts.map +0 -1
  111. package/build/dist/kayenta/edit/filterTemplatesValidation.spec.d.ts +0 -2
  112. package/build/dist/kayenta/edit/filterTemplatesValidation.spec.d.ts.map +0 -1
  113. package/build/dist/kayenta/edit/footer.d.ts +0 -6
  114. package/build/dist/kayenta/edit/footer.d.ts.map +0 -1
  115. package/build/dist/kayenta/edit/groupName.d.ts +0 -21
  116. package/build/dist/kayenta/edit/groupName.d.ts.map +0 -1
  117. package/build/dist/kayenta/edit/groupTabs.d.ts +0 -17
  118. package/build/dist/kayenta/edit/groupTabs.d.ts.map +0 -1
  119. package/build/dist/kayenta/edit/groupWeight.d.ts +0 -16
  120. package/build/dist/kayenta/edit/groupWeight.d.ts.map +0 -1
  121. package/build/dist/kayenta/edit/groupWeights.d.ts +0 -8
  122. package/build/dist/kayenta/edit/groupWeights.d.ts.map +0 -1
  123. package/build/dist/kayenta/edit/inlineTemplateEditor.d.ts +0 -14
  124. package/build/dist/kayenta/edit/inlineTemplateEditor.d.ts.map +0 -1
  125. package/build/dist/kayenta/edit/inlineTemplateEditor.spec.d.ts +0 -2
  126. package/build/dist/kayenta/edit/inlineTemplateEditor.spec.d.ts.map +0 -1
  127. package/build/dist/kayenta/edit/judgeSelect.d.ts +0 -19
  128. package/build/dist/kayenta/edit/judgeSelect.d.ts.map +0 -1
  129. package/build/dist/kayenta/edit/metricConfigurerDelegator.d.ts +0 -9
  130. package/build/dist/kayenta/edit/metricConfigurerDelegator.d.ts.map +0 -1
  131. package/build/dist/kayenta/edit/metricList.d.ts +0 -23
  132. package/build/dist/kayenta/edit/metricList.d.ts.map +0 -1
  133. package/build/dist/kayenta/edit/metricStoreSelector.d.ts +0 -12
  134. package/build/dist/kayenta/edit/metricStoreSelector.d.ts.map +0 -1
  135. package/build/dist/kayenta/edit/nameAndDescription.d.ts +0 -14
  136. package/build/dist/kayenta/edit/nameAndDescription.d.ts.map +0 -1
  137. package/build/dist/kayenta/edit/openConfigJsonModalButton.d.ts +0 -8
  138. package/build/dist/kayenta/edit/openConfigJsonModalButton.d.ts.map +0 -1
  139. package/build/dist/kayenta/edit/openDeleteModalButton.d.ts +0 -11
  140. package/build/dist/kayenta/edit/openDeleteModalButton.d.ts.map +0 -1
  141. package/build/dist/kayenta/edit/ownedBy.d.ts +0 -7
  142. package/build/dist/kayenta/edit/ownedBy.d.ts.map +0 -1
  143. package/build/dist/kayenta/edit/save.d.ts +0 -2
  144. package/build/dist/kayenta/edit/save.d.ts.map +0 -1
  145. package/build/dist/kayenta/edit/saveConfigButton.d.ts +0 -14
  146. package/build/dist/kayenta/edit/saveConfigButton.d.ts.map +0 -1
  147. package/build/dist/kayenta/edit/saveConfigError.d.ts +0 -13
  148. package/build/dist/kayenta/edit/saveConfigError.d.ts.map +0 -1
  149. package/build/dist/kayenta/edit/scoring.d.ts +0 -8
  150. package/build/dist/kayenta/edit/scoring.d.ts.map +0 -1
  151. package/build/dist/kayenta/edit/selectConfig.d.ts +0 -2
  152. package/build/dist/kayenta/edit/selectConfig.d.ts.map +0 -1
  153. package/build/dist/kayenta/edit/validationErrors.d.ts +0 -8
  154. package/build/dist/kayenta/edit/validationErrors.d.ts.map +0 -1
  155. package/build/dist/kayenta/index.d.ts +0 -7
  156. package/build/dist/kayenta/index.d.ts.map +0 -1
  157. package/build/dist/kayenta/layout/addNewButton.d.ts +0 -8
  158. package/build/dist/kayenta/layout/addNewButton.d.ts.map +0 -1
  159. package/build/dist/kayenta/layout/centeredDetail.d.ts +0 -5
  160. package/build/dist/kayenta/layout/centeredDetail.d.ts.map +0 -1
  161. package/build/dist/kayenta/layout/deleteButton.d.ts +0 -6
  162. package/build/dist/kayenta/layout/deleteButton.d.ts.map +0 -1
  163. package/build/dist/kayenta/layout/disableable.d.ts +0 -37
  164. package/build/dist/kayenta/layout/disableable.d.ts.map +0 -1
  165. package/build/dist/kayenta/layout/formList.d.ts +0 -5
  166. package/build/dist/kayenta/layout/formList.d.ts.map +0 -1
  167. package/build/dist/kayenta/layout/formRow.d.ts +0 -12
  168. package/build/dist/kayenta/layout/formRow.d.ts.map +0 -1
  169. package/build/dist/kayenta/layout/formattedDate.d.ts +0 -5
  170. package/build/dist/kayenta/layout/formattedDate.d.ts.map +0 -1
  171. package/build/dist/kayenta/layout/index.d.ts +0 -3
  172. package/build/dist/kayenta/layout/index.d.ts.map +0 -1
  173. package/build/dist/kayenta/layout/keyValueList.d.ts +0 -29
  174. package/build/dist/kayenta/layout/keyValueList.d.ts.map +0 -1
  175. package/build/dist/kayenta/layout/list.d.ts +0 -21
  176. package/build/dist/kayenta/layout/list.d.ts.map +0 -1
  177. package/build/dist/kayenta/layout/list.spec.d.ts +0 -2
  178. package/build/dist/kayenta/layout/list.spec.d.ts.map +0 -1
  179. package/build/dist/kayenta/layout/listDetail.d.ts +0 -11
  180. package/build/dist/kayenta/layout/listDetail.d.ts.map +0 -1
  181. package/build/dist/kayenta/layout/radioChoice.d.ts +0 -9
  182. package/build/dist/kayenta/layout/radioChoice.d.ts.map +0 -1
  183. package/build/dist/kayenta/layout/styleguide.d.ts +0 -9
  184. package/build/dist/kayenta/layout/styleguide.d.ts.map +0 -1
  185. package/build/dist/kayenta/layout/table/index.d.ts +0 -6
  186. package/build/dist/kayenta/layout/table/index.d.ts.map +0 -1
  187. package/build/dist/kayenta/layout/table/nativeTable.d.ts +0 -14
  188. package/build/dist/kayenta/layout/table/nativeTable.d.ts.map +0 -1
  189. package/build/dist/kayenta/layout/table/nativeTableHeader.d.ts +0 -8
  190. package/build/dist/kayenta/layout/table/nativeTableHeader.d.ts.map +0 -1
  191. package/build/dist/kayenta/layout/table/table.d.ts +0 -14
  192. package/build/dist/kayenta/layout/table/table.d.ts.map +0 -1
  193. package/build/dist/kayenta/layout/table/tableColumn.d.ts +0 -8
  194. package/build/dist/kayenta/layout/table/tableColumn.d.ts.map +0 -1
  195. package/build/dist/kayenta/layout/table/tableHeader.d.ts +0 -7
  196. package/build/dist/kayenta/layout/table/tableHeader.d.ts.map +0 -1
  197. package/build/dist/kayenta/layout/tabs.d.ts +0 -14
  198. package/build/dist/kayenta/layout/tabs.d.ts.map +0 -1
  199. package/build/dist/kayenta/layout/titledSection.d.ts +0 -7
  200. package/build/dist/kayenta/layout/titledSection.d.ts.map +0 -1
  201. package/build/dist/kayenta/layout/titledSubsection.d.ts +0 -8
  202. package/build/dist/kayenta/layout/titledSubsection.d.ts.map +0 -1
  203. package/build/dist/kayenta/manualAnalysis/ManualAnalysisModal.d.ts +0 -47
  204. package/build/dist/kayenta/manualAnalysis/ManualAnalysisModal.d.ts.map +0 -1
  205. package/build/dist/kayenta/metricStore/atlas/atlasMetricConfigurer.d.ts +0 -29
  206. package/build/dist/kayenta/metricStore/atlas/atlasMetricConfigurer.d.ts.map +0 -1
  207. package/build/dist/kayenta/metricStore/atlas/index.d.ts +0 -2
  208. package/build/dist/kayenta/metricStore/atlas/index.d.ts.map +0 -1
  209. package/build/dist/kayenta/metricStore/datadog/domain/IDatadogMetricDescriptor.d.ts +0 -5
  210. package/build/dist/kayenta/metricStore/datadog/domain/IDatadogMetricDescriptor.d.ts.map +0 -1
  211. package/build/dist/kayenta/metricStore/datadog/index.d.ts +0 -2
  212. package/build/dist/kayenta/metricStore/datadog/index.d.ts.map +0 -1
  213. package/build/dist/kayenta/metricStore/datadog/metricConfigurer.d.ts +0 -15
  214. package/build/dist/kayenta/metricStore/datadog/metricConfigurer.d.ts.map +0 -1
  215. package/build/dist/kayenta/metricStore/datadog/metricTypeSelector.d.ts +0 -29
  216. package/build/dist/kayenta/metricStore/datadog/metricTypeSelector.d.ts.map +0 -1
  217. package/build/dist/kayenta/metricStore/datadog/metricTypeSelector.spec.d.ts +0 -2
  218. package/build/dist/kayenta/metricStore/datadog/metricTypeSelector.spec.d.ts.map +0 -1
  219. package/build/dist/kayenta/metricStore/graphite/domain/IGraphiteMetricDescriptor.d.ts +0 -5
  220. package/build/dist/kayenta/metricStore/graphite/domain/IGraphiteMetricDescriptor.d.ts.map +0 -1
  221. package/build/dist/kayenta/metricStore/graphite/index.d.ts +0 -2
  222. package/build/dist/kayenta/metricStore/graphite/index.d.ts.map +0 -1
  223. package/build/dist/kayenta/metricStore/graphite/metricConfigurer.d.ts +0 -13
  224. package/build/dist/kayenta/metricStore/graphite/metricConfigurer.d.ts.map +0 -1
  225. package/build/dist/kayenta/metricStore/graphite/metricTypeSelector.d.ts +0 -29
  226. package/build/dist/kayenta/metricStore/graphite/metricTypeSelector.d.ts.map +0 -1
  227. package/build/dist/kayenta/metricStore/index.d.ts +0 -9
  228. package/build/dist/kayenta/metricStore/index.d.ts.map +0 -1
  229. package/build/dist/kayenta/metricStore/metricStoreConfig.service.d.ts +0 -11
  230. package/build/dist/kayenta/metricStore/metricStoreConfig.service.d.ts.map +0 -1
  231. package/build/dist/kayenta/metricStore/newrelic/domain/INewRelicMetricDescriptor.d.ts +0 -5
  232. package/build/dist/kayenta/metricStore/newrelic/domain/INewRelicMetricDescriptor.d.ts.map +0 -1
  233. package/build/dist/kayenta/metricStore/newrelic/index.d.ts +0 -2
  234. package/build/dist/kayenta/metricStore/newrelic/index.d.ts.map +0 -1
  235. package/build/dist/kayenta/metricStore/newrelic/metricConfigurer.d.ts +0 -13
  236. package/build/dist/kayenta/metricStore/newrelic/metricConfigurer.d.ts.map +0 -1
  237. package/build/dist/kayenta/metricStore/prometheus/domain/IPrometheusCanaryMetricSetQueryConfig.d.ts +0 -13
  238. package/build/dist/kayenta/metricStore/prometheus/domain/IPrometheusCanaryMetricSetQueryConfig.d.ts.map +0 -1
  239. package/build/dist/kayenta/metricStore/prometheus/domain/IPrometheusMetricDescriptor.d.ts +0 -5
  240. package/build/dist/kayenta/metricStore/prometheus/domain/IPrometheusMetricDescriptor.d.ts.map +0 -1
  241. package/build/dist/kayenta/metricStore/prometheus/index.d.ts +0 -2
  242. package/build/dist/kayenta/metricStore/prometheus/index.d.ts.map +0 -1
  243. package/build/dist/kayenta/metricStore/prometheus/metricConfigurer.d.ts +0 -21
  244. package/build/dist/kayenta/metricStore/prometheus/metricConfigurer.d.ts.map +0 -1
  245. package/build/dist/kayenta/metricStore/prometheus/metricTypeSelector.d.ts +0 -31
  246. package/build/dist/kayenta/metricStore/prometheus/metricTypeSelector.d.ts.map +0 -1
  247. package/build/dist/kayenta/metricStore/prometheus/metricTypeSelector.spec.d.ts +0 -2
  248. package/build/dist/kayenta/metricStore/prometheus/metricTypeSelector.spec.d.ts.map +0 -1
  249. package/build/dist/kayenta/metricStore/prometheus/queryTypeSelectors.d.ts +0 -10
  250. package/build/dist/kayenta/metricStore/prometheus/queryTypeSelectors.d.ts.map +0 -1
  251. package/build/dist/kayenta/metricStore/prometheus/queryTypeSelectors.spec.d.ts +0 -2
  252. package/build/dist/kayenta/metricStore/prometheus/queryTypeSelectors.spec.d.ts.map +0 -1
  253. package/build/dist/kayenta/metricStore/signalfx/domain/ISignalFxCanaryMetricSetQueryConfig.d.ts +0 -10
  254. package/build/dist/kayenta/metricStore/signalfx/domain/ISignalFxCanaryMetricSetQueryConfig.d.ts.map +0 -1
  255. package/build/dist/kayenta/metricStore/signalfx/index.d.ts +0 -2
  256. package/build/dist/kayenta/metricStore/signalfx/index.d.ts.map +0 -1
  257. package/build/dist/kayenta/metricStore/signalfx/metricConfigurer.d.ts +0 -28
  258. package/build/dist/kayenta/metricStore/signalfx/metricConfigurer.d.ts.map +0 -1
  259. package/build/dist/kayenta/metricStore/stackdriver/domain/IStackdriverCanaryMetricSetQueryConfig.d.ts +0 -9
  260. package/build/dist/kayenta/metricStore/stackdriver/domain/IStackdriverCanaryMetricSetQueryConfig.d.ts.map +0 -1
  261. package/build/dist/kayenta/metricStore/stackdriver/domain/IStackdriverMetricDescriptor.d.ts +0 -16
  262. package/build/dist/kayenta/metricStore/stackdriver/domain/IStackdriverMetricDescriptor.d.ts.map +0 -1
  263. package/build/dist/kayenta/metricStore/stackdriver/index.d.ts +0 -2
  264. package/build/dist/kayenta/metricStore/stackdriver/index.d.ts.map +0 -1
  265. package/build/dist/kayenta/metricStore/stackdriver/metricConfigurer.d.ts +0 -16
  266. package/build/dist/kayenta/metricStore/stackdriver/metricConfigurer.d.ts.map +0 -1
  267. package/build/dist/kayenta/metricStore/stackdriver/metricTypeSelector.d.ts +0 -35
  268. package/build/dist/kayenta/metricStore/stackdriver/metricTypeSelector.d.ts.map +0 -1
  269. package/build/dist/kayenta/metricStore/stackdriver/metricTypeSelector.spec.d.ts +0 -2
  270. package/build/dist/kayenta/metricStore/stackdriver/metricTypeSelector.spec.d.ts.map +0 -1
  271. package/build/dist/kayenta/middleware/actionInterceptor.d.ts +0 -3
  272. package/build/dist/kayenta/middleware/actionInterceptor.d.ts.map +0 -1
  273. package/build/dist/kayenta/middleware/asyncDispatch.d.ts +0 -3
  274. package/build/dist/kayenta/middleware/asyncDispatch.d.ts.map +0 -1
  275. package/build/dist/kayenta/middleware/epics.d.ts +0 -14
  276. package/build/dist/kayenta/middleware/epics.d.ts.map +0 -1
  277. package/build/dist/kayenta/middleware/index.d.ts +0 -4
  278. package/build/dist/kayenta/middleware/index.d.ts.map +0 -1
  279. package/build/dist/kayenta/navigation/canary.states.d.ts +0 -6
  280. package/build/dist/kayenta/navigation/canary.states.d.ts.map +0 -1
  281. package/build/dist/kayenta/navigation/canary.states.stub.d.ts +0 -4
  282. package/build/dist/kayenta/navigation/canary.states.stub.d.ts.map +0 -1
  283. package/build/dist/kayenta/reducers/app.d.ts +0 -11
  284. package/build/dist/kayenta/reducers/app.d.ts.map +0 -1
  285. package/build/dist/kayenta/reducers/asyncRequest.d.ts +0 -6
  286. package/build/dist/kayenta/reducers/asyncRequest.d.ts.map +0 -1
  287. package/build/dist/kayenta/reducers/data.d.ts +0 -30
  288. package/build/dist/kayenta/reducers/data.d.ts.map +0 -1
  289. package/build/dist/kayenta/reducers/editingTemplate.d.ts +0 -8
  290. package/build/dist/kayenta/reducers/editingTemplate.d.ts.map +0 -1
  291. package/build/dist/kayenta/reducers/group.d.ts +0 -11
  292. package/build/dist/kayenta/reducers/group.d.ts.map +0 -1
  293. package/build/dist/kayenta/reducers/index.d.ts +0 -13
  294. package/build/dist/kayenta/reducers/index.d.ts.map +0 -1
  295. package/build/dist/kayenta/reducers/prometheusMetricConfig.d.ts +0 -6
  296. package/build/dist/kayenta/reducers/prometheusMetricConfig.d.ts.map +0 -1
  297. package/build/dist/kayenta/reducers/prometheusMetricConfig.spec.d.ts +0 -2
  298. package/build/dist/kayenta/reducers/prometheusMetricConfig.spec.d.ts.map +0 -1
  299. package/build/dist/kayenta/reducers/selectedConfig.d.ts +0 -51
  300. package/build/dist/kayenta/reducers/selectedConfig.d.ts.map +0 -1
  301. package/build/dist/kayenta/reducers/selectedConfig.spec.d.ts +0 -2
  302. package/build/dist/kayenta/reducers/selectedConfig.spec.d.ts.map +0 -1
  303. package/build/dist/kayenta/reducers/selectedRun.d.ts +0 -20
  304. package/build/dist/kayenta/reducers/selectedRun.d.ts.map +0 -1
  305. package/build/dist/kayenta/reducers/signalFxMetricConfig.d.ts +0 -22
  306. package/build/dist/kayenta/reducers/signalFxMetricConfig.d.ts.map +0 -1
  307. package/build/dist/kayenta/reducers/stackdriverMetricConfig.d.ts +0 -6
  308. package/build/dist/kayenta/reducers/stackdriverMetricConfig.d.ts.map +0 -1
  309. package/build/dist/kayenta/reducers/stackdriverMetricConfig.spec.d.ts +0 -2
  310. package/build/dist/kayenta/reducers/stackdriverMetricConfig.spec.d.ts.map +0 -1
  311. package/build/dist/kayenta/reducers/templates.spec.d.ts +0 -2
  312. package/build/dist/kayenta/reducers/templates.spec.d.ts.map +0 -1
  313. package/build/dist/kayenta/reducers/validators.d.ts +0 -6
  314. package/build/dist/kayenta/reducers/validators.d.ts.map +0 -1
  315. package/build/dist/kayenta/report/detail/allMetricResultsHeader.d.ts +0 -10
  316. package/build/dist/kayenta/report/detail/allMetricResultsHeader.d.ts.map +0 -1
  317. package/build/dist/kayenta/report/detail/clickableHeader.d.ts +0 -11
  318. package/build/dist/kayenta/report/detail/clickableHeader.d.ts.map +0 -1
  319. package/build/dist/kayenta/report/detail/colors.d.ts +0 -5
  320. package/build/dist/kayenta/report/detail/colors.d.ts.map +0 -1
  321. package/build/dist/kayenta/report/detail/detail.d.ts +0 -10
  322. package/build/dist/kayenta/report/detail/detail.d.ts.map +0 -1
  323. package/build/dist/kayenta/report/detail/detailLoader.d.ts +0 -16
  324. package/build/dist/kayenta/report/detail/detailLoader.d.ts.map +0 -1
  325. package/build/dist/kayenta/report/detail/graph/graph.d.ts +0 -13
  326. package/build/dist/kayenta/report/detail/graph/graph.d.ts.map +0 -1
  327. package/build/dist/kayenta/report/detail/graph/metricSetPairGraph.service.d.ts +0 -19
  328. package/build/dist/kayenta/report/detail/graph/metricSetPairGraph.service.d.ts.map +0 -1
  329. package/build/dist/kayenta/report/detail/graph/semiotic/boxplot.d.ts +0 -19
  330. package/build/dist/kayenta/report/detail/graph/semiotic/boxplot.d.ts.map +0 -1
  331. package/build/dist/kayenta/report/detail/graph/semiotic/chartHeader.d.ts +0 -6
  332. package/build/dist/kayenta/report/detail/graph/semiotic/chartHeader.d.ts.map +0 -1
  333. package/build/dist/kayenta/report/detail/graph/semiotic/chartLegend.d.ts +0 -11
  334. package/build/dist/kayenta/report/detail/graph/semiotic/chartLegend.d.ts.map +0 -1
  335. package/build/dist/kayenta/report/detail/graph/semiotic/circleIcon.d.ts +0 -6
  336. package/build/dist/kayenta/report/detail/graph/semiotic/circleIcon.d.ts.map +0 -1
  337. package/build/dist/kayenta/report/detail/graph/semiotic/config.d.ts +0 -18
  338. package/build/dist/kayenta/report/detail/graph/semiotic/config.d.ts.map +0 -1
  339. package/build/dist/kayenta/report/detail/graph/semiotic/customAxisTickLabel.d.ts +0 -6
  340. package/build/dist/kayenta/report/detail/graph/semiotic/customAxisTickLabel.d.ts.map +0 -1
  341. package/build/dist/kayenta/report/detail/graph/semiotic/differenceArea.d.ts +0 -17
  342. package/build/dist/kayenta/report/detail/graph/semiotic/differenceArea.d.ts.map +0 -1
  343. package/build/dist/kayenta/report/detail/graph/semiotic/histogram.d.ts +0 -19
  344. package/build/dist/kayenta/report/detail/graph/semiotic/histogram.d.ts.map +0 -1
  345. package/build/dist/kayenta/report/detail/graph/semiotic/index.d.ts +0 -2
  346. package/build/dist/kayenta/report/detail/graph/semiotic/index.d.ts.map +0 -1
  347. package/build/dist/kayenta/report/detail/graph/semiotic/noValidDataSign.d.ts +0 -4
  348. package/build/dist/kayenta/report/detail/graph/semiotic/noValidDataSign.d.ts.map +0 -1
  349. package/build/dist/kayenta/report/detail/graph/semiotic/secondaryTSXAxis.d.ts +0 -15
  350. package/build/dist/kayenta/report/detail/graph/semiotic/secondaryTSXAxis.d.ts.map +0 -1
  351. package/build/dist/kayenta/report/detail/graph/semiotic/semiotic.service.d.ts +0 -27
  352. package/build/dist/kayenta/report/detail/graph/semiotic/semiotic.service.d.ts.map +0 -1
  353. package/build/dist/kayenta/report/detail/graph/semiotic/semioticGraph.d.ts +0 -8
  354. package/build/dist/kayenta/report/detail/graph/semiotic/semioticGraph.d.ts.map +0 -1
  355. package/build/dist/kayenta/report/detail/graph/semiotic/timeSeries.d.ts +0 -31
  356. package/build/dist/kayenta/report/detail/graph/semiotic/timeSeries.d.ts.map +0 -1
  357. package/build/dist/kayenta/report/detail/graph/semiotic/tooltip.d.ts +0 -13
  358. package/build/dist/kayenta/report/detail/graph/semiotic/tooltip.d.ts.map +0 -1
  359. package/build/dist/kayenta/report/detail/graph/semiotic/utils.d.ts +0 -6
  360. package/build/dist/kayenta/report/detail/graph/semiotic/utils.d.ts.map +0 -1
  361. package/build/dist/kayenta/report/detail/graphTypeSelector.d.ts +0 -13
  362. package/build/dist/kayenta/report/detail/graphTypeSelector.d.ts.map +0 -1
  363. package/build/dist/kayenta/report/detail/groupScores.d.ts +0 -18
  364. package/build/dist/kayenta/report/detail/groupScores.d.ts.map +0 -1
  365. package/build/dist/kayenta/report/detail/header.d.ts +0 -12
  366. package/build/dist/kayenta/report/detail/header.d.ts.map +0 -1
  367. package/build/dist/kayenta/report/detail/headerArrow.d.ts +0 -7
  368. package/build/dist/kayenta/report/detail/headerArrow.d.ts.map +0 -1
  369. package/build/dist/kayenta/report/detail/loadStates.d.ts +0 -9
  370. package/build/dist/kayenta/report/detail/loadStates.d.ts.map +0 -1
  371. package/build/dist/kayenta/report/detail/metricResultActions.d.ts +0 -12
  372. package/build/dist/kayenta/report/detail/metricResultActions.d.ts.map +0 -1
  373. package/build/dist/kayenta/report/detail/metricResultClassification.d.ts +0 -8
  374. package/build/dist/kayenta/report/detail/metricResultClassification.d.ts.map +0 -1
  375. package/build/dist/kayenta/report/detail/metricResultDetail.d.ts +0 -7
  376. package/build/dist/kayenta/report/detail/metricResultDetail.d.ts.map +0 -1
  377. package/build/dist/kayenta/report/detail/metricResultDetailLayout.d.ts +0 -3
  378. package/build/dist/kayenta/report/detail/metricResultDetailLayout.d.ts.map +0 -1
  379. package/build/dist/kayenta/report/detail/metricResultDeviation.d.ts +0 -7
  380. package/build/dist/kayenta/report/detail/metricResultDeviation.d.ts.map +0 -1
  381. package/build/dist/kayenta/report/detail/metricResultStats.d.ts +0 -15
  382. package/build/dist/kayenta/report/detail/metricResultStats.d.ts.map +0 -1
  383. package/build/dist/kayenta/report/detail/metricResults.d.ts +0 -11
  384. package/build/dist/kayenta/report/detail/metricResults.d.ts.map +0 -1
  385. package/build/dist/kayenta/report/detail/metricResultsClassificationFilters.d.ts +0 -15
  386. package/build/dist/kayenta/report/detail/metricResultsClassificationFilters.d.ts.map +0 -1
  387. package/build/dist/kayenta/report/detail/metricResultsColumns.d.ts +0 -4
  388. package/build/dist/kayenta/report/detail/metricResultsColumns.d.ts.map +0 -1
  389. package/build/dist/kayenta/report/detail/metricResultsList.d.ts +0 -23
  390. package/build/dist/kayenta/report/detail/metricResultsList.d.ts.map +0 -1
  391. package/build/dist/kayenta/report/detail/metricSetPairLoadStates.d.ts +0 -10
  392. package/build/dist/kayenta/report/detail/metricSetPairLoadStates.d.ts.map +0 -1
  393. package/build/dist/kayenta/report/detail/multipleResultsTable.d.ts +0 -23
  394. package/build/dist/kayenta/report/detail/multipleResultsTable.d.ts.map +0 -1
  395. package/build/dist/kayenta/report/detail/reportException.d.ts +0 -10
  396. package/build/dist/kayenta/report/detail/reportException.d.ts.map +0 -1
  397. package/build/dist/kayenta/report/detail/reportExplanation.d.ts +0 -10
  398. package/build/dist/kayenta/report/detail/reportExplanation.d.ts.map +0 -1
  399. package/build/dist/kayenta/report/detail/reportMetadata.d.ts +0 -9
  400. package/build/dist/kayenta/report/detail/reportMetadata.d.ts.map +0 -1
  401. package/build/dist/kayenta/report/detail/reportScores.d.ts +0 -20
  402. package/build/dist/kayenta/report/detail/reportScores.d.ts.map +0 -1
  403. package/build/dist/kayenta/report/detail/score.d.ts +0 -9
  404. package/build/dist/kayenta/report/detail/score.d.ts.map +0 -1
  405. package/build/dist/kayenta/report/detail/sourceLinks.d.ts +0 -9
  406. package/build/dist/kayenta/report/detail/sourceLinks.d.ts.map +0 -1
  407. package/build/dist/kayenta/report/list/configLink.d.ts +0 -14
  408. package/build/dist/kayenta/report/list/configLink.d.ts.map +0 -1
  409. package/build/dist/kayenta/report/list/loadStates.d.ts +0 -9
  410. package/build/dist/kayenta/report/list/loadStates.d.ts.map +0 -1
  411. package/build/dist/kayenta/report/list/pipelineLink.d.ts +0 -7
  412. package/build/dist/kayenta/report/list/pipelineLink.d.ts.map +0 -1
  413. package/build/dist/kayenta/report/list/reportLink.d.ts +0 -16
  414. package/build/dist/kayenta/report/list/reportLink.d.ts.map +0 -1
  415. package/build/dist/kayenta/report/list/table.d.ts +0 -14
  416. package/build/dist/kayenta/report/list/table.d.ts.map +0 -1
  417. package/build/dist/kayenta/report/report.d.ts +0 -3
  418. package/build/dist/kayenta/report/report.d.ts.map +0 -1
  419. package/build/dist/kayenta/selectors/filterTemplatesSelectors.d.ts +0 -21
  420. package/build/dist/kayenta/selectors/filterTemplatesSelectors.d.ts.map +0 -1
  421. package/build/dist/kayenta/selectors/index.d.ts +0 -25
  422. package/build/dist/kayenta/selectors/index.d.ts.map +0 -1
  423. package/build/dist/kayenta/service/canaryConfig.service.d.ts +0 -13
  424. package/build/dist/kayenta/service/canaryConfig.service.d.ts.map +0 -1
  425. package/build/dist/kayenta/service/canaryRun.service.d.ts +0 -7
  426. package/build/dist/kayenta/service/canaryRun.service.d.ts.map +0 -1
  427. package/build/dist/kayenta/service/delegateFactory.d.ts +0 -9
  428. package/build/dist/kayenta/service/delegateFactory.d.ts.map +0 -1
  429. package/build/dist/kayenta/service/metricsServiceMetadata.service.d.ts +0 -3
  430. package/build/dist/kayenta/service/metricsServiceMetadata.service.d.ts.map +0 -1
  431. package/build/dist/kayenta/stages/kayentaStage/AnalysisType.d.ts +0 -13
  432. package/build/dist/kayenta/stages/kayentaStage/AnalysisType.d.ts.map +0 -1
  433. package/build/dist/kayenta/stages/kayentaStage/AnalysisType.spec.d.ts +0 -2
  434. package/build/dist/kayenta/stages/kayentaStage/AnalysisType.spec.d.ts.map +0 -1
  435. package/build/dist/kayenta/stages/kayentaStage/CanaryExecutionLabel.d.ts +0 -6
  436. package/build/dist/kayenta/stages/kayentaStage/CanaryExecutionLabel.d.ts.map +0 -1
  437. package/build/dist/kayenta/stages/kayentaStage/analysisType.component.d.ts +0 -2
  438. package/build/dist/kayenta/stages/kayentaStage/analysisType.component.d.ts.map +0 -1
  439. package/build/dist/kayenta/stages/kayentaStage/canaryRunSummaries.component.d.ts +0 -2
  440. package/build/dist/kayenta/stages/kayentaStage/canaryRunSummaries.component.d.ts.map +0 -1
  441. package/build/dist/kayenta/stages/kayentaStage/canaryRunSummaries.d.ts +0 -13
  442. package/build/dist/kayenta/stages/kayentaStage/canaryRunSummaries.d.ts.map +0 -1
  443. package/build/dist/kayenta/stages/kayentaStage/forAnalysisType.component.d.ts +0 -2
  444. package/build/dist/kayenta/stages/kayentaStage/forAnalysisType.component.d.ts.map +0 -1
  445. package/build/dist/kayenta/stages/kayentaStage/kayentaStage.controller.d.ts +0 -100
  446. package/build/dist/kayenta/stages/kayentaStage/kayentaStage.controller.d.ts.map +0 -1
  447. package/build/dist/kayenta/stages/kayentaStage/kayentaStage.d.ts +0 -29
  448. package/build/dist/kayenta/stages/kayentaStage/kayentaStage.d.ts.map +0 -1
  449. package/build/dist/kayenta/stages/kayentaStage/kayentaStage.transformer.d.ts +0 -12
  450. package/build/dist/kayenta/stages/kayentaStage/kayentaStage.transformer.d.ts.map +0 -1
  451. package/build/dist/kayenta/stages/kayentaStage/kayentaStageConfigSection.component.d.ts +0 -2
  452. package/build/dist/kayenta/stages/kayentaStage/kayentaStageConfigSection.component.d.ts.map +0 -1
  453. package/build/dist/kayenta/stages/kayentaStage/kayentaStageExecutionDetails.controller.d.ts +0 -3
  454. package/build/dist/kayenta/stages/kayentaStage/kayentaStageExecutionDetails.controller.d.ts.map +0 -1
  455. package/build/dist/kayenta/stages/kayentaStage/stageTypes.d.ts +0 -6
  456. package/build/dist/kayenta/stages/kayentaStage/stageTypes.d.ts.map +0 -1
  457. package/build/dist/kayenta/utils/duration.d.ts +0 -12
  458. package/build/dist/kayenta/utils/duration.d.ts.map +0 -1
  459. package/build/dist/kayenta/utils/duration.spec.d.ts +0 -2
  460. package/build/dist/kayenta/utils/duration.spec.d.ts.map +0 -1
  461. package/build/dist/lazy-1f6a42b8.js +0 -2
  462. package/build/dist/lazy-1f6a42b8.js.map +0 -1
  463. package/build/dist/lazy.d.ts +0 -6
  464. package/build/dist/lazy.d.ts.map +0 -1
  465. package/build/dist/semioticGraph-d687462f.js +0 -2
  466. package/build/dist/semioticGraph-d687462f.js.map +0 -1
  467. package/build/dist/stub.d.ts +0 -15
  468. package/build/dist/stub.d.ts.map +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@spinnaker/kayenta",
3
- "version": "2025.0.6",
3
+ "version": "2025.1.1",
4
4
  "license": "Apache-2.0",
5
5
  "repository": {
6
6
  "type": "git",
@@ -9,8 +9,8 @@
9
9
  "module": "build/dist/index.js",
10
10
  "typings": "build/dist/index.d.ts",
11
11
  "engines": {
12
- "node": ">=12.14.1",
13
- "npm": ">=6.13.4",
12
+ "node": ">=20.19.4",
13
+ "npm": ">=10.8.2",
14
14
  "yarn": ">=1.21.1"
15
15
  },
16
16
  "scripts": {
@@ -158,7 +158,7 @@
158
158
  "utf-8-validate": "5.0.3"
159
159
  },
160
160
  "optionalDependencies": {
161
- "fsevents": "1.2.11"
161
+ "fsevents": "2.3.3"
162
162
  },
163
163
  "publishConfig": {
164
164
  "registry": "https://registry.npmjs.org"
@@ -40,9 +40,15 @@ export const updateMetricDirection = createAction<{ id: string; direction: strin
40
40
  export const updateMetricNanStrategy = createAction<{ id: string; strategy: string }>(
41
41
  Actions.UPDATE_METRIC_NAN_STRATEGY,
42
42
  );
43
+ export const updateMetricOutlierStrategy = createAction<{ id: string; strategy: string }>(
44
+ Actions.UPDATE_METRIC_OUTLIER_STRATEGY,
45
+ );
43
46
  export const updateMetricCriticality = createAction<{ id: string; critical: boolean }>(
44
47
  Actions.UPDATE_METRIC_CRITICALITY,
45
48
  );
49
+ export const updateMetricDataRequired = createAction<{ id: string; mustHaveData: boolean }>(
50
+ Actions.UPDATE_METRIC_DATA_REQUIRED,
51
+ );
46
52
  export const updateEffectSize = createAction<{ id: string; value: ICanaryMetricEffectSizeConfig }>(
47
53
  Actions.UPDATE_EFFECT_SIZE,
48
54
  );
@@ -19,7 +19,9 @@ export const EDIT_METRIC_CONFIRM = 'edit_metric_modal_confirm';
19
19
  export const EDIT_METRIC_CANCEL = 'edit_metric_modal_cancel';
20
20
  export const UPDATE_METRIC_DIRECTION = 'update_metric_direction';
21
21
  export const UPDATE_METRIC_NAN_STRATEGY = 'update_metric_nan_strategy';
22
+ export const UPDATE_METRIC_OUTLIER_STRATEGY = 'update_metric_outlier_strategy';
22
23
  export const UPDATE_METRIC_CRITICALITY = 'update_metric_criticality';
24
+ export const UPDATE_METRIC_DATA_REQUIRED = 'update_metric_data_required';
23
25
  export const UPDATE_EFFECT_SIZE = 'update_effect_size';
24
26
  export const UPDATE_METRIC_GROUP = 'update_metric_group';
25
27
  export const UPDATE_METRIC_SCOPE_NAME = 'update_metric_scope_name';
@@ -73,6 +73,10 @@ const helpContents: { [key: string]: string } = {
73
73
  <p>When there is no value for a metric at a given point in time, it can either be ignored or assumed to be zero. The right choice depends on what is being measured. For example, when measuring successful attempts (like health checks) replacing missing values with zero may be appropriate.</p>
74
74
  <p>The default strategy for a given metric will be used if no strategy is selected.</p>
75
75
  `,
76
+ 'canary.config.outlierStrategy': `
77
+ <p>When outliers are present in metric data, you can choose to either remove them or include them in the evaluation. The appropriate strategy depends on the metrics being assessed. For example, when measuring CPU or memory utilization, it might be appropriate to remove outliers that occur during startup times.</p>
78
+ <p>If no strategy is chosen, the default strategy for the metric will be implemented.</p>
79
+ `,
76
80
  'canary.config.filterTemplate': `
77
81
  <p>Templates allow you to compose and parameterize advanced queries against your telemetry provider.</p>
78
82
  <p>Parameterized queries are hydrated by values provided in the canary stage. The <strong>project</strong>, <strong>resourceType</strong>, </string><strong>scope</strong>, and <strong>location</strong> variable bindings are implicitly available.</p>
@@ -3,5 +3,6 @@ export enum MetricClassificationLabel {
3
3
  High = 'High',
4
4
  Low = 'Low',
5
5
  Nodata = 'Nodata',
6
+ NodataFailMetric = 'NodataFailMetric',
6
7
  Error = 'Error',
7
8
  }
@@ -0,0 +1,129 @@
1
+ import { mount } from 'enzyme';
2
+ import { ICanaryMetricConfig } from 'kayenta';
3
+ import * as Creators from 'kayenta/actions/creators';
4
+ import React from 'react';
5
+ import { Provider } from 'react-redux';
6
+ import { createMockStore } from 'redux-test-utils';
7
+
8
+ import EditMetricModal from './editMetricModal';
9
+
10
+ describe('EditMetricModal', () => {
11
+ const mockProps = {
12
+ metric: {
13
+ id: '1',
14
+ name: 'Test Metric',
15
+ groups: ['Test Group'],
16
+ type: 'Test Type',
17
+ analysisConfigurations: {
18
+ canary: {
19
+ direction: 'increase',
20
+ nanStrategy: 'default',
21
+ critical: false,
22
+ },
23
+ },
24
+ },
25
+ groups: ['Group 1', 'Group 2'],
26
+ isTemplateValid: true,
27
+ useInlineTemplateEditor: false,
28
+ disableEdit: false,
29
+ validationErrors: {},
30
+ rename: jest.fn(),
31
+ changeGroup: jest.fn(),
32
+ updateDirection: jest.fn(),
33
+ updateNanStrategy: jest.fn(),
34
+ updateCriticality: jest.fn(),
35
+ updateDataRequired: jest.fn(),
36
+ confirm: jest.fn(),
37
+ cancel: jest.fn(),
38
+ };
39
+
40
+ const mockState = {
41
+ app: {
42
+ disableConfigEdit: false,
43
+ },
44
+ selectedConfig: {
45
+ editingMetric: {
46
+ name: 'Test Metric',
47
+ query: {
48
+ serviceType: 'prometheus',
49
+ },
50
+ groups: ['Group 1'],
51
+ },
52
+ editingTemplate: {},
53
+ group: {
54
+ list: ['Group 1', 'Group 2'],
55
+ },
56
+ metricList: [] as ICanaryMetricConfig[],
57
+ },
58
+ };
59
+
60
+ const store = createMockStore(mockState);
61
+ store.dispatch = jest.fn();
62
+
63
+ const buildComponent = (props: object) =>
64
+ mount(
65
+ <Provider store={store}>
66
+ <EditMetricModal {...mockProps} {...props} />
67
+ </Provider>,
68
+ ).find(EditMetricModal);
69
+
70
+ it('renders without crashing', () => {
71
+ const component = buildComponent({});
72
+ expect(component.exists()).toBe(true);
73
+ });
74
+
75
+ it('calls cancel when the cancel button is clicked', () => {
76
+ const component = buildComponent({});
77
+ const cancelBtn = component
78
+ .find('button')
79
+ .filterWhere((btn) => btn.text().trim() === 'Cancel')
80
+ .at(0);
81
+ cancelBtn.simulate('click');
82
+ expect(store.dispatch).toHaveBeenCalledWith(Creators.editMetricCancel());
83
+ });
84
+
85
+ it('calls confirm when the confirm button is clicked', () => {
86
+ const component = buildComponent({});
87
+ const confirmBtn = component
88
+ .find('button')
89
+ .filterWhere((btn) => btn.text().trim() === 'OK')
90
+ .at(0);
91
+ confirmBtn.simulate('click');
92
+ expect(store.dispatch).toHaveBeenCalledWith(Creators.editMetricConfirm());
93
+ });
94
+
95
+ it('calls updateDirection when a direction radio button is clicked', () => {
96
+ const component = buildComponent({});
97
+ const changeDirectionEvent = { target: { value: 'increase', dataset: { id: '1' } } };
98
+ component.find('input[name="direction"][value="increase"]').simulate('change', changeDirectionEvent);
99
+ expect(store.dispatch).toHaveBeenCalledWith(Creators.updateMetricDirection({ id: '1', direction: 'increase' }));
100
+ });
101
+
102
+ it('calls updateNanStrategy when the nan strategy is changed', () => {
103
+ const component = buildComponent({});
104
+ const changeNanStrategyEvent = { target: { value: 'replace', dataset: { id: '1' } } };
105
+ component.find('input[name="nanStrategy"][value="replace"]').simulate('change', changeNanStrategyEvent);
106
+ expect(store.dispatch).toHaveBeenCalledWith(Creators.updateMetricNanStrategy({ id: '1', strategy: 'replace' }));
107
+ });
108
+
109
+ it('calls updateOutlierStrategy when the outlier strategy is changed', () => {
110
+ const component = buildComponent({});
111
+ const changeOutlierStrategyEvent = { target: { value: 'remove', dataset: { id: '1' } } };
112
+ component.find('input[name="outlierStrategy"][value="remove"]').simulate('change', changeOutlierStrategyEvent);
113
+ expect(store.dispatch).toHaveBeenCalledWith(Creators.updateMetricOutlierStrategy({ id: '1', strategy: 'remove' }));
114
+ });
115
+
116
+ it('calls updateCriticality when the criticality checkbox is changed', () => {
117
+ const component = buildComponent({});
118
+ const changeCriticalityEvent = { target: { checked: true, dataset: { id: '1' } } };
119
+ component.find('input[type="checkbox"][name="criticality"]').simulate('change', changeCriticalityEvent);
120
+ expect(store.dispatch).toHaveBeenCalledWith(Creators.updateMetricCriticality({ id: '1', critical: true }));
121
+ });
122
+
123
+ it('calls updateDataRequired when the data required checkbox is changed', () => {
124
+ const component = buildComponent({ disableEdit: true });
125
+ const changeDataRequiredEvent = { target: { checked: true, dataset: { id: '1' } } };
126
+ component.find('input[type="checkbox"][name="dataRequired"]').simulate('change', changeDataRequiredEvent);
127
+ expect(store.dispatch).toHaveBeenCalledWith(Creators.updateMetricDataRequired({ id: '1', mustHaveData: true }));
128
+ });
129
+ });
@@ -30,7 +30,9 @@ interface IEditMetricModalDispatchProps {
30
30
  changeGroup: (event: any) => void;
31
31
  updateDirection: (event: any) => void;
32
32
  updateNanStrategy: (event: any) => void;
33
+ updateOutlierStrategy: (event: any) => void;
33
34
  updateCriticality: (event: any) => void;
35
+ updateDataRequired: (event: any) => void;
34
36
  confirm: () => void;
35
37
  cancel: () => void;
36
38
  }
@@ -57,7 +59,9 @@ function EditMetricModal({
57
59
  isTemplateValid,
58
60
  updateDirection,
59
61
  updateNanStrategy,
62
+ updateOutlierStrategy,
60
63
  updateCriticality,
64
+ updateDataRequired,
61
65
  useInlineTemplateEditor,
62
66
  disableEdit,
63
67
  validationErrors,
@@ -68,7 +72,9 @@ function EditMetricModal({
68
72
 
69
73
  const direction = metric.analysisConfigurations?.canary?.direction ?? 'either';
70
74
  const nanStrategy = metric.analysisConfigurations?.canary?.nanStrategy ?? 'default';
75
+ const outlierStrategy = metric.analysisConfigurations?.canary?.outliers?.strategy ?? 'default';
71
76
  const critical = metric.analysisConfigurations?.canary?.critical ?? false;
77
+ const dataRequired = metric.analysisConfigurations?.canary?.mustHaveData ?? false;
72
78
  const isConfirmDisabled =
73
79
  !isTemplateValid ||
74
80
  disableEdit ||
@@ -147,6 +153,7 @@ function EditMetricModal({
147
153
  <label>
148
154
  <DisableableInput
149
155
  type="checkbox"
156
+ name="criticality"
150
157
  checked={critical}
151
158
  onChange={updateCriticality}
152
159
  disabled={CanarySettings.disableConfigEdit}
@@ -155,6 +162,19 @@ function EditMetricModal({
155
162
  Fail the canary if this metric fails
156
163
  </label>
157
164
  </FormRow>
165
+ <FormRow label="Data Required" checkbox={true}>
166
+ <label>
167
+ <DisableableInput
168
+ type="checkbox"
169
+ name="dataRequired"
170
+ checked={dataRequired}
171
+ onChange={updateDataRequired}
172
+ disabled={CanarySettings.disableConfigEdit}
173
+ disabledStateKeys={[DISABLE_EDIT_CONFIG]}
174
+ />
175
+ Fail the metric if data is missing
176
+ </label>
177
+ </FormRow>
158
178
  <FormRow label="NaN Strategy" helpId="canary.config.nanStrategy">
159
179
  <RadioChoice
160
180
  value="default"
@@ -178,6 +198,29 @@ function EditMetricModal({
178
198
  action={updateNanStrategy}
179
199
  />
180
200
  </FormRow>
201
+ <FormRow label="Outlier Strategy" helpId="canary.config.outlierStrategy">
202
+ <RadioChoice
203
+ value="default"
204
+ label="Default (keep)"
205
+ name="outlierStrategy"
206
+ current={outlierStrategy}
207
+ action={updateOutlierStrategy}
208
+ />
209
+ <RadioChoice
210
+ value="remove"
211
+ label="Remove"
212
+ name="outlierStrategy"
213
+ current={outlierStrategy}
214
+ action={updateOutlierStrategy}
215
+ />
216
+ <RadioChoice
217
+ value="keep"
218
+ label="Keep"
219
+ name="outlierStrategy"
220
+ current={outlierStrategy}
221
+ action={updateOutlierStrategy}
222
+ />
223
+ </FormRow>
181
224
  <EditMetricEffectSizes />
182
225
  <MetricConfigurerDelegator />
183
226
  {templatesEnabled && !useInlineTemplateEditor && <FilterTemplateSelector />}
@@ -224,9 +267,15 @@ function mapDispatchToProps(dispatch: any): IEditMetricModalDispatchProps {
224
267
  updateNanStrategy: ({ target }: React.ChangeEvent<HTMLInputElement>) => {
225
268
  dispatch(Creators.updateMetricNanStrategy({ id: target.dataset.id, strategy: target.value }));
226
269
  },
270
+ updateOutlierStrategy: ({ target }: React.ChangeEvent<HTMLInputElement>) => {
271
+ dispatch(Creators.updateMetricOutlierStrategy({ id: target.dataset.id, strategy: target.value }));
272
+ },
227
273
  updateCriticality: ({ target }: React.ChangeEvent<HTMLInputElement>) => {
228
274
  dispatch(Creators.updateMetricCriticality({ id: target.dataset.id, critical: Boolean(target.checked) }));
229
275
  },
276
+ updateDataRequired: ({ target }: React.ChangeEvent<HTMLInputElement>) => {
277
+ dispatch(Creators.updateMetricDataRequired({ id: target.dataset.id, mustHaveData: Boolean(target.checked) }));
278
+ },
230
279
  };
231
280
  }
232
281
 
@@ -5,4 +5,5 @@ metricStoreConfigStore.register({
5
5
  name: 'datadog',
6
6
  metricConfigurer: DatadogMetricConfigurer,
7
7
  queryFinder,
8
+ useTemplates: true,
8
9
  });
@@ -148,6 +148,15 @@ const editingMetric = handleActions(
148
148
 
149
149
  return newState;
150
150
  },
151
+ [Actions.UPDATE_METRIC_OUTLIER_STRATEGY]: (state: ICanaryMetricConfig, { payload }: Action & any) => {
152
+ const newState = cloneDeep(state);
153
+
154
+ payload.strategy === 'default'
155
+ ? unset(newState, ['analysisConfigurations', 'canary', 'outliers', 'strategy'])
156
+ : set(newState, ['analysisConfigurations', 'canary', 'outliers', 'strategy'], payload.strategy);
157
+
158
+ return newState;
159
+ },
151
160
  [Actions.UPDATE_METRIC_CRITICALITY]: (state: ICanaryMetricConfig, { payload }: Action & any) => {
152
161
  const newState = cloneDeep(state);
153
162
 
@@ -157,6 +166,14 @@ const editingMetric = handleActions(
157
166
 
158
167
  return newState;
159
168
  },
169
+ [Actions.UPDATE_METRIC_DATA_REQUIRED]: (state: ICanaryMetricConfig, { payload }: Action & any) => {
170
+ const newState = cloneDeep(state);
171
+ payload.mustHaveData
172
+ ? set(newState, ['analysisConfigurations', 'canary', 'mustHaveData'], payload.mustHaveData)
173
+ : unset(newState, ['analysisConfigurations', 'canary', 'mustHaveData']);
174
+
175
+ return newState;
176
+ },
160
177
  [Actions.UPDATE_EFFECT_SIZE]: (state: ICanaryMetricConfig, { payload }: Action & any) => {
161
178
  const newState = cloneDeep(state);
162
179
  Object.keys(payload.value).length
@@ -18,6 +18,7 @@ export const mapMetricClassificationToColor = (classification: MetricClassificat
18
18
  [MetricClassificationLabel.Low]: RED,
19
19
  [MetricClassificationLabel.Error]: YELLOW,
20
20
  [MetricClassificationLabel.Nodata]: GREY,
21
+ [MetricClassificationLabel.NodataFailMetric]: RED,
21
22
  [MetricClassificationLabel.Pass]: GREEN,
22
23
  }[classification]);
23
24