private static Map < String , Object > readAndEnrichFragment ( PlatformMode platformMode , ResourceVersioning apiVersions , File file , String appName ) throws IOException { Pattern pattern = Pattern . compile ( FILENAME_PATTERN , Pattern . CASE_INSENSITIVE ) ; Matcher matcher = pattern . matcher ( file . getName ( ) ) ; if ( ! matcher . matches ( ) ) { throw new IllegalArgumentException ( String . format ( "Resource file name '%s' does not match pattern <name>-<type>.(yaml|yml|json)" , file . getName ( ) ) ) ; } String name = matcher . group ( "name" ) ; String type = matcher . group ( "type" ) ; String ext = matcher . group ( "ext" ) . toLowerCase ( ) ; String kind ; Map < String , Object > fragment = readFragment ( file , ext ) ; if ( type != null ) { kind = getAndValidateKindFromType ( file , type ) ; } else { // Try name as type kind = FILENAME_TO_KIND_MAPPER . get ( name . toLowerCase ( ) ) ; if ( kind != null ) { // Name is in fact the type, so lets erase the name. name = null ; } } addKind ( fragment , kind , file . getName ( ) ) ; String apiVersion = apiVersions . getCoreVersion ( ) ; if ( Objects . equals ( kind , "Ingress" ) ) { apiVersion = apiVersions . getExtensionsVersion ( ) ; } else if ( Objects . equals ( kind , "StatefulSet" ) || Objects . equals ( kind , "Deployment" ) ) { apiVersion = apiVersions . getAppsVersion ( ) ; } else if ( Objects . equals ( kind , "Job" ) ) { apiVersion = apiVersions . getJobVersion ( ) ; } else if ( Objects . equals ( kind , "DeploymentConfig" ) && platformMode == PlatformMode . openshift ) { apiVersion = apiVersions . getOpenshiftV1version ( ) ; } addIfNotExistent ( fragment , "apiVersion" , apiVersion ) ; Map < String , Object > metaMap = getMetadata ( fragment ) ; // No name means: generated app name should be taken as resource name addIfNotExistent ( metaMap , "name" , StringUtils . isNotBlank ( name ) ? name : appName ) ; return fragment ; }
Read fragment and add default values