def Update_nodeGroup()

in eksupdate/src/self_managed.py [0:0]


def Update_nodeGroup(Clustername,Nodegroup,Version,regionName):
    client = boto3.client('eks',region_name=regionName)
    start=time.time()
    ''' updating Node group '''

    ami_type,lt_id,old_version,latest_ami=lt_id_func(Clustername,Nodegroup,Version,regionName)
    if ami_type=="CUSTOM":
        update_current_launch_template_ami(lt_id,latest_ami,regionName)



    while True:
        try:
            if status_of_cluster(Clustername,regionName)[0]=="ACTIVE" and Desc_node_groups(Clustername,Nodegroup,regionName)[0]=="ACTIVE" and Desc_node_groups(Clustername,Nodegroup,regionName)[1]!=Version:
                if ami_type=="CUSTOM":
                    client.update_nodegroup_version(
                        clusterName=Clustername,
            nodegroupName=Nodegroup,
            launchTemplate={
       
        'version':"$Latest",
        'id': lt_id
              },

           
                    )
                else:
                    client.update_nodegroup_version(
                        clusterName=Clustername,
            nodegroupName=Nodegroup,
            version=Version,
                    )
                started = time.time()
                print("Updating Node Group ",Nodegroup)
                time.sleep(20)
            if Desc_node_groups(Clustername,Nodegroup,regionName)[0]=="UPDATING":
                end=time.time()
                hours, rem = divmod(end-start, 3600)
                minutes, seconds = divmod(rem, 60)
                print("The {Ng}".format(Ng=Nodegroup)+" NodeGroup is Still Updating ","{:0>2}:{:0>2}:{:05.2f}".format(int(hours),int(minutes),seconds))
                time.sleep(20)
            if Desc_node_groups(Clustername,Nodegroup,regionName)[0]=="DEGRADED":
                raise Exception("NodeGroup has not started due to unavailability ") 
            if Desc_node_groups(Clustername,Nodegroup,regionName)[0]=="ACTIVE" and Desc_node_groups(Clustername,Nodegroup,regionName)[1]==Version:
                  end=time.time()
                  hours, rem = divmod(end-start, 3600)
                  minutes, seconds = divmod(rem, 60)
                  print("The  Time Taken For the NodeGroup Upgrade "+str(Nodegroup),"{:0>2}:{:0>2}:{:05.2f}".format(int(hours),int(minutes),seconds))
                
                  logs_pusher(regionName=regionName,cluster_name=Clustername,msg="The Taken For the  NodeGroup Upgrade "+"{:0>2}:{:0>2}:{:05.2f}".format(int(hours),int(minutes),seconds))
                  return True
                
        except Exception as e:
            print(e)
            raise Exception(e)