@@ -1980,13 +1980,13 @@ func ConvertNodeListToNodeNameList(nodeList []v1.Node) []string {
19801980func GetFullVersion () (* version.Version , string , error ) {
19811981 k8sVersion , err := coreops .Instance ().GetVersion ()
19821982 if err != nil {
1983- return nil , "" , fmt .Errorf ("unable to get kubernetes version: %v" , err )
1983+ return nil , "" , fmt .Errorf ("unable to get kubernetes version, Err : %v" , err )
19841984 }
19851985
19861986 kbVerRegex := regexp .MustCompile (`^(v\d+\.\d+\.\d+)(.*)` )
19871987 matches := kbVerRegex .FindStringSubmatch (k8sVersion .GitVersion )
19881988 if len (matches ) < 2 {
1989- return nil , "" , fmt .Errorf ("invalid kubernetes version received: %v " , k8sVersion .GitVersion )
1989+ return nil , "" , fmt .Errorf ("invalid kubernetes version received [%v] " , k8sVersion .GitVersion )
19901990 }
19911991
19921992 ver , err := version .NewVersion (matches [1 ])
@@ -4518,67 +4518,76 @@ func ValidateAlertManager(pxImageList map[string]string, cluster *corev1.Storage
45184518// ValidateAlertManagerEnabled validates alert manager components are enabled/installed as expected
45194519func ValidateAlertManagerEnabled (pxImageList map [string ]string , cluster * corev1.StorageCluster , timeout , interval time.Duration ) error {
45204520 // Validate Alert Manager statefulset, pods and images
4521- logrus .Info ("Validating AlertManager components" )
4521+ logrus .Info ("Validating AlertManager and its components.. " )
45224522 alertManagerSset := & appsv1.StatefulSet {
45234523 ObjectMeta : metav1.ObjectMeta {
45244524 Name : "alertmanager-portworx" ,
45254525 Namespace : cluster .Namespace ,
45264526 },
45274527 }
4528- if err := appops .Instance ().ValidateStatefulSet (alertManagerSset , timeout ); err != nil {
4529- return err
4530- }
45314528
4532- alertManagerSset , err := appops .Instance ().GetStatefulSet (alertManagerSset .Name , alertManagerSset .Namespace )
4529+ K8sVer1_22 , _ := version .NewVersion ("1.22" )
4530+ kubeVersion , _ , err := GetFullVersion ()
45334531 if err != nil {
4534- return err
4532+ return fmt . Errorf ( "failed to get full k8s versions, Err: %v" , err )
45354533 }
45364534
4537- pods , err := appops . Instance (). GetStatefulSetPods ( alertManagerSset )
4538- if err != nil {
4539- return err
4540- }
4535+ t := func () ( interface {}, bool , error ) {
4536+ if err := appops . Instance (). ValidateStatefulSet ( alertManagerSset , timeout ); err != nil {
4537+ return nil , true , err
4538+ }
45414539
4542- if image , ok := pxImageList [ "alertManager" ]; ok {
4543- if err := validateContainerImageInsidePods ( cluster , image , "alertmanager" , & v1. PodList { Items : pods }); err != nil {
4544- return err
4540+ alertManagerSset , err := appops . Instance (). GetStatefulSet ( alertManagerSset . Name , alertManagerSset . Namespace )
4541+ if err != nil {
4542+ return nil , true , err
45454543 }
4546- } else {
4547- return fmt .Errorf ("failed to find image for telemetry" )
4548- }
45494544
4550- K8sVer1_22 , _ := version .NewVersion ("1.22" )
4551- kubeVersion , _ , err := GetFullVersion ()
4552- if err != nil {
4553- return err
4554- }
4545+ pods , err := appops .Instance ().GetStatefulSetPods (alertManagerSset )
4546+ if err != nil {
4547+ return nil , true , err
4548+ }
45554549
4556- // NOTE: Prometheus uses different images for k8s 1.22 and up then for 1.21 and below
4557- var configReloaderImageName string
4558- if kubeVersion != nil && kubeVersion . GreaterThanOrEqual ( K8sVer1_22 ) {
4559- value , ok := pxImageList [ "prometheusConfigReloader" ]
4560- if ! ok {
4561- return fmt .Errorf ("failed to find image for prometheus config reloader " )
4550+ if image , ok := pxImageList [ "alertManager" ]; ok {
4551+ if err := validateContainerImageInsidePods ( cluster , image , "alertmanager" , & v1. PodList { Items : pods }); err != nil {
4552+ return nil , true , err
4553+ }
4554+ } else {
4555+ return nil , false , fmt .Errorf ("failed to find image for alertmanager " )
45624556 }
4563- configReloaderImageName = value
4564- } else {
4565- value , ok := pxImageList ["prometheusConfigMapReload" ]
4566- if ! ok {
4567- return fmt .Errorf ("failed to find image for prometheus configmap reloader" )
4557+
4558+ // NOTE: Prometheus uses different images for k8s 1.22 and up then for 1.21 and below
4559+ var configReloaderImageName string
4560+ if kubeVersion != nil && kubeVersion .GreaterThanOrEqual (K8sVer1_22 ) {
4561+ value , ok := pxImageList ["prometheusConfigReloader" ]
4562+ if ! ok {
4563+ return nil , false , fmt .Errorf ("failed to find image for prometheus config reloader" )
4564+ }
4565+ configReloaderImageName = value
4566+ } else {
4567+ value , ok := pxImageList ["prometheusConfigMapReload" ]
4568+ if ! ok {
4569+ return nil , false , fmt .Errorf ("failed to find image for prometheus configmap reloader" )
4570+ }
4571+ configReloaderImageName = value
45684572 }
4569- configReloaderImageName = value
4570- }
45714573
4572- if err := validateContainerImageInsidePods (cluster , configReloaderImageName , "config-reloader" , & v1.PodList {Items : pods }); err != nil {
4573- return err
4574+ if err := validateContainerImageInsidePods (cluster , configReloaderImageName , "config-reloader" , & v1.PodList {Items : pods }); err != nil {
4575+ return nil , true , err
4576+ }
4577+
4578+ // Verify alert manager services
4579+ if _ , err := coreops .Instance ().GetService ("alertmanager-portworx" , cluster .Namespace ); err != nil {
4580+ return nil , true , fmt .Errorf ("failed to get service alertmanager-portworx" )
4581+ }
4582+
4583+ return nil , false , nil
45744584 }
45754585
4576- // Verify alert manager services
4577- if _ , err := coreops .Instance ().GetService ("alertmanager-portworx" , cluster .Namespace ); err != nil {
4578- return fmt .Errorf ("failed to get service alertmanager-portworx" )
4586+ if _ , err := task .DoRetryWithTimeout (t , timeout , interval ); err != nil {
4587+ return fmt .Errorf ("failed to validate AlertManager and its components, Err: %v" , err )
45794588 }
45804589
4581- logrus .Infof ("Alert manager is enabled and deployed" )
4590+ logrus .Infof ("Successfully validated that AlertManager is enabled and deployed" )
45824591 return nil
45834592}
45844593
0 commit comments