Python - SyntaxError:'break'外部循环

时间:2014-02-06 18:27:29

标签: python unix

有人可以帮我确定为什么我会在代码中出现循环错误之外的问题吗?我也尝试将它包含在if语句中,我也得到了同样的错误。

  

12:20:32#。/ datasource_config.py     文件“./datasource_config.py”,第90行       打破   SyntaxError:'break'在循环外部

有问题的代码:

## checking for the existence of JAASAuthData and deleting ## 
node = AdminControl.getNode()
alias1 = node +"/"+ env
print " Checking for the existence of JAASAUTHDATA :"+ alias1 
jaasAuthDataList = AdminConfig.list("JAASAuthData")
if len(jaasAuthDataList) == 0: 
    print " Creating New JAASAuthData with Alias name :"+ alias1
    sec = AdminConfig.getid('/Cell:'+ cell +'/Security:/')
    alias_attr = ["alias" , alias1]
    desc_attr = ["description" , "alias"]
    userid_attr = ["userId" , user ]
    password_attr = ["password" , password]
    attrs = [alias_attr , desc_attr , userid_attr , password_attr ]
    authdata = AdminConfig.create('JAASAuthData' , sec , attrs)
    print " Created new JASSAuthData with Alias name :"+ alias1
    AdminConfig.save()
    print " Saving Configuraion "
    print " ------------------------------------ "
else :
    matchFound = 0 
    jaasAuthDataList = AdminConfig.list("JAASAuthData") 
    jaasAuthDataList=jaasAuthDataList.split(lineSeparator)
for jaasAuthId in jaasAuthDataList:
    getAlias = AdminConfig.showAttribute(jaasAuthId, "alias")
if (cmp(getAlias,alias1) == 0):
    print " JAASAuthData exists with name :"+ alias1
    print " Removing JAASAuthData with name :"+ alias1
    AdminConfig.remove(jaasAuthId)
    print " JAASAuthData removed " 
    AdminConfig.save()
    print " Saving Configuraion " 
    matchFound = 1
break
if (matchFound == 0):
    print " No match was found for the given JASSAuthData : "+ alias1

完整代码:

#!/usr/bin/python
import sys,java
from java.util import Properties
from java.io import FileInputStream
from org.python.modules import time
lineSep = java.lang.System.getProperty('line.separator')

def datasource(cluster,user,password,url,env,jdbc_driver,timeOut,maxConn,minConn,reapTime,unusdTimeout,agedTimeout):

    #Declare global variables 
    global    AdminConfig 
    global    AdminControl

## JDBCProvider ##
name = "jdbcOracle"+ env
print " Name of JDBC Provider which will be created ---> " + name
print " ----------------------------------------------------------------------------------------- "

# Gets the name of cell
cell = AdminControl.getCell()
cellid = AdminConfig.getid('/Cell:'+ cell +'/')
print " ----------------------------------------------------------------------------------------- "

# checking for the existence of Cluster
Serverid = AdminConfig.getid('/Cell:'+ cell +'/ServerCluster:'+ cluster +'/')
print " Checking for existence of Server :" + cluster
if len(Serverid) == 0:
    print "Cluster doesnot exists "
else:
    print "Cluster exist:"+ cluster
    print " ----------------------------------------------------------------------------------------- "

## removing old jdbc provider and creating a new jdbc provider 
print " Checking for the existence of JDBC Provider :"+ name 
s2 = AdminConfig.getid('/Cell:'+ cell +'/ServerCluster:'+ cluster +'/JDBCProvider:'+ name) 
if len(s2) > 0:
    print " JDBC Provider exists with name :"+ name
    print " Removing JDBC Provider with name :"+ name
    AdminConfig.remove(s2)
    print " JDBC Provider removed "
    AdminConfig.save()
    print " Saving Configuraion "
    print " ----------------------------------------------------------------------------------------- " 

## Creating New JDBC Provider ##
print " Creating New JDBC Provider :"+ name 
n1 = ["name" , name ]
desc = ["description" , "Oracle JDBC Driver"]
impn = ["implementationClassName" , "oracle.jdbc.pool.OracleConnectionPoolDataSource"]
classpath = ["classpath" , jdbc_driver ]
attrs1 = [n1 , impn , desc , classpath]
jdbc = AdminConfig.create('JDBCProvider' , Serverid , attrs1)
print " New JDBC Provider created :"+ name 
AdminConfig.save()
print " Saving Configuraion " 
print " ----------------------------------------------------------------------------------------- "

