def installOpenjre(openjreFile, progress): td = "/var/snap/subutai-dev/common/lxc/tmpdir/" awk = " | awk '{print $5}'" rc = subutai.SSHStartSession("mng-setup2") if rc != 0: subutai.AddStatus("Downloading JVM") subutai.SSHRun("sudo subutai -d import openjre16 1>/tmp/openjre16-1.log 2>/tmp/openjre16-2.log") return 0 subutai.AddStatus("Downloading JVM") rc = subutai.SSHExecute("mng-setup2", "sudo subutai import openjre16 &") if rc[0] != 0: subutai.RaiseError("Failed to install OpenJRE in background. Switching to static install") subutai.SSHRun("sudo subutai import openjre16 >/tmp/openjre16.log 2>&1") else: checks = 0 while True: out = subutai.SSHRunOut("ps -ef | grep \"subutai import\" | grep -v grep | awk '{print $2}'") if out == '': break sleep(1) checks = checks + 1 if checks >= 60: subutai.SSHExecute("mng-setup2", "ls / &") checks = 0 out = subutai.SSHRunOut("ls -l "+td+openjreFile+awk) try: val = int(out) progress.setOpenjreProgress(val) progress.updateProgress() except: pass subutai.SSHStopSession("mng-setup2")
def InstallUbuntu(self): subutai.SetAction("INSTUB") td = "/var/snap/subutai/common/lxc/tmpdir/" awk = " | awk '{print $5}'" subutai.AddStatus("Downloading Ubuntu Linux") rc = subutai.SSHStartSession("mng-setup") if rc != 0: subutai.RaiseError( "Failed to install Ubuntu interactively. Switching to static install" ) subutai.SSHRun( "sudo subutai -d import ubuntu16 >/tmp/ubuntu16.log 2>&1") return 0 rc = subutai.SSHExecute("mng-setup", "sudo subutai import ubuntu16 &") if rc[0] != 0: subutai.RaiseError( "Failed to install Ubuntu in background. Switching to static install" ) subutai.SSHRun( "sudo subutai -d import ubuntu16 >/tmp/ubuntu16.log 2>&1") else: checks = 0 while True: out = subutai.SSHRunOut( "ps -ef | grep \"subutai import\" | grep -v grep | awk '{print $2}'" ) if out == '': subutai.AddStatus("Download completed") break sleep(1) checks = checks + 1 if checks >= 60: subutai.SSHExecute("mng-setup", "ls / &") checks = 0 out = subutai.SSHRunOut("ls -l " + td + self.UbuntuFile + awk) try: val = int(out) self.progress.setUbuntuProgress(val) self.progress.updateProgress() except: pass subutai.SSHStopSession("mng-setup") return 0
def InstallManagement(self): subutai.SetAction("INSTMNG") td = "/var/snap/subutai/common/lxc/tmpdir/" awk = " | awk '{print $5}'" rc = subutai.SSHStartSession("mng-setup3") if rc != 0: subutai.AddStatus("Installing Management Container") subutai.SSHRun( "sudo subutai -d import management 1>/tmp/management-1.log 2>/tmp/management-2.log" ) return 0 subutai.AddStatus("Installing Management Container") rc = subutai.SSHExecute("mng-setup3", "sudo subutai import management &") if rc[0] != 0: subutai.RaiseError( "Failed to install Management in background. Switching to static install" ) subutai.SSHRun( "sudo subutai import management >/tmp/management.log 2>&1") else: checks = 0 while True: out = subutai.SSHRunOut( "ps -ef | grep \"subutai import\" | grep -v grep | awk '{print $2}'" ) if out == '': break sleep(1) checks = checks + 1 if checks >= 60: subutai.SSHExecute("mng-setup3", "ls / &") checks = 0 out = subutai.SSHRunOut("ls -l " + td + "*" + self.ManagementFile + "*" + awk) try: val = int(out) self.progress.setManagementProgress(val) self.progress.updateProgress() except: pass subutai.SSHStopSession("mng-setup3") return 0
def installSnapFromStore(): subutai.AddStatus("Installing Subutai") subutai.log("info", "Installing subutai snap") subutai.SSHRun("sudo snap install --beta --devmode subutai-dev > /tmp/subutai-snap.log 2>&1") sleep(5) out = subutai.SSHRunOut("which subutai-dev >/dev/null; echo $?") if out != '0': return 55 return 0
def waitForNetwork(): subutai.AddStatus("Waiting for network") attempts = 0 while True: out = subutai.SSHRunOut('if [ $(timeout 3 ping 8.8.8.8 -c1 2>/dev/null | grep -c "1 received") -ne 1 ]; then echo 1; else echo 0; fi') if out == '0': break if attempts >= 60: subutai.RaiseError("Failed to establish Internet connection on peer") return 82 attempts = attempts + 1 sleep(1) return 0
def InstallSnap(self): subutai.SetAction("INSTSNAP") subutai.AddStatus("Installing Subutai. This may take a few minutes") command = 'sudo snap install --beta --devmode subutai > /tmp/subutai-snap.log 2>&1' attempts = 0 while attempts < 10: subutai.SSHRun( "sudo snap install --beta --devmode subutai > /tmp/subutai-snap.log 2>&1" ) out = subutai.SSHRunOut("which subutai >/dev/null; echo $?") if out == '0': return 0 sleep(30) attempts = attempts + 1 return 55
def WaitSSH(self): subutai.SetAction("WAITSSH") attempts = 0 while subutai.TestSSH() != 0: sleep(5) attempts = attempts + 1 if attempts == 30: subutai.RaiseError("SSH connection failed after 30 attempts") return 34 attempts = 0 out = '' while out == '': out = subutai.SSHRunOut("uptime") attempts = attempts + 1 if attempts >= 30: subutai.RaiseError("SSH connection failed after 30 attempts") return 35 return 0
def waitSSH(): subutai.log("info", "Waiting for machine to bring SSH") attempts = 0 while subutai.TestSSH() != 0: sleep(1) attempts = attempts + 1 if attempts == 30: subutai.log("error", "SSH timeout for 30 second") return 34 attempts = 0 out = '' while out == '': out = subutai.SSHRunOut("uptime") attempts = attempts + 1 if attempts >= 30: subutai.RaiseError("SSH connection failed after 30 attempts") subutai.log("error", "SSH timeout for 30 second") return 35 subutai.log("info", "SSH Connected") return 0