question: private static ClusterProperties fromProperties ( Properties props ) { ClusterProperties prop = new ClusterProperties ( ) ; prop . clusterName = getStringProperty ( IGNITE_CLUSTER_NAME , props , DEFAULT_CLUSTER_NAME ) ; prop . cpuPerNode = getDoubleProperty ( IGNITE_RUN_CPU_PER_NODE , props , DEFAULT_CPU_PER_NODE ) ; prop . memPerNode = getDoubleProperty ( IGNITE_MEMORY_PER_NODE , props , DEFAULT_MEM_PER_NODE ) ; prop . memOverHeadPerNode = getDoubleProperty ( IGNITE_MEMORY_OVERHEAD_PER_NODE , props , Math . max ( 0.1 * prop . memPerNode , DEFAULT_MINIMUM_MEM_OVERHEAD_PER_NODE ) ) ; prop . nodeCnt = getDoubleProperty ( IGNITE_NODE_COUNT , props , DEFAULT_IGNITE_NODE_COUNT ) ; prop . igniteUrl = getStringProperty ( IGNITE_URL , props , null ) ; prop . ignitePath = getStringProperty ( IGNITE_PATH , props , null ) ; prop . licencePath = getStringProperty ( LICENCE_PATH , props , null ) ; prop . jvmOpts = getStringProperty ( IGNITE_JVM_OPTS , props , null ) ; prop . igniteWorkDir = getStringProperty ( IGNITE_WORKING_DIR , props , DEFAULT_IGNITE_WORK_DIR ) ; prop . igniteLocalWorkDir = getStringProperty ( IGNITE_LOCAL_WORK_DIR , props , DEFAULT_IGNITE_LOCAL_WORK_DIR ) ; prop . igniteReleasesDir = getStringProperty ( IGNITE_RELEASES_DIR , props , DEFAULT_IGNITE_RELEASES_DIR ) ; prop . igniteCfg = getStringProperty ( IGNITE_CONFIG_XML , props , null ) ; prop . userLibs = getStringProperty ( IGNITE_USERS_LIBS , props , null ) ; String pattern = getStringProperty ( IGNITE_HOSTNAME_CONSTRAINT , props , null ) ; if ( pattern != null ) { try { prop . hostnameConstraint = Pattern . compile ( pattern ) ; } catch ( PatternSyntaxException e ) { log . log ( Level . WARNING , "IGNITE_HOSTNAME_CONSTRAINT has invalid pattern. It will be ignore." , e ) ; } } return prop ; }
target:  Instantiate a ClusterProperties from a set of properties.