mirror of
				https://github.com/xcat2/confluent.git
				synced 2025-11-03 21:02:36 +00:00 
			
		
		
		
	Try an alternative approach to autoconsole errors
This commit is contained in:
		@@ -183,7 +183,7 @@ def get_net_apikey(nodename, mgr):
 | 
			
		||||
    return ''
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def get_apikey(nodename, hosts):
 | 
			
		||||
def get_apikey(nodename, hosts, errout=None):
 | 
			
		||||
    apikey = ""
 | 
			
		||||
    if os.path.exists('/etc/confluent/confluent.apikey'):
 | 
			
		||||
        apikey = open('/etc/confluent/confluent.apikey').read().strip()
 | 
			
		||||
@@ -207,8 +207,10 @@ def get_apikey(nodename, hosts):
 | 
			
		||||
                if apikey:
 | 
			
		||||
                    break
 | 
			
		||||
        if not apikey:
 | 
			
		||||
            sys.stderr.write(
 | 
			
		||||
                "Failed getting API token, check deployment.apiarmed attribute on {}\n".format(nodename))
 | 
			
		||||
            errmsg = "Failed getting API token, check deployment.apiarmed attribute on {}\n".format(nodename)
 | 
			
		||||
            sys.stderr.write(errmsg)
 | 
			
		||||
            if errout:
 | 
			
		||||
                errout.write(errmsg)
 | 
			
		||||
            time.sleep(10)
 | 
			
		||||
    with open('/etc/confluent/confluent.apikey', 'w+') as apiout:
 | 
			
		||||
        apiout.write(apikey)
 | 
			
		||||
@@ -217,7 +219,10 @@ def get_apikey(nodename, hosts):
 | 
			
		||||
    return apikey
 | 
			
		||||
 | 
			
		||||
class HTTPSClient(client.HTTPConnection, object):
 | 
			
		||||
    def __init__(self, usejson=False, port=443, host=None):
 | 
			
		||||
    def __init__(self, usejson=False, port=443, host=None, errout=None):
 | 
			
		||||
        self.errout = None
 | 
			
		||||
        if errout:
 | 
			
		||||
            self.errout = open(errout, 'w')
 | 
			
		||||
        self.stdheaders = {}
 | 
			
		||||
        mgtiface = None
 | 
			
		||||
        if usejson:
 | 
			
		||||
@@ -331,7 +336,10 @@ class HTTPSClient(client.HTTPConnection, object):
 | 
			
		||||
        try:
 | 
			
		||||
            self.sock = ctx.wrap_socket(psock, server_hostname=host)
 | 
			
		||||
        except ssl.SSLError:
 | 
			
		||||
            sys.stderr.write('Error validating certificate on deployer (try `osdeploy initialize -t` on the deployment server {0})\n'.format(host))
 | 
			
		||||
            errmsg = 'Error validating certificate on deployer (try `osdeploy initialize -t` on the deployment server {0})\n'.format(host)
 | 
			
		||||
            sys.stderr.write(errmsg)
 | 
			
		||||
            if self.errout:
 | 
			
		||||
                self.errout.write(errmsg)
 | 
			
		||||
            sys.exit(1)
 | 
			
		||||
 | 
			
		||||
    def grab_url(self, url, data=None, returnrsp=False):
 | 
			
		||||
