in pkg/appmgmt/general/metadata.go [62:132]
func getAppMetadata(pod *v1.Pod, recovery bool) (interfaces.ApplicationMetadata, bool) {
appID := utils.GetApplicationIDFromPod(pod)
if appID == "" {
log.Log(log.ShimAppMgmtGeneral).Debug("unable to get application for pod",
zap.String("namespace", pod.Namespace),
zap.String("name", pod.Name))
return interfaces.ApplicationMetadata{}, false
}
// tags will at least have namespace info
// labels or annotations from the pod can be added when needed
// user info is retrieved via service account
tags := map[string]string{}
if pod.Namespace == "" {
tags[constants.AppTagNamespace] = constants.DefaultAppNamespace
} else {
tags[constants.AppTagNamespace] = pod.Namespace
}
if isStateAwareDisabled(pod) {
tags[siCommon.AppTagStateAwareDisable] = "true"
}
// attach imagePullSecrets if present
secrets := pod.Spec.ImagePullSecrets
if len(secrets) > 0 {
arr := make([]string, len(secrets))
for i, secret := range secrets {
arr[i] = secret.Name
}
tags[constants.AppTagImagePullSecrets] = strings.Join(arr, ",")
}
// get the user from Pod Labels
user, groups := utils.GetUserFromPod(pod)
var taskGroups []interfaces.TaskGroup = nil
var err error = nil
if !conf.GetSchedulerConf().DisableGangScheduling {
taskGroups, err = utils.GetTaskGroupsFromAnnotation(pod)
if err != nil {
log.Log(log.ShimAppMgmtGeneral).Error("unable to get taskGroups for pod",
zap.String("namespace", pod.Namespace),
zap.String("name", pod.Name),
zap.Error(err))
events.GetRecorder().Eventf(pod, nil, v1.EventTypeWarning, "TaskGroupsError", "TaskGroupsError",
"unable to get taskGroups for pod, reason: %s", err.Error())
}
tags[constants.AnnotationTaskGroups] = pod.Annotations[constants.AnnotationTaskGroups]
}
ownerReferences := getOwnerReference(pod)
schedulingPolicyParams := utils.GetSchedulingPolicyParam(pod)
tags[constants.AnnotationSchedulingPolicyParam] = pod.Annotations[constants.AnnotationSchedulingPolicyParam]
var creationTime int64
if recovery {
creationTime = pod.CreationTimestamp.Unix()
}
return interfaces.ApplicationMetadata{
ApplicationID: appID,
QueueName: utils.GetQueueNameFromPod(pod),
User: user,
Groups: groups,
Tags: tags,
TaskGroups: taskGroups,
OwnerReferences: ownerReferences,
SchedulingPolicyParameters: schedulingPolicyParams,
CreationTime: creationTime,
}, true
}