mirror of https://github.com/apache/openjpa.git
111 lines
4.3 KiB
Python
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" |