Ejemplo n.º 1
0
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)
Ejemplo n.º 4
0
 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)
Ejemplo n.º 5
0
def updateProgress(chrome, total):
    cur = chrome
    val = (int)(100 * cur) / total
    progress = (float)(val / 100)
    subutai.SetProgress(progress)
Ejemplo n.º 6
0
 def unspin(self):
     subutai.SetProgress(self.lastProgress)
Ejemplo n.º 7
0
 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)
Ejemplo n.º 9
0
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
Ejemplo n.º 12
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)
Ejemplo n.º 14
0
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