@@ -387,9 +395,15 @@ if __name__ == '__main__':
 | 
			
		||||
        data = sys.argv.pop(data)
 | 
			
		||||
    except ValueError:
 | 
			
		||||
        data = None
 | 
			
		||||
    try:
 | 
			
		||||
        errout = sys.argv.index('-e')
 | 
			
		||||
        sys.argv.pop(errout)
 | 
			
		||||
        errout = sys.argv.pop(errout)
 | 
			
		||||
    except ValueError:
 | 
			
		||||
        errout = None
 | 
			
		||||
    if outbin:
 | 
			
		||||
        with open(outbin, 'ab+') as outf:
 | 
			
		||||
            reader = HTTPSClient(usejson=usejson).grab_url(
 | 
			
		||||
            reader = HTTPSClient(usejson=usejson, errout=errout).grab_url(
 | 
			
		||||
                sys.argv[1], data, returnrsp=True)
 | 
			
		||||
            chunk = reader.read(16384)
 | 
			
		||||
            while chunk:
 | 
			
		||||
@@ -399,10 +413,10 @@ if __name__ == '__main__':
 | 
			
		||||
    if len(sys.argv) > 2 and os.path.exists(sys.argv[-1]):
 | 
			
		||||
        data = open(sys.argv[-1]).read()
 | 
			
		||||
    if waitfor:
 | 
			
		||||
        client = HTTPSClient(usejson)
 | 
			
		||||
        client = HTTPSClient(usejson, errout=errout)
 | 
			
		||||
        status = 201
 | 
			
		||||
        while status != waitfor:
 | 
			
		||||
            status, rsp = client.grab_url_with_status(sys.argv[1], data)
 | 
			
		||||
            sys.stdout.write(rsp.decode())
 | 
			
		||||
    else:
 | 
			
		||||
        sys.stdout.write(HTTPSClient(usejson).grab_url(sys.argv[1], data).decode())
 | 
			
		||||
        sys.stdout.write(HTTPSClient(usejson, errout=errout).grab_url(sys.argv[1], data).decode())
 | 
			
		||||
 
 | 
			
		||||
@@ -8,6 +8,7 @@ get_remote_apikey() {
 | 
			
		||||
        confluent_apikey=$(cat /etc/confluent/confluent.apikey)
 | 
			
		||||
        if [ -z "$confluent_apikey" ]; then
 | 
			
		||||
            echo "Unable to acquire node api key, set deployment.apiarmed=once on node '$nodename', retrying..."
 | 
			
		||||
            if [ ! -z "$autocons" ]; then echo "Unable to acquire node api key, set deployment.apiarmed=once on node '$nodename', retrying..." > $autocons; fi
 | 
			
		||||
            sleep 10
 | 
			
		||||
        elif [ -c /dev/tpmrm0 ]; then
 | 
			
		||||
            tmpdir=$(mktemp -d)
 | 
			
		||||
@@ -132,8 +133,8 @@ while [ $ready = "0" ]; do
 | 
			
		||||
    elif grep 'SSL' $tmperr > /dev/null; then
 | 
			
		||||
        confluent_mgr=${confluent_mgr#[}
 | 
			
		||||
        confluent_mgr=${confluent_mgr%]}
 | 
			
		||||
    	/opt/confluent/bin/autocons -c > /dev/null
 | 
			
		||||
    	echo 'Failure establishing TLS conneection to '$confluent_mgr' (try `osdeploy initialize -t` on the deployment server)'
 | 
			
		||||
	if [ ! -z "$autocons" ]; then echo 'Failure establishing TLS conneection to '$confluent_mgr' (try `osdeploy initialize -t` on the deployment server)' > $autocons; fi
 | 
			
		||||
    	sleep 1
 | 
			
		||||
    else
 | 
			
		||||
        ready=1
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +1,6 @@
 | 
			
		||||
#!/bin/bash
 | 
			
		||||
echo -n "" >> /tmp/net.ifaces
 | 
			
		||||
echo -n "" > /tmp/01-autocons.devnode
 | 
			
		||||
cat /tls/*.0 >> /etc/pki/tls/certs/ca-bundle.crt
 | 
			
		||||
if ! grep console= /proc/cmdline >& /dev/null; then
 | 
			
		||||
    autocons=$(/opt/confluent/bin/autocons)
 | 
			
		||||
 
 | 
			
		||||
@@ -57,8 +57,12 @@ nodename=$(grep ^NODENAME /etc/confluent/confluent.info|awk '{print $2}')
 | 
			
		||||
#TODO: blkid --label <whatever> to find mounted api
 | 
			
		||||
 | 
			
		||||
cat /tls/*.pem > /etc/confluent/ca.pem
 | 
			
		||||
while ! confluentpython /opt/confluent/bin/apiclient /confluent-api/self/deploycfg2 > /etc/confluent/confluent.deploycfg; do
 | 
			
		||||
	/opt/confluent/bin/autocons -c > /dev/null
 | 
			
		||||
autocons=$(cat /tmp/01-autocons.devnode)
 | 
			
		||||
errout=""
 | 
			
		||||
if [ ! -z "$autocons" ]; then
 | 
			
		||||
    errout="-e $autocons"
 | 
			
		||||
fi
 | 
			
		||||
while ! confluentpython /opt/confluent/bin/apiclient $errout /confluent-api/self/deploycfg2 > /etc/confluent/confluent.deploycfg; do
 | 
			
		||||
	sleep 1
 | 
			
		||||
done
 | 
			
		||||
ifidx=$(cat /tmp/confluent.ifidx)
 | 
			
		||||
@@ -96,7 +100,7 @@ if [ "$textconsole" = "true" ] && ! grep console= /proc/cmdline > /dev/null; the
 | 
			
		||||
	if [ ! -z "$autocons" ]; then
 | 
			
		||||
	    echo Auto-configuring installed system to use text console
 | 
			
		||||
	    echo Auto-configuring installed system to use text console > $autocons
 | 
			
		||||
        /opt/confluent/bin/autocons -c > /dev/null
 | 
			
		||||
            /opt/confluent/bin/autocons -c > /dev/null
 | 
			
		||||
	    cp /tmp/01-autocons.conf /etc/cmdline.d/
 | 
			
		||||
	else
 | 
			
		||||
	    echo "Unable to automatically detect requested text console"
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user