11import * as React from "react" ;
22import { RolloutWidget } from "argo-rollouts/ui/src/app/components/rollout/rollout" ;
33import { ObjectMeta , TypeMeta } from "argo-rollouts/ui/src/models/kubernetes" ;
4- import { RolloutRolloutInfo } from "argo-rollouts/ui/src/models/rollout/generated" ;
4+ import { RolloutRolloutInfo , RolloutReplicaSetInfo , RolloutAnalysisRunInfo } from "argo-rollouts/ui/src/models/rollout/generated" ;
55
66export type State = TypeMeta & { metadata : ObjectMeta } & {
77 status : any ;
@@ -15,6 +15,7 @@ const parseInfoFromResourceNode = (
1515 const ro : RolloutRolloutInfo = { } ;
1616 const { spec, status, metadata } = resource ;
1717 ro . objectMeta = metadata as any ;
18+ ro . analysisRuns = parseAnalysisRuns ( tree , resource ) ;
1819 ro . replicaSets = parseReplicaSets ( tree , resource ) ;
1920
2021 if ( spec . strategy . canary ) {
@@ -95,8 +96,8 @@ const parseCurrentSetWeight = (resource: State, currentStepIndex: number): strin
9596 return "0" ;
9697} ;
9798
98- const parseRevision = ( rs : any ) => {
99- for ( const item of rs . info || [ ] ) {
99+ const parseRevision = ( node : any ) => {
100+ for ( const item of node . info || [ ] ) {
100101 if ( item . name === "Revision" ) {
101102 const parts = item . value . split ( ":" ) || [ ] ;
102103 return parts . length == 2 ? parts [ 1 ] : "0" ;
@@ -112,7 +113,36 @@ const parsePodStatus = (pod: any) => {
112113 }
113114} ;
114115
115- const parseReplicaSets = ( tree : any , rollout : any ) => {
116+ const parseAnalysisRuns = ( tree : any , rollout : any ) : RolloutAnalysisRunInfo [ ] => tree . nodes
117+ . filter ( node => ( node . kind === 'AnalysisRun' ) && ( node . parentRefs . some ( ref => ref . name === rollout . metadata . name ) ) )
118+ . map ( node => ( {
119+ objectMeta : {
120+ creationTimestamp : {
121+ seconds : node . createdAt ,
122+ } ,
123+ name : node . name ,
124+ namespace : node . namespace ,
125+ resourceVersion : node . version ,
126+ uid : node . uid ,
127+ } ,
128+ revision : parseRevision ( node ) ,
129+ status : parseAnalysisRunStatus ( node . health . status ) ,
130+ } ) as RolloutAnalysisRunInfo ) ;
131+
132+ const parseAnalysisRunStatus = ( status : string ) : string => {
133+ switch ( status ) {
134+ case 'Healthy' :
135+ return 'Successful' ;
136+ case 'Progressing' :
137+ return 'Running' ;
138+ case 'Degraded' :
139+ return 'Failure' ;
140+ default :
141+ return 'Error' ;
142+ }
143+ }
144+
145+ const parseReplicaSets = ( tree : any , rollout : any ) : RolloutReplicaSetInfo [ ] => {
116146 const allReplicaSets = [ ] ;
117147 const allPods = [ ] ;
118148 for ( const node of tree . nodes ) {
0 commit comments