openjpa/openjpa-examples/openbooks/scripts/was/ds_config.py

111 lines
4.3 KiB
Python

#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
import sys
import os
global AdminConfig
global AdminTask
#-----------------------------------------------------------------
# getName - Returns the base name of the config object.
#-----------------------------------------------------------------
def getName (objectId):
endIndex = (objectId.find("(c") - 1)
stIndex = 0
if (objectId.find("\"") == 0):
stIndex = 1
#endIf
return objectId[stIndex:endIndex+1]
#endDef
#-----------------------------------------------------------------
# getNodeId - Return the node id of the existing node. If in an
# ND environment, returns the first node in the list.
#-----------------------------------------------------------------
def getNodeId ():
nodeList = AdminConfig.list("Node").split("\n")
node=""
if (len(nodeList) == 1):
node = nodeList[0]
#endIf
return node
#endDef
#-----------------------------------------------------------------
# getServerId - Return the server id of the existing server. If
# more than one server exists, returns the first server
# in the list.
#-----------------------------------------------------------------
def getServerId ():
serverList = AdminConfig.list("Server").split("\n")
server = serverList[0]
return server
#endDef
def addDatasourceProperty (datasourceId, name, value):
parms = ["-propertyName", name, "-propertyValue", value]
AdminTask.setResourceProperty(datasourceId, parms)
#endDef
# Set the default database provider to Derby
DefaultProviderType="Derby"
DefaultProviderName="Derby JDBC Provider"
DefaultPathName="${DERBY_JDBC_DRIVER_PATH}/derby.jar"
DefaultNativePathName= ""
# If in an ND environment with multiple nodes or servers
# specify the target node and server name
TargetNodeName = ""
TargetServerName = ""
if (TargetNodeName == ""):
TargetNodeName = getName(getNodeId())
#endIf
if (TargetServerName == ""):
TargetServerName = getName(getServerId())
#endIf
print "TargetNodeName: " + TargetNodeName
print "TargetServerName: " + TargetServerName
# Build the scope for the Derby provider
scope = AdminConfig.getid("/Node:"+TargetNodeName+"/Server:"+TargetServerName+"/")
scopeName = getName(scope)
print "Scope: " + scopeName
providerId = AdminConfig.getid("/Server:"+scopeName+"/JDBCProvider:\""+DefaultProviderName+"\"/" )
if (providerId == ""):
print "Creating new JDBC provider"
providerId = AdminTask.createJDBCProvider('[-scope Node='+TargetNodeName+',Server='+TargetServerName+' -databaseType Derby -providerType "Derby JDBC Provider" -implementationType "Connection pool data source" -name "Derby JDBC Provider" -description "Derby embedded non-XA JDBC Provider." -classpath [${DERBY_JDBC_DRIVER_PATH}/derby.jar ] -nativePath "" ]')
#endIf
print "Creating new JDBC data sources"
dataSourceId = AdminTask.createDatasource(providerId, '[-name "OpenBooks Data Source" -jndiName jdbc/OpenBooks -dataStoreHelperClassName com.ibm.websphere.rsadapter.DerbyDataStoreHelper -containerManagedPersistence false -componentManagedAuthenticationAlias -configureResourceProperties [[databaseName java.lang.String OpenBooks]]')
addDatasourceProperty(dataSourceId, "createDatabase", "create")
nonTxDataSourceId = AdminTask.createDatasource(providerId, '[-name "OpenBooks Non-transactional Data Source" -jndiName jdbc/NonTxOpenBooks -dataStoreHelperClassName com.ibm.websphere.rsadapter.DerbyDataStoreHelper -containerManagedPersistence false -componentManagedAuthenticationAlias -configureResourceProperties [[databaseName java.lang.String OpenBooks]]')
addDatasourceProperty(nonTxDataSourceId, "nonTransactionalDataSource", "true")
print "Saving configuration"
AdminConfig.save( )
print "Done"