コード例 #1
0
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
コード例 #2
0
ファイル: knoxsso.py プロジェクト: thakkardharmik/beaver
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)