def subutaistart(): rc = 0 tmpDir = subutai.GetTmpDir() installDir = subutai.GetInstallDir() p2p = subup.P2P(tmpDir, installDir) rc = p2p.PreInstall() if rc != 0: sleep(10) subutai.Shutdown() return rc rc = p2p.Download() if rc != 0: sleep(10) subutai.Shutdown() return rc rc = p2p.PostInstall() if rc != 0: sleep(10) subutai.Shutdown() return rc subutai.SetProgress(1.00) sleep(3) subutai.Shutdown() return 0
def subutaistart(): p2pSize = subutai.GetFileSize("p2p") totalSize = p2pSize p2pProgress = 0 subutai.AddStatus("Download p2p binary") sfile = "/etc/systemd/system/p2p.service" if os.path.exists(sfile): subutai.RemoveSystemdUnit("p2p.service") subutai.download("p2p") while subutai.isDownloadComplete() != 1: sleep(0.05) p2pProgress = subutai.GetBytesDownload() updateProgress(p2pProgress, totalSize) subutai.SetProgress(1.0) tmpDir = subutai.GetTmpDir() installDir = subutai.GetInstallDir() subutai.AddStatus("Download finished. Installing") copyfile(tmpDir+"/p2p", installDir+"/bin/p2p") st = os.stat(installDir+"/bin/p2p") os.chmod(installDir+"/bin/p2p", st.st_mode | stat.S_IEXEC) subutai.AddStatus("Creating symlink") subutai.MakeLink(installDir+"/bin/p2p", "/usr/bin/p2p") subutai.AddStatus("Creating systemd unit") unit = ''' [Unit] Description=Service for Subutai p2p daemon Wants=network-online.target After=network-online.target [Service] ExecStart=/opt/subutai/bin/p2p daemon Restart=on-failure WorkingDirectory=/opt/subutai/ TimeoutStopSec=30 Type=simple [Install] WantedBy=multi-user.target '''.strip() f = open(tmpDir+"p2p.service", 'w') f.write(unit) f.close() subutai.AddSystemdUnit("p2p.service", tmpDir+"p2p.service") subutai.Shutdown() return 0
def updateProgress(self): if self.totalSize == 0: return cur = self.coreProgress + self.vboxProgress + self.ubuntuProgress + self.openjreProgress + self.managementProgress val = (int)(100 * cur) / self.totalSize p = (float)(val/100) self.lastProgress = p subutai.SetProgress(p)
def updateProgress(self): if self.totalSize == 0: return cur = self.coreProgress cur = cur + self.vboxProgress cur = cur + self.ubuntuProgress cur = cur + self.openjreProgress cur = cur + self.managementProgress cur = cur + self.p2pProgress cur = cur + self.tuntapProgress cur = cur + self.cocoasudoProgress cur = cur + self.chromeProgress cur = cur + self.nssmProgress val = (int)(100 * cur) / self.totalSize p = (float)(val / 100) self.lastProgress = p subutai.SetProgress(p)
def updateProgress(chrome, total): cur = chrome val = (int)(100 * cur) / total progress = (float)(val / 100) subutai.SetProgress(progress)
def unspin(self): subutai.SetProgress(self.lastProgress)
def spin(self): subutai.SetProgress(-1.0)
def updateProgress(tray, total): cur = tray val = (int)(100 * cur) / total progress = (float)(val / 100) subutai.SetProgress(progress)
def subutaistart(): coreFile = "core.ova" vboxFile = "VirtualBox.pkg" ubuntuFile = "ubuntu16-subutai-template_4.0.0_amd64.tar.gz" openjreFile = "openjre16-subutai-template_4.0.0_amd64.tar.gz" mngFile = "management" progress = subuco.Progress(coreFile, vboxFile, ubuntuFile, openjreFile, mngFile) tmpDir = subutai.GetTmpDir() installDir = subutai.GetInstallDir() rc = subup.InstallPeerPrerequisites(tmpDir, installDir, progress) if rc != 0: subutai.RaiseError("Failed to install prerequisites") sleep(10) return 29 sleep(3) subup.CleanSSHKeys() subutai.SetSSHCredentials("subutai", "ubuntai", "127.0.0.1", 4567) peer = subuco.SubutaiPeer(subup.GetVirtualMachineName(), progress, ubuntuFile, openjreFile, mngFile) if peer.SetupVirtualMachine() != 0: sleep(10) subutai.Shutdown() return peer.ConfigureNetwork() rc = peer.StartVirtualMachine() subutai.AddStatus("Waiting for peer to start and initialize") sleep(40) if subutai.CheckVMRunning(peer.GetName()) != 0: peer.StartVirtualMachine() sleep(50) if subutai.CheckVMRunning(peer.GetName()) != 0: subutai.RaiseError("Aborting") sleep(15) subutai.Shutdown() return 21 progress.spin() rc = peer.WaitSSH() if rc != 0: sleep(10) subutai.Shutdown() return rc peer.SetupSSH() rc = peer.waitForNetwork() if rc != 0: sleep(10) return rc rc = peer.InstallSnap() if rc != 0: subutai.RaiseError("Failed to install Subutai. Aborting") sleep(10) subutai.Shutdown() return rc peer.InitBTRFS() peer.SetupAlias() peer.RetrievePeerIP() progress.unspin() peer.InstallUbuntu() peer.installOpenJRE() peer.installManagement() peer.WaitPeerResponse() subutai.SetProgress(1.0) subutai.Shutdown() return 0
def updateProgress(cocoasudo, p2p, tuntap, total): cur = cocoasudo + p2p + tuntap val = (int)(100 * cur) / total progress = (float)(val/100) subutai.SetProgress(progress)
def subutaistart(): tmpDir = subutai.GetTmpDir() installDir = subutai.GetInstallDir() cocoasudoFile = "cocoasudo" p2pFile = "p2p_osx" tuntapFile = "tuntap_20150118_osx.pkg" cocoasudoSize = subutai.GetFileSize(cocoasudoFile) p2pSize = subutai.GetFileSize(p2pFile) tuntapSize = subutai.GetFileSize(tuntapFile) totalSize = cocoasudoSize + p2pSize + tuntapSize cocoasudoProgress = 0 p2pProgress = 0 tuntapProgress = 0 if not os.path.exists(installDir+"bin/cocoasudo"): subutai.AddStatus("Downloading cocoasudo application") subutai.download(cocoasudoFile) while subutai.isDownloadComplete() != 1: sleep(0.05) cocoasudoProgress = subutai.GetBytesDownload() updateProgress(cocoasudoProgress, p2pProgress, tuntapProgress, totalSize) try: copyfile(tmpDir+cocoasudoFile, installDir+"bin/cocoasudo") st = os.stat(installDir+"bin/cocoasudo") os.chmod(installDir+"bin/cocoasudo", st.st_mode | stat.S_IEXEC) except: subutai.RaiseError("Failed to install cocoasudo. Aborting") sleep(10) return -99 cocoasudoProgress = cocoasudoSize subutai.AddStatus("Download TUNTAP driver") subutai.download(tuntapFile) while subutai.isDownloadComplete() != 1: sleep(0.05) tuntapProgress = subutai.GetBytesDownload() updateProgress(cocoasudoProgress, p2pProgress, tuntapProgress, totalSize) tuntapProgress = tuntapSize subutai.AddStatus("Download p2p binary") subutai.download(p2pFile) while subutai.isDownloadComplete() != 1: sleep(0.05) p2pProgress = subutai.GetBytesDownload() updateProgress(cocoasudoProgress, p2pProgress, tuntapProgress, totalSize) p2pProgress = p2pSize subutai.AddStatus("Download finished. Installing") try: copyfile(tmpDir+p2pFile, installDir+"bin/p2p") except: subutai.RaiseError("Failed to move p2p binary to " + installDir + "bin/p2p") return 21 subutai.SetProgress(0.99) subutai.AddStatus("Making p2p binary executable") try: st = os.stat(installDir+"/bin/p2p") os.chmod(installDir+"/bin/p2p", st.st_mode | stat.S_IEXEC) except: subutai.RaiseError("Failed to make p2p binary executable") return 31 subutai.AddStatus("Creating p2p service") service = ''' <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Label</key> <string>io.subutai.p2p.daemon</string> <key>ProgramArguments</key> <array> <string>/usr/local/bin/p2p</string> <string>daemon</string> </array> <key>KeepAlive</key> <true/> <key>StandardOutPath</key> <string>/var/log/p2p.log</string> <key>StandardErrorPath</key> <string>/var/log/p2p.log</string> <key>Debug</key> <true/> </dict> </plist> '''.strip() daemonFile = 'io.subutai.p2p.daemon.plist' f = open(tmpDir+daemonFile, 'w') f.write(service) f.close() syslog = ''' # logfilename [owner:group] mode count size when flags [/pid_file] [sig_num] /var/log/p2p.log 644 7 * $D0 J '''.strip() sf = open(tmpDir+'p2p.conf', 'w') sf.write(syslog) sf.close() subutai.AddStatus("Configure P2P Daemon") installScript = "#!/bin/bash\n\n" installScript = installScript + "cp " + tmpDir + daemonFile + " /Library/LaunchDaemons/" + daemonFile + "\n" installScript = installScript + "cp " + tmpDir + "p2p.conf /etc/newsyslog.d/p2p.conf\n" installScript = installScript + "launchctl load /Library/LaunchDaemons/" + daemonFile + "\n" installScript = installScript + "installer -pkg " + tmpDir + "tuntap_20150118.pkg -target /\n" installScript = installScript + "ln -s "+installDir+"/bin/p2p /usr/local/bin/p2p\n" f = open(tmpDir+"p2p-setup.sh", 'w') f.write(installScript) f.close() try: st = os.stat(tmpDir+"p2p-setup.sh") os.chmod(tmpDir+"p2p-setup.sh", st.st_mode | stat.S_IEXEC) except: subutai.RaiseError("Failed to configure p2p daemon") sleep(10) return 31 try: script = 'do shell script "'+tmpDir+'p2p-setup.sh" 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 p2p daemon") sleep(10) return 22 subutai.SetProgress(1.00) sleep(5) subutai.Shutdown() return 0
def updateProgress(nssm, p2p, tuntap, total): cur = nssm + p2p + tuntap val = (int)(100 * cur) / total progress = (float)(val / 100) subutai.SetProgress(progress)
def updateProgress(cocoasudo, tray, libssh, total): cur = cocoasudo + tray + libssh val = (int)(100 * cur) / total progress = (float)(val / 100) subutai.SetProgress(progress)
def subutaistart(): coreFile = "core.ova" vboxFile = "VirtualBox.pkg" progress = subuco.Progress() progress.setCore(coreFile) progress.setVBox(vboxFile) progress.calculateTotal() tmpDir = subutai.GetTmpDir() installDir = subutai.GetInstallDir() rc = subup.InstallPeerPrerequisites(tmpDir, installDir, progress) if rc != 0: subutai.RaiseError("Failed to install prerequisites") sleep(10) return 29 sleep(3) subup.CleanSSHKeys() subutai.SetSSHCredentials("subutai", "ubuntai", "127.0.0.1", 4567) peer = subuco.SubutaiPeer(subup.GetVirtualMachineName(), progress, "", "", "") if peer.SetupVirtualMachine() != 0: sleep(10) subutai.Shutdown() return peer.ConfigureNetwork() rc = peer.StartVirtualMachine() subutai.AddStatus("Waiting for RH to start and initialize") sleep(40) if subutai.CheckVMRunning(peer.GetName()) != 0: peer.StartVirtualMachine() sleep(50) if subutai.CheckVMRunning(peer.GetName()) != 0: subutai.RaiseError("Aborting") sleep(15) subutai.Shutdown() return 21 progress.spin() rc = peer.WaitSSH() if rc != 0: sleep(10) subutai.Shutdown() return rc peer.SetupSSH() rc = peer.WaitForNetwork() if rc != 0: sleep(10) return rc rc = peer.InstallSnap() if rc != 0: subutai.RaiseError("Failed to install Subutai. Aborting") sleep(10) subutai.Shutdown() return rc peer.InitBTRFS() peer.SetupAlias() peer.RetrievePeerIP() progress.unspin() subutai.SetProgress(1.0) subutai.Shutdown() return 0
def subutaistart(): tmpDir = subutai.GetTmpDir() installDir = subutai.GetInstallDir() m = hashlib.md5() m.update(datetime.datetime.now().isoformat().encode('utf-8')) machineName = "subutai-ld-" + m.hexdigest()[:5] coreFile = "core.ova" vboxFile = "virtualbox-5.1_xenial_amd64.deb" vnum = subutai.GetOSVersionNumber() if vnum == "16.10": vboxFile = "virtualbox-5.1_yakkety_amd64.deb" elif vnum == "17.04": vboxFile = "virtualbox-5.1_zesty_amd64.deb" ubuntuFile = "ubuntu16-subutai-template_4.0.0_amd64.tar.gz" openjreFile = "openjre16-subutai-template_4.0.0_amd64.tar.gz" mngFile = "management" progress = Progress(coreFile, vboxFile, ubuntuFile, openjreFile, mngFile) rc = installVBox(vboxFile, tmpDir, installDir, progress) if rc != 0: sleep(10) return rc call(['ssh-keygen', '-R', '[127.0.0.1]:4567']) subutai.SetSSHCredentials("subutai", "ubuntai", "127.0.0.1", 4567) enableHostonlyif() if setupVm(machineName, progress) != 0: subutai.RaiseError("Failed to install Virtual Machine. See the logs for details") subutai.Shutdown() return startVm(machineName) subutai.AddStatus("Waiting for peer to start and initialize") sleep(40) if subutai.CheckVMRunning(machineName) != 0: subutai.AddStatus("Failed to start VM. Retrying") startVm(machineName) sleep(50) if subutai.CheckVMRunning(machineName) != 0: subutai.RaiseError("Failed to start VM. Aborting") sleep(15) return 21 rc = waitSSH() if rc != 0: return rc setupSSH() rc = waitForNetwork() if rc != 0: sleep(10) return rc rc = installSnapFromStore() if rc != 0: subutai.RaiseError("Failed to install Subutai. Aborting") sleep(10) subutai.Shutdown() return rc initBtrfs() setAlias() peerip = GetPeerIP() installUbuntu(ubuntuFile, progress) installOpenjre(openjreFile, progress) installManagement(mngFile, progress) WaitForPeer(peerip) sleep(3) stopVm(machineName) sleep(5) if subutai.CheckVMRunning(machineName) == 0: subutai.AddStatus("Failed to stop VM. Retrying") stopVm(machineName) sleep(20) if subutai.CheckVMRunning(machineName) == 0: subutai.RaiseError("Failed to stop VM. Retrying") sleep(20) return 22 reconfigureNic(machineName) sleep(3) startVm(machineName) sleep(10) if subutai.CheckVMRunning(machineName) != 0: subutai.AddStatus("Failed to start VM. Retrying") startVm(machineName) sleep(50) if subutai.CheckVMRunning(machineName) != 0: subutai.RaiseError("Failed to start VM. Aborting") sleep(15) return 21 subutai.SetProgress(1.0) subutai.Shutdown() return 0