2
2
3
3
import java .util .HashMap ;
4
4
import java .util .Map ;
5
+ import java .util .logging .Logger ;
5
6
6
7
import org .eclipse .theia .cloud .common .k8s .resource .appdefinition .AppDefinitionSpec ;
7
8
import org .eclipse .theia .cloud .common .k8s .resource .session .SessionSpec ;
8
9
9
10
public class LabelsUtil {
11
+ private static final Logger LOGGER = Logger .getLogger (LabelsUtil .class .getName ());
12
+
10
13
public static final String LABEL_CUSTOM_PREFIX = "theia-cloud.io" ;
11
14
12
15
public static final String LABEL_KEY_SESSION = "app.kubernetes.io/component" ;
@@ -18,14 +21,24 @@ public class LabelsUtil {
18
21
public static final String LABEL_KEY_USER = LABEL_CUSTOM_PREFIX + "/user" ;
19
22
public static final String LABEL_KEY_APPDEF = LABEL_CUSTOM_PREFIX + "/app-definition" ;
20
23
24
+ private static final int MAX_LABEL_LENGTH = 63 ;
25
+
26
+ private static String truncateLabelValue (String value ) {
27
+ if (value .length () > MAX_LABEL_LENGTH ) {
28
+ LOGGER .warning ("Label value truncated: " + value );
29
+ return value .substring (0 , MAX_LABEL_LENGTH );
30
+ }
31
+ return value ;
32
+ }
33
+
21
34
public static Map <String , String > createSessionLabels (SessionSpec sessionSpec ,
22
35
AppDefinitionSpec appDefinitionSpec ) {
23
36
Map <String , String > labels = new HashMap <>();
24
37
labels .put (LABEL_KEY_SESSION , LABEL_VALUE_SESSION );
25
38
labels .put (LABEL_KEY_THEIACLOUD , LABEL_VALUE_THEIACLOUD );
26
39
String sanitizedUser = sessionSpec .getUser ().replaceAll ("@" , "_at_" ).replaceAll ("[^a-zA-Z0-9]" , "_" );
27
- labels .put (LABEL_KEY_USER , sanitizedUser );
28
- labels .put (LABEL_KEY_APPDEF , appDefinitionSpec .getName ());
40
+ labels .put (LABEL_KEY_USER , truncateLabelValue ( sanitizedUser ) );
41
+ labels .put (LABEL_KEY_APPDEF , truncateLabelValue ( appDefinitionSpec .getName () ));
29
42
return labels ;
30
43
}
31
44
}
0 commit comments