def getKnoxHDFSURL(nameservice2=False): KNOX_HOST = Config.get('knox', 'KNOX_HOST').split(',')[0] if HDFS.isFederated(): if nameservice2: baseUrl = "https://%s:8443/gateway/ui_%s/hdfs/" % ( KNOX_HOST, HDFS.getNameServices()[1]) else: baseUrl = "https://%s:8443/gateway/ui_%s/hdfs/" % ( KNOX_HOST, HDFS.getNameServices()[0]) else: baseUrl = "https://%s:8443/gateway/ui/hdfs/" % KNOX_HOST baseUrlWithNNHost = "%s?host=%s" % (baseUrl, getNameNodeURL(nameservice2)) logger.info("URL being returned is - %s" % baseUrlWithNNHost) return baseUrl, baseUrlWithNNHost
def setupKnoxProxyRanger(setupOnlyFiles=False): if not setupOnlyFiles: logger.info( "============================== %s.%s =============================" % (__name__, sys._getframe().f_code.co_name)) #Copy ui.xml to topologies after replacing hostnames knoxproxy_topo_file = os.path.join(_workspace, "data", "knox", "ui.xml") with open(knoxproxy_topo_file, 'r') as mfile: proxy_topo = mfile.read() ambari_host = CONF['AMBARI_HOST'] admin_host = CONF['XA_ADMIN_HOST'] #change regex to match ambari_host / ranger_host to respective hostnames Updated_Proxy_Topo = re.sub(r"ambari_host", ambari_host, proxy_topo) Final_Proxy_Topo = re.sub(r"ranger_host", admin_host, Updated_Proxy_Topo) #write Final_Proxy_Topo to ui.xml with open(knoxproxy_topo_file, 'w') as file: file.write(Final_Proxy_Topo) # SCP ui.xml to Knox Host knox_proxy_topo = os.path.join(_workspace, "data", "knox", "ui.xml") Machine.runas( user=Machine.getAdminUser(), cmd= "scp -o StrictHostKeyChecking=no -r -i /root/ec2-keypair %s root@%s:%s" % (knox_proxy_topo, CONF['KNOX_HOST'], KNOX_TOPOLOGY_DIR), host=CONF['AMBARI_HOST'], cwd=None, env=None, logoutput=True, passwd=Machine.getAdminPasswd()) Machine.runas(user=Machine.getAdminUser(), cmd="chown knox:knox %sui.xml" % (KNOX_TOPOLOGY_DIR), host=CONF['KNOX_HOST'], cwd=None, env=None, logoutput=True, passwd=Machine.getAdminPasswd()) Machine.runas(user=Machine.getAdminUser(), cmd="chmod 644 %sui.xml" % (KNOX_TOPOLOGY_DIR), host=CONF['KNOX_HOST'], cwd=None, env=None, logoutput=True, passwd=Machine.getAdminPasswd()) #In ranger test case, change HOST in admin.properties and KnoxSSO to false, run test case, revert changes if HDFS.isFederated(): ui_xml_name = 'ui_' + HDFS.getNameServices()[1] else: ui_xml_name = 'ui' ranger_url = "HOST=https:\/\/" + CONF[ 'KNOX_HOST'] + ":8443\/gateway\/" + ui_xml_name + "\/ranger\//' " + admin_prop_loc Machine.runas(user=Machine.getAdminUser(), cmd="sed -i 's/^ui_xml_name.*/ui_xml_name=" + ui_xml_name + "/' %s" % (admin_prop_loc)) Machine.runas(user=Machine.getAdminUser(), cmd="sed -i '0,/^HOST.*/s//%s" % (ranger_url), host=CONF['AMBARI_HOST'], cwd=None, env=None, logoutput=True, passwd=Machine.getAdminPasswd()) Machine.runas( user=Machine.getAdminUser(), cmd= "grep -q '^KNOX_PROXY_ENABLED' %s && sed -i 's/^KNOX_PROXY_ENABLED.*/KNOX_PROXY_ENABLED=true/' %s || echo 'KNOX_PROXY_ENABLED=true' >> %s" % (admin_prop_loc, admin_prop_loc, admin_prop_loc), host=CONF['AMBARI_HOST'], cwd=None, env=None, logoutput=True, passwd=Machine.getAdminPasswd()) #wait for topology to be active time.sleep(5)