68
68
import re
69
69
import logging
70
70
import pexpect
71
+ import tarfile
71
72
72
73
# Telnet ports used to access IOS XR via socat
73
74
CONSOLE_PORT = 65000
@@ -435,6 +436,7 @@ def main(argv):
435
436
vbox = os .path .join (box_dir , vmname + '.vbox' )
436
437
vdi = os .path .join (box_dir , vmname + '.vdi' )
437
438
box_out = os .path .join (box_dir , vmname + '.box' )
439
+ box_tmp = os .path .join (box_dir , vmname )
438
440
ova_out = os .path .join (box_dir , vmname + '.ova' )
439
441
pathname = os .path .abspath (os .path .dirname (sys .argv [0 ]))
440
442
@@ -443,6 +445,7 @@ def main(argv):
443
445
logger .debug ('base_dir: %s' , base_dir )
444
446
logger .debug ('box_dir: %s' , box_dir )
445
447
logger .debug ('box_out: %s' , box_out )
448
+ logger .debug ('box_tmp: %s' , box_tmp )
446
449
logger .debug ('vbox: %s' , vbox )
447
450
448
451
if not os .path .exists (base_dir ):
@@ -456,6 +459,11 @@ def main(argv):
456
459
os .remove (box_out )
457
460
logger .debug ('Found and deleted previous %s' , box_out )
458
461
462
+ # Delete existing temporary file
463
+ if os .path .exists (box_tmp ):
464
+ os .remove (box_tmp )
465
+ logger .debug ('Found and deleted previous %s' , box_tmp )
466
+
459
467
# Delete existing OVA
460
468
if os .path .exists (ova_out ) and create_ova is True :
461
469
os .remove (ova_out )
@@ -603,7 +611,14 @@ def main(argv):
603
611
# Add in embedded Vagrantfile
604
612
vagrantfile_pathname = os .path .join (pathname , 'include' , 'embedded_vagrantfile' )
605
613
606
- run (['vagrant' , 'package' , '--base' , vmname , '--vagrantfile' , vagrantfile_pathname , '--output' , box_out ])
614
+ run (['vagrant' , 'package' , '--base' , vmname ,
615
+ '--vagrantfile' , vagrantfile_pathname , '--output' , box_out ])
616
+ logger .info ("Adding metadata.json to final box" )
617
+ run (['gunzip' , '--force' , '-S' , '.box' , box_out ])
618
+ with tarfile .open (box_tmp , 'a' ) as tarf :
619
+ tarf .add ("./metadata.json" )
620
+ run (['gzip' , '--force' , '-S' , '.box' , box_tmp ])
621
+
607
622
logger .info ('Created: %s' , box_out )
608
623
609
624
# Create OVA
0 commit comments