## checking for the existence of JAASAuthData and deleting ## 
node = AdminControl.getNode()
alias1 = node +"/"+ env
print " Checking for the existence of JAASAUTHDATA :"+ alias1 
jaasAuthDataList = AdminConfig.list("JAASAuthData")
if len(jaasAuthDataList) == 0: 
    print " Creating New JAASAuthData with Alias name :"+ alias1
    sec = AdminConfig.getid('/Cell:'+ cell +'/Security:/')
    alias_attr = ["alias" , alias1]
    desc_attr = ["description" , "alias"]
    userid_attr = ["userId" , user ]
    password_attr = ["password" , password]
    attrs = [alias_attr , desc_attr , userid_attr , password_attr ]
    authdata = AdminConfig.create('JAASAuthData' , sec , attrs)
    print " Created new JASSAuthData with Alias name :"+ alias1
    AdminConfig.save()
    print " Saving Configuraion "
    print " ----------------------------------------------------------------------------------------- "
else :
    matchFound = 0 
    jaasAuthDataList = AdminConfig.list("JAASAuthData") 
    jaasAuthDataList=jaasAuthDataList.split(lineSeparator)
for jaasAuthId in jaasAuthDataList:
    getAlias = AdminConfig.showAttribute(jaasAuthId, "alias")
if (cmp(getAlias,alias1) == 0):
    print " JAASAuthData exists with name :"+ alias1
    print " Removing JAASAuthData with name :"+ alias1
    AdminConfig.remove(jaasAuthId)
    print " JAASAuthData removed " 
    AdminConfig.save()
    print " Saving Configuraion " 
    matchFound = 1
break
if (matchFound == 0):
    print " No match was found for the given JASSAuthData : "+ alias1

#endIf

print " ----------------------------------------------------------------------------------------- "

## J2C Authentication Entries ##
print " Creating New JAASAuthData with Alias name :"+ alias1
sec = AdminConfig.getid('/Cell:'+ cell +'/Security:/')
alias_attr = ["alias" , alias1]
desc_attr = ["description" , "alias"]
userid_attr = ["userId" , user ]
password_attr = ["password" , password]
attrs = [alias_attr , desc_attr , userid_attr , password_attr ]
authdata = AdminConfig.create('JAASAuthData' , sec , attrs)
print " Created new JASSAuthData with Alias name :"+ alias1 
AdminConfig.save()
print " Saving Configuraion "
print " ----------------------------------------------------------------------------------------- " 

## DataSource ##

datasource = "DataSource"+ env
print " Name of datasource which will be created on JDBC Provider :"+ name +" is :"+ datasource
ds = AdminConfig.getid('/Cell:'+ cell +'/ServerCluster:'+ cluster +'/JDBCProvider:'+ name) 
name1 = ["name" , datasource]
jndi = ["jndiName" , "jdbc/tiers3DS"]
authentication = ["authDataAlias" , alias1]
st_cachesize = ["statementCacheSize" , "150"]
ds_hlpclass = ["datasourceHelperClassname" , "com.ibm.websphere.rsadapter.Oracle10gDataStoreHelper"]
map_configalias_attr=["mappingConfigAlias", "DefaultPrincipalMapping"]
map_attrs=[authentication , map_configalias_attr]
mapping_attr=["mapping", map_attrs]
ds_attr = [name1 , jndi , authentication , st_cachesize , ds_hlpclass ,mapping_attr ]
newds = AdminConfig.create('DataSource' , ds , ds_attr)
print " New DataSource created with name :"+ datasource 
AdminConfig.save()
print " Saving Configuraion "
print " ----------------------------------------------------------------------------------------- "

## set the properties for the datasource ##
print " Setting the properties for DataSource :"+ datasource
newds1 = AdminConfig.getid('/Cell:'+ cell +'/ServerCluster:'+ cluster +'/JDBCProvider:'+ name +'/DataSource:'+ datasource)
propSet = AdminConfig.create('J2EEResourcePropertySet' , newds1 , "")
name3 = ["name" , "URL"]
type = ["type" , "java.lang.String"]
required = ["required" , "true"]
value = ["value" , url]
rpAttrs = [name3 , type , required , value]
jrp = AdminConfig.create('J2EEResourceProperty' , propSet , rpAttrs)
print " Properties created for DataSource :"+ datasource 
AdminConfig.save()
print " Saving Configuraion "

print " ----------------------------------------------------------------------------------------- "

