Esempio n. 1
0
    def SetupVirtualMachine(self):
        subutai.AddStatus("Setting up virtual machine")
        subutai.SetAction("INSTVM")
        rc = 0
        subutai.AddStatus("Installing VM")
        if subutai.CheckVMExists(self.name) != 0:
            subutai.download("core.ova")
            while subutai.isDownloadComplete() != 1:
                sleep(0.05)
                self.progress.setCoreProgress(subutai.GetBytesDownload())
                self.progress.updateProgress()

            subutai.AddStatus("VM Image downloaded")

        self.progress.setCoreProgress(self.progress.getCoreSize())
        self.progress.updateProgress()
        rc = subutai.VBoxS("import " +
                           subutai.GetTmpDir().replace(" ", "+++") +
                           "core.ova --vsys 0 --vmname " + self.name)
        if rc != 0:
            subutai.RaiseError("Failed to import Virtual Machine")
            return rc

        sleep(3)
        cpus = subutai.GetCoreNum()
        mem = subutai.GetMemSize() * 1024
        subutai.VBox("modifyvm " + self.name + " --cpus " + str(cpus))
        subutai.VBox("modifyvm " + self.name + " --memory " + str(mem))
        return rc
Esempio n. 2
0
    def StartVirtualMachine(self):
        subutai.SetAction("STARTVM")
        rc = 0
        if subutai.CheckVMRunning(self.name) != 0:
            rc = subutai.VBoxS("startvm --type headless " + self.name)

        if rc != 0:
            subutai.RaiseError("Failed to start Virtual Machine")

        return rc
Esempio n. 3
0
    def RetrievePeerIP(self):
        subutai.SetAction("GETIP")
        self.PeerIP = subutai.GetPeerIP()
        self.LocalIP = '127.0.0.1'
        # Fixing peer ip
        self.PeerIP = self.LocalIP

        if self.PeerIP == "":
            subutai.RaiseError("Failed to determine peer IP address")
            return 1

        return 0
Esempio n. 4
0
 def Install(self):
     subutai.SetAction('INST')
     if not os.path.exists(self.tmp+self.GoogleChromeFile):
         return 0
     try:
         script = 'do shell script "/usr/bin/tar -xf '+self.tmp+self.GoogleChromeFile+' -C /Applications" with administrator privileges'
         p = Popen(['osascript', '-'], stdin=PIPE, stdout=PIPE, stderr=PIPE, universal_newlines=True)
         stdout, stderr = p.communicate(script)
     except:
         subutai.RaiseError("Failed to install Google Chrome")
         return 64
     return 0
Esempio n. 5
0
    def StopVirtualMachine(self):
        subutai.SetAction("STOPVM")
        subutai.SSHRun("sync && poweroff")
        subutai.log("info", "Stopping Virtual machine")
        sleep(15)
        rc = 0
        if subutai.CheckVMRunning(self.name) == 0:
            sleep(15)
            if subutai.CheckVMRunning(self.name) == 0:
                rc = subutai.VBoxS("controlvm " + self.name + " poweroff soft")

        return rc
Esempio n. 6
0
    def WaitPeerResponse(self):
        subutai.SetAction("WAITREST")
        ip = self.LocalIP
        if self.PeerIP != '':
            ip = self.PeerIP

        subutai.AddStatus("Waiting for peer at " + ip)
        attempts = 0
        while subutai.IsPeerReady(ip) != 0:
            sleep(2)
            attempts = attempts + 1
            if attempts >= 30:
                return 14
        return 0
Esempio n. 7
0
    def Download(self):
        rc = 0
        subutai.SetAction("DWL")
        if not self.__checkGoogleChrome():
            subutai.AddStatus("Downloading Google Chrome")
            subutai.download(self.GoogleChromeFile)
            while subutai.isDownloadComplete() != 1:
                sleep(0.05)
                self.progress.setChromeProgress(subutai.GetBytesDownload())
                self.progress.updateProgress()

            self.progress.setChromeProgress(self.progress.getChromeSize())
            self.progress.updateProgress()

        return rc
Esempio n. 8
0
    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
Esempio n. 9
0
 def ConfigureNetwork(self):
     subutai.AddStatus("(Re)configuring Network")
     subutai.SetAction("NETCONF")
     rc = 0
     gateway = subutai.GetDefaultRoutingInterface()
     bridged = subutai.GetVBoxBridgedInterface(gateway)
     bridged = bridged.replace(' ', '+++')
     subutai.VBox("modifyvm " + self.name +
                  ' --nic1 bridged --bridgeadapter1 ' + bridged)
     subutai.VBox("modifyvm " + self.name + " --cableconnected1 on")
     subutai.VBox("modifyvm " + self.name + " --nic2 nat")
     subutai.VBox("modifyvm " + self.name + " --cableconnected2 on")
     subutai.VBox(
         "modifyvm " + self.name +
         ' --natpf2 ssh-fwd,tcp,,4567,,22 --natpf2 https-fwd,tcp,,9999,,8443'
     )
     return rc
Esempio n. 10
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
Esempio n. 11
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
Esempio n. 12
0
    def InstallOpenJRE(self):
        subutai.SetAction("INSTJRE")
        td = "/var/snap/subutai/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 + self.OpenJREFile + awk)
                try:
                    val = int(out)
                    self.progress.setOpenjreProgress(val)
                    self.progress.updateProgress()
                except:
                    pass

        subutai.SSHStopSession("mng-setup2")
        return 0
