コード例 #1
0
def refreshHost(host):
	print "Starting refresh " + host + " at "+time.strftime("%H:%M:%S", time.gmtime())
	if MarkLogicEC2Config.isWindows():
		MarkLogicEC2Lib.sys("Reinstalling for "+host,"powershell -file " + reinstallFileName(host))		
	elif MarkLogicEC2Config.isRedHat():
		refreshRedHatHost(host)
	print "Finishing refresh " + host + " at "+time.strftime("%H:%M:%S", time.gmtime())
コード例 #2
0
def setupHost(host):
	print "Setting up "+host
	if MarkLogicEC2Config.isWindows():
		setupWindowsHost(host)
		MarkLogicEC2Lib.sys("Setting up "+host,"powershell -file pws\server-setup.ps1")		
	elif MarkLogicEC2Config.isRedHat():
		setupRedHatHost(host)
コード例 #3
0
def cleanHost(host):
	print "Terminating host "+host
	dns_name = getInstance(host).public_dns_name	
	volumes_for_deletion = []

	# Get attached volumes before terminating - you can't get them after
	for volume in ec2.get_all_volumes():
#		print "Volume is "+volume.id
		if volume.attach_data.instance_id == host:
#			print "Adding "+volume.id
			volumes_for_deletion.append(volume.id)
			
	getInstance(host).terminate()
	
	waitForTerminatedState(host)
	
	# Now delete un-deleted volumes - problem with Red Hat instances is that they're not auto-deleted
	for volume in ec2.get_all_volumes():
		for volume_for_deletion in volumes_for_deletion:
			if volume.id == volume_for_deletion:			
				print "Removing volume " + volume.id
				volume.delete()
		
	if(MarkLogicEC2Config.USE_ELASTIC_IP):	
		if getElasticIP(host):		
			print "Removing elastic ip "+str(getElasticIP(host))
			getElasticIP(host).release()
	
	for file in (adminFileName(host),sessionFileName(host),reinstallFileName(host),RDPFileName(host),sshFileName(host)):
		removeFile(file)
	
	if(MarkLogicEC2Config.isRedHat()):
		MarkLogicEC2Lib.sys("Remove from known hosts file","ssh-keygen -R "+dns_name)
コード例 #4
0
def setupRedHatHost(host):
	instance = getInstance(host)
	dns_name =  instance.public_dns_name
	
	print "Starting "+dns_name+" setup at "+time.strftime("%H:%M:%S", time.gmtime())
	ssh_cmd = sshToBoxString(dns_name)

	MarkLogicEC2Lib.sys("Sort out device mapping ...",ssh_cmd + "'" + lnCommand() + "'")
	
	MarkLogicEC2Lib.sys("Remove host firewall",ssh_cmd+"'service iptables save ; service iptables stop ; chkconfig iptables off'")
	MarkLogicEC2Lib.sys("Download MarkLogic install",ssh_cmd + "'cd "+MarkLogicEC2Config.INSTALL_DIR+";curl -O "+MarkLogicEC2Config.MARKLOGIC_DOWNLOAD_URL + MarkLogicEC2Config.MARKLOGIC_EXE+"'")
	MarkLogicEC2Lib.sys("Copy required files","scp config.ini MarkLogicEC2Config.py MarkLogicEC2Lib.py for_remote/* root@"+dns_name+":"+MarkLogicEC2Config.INSTALL_DIR)
	MarkLogicEC2Lib.sys("Install MarkLogic",ssh_cmd+"\"cd "+MarkLogicEC2Config.INSTALL_DIR+";python MarkLogicSetup.py\"")
	
	createAdminConsoleLink(host)
	
	print "Finishing "+dns_name+" config at "+time.strftime("%H:%M:%S", time.gmtime())
コード例 #5
0
def startInstance(host):
	if(not(isRunning(host))):
		print "Starting thaw of " + host + " at "+time.strftime("%H:%M:%S", time.gmtime())
		ec2.start_instances(host)
		waitForRunningState(host)
		if(MarkLogicEC2Config.USE_ELASTIC_IP):
			getElasticIP(host).associate(host)
			print "Elastic IP added for host " + host + " - " + str(getElasticIP(host))
		waitForReachableState(host)			
		if MarkLogicEC2Config.isRedHat():
			MarkLogicEC2Lib.sys("Check device mapping ...",sshToBoxString(getInstance(host).dns_name) + "'" + lnCommand()+ "'")			
			createSSHLink(host)
		if MarkLogicEC2Config.isWindows():
			createRDPLink(host)
			createSessionLink(host)
			createReinstallScript(host)					
		createAdminConsoleLink(host)
		
		print "Host " + host + " started at "+time.strftime("%H:%M:%S", time.gmtime())
	else:
		print "Host " + host + " already running"