# Create an associated connection pool for the new DataSource#
print " Creating Connection Pool Setting for DataSource :"+ datasource
timeout = ["connectionTimeout" , timeOut]
maxconn = ["maxConnections" , maxConn]
minconn = ["minConnections" , minConn]
reaptime = ["reapTime" , reapTime]
unusedtimeout = ["unusedTimeout" , unusdTimeout]
agedtimeout = ["agedTimeout" , agedTimeout]
purgepolicy = ["purgePolicy" , "EntirePool"]
connPoolAttrs = [timeout , maxconn , minconn , reaptime , unusedtimeout , agedtimeout , purgepolicy] 
AdminConfig.create("ConnectionPool", newds , connPoolAttrs)
print " Connection Pool Setting created for DataSource :"+ datasource 
AdminConfig.save()
print " Saving Configuraion "
print " ----------------------------------------------------------------------------------------- "

## Full Syncronization ##
print " Syncronizing configuration with Master Repository "
nodelist = AdminTask.listManagedNodes().split(lineSep)
for nodename in nodelist :
    print " Doing Full Resyncronization of node.......... "

####################Identifying the ConfigRepository MBean and assign it to variable######################
repo = AdminControl.completeObjectName('type=ConfigRepository,process=nodeagent,node='+ nodename +',*')
print AdminControl.invoke(repo, 'refreshRepositoryEpoch')
sync = AdminControl.completeObjectName('cell='+ cell +',node='+ nodename +',type=NodeSync,*')
print AdminControl.invoke(sync , 'sync')
#time.sleep(20)
print " ----------------------------------------------------------------------------------------- "
print " Full Resyncronization completed "
print " ----------------------------------------------------------------------------------------- "

#######Restarting Node Agent#########

nodelist = AdminTask.listManagedNodes().split(lineSep)
for nodename in nodelist :
    print " Restarting Nodeagent of "+nodename+" node " 
    na = AdminControl.queryNames('type=NodeAgent,node='+nodename+',*') 
    AdminControl.invoke(na,'restart','true true') 
print " ----------------------------------------------------------------------------------------- "
time.sleep(30)

##########Testing Database Connection################
dsid = AdminConfig.getid('/ServerCluster:'+ cluster +'/JDBCProvider:'+ name +'/DataSource:'+ datasource +'/')
print " Testing Database Connection"
print AdminControl.testConnection(dsid)
print " ----------------------------------------------------------------------------------------- "
####################################################################################################################
####################################################################################################################

#main program starts here
arglen=len(sys.argv)
num_exp_args=2
if (arglen != num_exp_args):
    print "Two arguments are required.one of them is property file"
    print " ----------------------------------------------------------------------------------------- "
    sys.exit(-1)
    propFile=sys.argv[0]
    properties=Properties();
try:
    properties.load(FileInputStream(propFile))
    print " ----------------------------------------------------------------------------------------- "
    print "Succesfully read property file "+propFile
    print " ----------------------------------------------------------------------------------------- "
except:
    print "Cannot read property file "+propFile
    sys.exit(-1)
    print " ----------------------------------------------------------------------------------------- "
    cluster = str(properties.getProperty("CLUSTER_NAME"))
    env = sys.argv[1]
    user = str(properties.getProperty("dbms.userId"))
    password = str(properties.getProperty("dbms.password"))
    url = str(properties.getProperty("dbms.url"))
    jdbc_driver = str(properties.getProperty("JDBC_DRIVER_PATH"))
    timeOut = int(properties.getProperty("TIMEOUT"))
    maxConn = int(properties.getProperty("MAXCONN"))
    minConn = int(properties.getProperty("MINCONN"))
    reapTime = int(properties.getProperty("REAPTIME"))
    unusdTimeout = int(properties.getProperty("UNUSEDTIMEOUT"))
    agedTimeout = int(properties.getProperty("AGEDTIMEOUT"))
    datasource(cluster,user,password,url,env,jdbc_driver,timeOut,maxConn,minConn,reapTime,unusdTimeout,agedTimeout)

1 个答案:

答案 0 :(得分:1)

您的break 在循环之外。缩进问题:

for jaasAuthId in jaasAuthDataList:
    getAlias = AdminConfig.showAttribute(jaasAuthId, "alias")
    if (cmp(getAlias,alias1) == 0):
        print " JAASAuthData exists with name :"+ alias1
        print " Removing JAASAuthData with name :"+ alias1
        AdminConfig.remove(jaasAuthId)
        print " JAASAuthData removed " 
        AdminConfig.save()
        print " Saving Configuraion " 
        matchFound = 1
    break

你可能还需要在下面缩进多行,我不能确定这一点,但这很重要。