Esempio n. 13
0
    def PreconfigureNetwork(self):
        subutai.AddStatus("Configuring Network")
        subutai.SetAction("NETPCONF")
        subutai.VBox("modifyvm " + self.name + " --nic1 nat")
        subutai.VBox("modifyvm " + self.name + " --cableconnected1 on")
        subutai.VBox(
            "modifyvm " + self.name +
            " --natpf1 ssh-fwd,tcp,,4567,,22 --natpf1 https-fwd,tcp,,9999,,8443"
        )
        subutai.VBox("modifyvm " + self.name + " --rtcuseutc on")
        adapterName = subutai.GetVBoxHostOnlyInterface()
        adapter = adapterName.replace(' ', '+++')
        if adapter != 'undefined':
            subutai.Information("Enabling host-only adapter " + adapterName)
            subutai.VBox("modifyvm " + self.name +
                         " --nic3 hostonly --hostonlyadapter3 " + adapter)

        return 0
Esempio n. 14
0
    def WaitForNetwork(self):
        subutai.AddStatus("Waiting for network")
        subutai.SetAction("NETWAIT")
        ping = (
            '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')
        attempts = 0
        while True:
            out = subutai.SSHRunOut(ping)
            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
Esempio n. 15
0
    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
Esempio n. 16
0
    def Download(self):
        subutai.SetAction('DWL')
        rc = 0
        if not CheckOsascript() and not CheckCocoasudo(self.install):
            rc = InstallCocoasudo(self.tmp, self.install, self.progress)
        if rc != 0:
            return rc

        if not self.__checkGoogleChrome():
            subutai.AddStatus("Downloading Google Chrome")
            subutai.download(self.GoogleChromeFile)
            while subutai.isDownloadComplete() != 1:
                sleep(0.05)
                self.progress.setChromeProgress(subutai.GetBytesDownload())
                self.progress.updateProgress()

            self.progress.setChromeProgress(self.progress.getChromeSize())
            self.updateProgress()
        
        return rc
Esempio n. 17
0
 def PostInstall(self):
     subutai.SetAction('POSTINST')
     pfile = 'ffddnlbamkjlbngpekmdpnoccckapcnh.json'
     location = os.environ['HOME'] + '/Library/Application Support/Google/Chrome/External Extensions'
     slocation = os.environ['HOME'] + '/Library/Application\ Support/Google/Chrome/External\ Extensions/'
     script = 'tell application "Google Chrome" to quit'
     p = Popen(['osascript', '-'], stdin=PIPE, stdout=PIPE, stderr=PIPE, universal_newlines=True)
     stdout, stderr = p.communicate(script)
     postinst = subuco.PostInstall(self.tmp)
     postinst.append('if [ ! -d "'+location+'" ]; then')
     postinst.append('mkdir -p ' + slocation)
     postinst.append('fi')
     postinst.append('rm -f '+slocation+pfile)
     postinst.append('cp '+self.tmp+pfile+' '+slocation+pfile)
     postinst.append('chown -R '+os.environ['USER']+' '+os.environ['HOME']+'/Library/Application\ Support/Google' )
     ins = 'do shell script "/bin/sh '+postinst.get()+'" with administrator privileges'
     p = Popen(['osascript', '-'], stdin=PIPE, stdout=PIPE, stderr=PIPE, universal_newlines=True)
     stdout, stderr = p.communicate(ins)
     if p.returncode != 0:
         return 95
     return 0
Esempio n. 18
0
 def PostInstall(self):
     self.__writeJson()
     subutai.SetAction("POSINST")
     location = '/opt/google/chrome/extensions/'
     postinst = subuco.PostInstall(self.tmp)
     postinst.append('dpkg -i ' + self.tmp + self.GoogleChromeFile)
     postinst.append('apt-get install -f -y')
     if not os.path.exists(location):
         postinst.append('mkdir -p ' + location)
     postinst.append('cp ' + self.tmp + self.Plugin + ' ' + location)
     try:
         p = Popen([
             '/usr/bin/gksudo', '--message', 'Finalize E2E Installation',
             postinst.get()
         ],
                   stdin=PIPE,
                   stdout=PIPE,
                   stderr=PIPE,
                   universal_newlines=True)
         stdout, stderr = p.communicate('')
     except:
         subutai.RaiseError("Failed to install Google Chrome")
         return 64
     return 0
Esempio n. 19
0
 def PreInstall(self):
     subutai.SetAction('PREINST')
     self.progress.setChrome(self.GoogleChromeFile)
     self.progress.setCocoasudo(self.CocoasudoFile)
     self.progress.calculateTotal()
     return 0
Esempio n. 20
0
 def SetupSSH(self):
     subutai.SetAction("SETUPSSH")
     subutai.log("info", "Setting up SSH")
     subutai.SSHRun("mkdir -p /home/subutai/.ssh")
     subutai.InstallSSHKey()
     return 0
Esempio n. 21
0
 def Install(self):
     subutai.SetAction("INST")
     return 0
Esempio n. 22
0
 def PreInstall(self):
     subutai.SetAction("PREINST")
     self.progress.setChrome(self.GoogleChromeFile)
     self.progress.calculateTotal()
     return 0
Esempio n. 23
0
 def InitBTRFS(self):
     subutai.SetAction("INITBTRFS")
     subutai.AddStatus("Initializing BTRFS")
     subutai.SSHRun("sudo subutai.btrfsinit /dev/sdb")
     return 0
Esempio n. 24
0
 def SetupAlias(self):
     subutai.SetAction("SETALIAS")
     subutai.log("info", "Setting Alias")
     subutai.SSHRun("sudo bash -c 'snap alias subutai-dev subutai'")
     return 0