#There is a change to do to be able to run this WLST script: #vi /opt/oracle/fmw11_1_1_5/osb/common/bin/wlst.sh #change this: #export CLASSPATH #into this: #CLASSPATH=/opt/oracle/fmw11_1_1_5/osb/lib/sb-kernel-api.jar:/opt/oracle/fmw11_1_1_5/osb/lib/sb-kernel-impl.jar:/opt/oracle/fmw11_1_1_5/osb/modules/com.bea.common.configfwk_1.5.0.0.jar:$CLASSPATH #export CLASSPATH import javax.management import java.util import javax.management.remote import javax.naming import weblogic.management.mbeanservers.domainruntime import com.bea.wli.sb.management.configuration from java.util import Hashtable from java.util import HashSet from javax.management.remote import JMXServiceURL from weblogic.management.mbeanservers.domainruntime import DomainRuntimeServiceMBean from javax.naming import Context from javax.management.remote import JMXConnectorFactory from javax.management import ObjectName from com.bea.wli.sb.management.configuration import SessionManagementMBean from com.bea.wli.sb.management.configuration import ALSBConfigurationMBean from com.bea.wli.sb.management.configuration import CommonServiceConfigurationMBean import weblogic.management.jmx.MBeanServerInvocationHandler from com.bea.wli.config import Ref from com.bea.wli.config.env import EnvValueQuery from com.bea.wli.config.env import QualifiedEnvValue from com.bea.wli.config.resource import DependencyQuery from com.bea.wli.sb.management.query import ProxyServiceQuery from com.bea.wli.sb.management.query import BusinessServiceQuery from com.bea.wli.sb.util import EnvValueTypes from java.util import Collection from java.util import Collections def readvarsDPCL(clargs): print "readvarsDPCL executed with clargs=", clargs domain = None password = None command = None list = None opts, args = getopt.getopt(clargs, "d:p:c:l:") for opt, arg in opts: if opt in "-d": domain = arg if opt in "-p": password = arg if opt in "-c": command = arg if opt in "-l": list = arg return domain, password, command, list def enableDisableAllServices(command): refs = configMBean.getRefs(Ref.DOMAIN) refsList = ArrayList() refsList.addAll(refs) for ref in refsList : if ref.getTypeId() == "ProxyService" or ref.getTypeId() == "BusinessService" : if ref.getTypeId() == "ProxyService" : projectName = ref.getFullName() found = False for project in list.split(','): if project in projectName: found = True if (list == 'ALL') or found: if command == 'enable': print "enabling service for ", projectName proxyServiceConfigurationMBean.enableService(ref) if command == 'disable': print "disabling service for ", projectName proxyServiceConfigurationMBean.disableService(ref) if command == 'status': print "service ", projectName , " enabled=", proxyServiceConfigurationMBean.isEnabled(ref) #reading command line parameters domain, password, command, list = readvarsDPCL(sys.argv[1:]) print "domain=", domain if (domain == None) : print('ERROR: invalid command, expected arguments "domain" ') exit() #please enter here your parameters adminUserName, adminPassword, adminURL = ["bla", "bla", "bla"] LISTEN_ADDRESS_VIP = 'bla' PORT = 'bla' if (adminPassword == None) : sys.stderr.write("unable to proceed, password not set\n") sys.exit() if (command == None): print "please provide a command (enable/disable)" exit() if (list == None): print "please provide a comma separated list of projects (ALL for all projects)" exit() sessionName = "EnabledChange" serviceURL=JMXServiceURL("t3", LISTEN_ADDRESS_VIP, int(PORT), "/jndi/" + DomainRuntimeServiceMBean.MBEANSERVER_JNDI_NAME) h=Hashtable() h.put(Context.SECURITY_PRINCIPAL, adminUserName) h.put(Context.SECURITY_CREDENTIALS, adminPassword) h.put(JMXConnectorFactory.PROTOCOL_PROVIDER_PACKAGES, "weblogic.management.remote") conn = JMXConnectorFactory.connect(serviceURL, h) mbconn = conn.getMBeanServerConnection() sm = JMX.newMBeanProxy(mbconn, ObjectName.getInstance(SessionManagementMBean.OBJECT_NAME), SessionManagementMBean) sm.createSession(sessionName) try: configMBean = JMX.newMBeanProxy(mbconn, ObjectName.getInstance("com.bea:Name=" + ALSBConfigurationMBean.NAME + "." + sessionName + ",Type=" + ALSBConfigurationMBean.TYPE), ALSBConfigurationMBean) domainService = weblogic.management.jmx.MBeanServerInvocationHandler.newProxyInstance(mbconn, ObjectName(DomainRuntimeServiceMBean.OBJECT_NAME), DomainRuntimeServiceMBean, false) proxyServiceConfigurationMBean = domainService.findService(String("ProxyServiceConfiguration.").concat(sessionName),'com.bea.wli.sb.management.configuration.ProxyServiceConfigurationMBean', None) enableDisableAllServices(command) sm.activateSession(sessionName, "Complete enable/disable services") conn.close() except Exception, inst: print inst print sys.exc_info()[0] dumpStack() if sm.sessionExists(sessionName): print "undoing session" sm.discardSession(sessionName) sys.stderr.write("unable to work on domain " + domain)
An alternative script - connecting with t3 and using the secureConfig files for authentication - is:
#There is a change to do to be able to run this WLST script: #vi /opt/oracle/fmw11_1_1_5/osb/common/bin/wlst.sh #change this: #export CLASSPATH #into this: #CLASSPATH=/opt/oracle/fmw11_1_1_5/osb/lib/sb-kernel-api.jar:/opt/oracle/fmw11_1_1_5/osb/lib/sb-kernel-impl.jar:/opt/oracle/fmw11_1_1_5/osb/modules/com.bea.common.configfwk_1.5.0.0.jar:$CLASSPATH #export CLASSPATH import javax.management import java.util import javax.management.remote import javax.naming import weblogic.management.mbeanservers.domainruntime import com.bea.wli.sb.management.configuration from java.util import Hashtable from java.util import HashSet from javax.management.remote import JMXServiceURL from weblogic.management.mbeanservers.domainruntime import DomainRuntimeServiceMBean from javax.naming import Context from javax.management.remote import JMXConnectorFactory from javax.management import ObjectName from com.bea.wli.sb.management.configuration import SessionManagementMBean from com.bea.wli.sb.management.configuration import ALSBConfigurationMBean from com.bea.wli.sb.management.configuration import CommonServiceConfigurationMBean import weblogic.management.jmx.MBeanServerInvocationHandler from com.bea.wli.config import Ref from cmdbfile import connectSecureToAdmin import getopt verbose = False def readvarsDCL(clargs): print "readvarsDPCL executed with clargs=", clargs domain = None password = None command = None list = None opts, args = getopt.getopt(clargs, "d:c:l:") for opt, arg in opts: if opt in "-d": domain = arg if opt in "-c": command = arg if opt in "-l": list = arg return domain, command, list def enableDisableAllServices(command): refs = configMBean.getRefs(Ref.DOMAIN) refsList = ArrayList() refsList.addAll(refs) if verbose: print len(refsList), " Refs found" for ref in refsList : if ref.getTypeId() == "ProxyService" : projectName = ref.getFullName() if verbose: print "processing ", projectName found = False for project in list.split(','): if project in projectName: found = True if (list == 'ALL') or found: if command == 'enable': print "enabling service for ", projectName proxyServiceConfigurationMBean.enableService(ref) if command == 'disable': print "disabling service for ", projectName proxyServiceConfigurationMBean.disableService(ref) if command == 'status': print "service ", projectName , " enabled=", proxyServiceConfigurationMBean.isEnabled(ref) #reading command line parameters domain, command, list = readvarsDCL(sys.argv[1:]) print "domain=", domain if (domain == None) : print('ERROR: invalid arguments, expected arguments "domain" ') exit() if (command == None or command not in ['enable', 'disable', 'status']): print "please provide a valid command (enable/disable/status)" exit() if (list == None): print "please provide a comma separated list of projects (ALL for all projects)" exit() userConfigFile, userKeyFile, serverURL = connectSecureToAdmin(domain) connect(userConfigFile=userConfigFile,userKeyFile=userKeyFile,url=serverURL) domainRuntime() sessionName = "DisableEnableProjects" + Long(System.currentTimeMillis()).toString() sessionMBean = findService(SessionManagementMBean.NAME,SessionManagementMBean.TYPE) sessionMBean.createSession(sessionName) print 'Session was created … ' + sessionName try: proxyServiceConfigurationMBean = findService("ProxyServiceConfiguration." + sessionName,"com.bea.wli.sb.management.configuration.ProxyServiceConfigurationMBean") configMBean = findService(ALSBConfigurationMBean.NAME, ALSBConfigurationMBean.TYPE) enableDisableAllServices(command) sessionMBean.activateSession(sessionName, "Complete enable/disable services") except Exception, inst: print inst print sys.exc_info()[0] dumpStack() if sessionMBean.sessionExists(sessionName): print "undoing session" sessionMBean.discardSession(sessionName) sys.stderr.write("unable to work on domain " + domain)
No comments:
Post a Comment