コード例 #6
0
def refreshRedHatHost(host):
	instance = getInstance(host)

	dns_name =  instance.public_dns_name
	ssh_cmd = sshToBoxString(dns_name)

	MarkLogicEC2Lib.sys("Stopping MarkLogic",ssh_cmd+"'/etc/init.d/MarkLogic stop'")
	MarkLogicEC2Lib.sys("Remove previous install",ssh_cmd+"\"rm -rf "+MarkLogicEC2Config.MARKLOGIC_REDHAT_DATA_ROOT +"/*\"")

	MarkLogicEC2Lib.sys("Install MarkLogic",ssh_cmd+"\"cd "+MarkLogicEC2Config.INSTALL_DIR+";python MarkLogicSetup.py\"")

	
	createAdminConsoleLink(host)
コード例 #7
0
def restartHost(host):
	if(MarkLogicEC2Config.isRedHat()):
		MarkLogicEC2Lib.sys("Restarting "+host,sshToBoxString(getInstance(host).dns_name) + "'/etc/init.d/MarkLogic restart'")
コード例 #8
0
def nameHost(host):	
	dns_name = getInstance(host).public_dns_name
	HOST_ARGS = { 'HOST-NAME':dns_name }
	MarkLogicEC2Lib.configureAuthHttpProcess(dns_name)
	MarkLogicEC2Lib.httpProcess("Setting host name",MarkLogicEC2Lib.adminURL(dns_name) +"set-host-name.xqy", HOST_ARGS)
コード例 #9
0
def cluster():	
	ROOT_HOST = ""
	print "Starting cluster at "+time.strftime("%H:%M:%S", time.gmtime())
	
	for host in getAvailableHosts():
		MarkLogicEC2Lib.configureAuthHttpProcess(getInstance(host).public_dns_name)	
		if ROOT_HOST:
			args = {'server' : ROOT_HOST, 'joiner' : getInstance(host).public_dns_name, 'pass' : MarkLogicEC2Config.ADMIN_PASSWORD }
			
			MarkLogicEC2Lib.httpProcess("Joining Cluster","http://" + getInstance(host).public_dns_name + ":8001/join-cluster.xqy", args)
		else:
			ROOT_HOST = getInstance(host).public_dns_name

	ROOT_HOST = ""

	for host in getAvailableHosts():
		if ROOT_HOST:
			args = {'server' : ROOT_HOST, 'joiner' : getInstance(host).public_dns_name, 'pass' : MarkLogicEC2Config.ADMIN_PASSWORD}
			MarkLogicEC2Lib.configureAuthHttpProcess(ROOT_HOST)
			MarkLogicEC2Lib.httpProcess("Joining Cluster II","http://" + ROOT_HOST + ":8001/transfer-cluster-config.xqy",args)
			MarkLogicEC2Lib.configureAuthHttpProcess(getInstance(host).public_dns_name)
			MarkLogicEC2Lib.httpProcess("Restarting...","http://" + getInstance(host).public_dns_name + ":8001/restart.xqy")
		else:
			ROOT_HOST = getInstance(host).public_dns_name

	MarkLogicEC2Lib.configureAuthHttpProcess(ROOT_HOST)
	MarkLogicEC2Lib.httpProcess("Setting cluster name to "+MarkLogicEC2Config.CLUSTER_NAME,"http://" + ROOT_HOST + ":8001/set-cluster-name.xqy",{"CLUSTER-NAME":MarkLogicEC2Config.CLUSTER_NAME})	
	print "Finishing cluster at "+time.strftime("%H:%M:%S", time.gmtime())
コード例 #10
0
	for i in range(MarkLogicEC2Config.HOST_COUNT):
		createHost()
	for host in getAvailableHosts():
		setupHost(host)			
	cluster()
elif(mode == RESTART_MODE):
	if(len(sys.argv) > 2):
		host = getHostForRequest(sys.argv[2])
		restartHost(host)
	else:
		for host in getAvailableHosts():
			restartHost(host)			
elif(mode == DEVICES_MODE):
	if(len(sys.argv) > 2):
		host = getHostForRequest(sys.argv[2])
		MarkLogicEC2Lib.sys("Check device mapping ...",sshToBoxString(getInstance(host).dns_name) + "'" + lnCommand()+ "'")						
	else:
		for host in getAvailableHosts():
			MarkLogicEC2Lib.sys("Check device mapping ...",sshToBoxString(getInstance(host).dns_name) + "'" + lnCommand()+ "'")												
elif(mode == REMOTE_MODE):
	if(len(sys.argv) > 2):			
		dns_name =  getInstance(getHostForRequest(sys.argv[2])).dns_name
		if MarkLogicEC2Config.isRedHat():
			MarkLogicEC2Lib.sys("Logging into box "+dns_name,sshToBoxString(dns_name))
		elif MarkLogicEC2Config.isWindows():
			MarkLogicEC2Lib.sys("Logging into box "+dns_name,"powershell -noexit -file sessions\\"+ dns_name + ".session.ps1")
	else:
		print "You must supply an index or an instance id"
else:
	print mode +" is not a permitted mode"