logs.Info("Deployment not found. Creating a new one.")
err=errors.Wrapf(patch.DefaultAnnotator.SetLastAppliedAnnotation(deployment),"set last applied annotation for deployment %s",deployment.Name)
// Create a new instance of the object
obj,err:=r.Client.Scheme().New(gvk)
iferr!=nil{
logs.Error(err,"Failed to set last applied annotation.")
r.Recorder.Eventf(opt.dynamoNimDeployment,corev1.EventTypeWarning,"SetLastAppliedAnnotation","Failed to set last applied annotation for Deployment %s: %s",deploymentNamespacedName,err)
logs.Error(err,"Failed to create a new object for GVK")
return
}
r.Recorder.Eventf(opt.dynamoNimDeployment,corev1.EventTypeNormal,"CreateDeployment","Creating a new Deployment %s",deploymentNamespacedName)
err=r.Create(ctx,deployment)
iferr!=nil{
logs.Error(err,"Failed to create Deployment.")
r.Recorder.Eventf(opt.dynamoNimDeployment,corev1.EventTypeWarning,"CreateDeployment","Failed to create Deployment %s: %s",deploymentNamespacedName,err)
// Type assertion to ensure the object implements client.Object
r.Recorder.Eventf(opt.dynamoNimDeployment,corev1.EventTypeWarning,"CalculatePatch","Failed to calculate patch for Deployment %s: %s",deploymentNamespacedName,err)
r.Recorder.Eventf(opt.dynamoNimDeployment,corev1.EventTypeWarning,fmt.Sprintf("Get%s",resourceType),"Failed to get %s %s: %s",resourceType,resourceNamespace,err)
logs.Error(err,"Failed to get HPA.")
return
}
err=nil
if!patchResult.IsEmpty(){
logs.Info("Deployment spec is different. Updating Deployment.")
ifoldResourceIsNotFound{
iftoDelete{
logs.Info("Resource not found. Nothing to do.")
return
}
logs.Info("Resource not found. Creating a new one.")
err=errors.Wrapf(patch.DefaultAnnotator.SetLastAppliedAnnotation(deployment),"set last applied annotation for deployment %s",deployment.Name)
err=errors.Wrapf(patch.DefaultAnnotator.SetLastAppliedAnnotation(resource),"set last applied annotation for resource %s",resourceName)
iferr!=nil{
logs.Error(err,"Failed to set last applied annotation.")
r.Recorder.Eventf(opt.dynamoNimDeployment,corev1.EventTypeWarning,"SetLastAppliedAnnotation","Failed to set last applied annotation for Deployment %s: %s",deploymentNamespacedName,err)
r.Recorder.Eventf(opt.dynamoNimDeployment,corev1.EventTypeWarning,"SetLastAppliedAnnotation","Failed to set last applied annotation for %s %s: %s",resourceType,resourceNamespace,err)
r.Recorder.Eventf(opt.dynamoNimDeployment,corev1.EventTypeNormal,fmt.Sprintf("Create%s",resourceType),"Creating a new %s %s",resourceType,resourceNamespace)
err=r.Create(ctx,resource)
iferr!=nil{
logs.Error(err,"Failed to update Deployment.")
r.Recorder.Eventf(opt.dynamoNimDeployment,corev1.EventTypeWarning,"UpdateDeployment","Failed to update Deployment %s: %s",deploymentNamespacedName,err)
logs.Error(err,"Failed to create Resource.")
r.Recorder.Eventf(opt.dynamoNimDeployment,corev1.EventTypeWarning,fmt.Sprintf("Create%s",resourceType),"Failed to create %s %s: %s",resourceType,resourceNamespace,err)
r.Recorder.Eventf(dynamoNimDeployment,corev1.EventTypeWarning,"GetHPA","Failed to get HPA %s: %s",hpaNamespacedName,err)
logs.Error(err,"Failed to get HPA.")
return
}
ifoldHPAIsNotFound{
logs.Info("HPA not found. Creating a new one.")
err=errors.Wrapf(patch.DefaultAnnotator.SetLastAppliedAnnotation(hpa),"set last applied annotation for hpa %s",hpa.Name)
iferr!=nil{
logs.Error(err,"Failed to set last applied annotation.")
r.Recorder.Eventf(dynamoNimDeployment,corev1.EventTypeWarning,"SetLastAppliedAnnotation","Failed to set last applied annotation for HPA %s: %s",hpaNamespacedName,err)
return
}
r.Recorder.Eventf(dynamoNimDeployment,corev1.EventTypeNormal,"CreateHPA","Creating a new HPA %s",hpaNamespacedName)
err=r.Create(ctx,hpa)
iferr!=nil{
logs.Error(err,"Failed to create HPA.")
r.Recorder.Eventf(dynamoNimDeployment,corev1.EventTypeWarning,"CreateHPA","Failed to create HPA %s: %s",hpaNamespacedName,err)
r.Recorder.Eventf(dynamoNimDeployment,corev1.EventTypeWarning,"CalculatePatch","Failed to calculate patch for HPA %s: %s",hpaNamespacedName,err)
r.Recorder.Eventf(opt.dynamoNimDeployment,corev1.EventTypeWarning,fmt.Sprintf("CalculatePatch%s",resourceType),"Failed to calculate patch for %s %s: %s",resourceType,resourceNamespace,err)
return
}
if!patchResult.IsEmpty(){
logs.Info(fmt.Sprintf("HPA spec is different. Updating HPA. The patch result is: %s",patchResult.String()))
logs.Info(fmt.Sprintf("%s spec is different. Updating %s. The patch result is: %s",resourceType,resourceType,patchResult.String()))
err=errors.Wrapf(patch.DefaultAnnotator.SetLastAppliedAnnotation(hpa),"set last applied annotation for hpa %s",hpa.Name)
err=errors.Wrapf(patch.DefaultAnnotator.SetLastAppliedAnnotation(resource),"set last applied annotation for resource %s",resourceName)
iferr!=nil{
logs.Error(err,"Failed to set last applied annotation.")
r.Recorder.Eventf(dynamoNimDeployment,corev1.EventTypeWarning,"SetLastAppliedAnnotation","Failed to set last applied annotation for HPA %s: %s",hpaNamespacedName,err)
r.Recorder.Eventf(opt.dynamoNimDeployment,corev1.EventTypeWarning,fmt.Sprintf("SetLastAppliedAnnotation%s",resourceType),"Failed to set last applied annotation for %s %s: %s",resourceType,resourceNamespace,err)
r.Recorder.Eventf(opt.dynamoNimDeployment,corev1.EventTypeWarning,"GetService","Failed to get Service %s: %s",serviceNamespacedName,err)
logs.Error(err,"Failed to get Service.")
return
}
ifoldServiceIsNotFound{
logs.Info("Service not found. Creating a new one.")
err=errors.Wrapf(patch.DefaultAnnotator.SetLastAppliedAnnotation(service),"set last applied annotation for service %s",service.Name)
iferr!=nil{
logs.Error(err,"Failed to set last applied annotation.")
r.Recorder.Eventf(opt.dynamoNimDeployment,corev1.EventTypeWarning,"SetLastAppliedAnnotation","Failed to set last applied annotation for Service %s: %s",serviceNamespacedName,err)
return
}
r.Recorder.Eventf(opt.dynamoNimDeployment,corev1.EventTypeNormal,"CreateService","Creating a new Service %s",serviceNamespacedName)
err=r.Create(ctx,service)
},r.generateService)
iferr!=nil{
logs.Error(err,"Failed to create Service.")
r.Recorder.Eventf(opt.dynamoNimDeployment,corev1.EventTypeWarning,"CreateService","Failed to create Service %s: %s",serviceNamespacedName,err)
return
}
logs.Info("Service created.")
r.Recorder.Eventf(opt.dynamoNimDeployment,corev1.EventTypeNormal,"CreateService","Created Service %s",serviceNamespacedName)
r.Recorder.Eventf(opt.dynamoNimDeployment,corev1.EventTypeWarning,"CalculatePatch","Failed to calculate patch for Service %s: %s",serviceNamespacedName,err)
return
}
if!patchResult.IsEmpty(){
logs.Info("Service spec is different. Updating Service.")
err=errors.Wrapf(patch.DefaultAnnotator.SetLastAppliedAnnotation(service),"set last applied annotation for service %s",service.Name)
iferr!=nil{
logs.Error(err,"Failed to set last applied annotation.")
r.Recorder.Eventf(opt.dynamoNimDeployment,corev1.EventTypeWarning,"SetLastAppliedAnnotation","Failed to set last applied annotation for Service %s: %s",serviceNamespacedName,err)
return
}
r.Recorder.Eventf(opt.dynamoNimDeployment,corev1.EventTypeNormal,"UpdateService","Updating Service %s",serviceNamespacedName)
oldService.Annotations=service.Annotations
oldService.Labels=service.Labels
oldService.Spec=service.Spec
err=r.Update(ctx,oldService)
iferr!=nil{
logs.Error(err,"Failed to update Service.")
r.Recorder.Eventf(opt.dynamoNimDeployment,corev1.EventTypeWarning,"UpdateService","Failed to update Service %s: %s",serviceNamespacedName,err)
return
}
logs.Info("Service updated.")
r.Recorder.Eventf(opt.dynamoNimDeployment,corev1.EventTypeNormal,"UpdateService","Updated Service %s",serviceNamespacedName)