Changeset 1852

Show
Ignore:
Timestamp:
01/05/12 13:43:14 (5 months ago)
Author:
Dylan
Message:

unxsVZ added migration of stopped container support.

Location:
trunk
Files:
3 modified

Legend:

Unmodified
Added
Removed
  • trunk/jobqueue.c

    r1830 r1852  
    15131513        unsigned uTargetDatacenter=0; 
    15141514        unsigned uIPv4=0; 
     1515        unsigned uStatus=0; 
    15151516 
    15161517        sscanf(cJobData,"uTargetNode=%u;",&uTargetNode); 
     
    15191520                logfileLine("MigrateContainer","Could not determine uTargetNode"); 
    15201521                tJobErrorUpdate(uJob,"uTargetNode==0"); 
     1522                return; 
     1523        } 
     1524 
     1525        if(GetContainerStatus(uContainer,&uStatus)) 
     1526        { 
     1527                logfileLine("MigrateContainer","GetContainerStatus() failed"); 
     1528                tJobErrorUpdate(uJob,"GetContainerStatus()"); 
    15211529                return; 
    15221530        } 
     
    15751583                sprintf(cSCPOptions,"-P 22 -c arcfour"); 
    15761584 
    1577         if(cSSHOptions[0]) 
    1578                 sprintf(gcQuery,"export PATH=/usr/sbin:/usr/bin:/bin:/usr/local/bin:/usr/local/sbin;" 
     1585 
     1586        if(uStatus==uACTIVE) 
     1587        { 
     1588                if(cSSHOptions[0]) 
     1589                        sprintf(gcQuery,"export PATH=/usr/sbin:/usr/bin:/bin:/usr/local/bin:/usr/local/sbin;" 
    15791590                                "/usr/sbin/vzmigrate --ssh=\"%s\" --keep-dst --online -v %s %u", 
    15801591                                        cSSHOptions,cTargetNodeIPv4,uContainer); 
    1581         else 
    1582                 sprintf(gcQuery,"export PATH=/usr/sbin:/usr/bin:/bin;" 
     1592                else 
     1593                        sprintf(gcQuery,"export PATH=/usr/sbin:/usr/bin:/bin;" 
    15831594                                "/usr/sbin/vzmigrate --keep-dst --online -v %s %u", 
    15841595                                        cTargetNodeIPv4,uContainer); 
     1596        } 
     1597        else 
     1598        { 
     1599                if(cSSHOptions[0]) 
     1600                        sprintf(gcQuery,"export PATH=/usr/sbin:/usr/bin:/bin:/usr/local/bin:/usr/local/sbin;" 
     1601                                "/usr/sbin/vzmigrate --ssh=\"%s\" --keep-dst -v %s %u", 
     1602                                        cSSHOptions,cTargetNodeIPv4,uContainer); 
     1603                else 
     1604                        sprintf(gcQuery,"export PATH=/usr/sbin:/usr/bin:/bin;" 
     1605                                "/usr/sbin/vzmigrate --keep-dst -v %s %u", 
     1606                                        cTargetNodeIPv4,uContainer); 
     1607        } 
     1608 
    15851609        if(system(gcQuery)) 
    15861610        { 
    15871611                //We may not want this optional behavior may violate QoS for given migration 
    1588                 logfileLine("MigrateContainer","Trying offline migration (check kernel compat)"); 
    1589                 tJobErrorUpdate(uJob,"Live failed trying offline"); 
     1612                logfileLine("MigrateContainer","Trying offline migration"); 
     1613                tJobErrorUpdate(uJob,"Failed once trying offline"); 
    15901614 
    15911615                if(cSSHOptions[0]) 
  • trunk/tcontainerfunc.h

    r1828 r1852  
    27262726                { 
    27272727                        ProcesstContainerVars(entries,x); 
    2728                         if(uStatus==uACTIVE && uAllowMod(uOwner,uCreatedBy)) 
     2728                        if( (uStatus==uACTIVE || uStatus==uSTOPPED ) && uAllowMod(uOwner,uCreatedBy)) 
    27292729                        { 
    27302730                                guMode=0; 
     
    27442744                { 
    27452745                        ProcesstContainerVars(entries,x); 
    2746                         if(uStatus==uACTIVE && uAllowMod(uOwner,uCreatedBy)) 
     2746                        if( (uStatus==uACTIVE || uStatus==uSTOPPED ) && uAllowMod(uOwner,uCreatedBy)) 
    27472747                        { 
    27482748                                unsigned uTargetDatacenter=0; 
     
    39793979                                { 
    39803980                                        htmlHealth(uContainer,3); 
    3981                                         printf("<p><input title='Migrate container to another hardware node'" 
    3982                                         " type=submit class=largeButton" 
    3983                                         " name=gcCommand value='Migration Wizard'><br>\n"); 
    3984                                         printf("<input title='Migrate container to another datacenter node'" 
     3981                                        printf("<p><input title='Migrate container to another datacenter node'" 
    39853982                                        " type=submit class=largeButton" 
    39863983                                        " name=gcCommand value='Remote Migration'><br>\n"); 
     
    40314028                                if( uStatus==uSTOPPED || uStatus==uACTIVE ) 
    40324029                                { 
     4030                                        printf("<input title='Migrate container to another hardware node'" 
     4031                                        " type=submit class=largeButton" 
     4032                                        " name=gcCommand value='Migration Wizard'><br>\n"); 
    40334033                                        printf("<input title='Change current container name and hostname'" 
    40344034                                        " type=submit class=largeButton" 
  • trunk/tnodefunc.h

    r1851 r1852  
    593593                                "<td><u>clone hostname</u></td>" 
    594594                                "<td><u>seconds since rsync</u></td>" 
    595                                 "<td><u>job created</u></td>" 
    596595                                "</tr>"); 
    597596                        sprintf(gcQuery,"SELECT tContainer.uContainer,tContainer.cLabel,tContainer.cHostname," 
     
    611610                                MYSQL_RES *res2; 
    612611                                MYSQL_ROW field2; 
     612                                long unsigned luTotalDiskSpace=0; 
     613                                long unsigned luDiskSpace; 
    613614 
    614615                                while((field=mysql_fetch_row(res))) 
     
    644645                                        mysql_free_result(res2); 
    645646                                        printf("</tr>\n"); 
     647 
     648                                        sprintf(gcQuery,"SELECT cValue FROM tProperty" 
     649                                                        " WHERE cName='1k-blocks.luUsage' AND uType=3 AND uKey=%s",field[0]); 
     650                                        mysql_query(&gMysql,gcQuery); 
     651                                        if(mysql_errno(&gMysql)) 
     652                                                htmlPlainTextError(mysql_error(&gMysql)); 
     653                                        res2=mysql_store_result(&gMysql); 
     654                                        if((field2=mysql_fetch_row(res2))) 
     655                                        { 
     656                                                luDiskSpace=0; 
     657                                                sscanf(field2[0],"%lu",&luDiskSpace); 
     658                                                luTotalDiskSpace+=luDiskSpace; 
     659                                        } 
     660                                        mysql_free_result(res2); 
     661 
    646662                                } 
    647                                 //printf("<tr><td><input type=checkbox name=all onClick='checkAll(document.formMain,this)'>" 
    648                                 //              " Check all</td></tr>\n"); 
     663                                printf("<tr><td>Total disk space used: %lu</td></tr>",luTotalDiskSpace); 
    649664                        } 
    650665                        printf("</table>");