def main(options, arguments): base_dir = os.path.dirname(sys.argv[0]) if base_dir in [".", ""]: base_dir = os.getcwd() if os.path.isfile(os.path.join(base_dir, "metadata.json")): mfile = open(os.path.join(base_dir, "metadata.json"), "r") domain_metadata = eval(mfile.read()) mfile.close() else: print "Mandatory file %s cannot be located in %s." % ("metadata.json", base_dir) sys.exit(1) domain_home = options.get("-h") domain_name = options.get("--domain_name", os.path.basename(domain_home)) shared_home = options.get("-s", domain_home) db_conn = options.get( "-c", domain_metadata.get("database").get("connect-string")) db_pass = options.get( "--db_password", domain_metadata.get("database").get("schema-password")) db_prfix = options.get("-m") nm_pass = options.get("--nm_password", domain_metadata.get("wls").get("nm_password")) as_pass = options.get("--as_password", domain_metadata.get("wls").get("as_password")) pwd_file = options.get("-w", "") nm_port = int( options.get("--nm_port", domain_metadata.get("wls").get("nm-port"))) as_port = int( options.get("--as_port", domain_metadata.get("wls").get("as-port"))) as_sport = int( options.get("--as_ssl_port", domain_metadata.get("wls").get("as-ssl-port"))) as_name = domain_metadata.get("wls").get("server-name") as_user = domain_metadata.get("wls").get("as-username") nm_user = domain_metadata.get("wls").get("nm-username") feature_set = LinkedHashSet(arguments) feature_set.retainAll(domain_metadata.keys()) feature_set.remove("jdk") feature_set.remove("wcc") feature_set.remove("wcp") feature_set.remove("wcs") if feature_set.size() == 0: sys.exit(0) if not (feature_set.size() == 1 and "wls" in feature_set): feature_set.add("em") setShowLSResult(false) selected_features = [] avail_tmplts = showAvailableTemplates() index1 = avail_tmplts.find( "20849: Currently available templates for loading:") index2 = avail_tmplts.find("20849: No action required.") avail_tmplts = [ tmplt.split(":", 1) for tmplt in avail_tmplts[index1 + 50:index2 - 2].splitlines() ] avail_tmplts = dict(avail_tmplts) if not os.path.isfile(os.path.join(domain_home, "config", "config.xml")): if os.path.isfile(pwd_file): bfile = open(pwd_file, "r") fcontents = bfile.read().splitlines() bfile.close() db_pass = fcontents.pop() as_pass = fcontents.pop() nm_pass = fcontents.pop() selected_features.append("wls") feature_set.remove("wls") if "em" in feature_set and \ domain_metadata.get("em").get("template-name") in avail_tmplts: selected_features.append("em") feature_set.remove("em") for feature in feature_set: if domain_metadata.get(feature).get( "template-name") in avail_tmplts: selected_features.append(feature) if len(selected_features) == 0: return print "Creating the Domain." print "Loading Required Templates." for feature in selected_features: print "\t%s version %s" %(domain_metadata.get(feature).get("template-name"), \ domain_metadata.get(feature).get("version")) selectTemplate(domain_metadata.get(feature).get("template-name")) loadTemplates() print "Setting Domain Options." start_mode = domain_metadata.get("wls").get("server-start-mode") setOption("AppDir", os.path.join(domain_home, "applications")) setOption("DomainName", domain_name) setOption("OverwriteDomain", "true") setOption("ServerStartMode", start_mode) selected_features.remove("wls") print "Configuring Admin Server." cd("/Servers/AdminServer") set("ListenAddress", socket.gethostname()) set("ListenPort", as_port) set("Name", as_name) print "\tSSL" create(as_name, "SSL") cd("SSL/%s" % as_name) set("Enabled", "True") set("ListenPort", as_sport) set("HostnameVerificationIgnored", "true") set("HostnameVerifier", "None") print "\tServerStart" cd('/Servers/%s' % as_name) create(as_name, 'ServerStart') cd('ServerStart/NO_NAME_0') # set("Arguments", "-XX:+UnlockCommercialFeatures -XX:+ResourceManagement -Djava.security.egd=file:/dev/./urandom") set("Arguments", "-Djava.security.egd=file:/dev/./urandom") print "Configuring Admin User." cd("/Security/base_domain/User/weblogic") set("Name", as_user) set("Password", as_pass) print "Configuring Security Configuration." cd("/SecurityConfiguration/%s" % "base_domain") set("NodeManagerUsername", nm_user) set("NodeManagerPasswordEncrypted", nm_pass) print "Configuring Nodemanager." cd("/NMProperties") set("NodeManagerHome", os.path.join(domain_home, "nodemanager")) set("ListenAddress", socket.gethostname()) set("ListenPort", nm_port) cluster_set = LinkedHashSet() for feature in selected_features: print "Configuring feature %s." % feature cluster_name = domain_metadata.get(feature).get("cluster-name") server_name = domain_metadata.get(feature).get("server-name") feature_credentials = domain_metadata.get(feature).get( "credentials", {}) for credential in feature_credentials: for credkey in feature_credentials.get(credential, {}): print "\tUpdating Key %s in Credential %s" % (credkey, credential) cd("/Credential/TargetStore/%s/TargetKey/%s" % (credential, credkey)) create(credkey, "Credential") cd("Credential") set( "Username", feature_credentials.get(credential).get(credkey).get( "username")) set( "Password", feature_credentials.get(credential).get(credkey).get( "password")) for filestore in domain_metadata.get(feature).get( "file-stores", []): print "\tUpdating Filestore %s" % filestore cd("/FileStore/%s" % filestore) set("Target", as_name) set("Directory", os.path.join(shared_home, get("Directory"))) jms_system_resources = domain_metadata.get(feature).get( "jms-system-resources", []) for jmssr in jms_system_resources: subdeployments = ls("/JMSSystemResource/%s/SubDeployment" % jmssr, returnMap="true") for subdeployment in subdeployments: cd("/JMSSystemResource/%s/SubDeployment/%s" % (jmssr, subdeployment)) for jmsserver in get("Target"): cd("/JMSServer/%s" % jmsserver.getName()) filestore = get("PersistentStore").getName() m_servers = get("Target") if m_servers[0].getName() == server_name: print "\tUpdating Filestore %s" % filestore cd("/FileStore/%s" % filestore) set("Directory", os.path.join(shared_home, get("Directory"))) for ds in domain_metadata.get(feature).get("datasources", []): ds_name = ds.get("name") ds_scma = ds.get("schema") print "\tUpdating Data Source %s" % ds_name cd("/JDBCSystemResources/%s/JdbcResource/%s/JDBCDriverParams/NO_NAME_0" % (ds_name, ds_name)) set("DriverName", "oracle.jdbc.OracleDriver") set("URL", "jdbc:oracle:thin:@%s" % db_conn) set("PasswordEncrypted", db_pass) cd("Properties/NO_NAME_0/Property/user") set("Value", "%s_%s" % (db_prfix, ds_scma)) cd("/JDBCSystemResources/%s/JdbcResource/%s" % (ds_name, ds_name)) create(ds_name, "JDBCOracleParams") cd("JDBCOracleParams/NO_NAME_0") set("FanEnabled", false) set("OnsNodeList", "") if cluster_name not in cluster_set and cluster_name is not None: cluster_set.add(cluster_name) print "\tCreating cluster %s" % cluster_name cd("/") create(cluster_name, "Cluster") cd("/Clusters/%s" % cluster_name) set("ClusterMessagingMode", "unicast") set("WeblogicPluginEnabled", 1) cd("/") print "\tTargeting resources to cluster %s" % cluster_name assign("Server", server_name, "Cluster", cluster_name) if len(selected_features) > 0: print "Data Sources Auto Config" getDatabaseDefaults() # setFEHostURL("plainurl", "sslurl", isDefaultPlain="True") print "Writing Domain Configuration." writeDomain(domain_home) print "Writing boot.properties." bootdir = File( os.path.join(domain_home, "servers", as_name, "security")) bootdir.mkdirs() bfile = open( os.path.join(domain_home, "servers", as_name, "security", "boot.properties"), "w") bfile.write("username=%s\n" % as_user) bfile.write("password=%s\n" % as_pass) bfile.flush() bfile.close() print "Domain built successfully." else: print "Domain exists already."
def main(options, arguments): base_dir = os.path.dirname(sys.argv[0]) if base_dir in [".", ""]: base_dir = os.getcwd() if os.path.isfile(os.path.join(base_dir, "metadata.json")): mfile = open(os.path.join(base_dir, "metadata.json"), "r") domain_metadata = eval(mfile.read()) mfile.close() else: print "Mandatory file %s cannot be located in %s." %("metadata.json", base_dir) sys.exit(1) domain_home = options.get("-h") domain_name = options.get("--domain_name", os.path.basename(domain_home)) shared_home = options.get("-s", domain_home) db_conn = options.get("-c", domain_metadata.get("database").get("connect-string")) db_pass = options.get("--db_password", domain_metadata.get("database").get("schema-password")) db_prfix = options.get("-m") pwd_file = options.get("-w", "") feature_set = LinkedHashSet(arguments) feature_set.retainAll(domain_metadata.keys()) if feature_set.size() == 0: sys.exit(0) if not(feature_set.size() == 1 and "wls" in feature_set): feature_set.add("em") setShowLSResult(false) used_tmplts = [] available_clusters = LinkedHashSet() selected_features = [] avail_tmplts = showAvailableTemplates() index1 = avail_tmplts.find("20849: Currently available templates for loading:") index2 = avail_tmplts.find("20849: No action required.") avail_tmplts = [tmplt.split(":", 1) for tmplt in avail_tmplts[index1 + 50:index2 - 2].splitlines()] avail_tmplts = dict(avail_tmplts) if os.path.isfile(os.path.join(domain_home, "config", "config.xml")): if os.path.isfile(pwd_file): bfile = open(pwd_file, "r") fcontents = bfile.read().splitlines() bfile.close() db_pass = fcontents.pop() print "Reading the Domain to gather information." readDomain(domain_home) used_tmplts = showTemplates() closeDomain() index1 = used_tmplts.find("20845: Previously applied templates:") index2 = used_tmplts.find("20845: No action required.") used_tmplts = [tmplt.split(":", 1) for tmplt in used_tmplts[index1 + 37:index2 - 2].splitlines()] used_tmplts = dict(used_tmplts) feature_set.remove("wls") if "em" in feature_set and \ domain_metadata.get("em").get("template-name") not in used_tmplts and \ domain_metadata.get("em").get("template-name") in avail_tmplts: selected_features.append("em") feature_set.remove("em") for feature in feature_set: if domain_metadata.get(feature).get("template-name") in used_tmplts: available_clusters.add(domain_metadata.get(feature).get("cluster-name")) else: if domain_metadata.get(feature).get("template-name") in avail_tmplts: selected_features.append(feature) if len(selected_features) == 0: return print "Loading the Domain for update." readDomain(domain_home) print "Loading Required Templates." for feature in selected_features: print "\t%s version %s" %(domain_metadata.get(feature).get("template-name"), \ domain_metadata.get(feature).get("version")) selectTemplate(domain_metadata.get(feature).get("template-name")) loadTemplates() print "Setting Domain Options." setOption("AppDir", os.path.join(domain_home, "applications")) cluster_set = LinkedHashSet() for feature in selected_features: print "Configuring feature %s." %feature cluster_name = domain_metadata.get(feature).get("cluster-name") server_name = domain_metadata.get(feature).get("server-name") feature_credentials = domain_metadata.get(feature).get("credentials", {}) for credential in feature_credentials: for credkey in feature_credentials.get(credential, {}): print "\tUpdating Key %s in Credential %s" %(credkey, credential) cd("/Credential/TargetStore/%s/TargetKey/%s" %(credential, credkey)) create(credkey, "Credential") cd("Credential") set("Username", feature_credentials.get(credential).get(credkey).get("username")) set("Password", feature_credentials.get(credential).get(credkey).get("password")) for filestore in domain_metadata.get(feature).get("file-stores", []): print "\tUpdating Filestore %s" %filestore cd("/FileStore/%s" %filestore) set("Target", as_name) set("Directory", os.path.join(shared_home, get("Directory"))) jms_system_resources = domain_metadata.get(feature).get("jms-system-resources", []) for jmssr in jms_system_resources: subdeployments = ls("/JMSSystemResource/%s/SubDeployment" %jmssr, returnMap="true") for subdeployment in subdeployments: cd("/JMSSystemResource/%s/SubDeployment/%s" %(jmssr, subdeployment)) for jmsserver in get("Target"): cd("/JMSServer/%s" %jmsserver.getName()) filestore = get("PersistentStore").getName() m_servers = get("Target") if m_servers[0].getName() == server_name: print "\tUpdating Filestore %s" %filestore cd("/FileStore/%s" %filestore) set("Directory", os.path.join(shared_home, get("Directory"))) for ds in domain_metadata.get(feature).get("datasources", []): ds_name = ds.get("name") ds_scma = ds.get("schema") print "\tUpdating Data Source %s" %ds_name cd("/JDBCSystemResources/%s/JdbcResource/%s/JDBCDriverParams/NO_NAME_0" %(ds_name, ds_name)) set("DriverName", "oracle.jdbc.OracleDriver") set("URL", "jdbc:oracle:thin:@%s" %db_conn) set("PasswordEncrypted", db_pass) cd("Properties/NO_NAME_0/Property/user") set("Value", "%s_%s" %(db_prfix, ds_scma)) cd("/JDBCSystemResources/%s/JdbcResource/%s" %(ds_name, ds_name)) create(ds_name, "JDBCOracleParams") cd("JDBCOracleParams/NO_NAME_0") set("FanEnabled", false) set("OnsNodeList", "") if cluster_name not in cluster_set and cluster_name is not None: cluster_set.add(cluster_name) print "\tCreating cluster %s" %cluster_name cd("/") create(cluster_name, "Cluster") cd("/Clusters/%s" %cluster_name) set("ClusterMessagingMode", "unicast") set("WeblogicPluginEnabled", 1) cd("/") print "\tTargeting resources to cluster %s" %cluster_name assign("Server", server_name, "Cluster", cluster_name) # print "\tDeleting server %s" %server_name # delete(server_name, "Server") if len(selected_features) > 0: print "Data Sources Auto Config" getDatabaseDefaults() # setFEHostURL("plainurl", "sslurl", isDefaultPlain="True") print "Writing Domain Configuration." updateDomain() closeDomain() print "Domain built successfully." else: print "Domain does not exist."
def main(options, arguments): base_dir = os.path.dirname(sys.argv[0]) if base_dir in [".", ""]: base_dir = os.getcwd() if os.path.isfile(os.path.join(base_dir, "metadata.json")): mfile = open(os.path.join(base_dir, "metadata.json"), "r") domain_metadata = eval(mfile.read()) mfile.close() else: print "Mandatory file %s cannot be located in %s." %("metadata.json", base_dir) sys.exit(1) domain_home = options.get("-h") domain_name = options.get("--domain_name", os.path.basename(domain_home)) shared_home = options.get("-s", domain_home) db_conn = options.get("-c", domain_metadata.get("database").get("connect-string")) db_pass = options.get("--db_password", domain_metadata.get("database").get("schema-password")) db_prfix = options.get("-m") nm_pass = options.get("--nm_password", domain_metadata.get("wls").get("nm_password")) as_pass = options.get("--as_password", domain_metadata.get("wls").get("as_password")) pwd_file = options.get("-w", "") nm_port = int(options.get("--nm_port", domain_metadata.get("wls").get("nm-port"))) as_port = int(options.get("--as_port", domain_metadata.get("wls").get("as-port"))) as_sport = int(options.get("--as_ssl_port", domain_metadata.get("wls").get("as-ssl-port"))) as_name = domain_metadata.get("wls").get("server-name") as_user = domain_metadata.get("wls").get("as-username") nm_user = domain_metadata.get("wls").get("nm-username") feature_set = LinkedHashSet(arguments) feature_set.retainAll(domain_metadata.keys()) feature_set.remove("jdk") feature_set.remove("wcc") feature_set.remove("wcp") feature_set.remove("wcs") if feature_set.size() == 0: sys.exit(0) if not(feature_set.size() == 1 and "wls" in feature_set): feature_set.add("em") setShowLSResult(false) selected_features = [] avail_tmplts = showAvailableTemplates() index1 = avail_tmplts.find("20849: Currently available templates for loading:") index2 = avail_tmplts.find("20849: No action required.") avail_tmplts = [tmplt.split(":", 1) for tmplt in avail_tmplts[index1 + 50:index2 - 2].splitlines()] avail_tmplts = dict(avail_tmplts) if not os.path.isfile(os.path.join(domain_home, "config", "config.xml")): if os.path.isfile(pwd_file): bfile = open(pwd_file, "r") fcontents = bfile.read().splitlines() bfile.close() db_pass = fcontents.pop() as_pass = fcontents.pop() nm_pass = fcontents.pop() selected_features.append("wls") feature_set.remove("wls") if "em" in feature_set and \ domain_metadata.get("em").get("template-name") in avail_tmplts: selected_features.append("em") feature_set.remove("em") for feature in feature_set: if domain_metadata.get(feature).get("template-name") in avail_tmplts: selected_features.append(feature) if len(selected_features) == 0: return print "Creating the Domain." print "Loading Required Templates." for feature in selected_features: print "\t%s version %s" %(domain_metadata.get(feature).get("template-name"), \ domain_metadata.get(feature).get("version")) selectTemplate(domain_metadata.get(feature).get("template-name")) loadTemplates() print "Setting Domain Options." start_mode = domain_metadata.get("wls").get("server-start-mode") setOption("AppDir", os.path.join(domain_home, "applications")) setOption("DomainName", domain_name) setOption("OverwriteDomain", "true") setOption("ServerStartMode", start_mode) selected_features.remove("wls") print "Configuring Admin Server." cd("/Servers/AdminServer") set("ListenAddress", socket.gethostname()) set("ListenPort", as_port) set("Name", as_name) print "\tSSL" create(as_name, "SSL") cd("SSL/%s" %as_name) set("Enabled", "True") set("ListenPort", as_sport) set("HostnameVerificationIgnored", "true") set("HostnameVerifier", "None") print "\tServerStart" cd('/Servers/%s' %as_name) create(as_name, 'ServerStart') cd('ServerStart/NO_NAME_0') # set("Arguments", "-XX:+UnlockCommercialFeatures -XX:+ResourceManagement -Djava.security.egd=file:/dev/./urandom") set("Arguments", "-Djava.security.egd=file:/dev/./urandom") print "Configuring Admin User." cd("/Security/base_domain/User/weblogic") set("Name", as_user) set("Password", as_pass) print "Configuring Security Configuration." cd("/SecurityConfiguration/%s" %"base_domain") set("NodeManagerUsername", nm_user) set("NodeManagerPasswordEncrypted", nm_pass) print "Configuring Nodemanager." cd("/NMProperties") set("NodeManagerHome", os.path.join(domain_home, "nodemanager")) set("ListenAddress", socket.gethostname()) set("ListenPort", nm_port) cluster_set = LinkedHashSet() for feature in selected_features: print "Configuring feature %s." %feature cluster_name = domain_metadata.get(feature).get("cluster-name") server_name = domain_metadata.get(feature).get("server-name") feature_credentials = domain_metadata.get(feature).get("credentials", {}) for credential in feature_credentials: for credkey in feature_credentials.get(credential, {}): print "\tUpdating Key %s in Credential %s" %(credkey, credential) cd("/Credential/TargetStore/%s/TargetKey/%s" %(credential, credkey)) create(credkey, "Credential") cd("Credential") set("Username", feature_credentials.get(credential).get(credkey).get("username")) set("Password", feature_credentials.get(credential).get(credkey).get("password")) for filestore in domain_metadata.get(feature).get("file-stores", []): print "\tUpdating Filestore %s" %filestore cd("/FileStore/%s" %filestore) set("Target", as_name) set("Directory", os.path.join(shared_home, get("Directory"))) jms_system_resources = domain_metadata.get(feature).get("jms-system-resources", []) for jmssr in jms_system_resources: subdeployments = ls("/JMSSystemResource/%s/SubDeployment" %jmssr, returnMap="true") for subdeployment in subdeployments: cd("/JMSSystemResource/%s/SubDeployment/%s" %(jmssr, subdeployment)) for jmsserver in get("Target"): cd("/JMSServer/%s" %jmsserver.getName()) filestore = get("PersistentStore").getName() m_servers = get("Target") if m_servers[0].getName() == server_name: print "\tUpdating Filestore %s" %filestore cd("/FileStore/%s" %filestore) set("Directory", os.path.join(shared_home, get("Directory"))) for ds in domain_metadata.get(feature).get("datasources", []): ds_name = ds.get("name") ds_scma = ds.get("schema") print "\tUpdating Data Source %s" %ds_name cd("/JDBCSystemResources/%s/JdbcResource/%s/JDBCDriverParams/NO_NAME_0" %(ds_name, ds_name)) set("DriverName", "oracle.jdbc.OracleDriver") set("URL", "jdbc:oracle:thin:@%s" %db_conn) set("PasswordEncrypted", db_pass) cd("Properties/NO_NAME_0/Property/user") set("Value", "%s_%s" %(db_prfix, ds_scma)) cd("/JDBCSystemResources/%s/JdbcResource/%s" %(ds_name, ds_name)) create(ds_name, "JDBCOracleParams") cd("JDBCOracleParams/NO_NAME_0") set("FanEnabled", false) set("OnsNodeList", "") if cluster_name not in cluster_set and cluster_name is not None: cluster_set.add(cluster_name) print "\tCreating cluster %s" %cluster_name cd("/") create(cluster_name, "Cluster") cd("/Clusters/%s" %cluster_name) set("ClusterMessagingMode", "unicast") set("WeblogicPluginEnabled", 1) cd("/") print "\tTargeting resources to cluster %s" %cluster_name assign("Server", server_name, "Cluster", cluster_name) if len(selected_features) > 0: print "Data Sources Auto Config" getDatabaseDefaults() # setFEHostURL("plainurl", "sslurl", isDefaultPlain="True") print "Writing Domain Configuration." writeDomain(domain_home) print "Writing boot.properties." bootdir = File(os.path.join(domain_home, "servers", as_name, "security")) bootdir.mkdirs() bfile = open(os.path.join(domain_home, "servers", as_name, "security", "boot.properties"), "w") bfile.write("username=%s\n" %as_user) bfile.write("password=%s\n" %as_pass) bfile.flush() bfile.close() print "Domain built successfully." else: print "Domain exists already."
def main(options, arguments): base_dir = os.path.dirname(sys.argv[0]) if base_dir in [".", ""]: base_dir = os.getcwd() if os.path.isfile(os.path.join(base_dir, "metadata.json")): mfile = open(os.path.join(base_dir, "metadata.json"), "r") domain_metadata = eval(mfile.read()) mfile.close() else: print "Mandatory file %s cannot be located in %s." % ("metadata.json", base_dir) sys.exit(1) admin_host = options.get("-a") domain_home = options.get("-h") shared_home = options.get("-s", domain_home) as_username = options.get("--as_username", domain_metadata.get("wls").get("as-username")) as_password = options.get("--as_password", domain_metadata.get("wls").get("as_password")) nm_port = int( options.get("--nm_port", domain_metadata.get("wls").get("nm-port"))) pwd_file = options.get("-w", "") if "--use_plain" not in options: as_port = int( options.get("--as_port", domain_metadata.get("wls").get("as-ssl-port"))) admin_url = "t3s://%s:%s" % (admin_host, as_port) else: as_port = int( options.get("--as_port", domain_metadata.get("wls").get("as-port"))) admin_url = "t3://%s:%s" % (admin_host, as_port) if "--overwrite" in options: overwrite = True else: overwrite = False wait = int(options.get("--wait", 300000)) timeout = int(options.get("--timeout", -1)) feature_set = LinkedHashSet(arguments) feature_set.retainAll(domain_metadata.keys()) if feature_set.size() == 0: return if not os.path.isdir(domain_home) or overwrite: if os.path.isfile(pwd_file): bfile = open(pwd_file, "r") fcontents = bfile.read().splitlines() bfile.close() as_password = fcontents.pop() # Using IP for listen address # Revert back when Docker Networking is better host_name = socket.gethostname() machine_name = host_name.split(".")[0] host_name = socket.gethostbyname(host_name) connect(as_username, as_password, admin_url) edit() startEdit(waitTimeInMillis=wait, timeOutInMillis=timeout, exclusive="true") try: dtop_cmo = getMBean("/") if machine_name not in [ mb.getName() for mb in dtop_cmo.getMachines() ]: print "Creating Machine %s." % machine_name machine = create(machine_name, "UnixMachine") cd("/Machines/%s/NodeManager/%s" % (machine_name, machine_name)) set("DebugEnabled", "true") set("ListenAddress", host_name) set("ListenPort", int(nm_port)) else: machine = getMBean("/Machines/%s" % machine_name) for feature in feature_set: server_name = domain_metadata.get(feature).get("server-name") server_port = domain_metadata.get(feature).get("server-port") server_ssl_port = domain_metadata.get(feature).get( "server-ssl-port") cluster_name = domain_metadata.get(feature).get("cluster-name") # server_name = "%s_%s" %(feature, machine_name) today = datetime.datetime.now().strftime("%m%d%Y%H%M%S") mserver = getMBean("/Servers/%s" % server_name) if mserver.getListenAddress() in (None, ""): print "Configuring Server %s." % server_name mserver.setMachine(machine) mserver.setListenAddress(host_name) mserver.setListenPort(int(server_port)) mserver_ssl = mserver.getSSL() mserver_ssl.setEnabled(True) mserver_ssl.setListenPort(int(server_ssl_port)) mserver_ssl.setHostnameVerificationIgnored(True) mserver_ssl.setHostnameVerifier("None") mserver_svs = mserver.getServerStart() # mserver_svs.setArguments("-Djava.security.egd=file:/dev/./urandom -XX:+UnlockCommercialFeatures -XX:+ResourceManagement") mserver_svs.setArguments( "-Djava.security.egd=file:/dev/./urandom") else: counter = 2 mserver_list = [ mb.getName() for mb in dtop_cmo.getServers() ] while True: if "%s%i" % (server_name[:-1], counter) in mserver_list: counter = counter + 1 else: server_name = "%s%i" % (server_name[:-1], counter) break cluster = getMBean("/Clusters/%s" % cluster_name) print "Creating Server %s." % server_name cd("/") mserver = create(server_name, "Server") mserver.setMachine(machine) mserver.setCluster(cluster) mserver.setListenAddress(host_name) mserver.setListenPort(int(server_port)) mserver_ssl = mserver.getSSL() mserver_ssl.setEnabled(True) mserver_ssl.setListenPort(int(server_ssl_port)) mserver_ssl.setHostnameVerificationIgnored(True) mserver_ssl.setHostnameVerifier("None") mserver_svs = mserver.getServerStart() mserver_svs.setArguments( "-Djava.security.egd=file:/dev/./urandom -XX:+UnlockCommercialFeatures -XX:+ResourceManagement" ) jms_resources = domain_metadata.get(feature).get( "jms-system-resources", []) for resource in jms_resources: cd("/") fs_name = "%sFileStore%s" % (feature, today) print "Creating FileStore %s." % fs_name filestore = create(fs_name, "FileStore") filestore.setDirectory( os.path.join(shared_home, fs_name)) filestore.addTarget(mserver) js_name = "%sJmsServer%s" % (feature, today) print "Creating JMSServer %s." % js_name jmsserver = create(js_name, "JMSServer") jmsserver.addTarget(mserver) cd("/JMSSystemResources/%s" % resource) print "Creating SubDeployment %s." % js_name deployment = create(js_name, "SubDeployment") deployment.addTarget(jmsserver) cd("JMSResource/%s" % resource) jmsmodule = getMBean( "/JMSSystemResources/%s/JMSResource/%s" % (resource, resource)) for dqueue in jmsmodule.getDistributedQueues(): print "Updating DistributedQueue %s." % dqueue.getName( ) dqueue.setSubDeploymentName(deployment.getName()) for queue in jmsmodule.getQueues(): print "Updating Queue %s." % queue.getName() queue.setSubDeploymentName(deployment.getName()) for udqueue in jmsmodule.getUniformDistributedQueues(): print "Updating UniformDistributedQueue %s." % udqueue.getName( ) udqueue.setSubDeploymentName(deployment.getName()) for dtopic in jmsmodule.getDistributedTopics(): print "Updating DistributedTopic %s." % dtopic.getName( ) dtopic.setSubDeploymentName(deployment.getName()) for topic in jmsmodule.getTopics(): print "Updating Topic %s." % topic.getName() topic.setSubDeploymentName(deployment.getName()) for udtopic in jmsmodule.getUniformDistributedTopics(): print "Updating UniformDistributedTopic %s." % udtopic.getName( ) udtopic.setSubDeploymentName(deployment.getName()) except: undo(defaultAnswer="y", unactivatedChanges="true") # cancelEdit("y") stopEdit("y") serverConfig() disconnect() else: save() activate(block="true") serverConfig() print "Writing domain to a template." domain_template = tempfile.mktemp() + ".jar" writeTemplate(domain_template) disconnect() print "Loading the template." selectCustomTemplate(domain_template) loadTemplates() setOption("AppDir", os.path.join(domain_home, "applications")) setOption("OverwriteDomain", "true") print "Configuring Nodemanager." cd("/NMProperties") set("NodeManagerHome", os.path.join(domain_home, "nodemanager")) set("ListenAddress", host_name) set("ListenPort", nm_port) print "Writing Domain Configuration." writeDomain(domain_home) os.unlink(domain_template) print "Writing boot.properties." bootdir = File( os.path.join(domain_home, "servers", server_name, "security")) bootdir.mkdirs() bfile = open( os.path.join(domain_home, "servers", server_name, "security", "boot.properties"), "w") bfile.write("username=%s\n" % as_username) bfile.write("password=%s\n" % as_password) bfile.flush() bfile.close() print "Managed Domain built successfully."
def main(options, arguments): base_dir = os.path.dirname(sys.argv[0]) if base_dir in [".", ""]: base_dir = os.getcwd() if os.path.isfile(os.path.join(base_dir, "metadata.json")): mfile = open(os.path.join(base_dir, "metadata.json"), "r") domain_metadata = eval(mfile.read()) mfile.close() else: print "Mandatory file %s cannot be located in %s." %("metadata.json", base_dir) sys.exit(1) admin_host = options.get("-a") domain_home = options.get("-h") shared_home = options.get("-s", domain_home) as_username = options.get("--as_username", domain_metadata.get("wls").get("as-username")) as_password = options.get("--as_password", domain_metadata.get("wls").get("as_password")) nm_port = int(options.get("--nm_port", domain_metadata.get("wls").get("nm-port"))) pwd_file = options.get("-w", "") if "--use_plain" not in options: as_port = int(options.get("--as_port", domain_metadata.get("wls").get("as-ssl-port"))) admin_url = "t3s://%s:%s" %(admin_host, as_port) else: as_port = int(options.get("--as_port", domain_metadata.get("wls").get("as-port"))) admin_url = "t3://%s:%s" %(admin_host, as_port) if "--overwrite" in options: overwrite = True else: overwrite = False wait = int(options.get("--wait", 300000)) timeout = int(options.get("--timeout", -1)) feature_set = LinkedHashSet(arguments) feature_set.retainAll(domain_metadata.keys()) if feature_set.size() == 0: return if not os.path.isdir(domain_home) or overwrite: if os.path.isfile(pwd_file): bfile = open(pwd_file, "r") fcontents = bfile.read().splitlines() bfile.close() as_password = fcontents.pop() # Using IP for listen address # Revert back when Docker Networking is better host_name = socket.gethostname() machine_name = host_name.split(".")[0] host_name = socket.gethostbyname(host_name) connect(as_username, as_password, admin_url) edit() startEdit(waitTimeInMillis=wait, timeOutInMillis=timeout, exclusive="true") try: dtop_cmo = getMBean("/") if machine_name not in [mb.getName() for mb in dtop_cmo.getMachines()]: print "Creating Machine %s." %machine_name machine = create(machine_name, "UnixMachine") cd("/Machines/%s/NodeManager/%s" %(machine_name, machine_name)) set("DebugEnabled", "true") set("ListenAddress", host_name) set("ListenPort", int(nm_port)) else: machine = getMBean("/Machines/%s" %machine_name) for feature in feature_set: server_name = domain_metadata.get(feature).get("server-name") server_port = domain_metadata.get(feature).get("server-port") server_ssl_port = domain_metadata.get(feature).get("server-ssl-port") cluster_name = domain_metadata.get(feature).get("cluster-name") # server_name = "%s_%s" %(feature, machine_name) today = datetime.datetime.now().strftime("%m%d%Y%H%M%S") mserver = getMBean("/Servers/%s" %server_name) if mserver.getListenAddress() in (None, ""): print "Configuring Server %s." %server_name mserver.setMachine(machine) mserver.setListenAddress(host_name) mserver.setListenPort(int(server_port)) mserver_ssl = mserver.getSSL() mserver_ssl.setEnabled(True) mserver_ssl.setListenPort(int(server_ssl_port)) mserver_ssl.setHostnameVerificationIgnored(True) mserver_ssl.setHostnameVerifier("None") mserver_svs = mserver.getServerStart() # mserver_svs.setArguments("-Djava.security.egd=file:/dev/./urandom -XX:+UnlockCommercialFeatures -XX:+ResourceManagement") mserver_svs.setArguments("-Djava.security.egd=file:/dev/./urandom") else: counter = 2 mserver_list = [mb.getName() for mb in dtop_cmo.getServers()] while True: if "%s%i" %(server_name[:-1], counter) in mserver_list: counter = counter + 1 else: server_name = "%s%i" %(server_name[:-1], counter) break cluster = getMBean("/Clusters/%s" %cluster_name) print "Creating Server %s." %server_name cd("/") mserver = create(server_name, "Server") mserver.setMachine(machine) mserver.setCluster(cluster) mserver.setListenAddress(host_name) mserver.setListenPort(int(server_port)) mserver_ssl = mserver.getSSL() mserver_ssl.setEnabled(True) mserver_ssl.setListenPort(int(server_ssl_port)) mserver_ssl.setHostnameVerificationIgnored(True) mserver_ssl.setHostnameVerifier("None") mserver_svs = mserver.getServerStart() mserver_svs.setArguments("-Djava.security.egd=file:/dev/./urandom -XX:+UnlockCommercialFeatures -XX:+ResourceManagement") jms_resources = domain_metadata.get(feature).get("jms-system-resources", []) for resource in jms_resources: cd("/") fs_name = "%sFileStore%s" %(feature, today) print "Creating FileStore %s." %fs_name filestore = create(fs_name, "FileStore") filestore.setDirectory(os.path.join(shared_home, fs_name)) filestore.addTarget(mserver) js_name = "%sJmsServer%s" %(feature, today) print "Creating JMSServer %s." %js_name jmsserver = create(js_name, "JMSServer") jmsserver.addTarget(mserver) cd("/JMSSystemResources/%s" %resource) print "Creating SubDeployment %s." %js_name deployment = create(js_name, "SubDeployment") deployment.addTarget(jmsserver) cd("JMSResource/%s" %resource) jmsmodule = getMBean("/JMSSystemResources/%s/JMSResource/%s" %(resource, resource)) for dqueue in jmsmodule.getDistributedQueues(): print "Updating DistributedQueue %s." %dqueue.getName() dqueue.setSubDeploymentName(deployment.getName()) for queue in jmsmodule.getQueues(): print "Updating Queue %s." %queue.getName() queue.setSubDeploymentName(deployment.getName()) for udqueue in jmsmodule.getUniformDistributedQueues(): print "Updating UniformDistributedQueue %s." %udqueue.getName() udqueue.setSubDeploymentName(deployment.getName()) for dtopic in jmsmodule.getDistributedTopics(): print "Updating DistributedTopic %s." %dtopic.getName() dtopic.setSubDeploymentName(deployment.getName()) for topic in jmsmodule.getTopics(): print "Updating Topic %s." %topic.getName() topic.setSubDeploymentName(deployment.getName()) for udtopic in jmsmodule.getUniformDistributedTopics(): print "Updating UniformDistributedTopic %s." %udtopic.getName() udtopic.setSubDeploymentName(deployment.getName()) except: undo(defaultAnswer="y", unactivatedChanges="true") # cancelEdit("y") stopEdit("y") serverConfig() disconnect() else: save() activate(block="true") serverConfig() print "Writing domain to a template." domain_template = tempfile.mktemp() + ".jar" writeTemplate(domain_template) disconnect() print "Loading the template." selectCustomTemplate(domain_template) loadTemplates() setOption("AppDir", os.path.join(domain_home, "applications")) setOption("OverwriteDomain", "true") print "Configuring Nodemanager." cd("/NMProperties") set("NodeManagerHome", os.path.join(domain_home, "nodemanager")) set("ListenAddress", host_name) set("ListenPort", nm_port) print "Writing Domain Configuration." writeDomain(domain_home) os.unlink(domain_template) print "Writing boot.properties." bootdir = File(os.path.join(domain_home, "servers", server_name, "security")) bootdir.mkdirs() bfile = open(os.path.join(domain_home, "servers", server_name, "security", "boot.properties"), "w") bfile.write("username=%s\n" %as_username) bfile.write("password=%s\n" %as_password) bfile.flush() bfile.close() print "Managed Domain built successfully."