-
Notifications
You must be signed in to change notification settings - Fork 0
/
ChangeLog
771 lines (533 loc) · 37.3 KB
/
ChangeLog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
19/12/23
- CheckSemantics: added a check for the net in a connection tag to exist
- Updated --modify-rootfs option to correctly check version 4.0 of LXC
- CheckSemantics: modified to allow multiple OpenFlow versions in of_version attribute of <net>
- Implemented the <vm_mgmt type="net">
- Added --no-virtio option for --modify-rootfs and --create-rootfs options
- Updated vnx.pl and vmAPI_lxc.pm to check version 5.0 of LXC (included in Ubuntu 22.04)
- Added new LXC config parameter to allow LXC consoles based on lxc-attach instead of lxc-console. Allowed values: lxc-attach/lxc-console. Default value: lxc-console.
- Corrected bug that prevented the creation of the .ssh/config file.
- Added missing code in bridges_destroy in vnx.pl to delete veth links of veth mode nets.
26/06/2020
- Implemented the creation of SSH config files to facilitate connecting to VMs through management interfaces. That files are only
created when management interfaces are activated (net or private) and a <ssh_key> tag is included.
- Corrected a the behavior of <ssh_key> tag when a "~/" reference to home directory is used. Now "~/" points to the home directory
of the user that made sudo to execute VNX.
- Adapted to work in Ubuntu 20.04. Updated vmAPI_lxc to check LXC version 4.X; modified vnx_mount_rootfs due to small change in file
command message; and modified vmAPI_libvirt to include -F option in "qemu-image create".
16/3/2020
- Modified vnx_autoconfigure to avoid the access from vnxaced to the full XML (an access to $dh prevented it to work).
- vmAPI_lxc: created a link in /var/run/netns to make the containers network namespaces visible to be used by "ip netns" command.
- vnx.pl and CheckSemantics: modified to allow use of relative paths in ssh_key tags.
3/12/2019
- Changed --create-rootfs and --modify-rootfs defaults to 1G, x86_64 and 2 vcpus
- Added LICENSE file
28/8/2019
- vmAPI_libvirt: added new type libvirt-qemu-linux to allow the execution of light virtual machines like tinycore without KVM
support (for example, to run then inside VirtualBox virtual machines).
- vmAPI_lxc: Added line in config files to allow access to /dev/net/tun
- lxc-default-with-netns apparmor profile modified to allow nested name spaces in Ubuntu 18.04 LXC containers, avoiding
"mount --make-shared /var/run/netns failed: Operation not permitted" error when executing "ip netns add blue".
- install_vnx: restart apparmor service if active
- vnx_autoconfigure.pl: added support for tc-like QoS specification for <net> and <if> tags.
- Example multi_server.xml added (a server with DHCP, NAT, HTTP and TFTP).
- vmAPI_lxc: revised the code of define_vm to manage the conflicts when creating a container and already having a
link/directory with the same name in /var/lib/lxc.
22/11/2018
- vmAPI_lxc: included code to guess the name of overlay filesystem (overlayfs in old systems or overlay in new ones)
- <connection> tag: added support for connections between virtualbridges and openvswitches.
- vmAPI_libvirt: added an offset to $VNX::Globals::H2VM_PORT calculated from the scenario name to reduce the
probability of conflicts when choosing h2vm tcp ports
- vmAPI_libvirt: shutdown support for extreme switches and cisco routers (just a destroy)
- vmAPI_libvirt: flash images are recreated each time the router starts to avoid the problem that the configuration is not loaded
after the first startup.
- vmAPI_lxc: symbolic links in /var/lib/lxc are deleted in define_vm if they do not point to an existing directory
- vnx_autoconfiguration: change the order of IPv4 and IPv6 routes to avoid problems when IPv6 is disabled.
- CheckSemantics: added detection of duplicate inter-switch connection names
- vmAPI_libvirt: added "addr=0x1F" to management interface definition to move it to a higher pci slot and avoid conflicts with other devices
24/5/2018
- vnx_create_lxc_rootfs.sh: to support new and old LXC config format versions. Now it is copied to /usr/share/vnx/bin directory when installing vnx.
- vnx_create_kvm_rootfs.sh: updated and copied to /usr/share/vnx/bin/ directory during installation.
- vnx.pl: modified to allow multiple controller specification in openvswitch SDN based <net>
- vmAPI_libvirt.xml:
- added <storage> tag
- added new types libvirt-kvm-cisco y libvirt-kvm-extreme
- CheckSemantics: allowed new versions of OpenFlow (1.4-1.6) in <net> controller attribute
- Added --ignore-ext option to vnx to ignore "external" attributes in <net> tags
6/5/2018
- modify-rootfs mode: added the line lxc.aa_profile=unconfined to the temp config file in case unconfined option is configured in /etc/vnx.conf.
- vnx2dot: corrected a bug when using connections between switches with names including '-'
- vmAPI_lxc: convert LXC config files to 2.1 format in case LXC 2.1 is used (default in Ubuntu 17.10 or newer)
- bash_completion: added sudo to vnx commands.
- vmAPI_lxc: unconnected interface functionality added. If an interface is defined with net="unconnected", the interface is created but not connected to any network.
- vnx: check if ipv6 is disabled to not issue the sysctl commands to disable autoconfiguration.
- vnx_mount_rootfs: eliminated "-n" option in qemu-nbd and added a call to partx to solve the error "file
system may not support O_DIRECT. qemu-nbd: Failed to blk_new_open ...
- Implemented the <shareddir> tag for libvirt-kvm
- LXC: modified vnx.pl and vmAPI_lxc.pm to allow LXC containers with config filers in old and new format.
- Added --pack-excl-files option to --pack mode
- Added support for vxlan tunnel in Open vSwitch bridges
- vnx_convert_lxc: added translation of lxc.aa_profile into lxc.apparmor.profile
- vmAPI_lxc: added "-l 5" option to lxc-start to show debug messages
19/11/2017
- Eliminated final '/' in vnx_dir and tmp_dir configuration values. The duplicated '/' at the end of vnx_dir caused unnecessary remounts of the overlayfs.
- vmAPI_lxc: included $workdir in overlayfs remounts
- vmAPI_lxc: changed execution parameters of lxc-attach. Added --clean-env option to not pass host environment variables and added -l to
the "bash -c" command to load root environment variables for the command executed.
- Tutorial scenarios: corrected some problems related to the startup of apache server
30/8/2017
- Added support for LXC and KVM VyOS images. Added tutorial examples using VyOS (tutorial_lxc_vyos.xml and tutorial_vyos.xml)
3/8/2017
- Added an Apparmor profile (lxc-default-with-netns) to allow nested namespaces to work inside LXC containers.
Adapted from: https://gist.github.com/jjo/ff32b08e48e4a52bfc36
- Adapted vmAPI_lxc to Ubuntu 16.10 and Kali Linux 2016.2: overlayfs is now named overlay as in Fedora.
- Changed 'gawk' when used to 'awk'
- vnx2dot: minor bug corrected that caused a failure painting maps in scenarios with virtual machines including "-" in their names.
- modify-rootfs option for LXC: added -P option to lxc-start
6/12/2016:
- Corrected error in execute_host_command. It did not return the number of host commands executed.
- Scenario --unpack option: file permissions change to the original user executing the command after untaring the escenario
22/10/2016:
- Added new 'stp=on|off' attribute to <net> tag to enable|disable spanning tree on virtual_bridge and openvswitch based networks
12/10/2016:
- Implemented <boot>network</boot>
- Implemented mtu attribute for <net> tag. It changes the MTU in the virtual bridges created, but it does no change (yet) the MTU in
virtual machine interfaces.
- Improved the management of xfce4-terminal based consoles adding a small expect script to get a clear login at startup with LXC VMs.
xfce4-terminal is the preferred console terminal since gnome-terminal has deprecated the --title option (why????)
- Changed execute_getting_output function in Execution.pm from:
system "( $command 2>&1 ) > $tmp_file ";
to
system "( $command ) 2>&1 > $tmp_file ";
to avoid a problem found when starting karaf in CORD-router scenario (https://github.com/ralvarep/CORD-vRouter)
16/05/2016
- vnx_create_lxc_rootfs script updated to not use /var/lib/lxc directory
- Added new '-p pattern' option to vnx_download_rootfs command to allow filtering the list of root filesystems shown.
- CheckSemantics now checks that filesystems are directories in LXC and files in other VM types. Besides it check filesystems used in direct mode are not used in more than one VM.
- Use of virtio drivers in KVM implemented. Added a new parameter in vnx.conf to control the use of virtio drivers (virtio=yes|no) under [libvirt] section
- Bug in the management of timeouts when starting VMs with --modify-rootfs corrected.
- Concurrent command execution. mode_execute has been modified to allow the execution of commands in parallel. A new option has been added to control it: exe_cmd_concurrent=yes|no under [general] section.
The implementation is based on the use of the classic unix fork call. An implementation based on perl threads was tried but discarted due to problems to access the LibXML objects from threads.
2/5/2016
- get_vm_ftrees_and_execs modified to cope with multiline commands (lines that end with '\' are joined with the following line)
- <exec> tags processing:
+ Corrected errors that prevented execution of exec tags of type='file'
+ Now the comments and multiline commands are processed also in execs of type='file'
+ When -M option is selected, host <exec> commands are only executed if 'host' is added to -M list
- Added support for OpenBSD thanks to Javier Ruiz contribution.
21/3/2016
- Network manager nmcli calls corrected for ubuntu 14.04 or older versions. It seems they are not needed for ubuntu >= 15.04 or fedora/centos
- vnx_download_rootfs: modified to check accessibility to filesystem repository and provide an error in case it is no.
- Management of "-s scenario_name" option:
+ bash_completion modified to manage "-s scenario" option when completing "-x" names
+ modified vnx to look for scenario configuration files in the directory where the original file scenario was located.
14/2/2016
- Added --numeric-owner option to all tars related with LXC images.
- Added <dns> tag to define dns address in interfaces. Implemented only for ubunutu/debian
- Eliminated the deletion of /etc/resolv.conf from vnx_halt and autoconfigure functions
- Created function $dh->get_default_ostype to get default ostype for a <exec> in terms of VM merged_type.
Set default ostype in creation of <exec> tags in make_vmAPI_doc
- Memory of android simple examples increases to 1G.
- Network manager nmcli calls commented. They do not work anymore in Ubuntu 14.04 and 15.10 and Fedora 23.
- Changed vmAPI_libvirt init function to not use "kvm-ok" program, as it is not available in Fedora.
- Changed vmAPI_lxc to use "overlay" instead of "overlayfs" in Fedora systems.
8/12/2015
- Bug corrected related to <forwarding> tag (not <forwarding> tag was created by make_vm_doc when both ipv4 and ipv6 forwarding tags were included).
- New --pack-add-files option added to allow including additional files when packaging an scenario. Ex:
vnx --pack tutorial_openstack-4nodes.xml --pack-version 013 --pack-add-files add-compute3.xml del-compute3.xml
- Completed the implementation of --pack an --unpack options
- Added --numeric-owner option to tar command in vnx_download_rootfs to avoid problems with changes in owner/groups of LXC
rootfs files.
- Added vnx_config_nat script to configure NAT rules between two network interfaces
10/11/2015
- vnx_distrib_rootfs: improved and adapted to package LXC root filesystems
- XML Schema relaxed to allow any tag order inside <vm> and <global> tags
- Implemented user defined default values for vm filesystems. For example, default filesystems can
be associated to different types of virtual machines:
<vm_defaults>
<console id="0" display="no"/>
<console id="1" display="yes"/>
<filesystem vm_type="uml">/usr/share/vnx/filesystems/rootfs_uml</filesystem>
<filesystem vm_type="libvirt" subtype="kvm">filesystems/rootfs_ubuntu</filesystem>
<filesystem vm_type="libvirt" subtype="kvm" os="freebsd">filesystems/rootfs_freebsd</filesystem>
<filesystem vm_type="libvirt" subtype="kvm" os="windows">filesystems/rootfs_winxp</filesystem>
<filesystem vm_type="lxc">/usr/share/vnx/filesystems/rootfs_lxc</filesystem>
</vm_defaults>
This values are used whenever a <filesystem> tag is not found inside the <vm> defeinition.
Also, default filesystems values have been defined in Globals.pm for the case that filesystems are
neither specified inside <vm> or <vm_defaults>.
- Added code to configure VLANs in host interfaces also.
- Added create-rootfs type script to repository.
- Added overlayfs_workdir_option to /etc/vnx.conf:
- if set to yes, adds workdir=<workdir> to overlayfs mount options.
- Needed in new kernel versions like the one distributed with Ubuntu 15.04
- Created/improved scripts vnx_create_lxc/kvm_rootfs.sh to automatically create LXC or KVM rootfs's
23/6/2015
- Bug in dynamips: set_chassis command ignored for 7200 family routers
- Added 'fail_mode' attribute to <net> for 'openvswitch' to set the fail-mode value:
+ <net name='Net0' fail_mode='secure'/> -> Do not work as a normal switch when the connection to the controller cannot be established
+ <net name='Net0' fail_mode='standalone'/> -> Work as a normal switch when the connection to the controller cannot be established
Default value is 'standalone'
- Corrected a bug in vnx2dot that prevented the map being shown when defining virtual machines with '-' in their names and connections to virbr0|lxcbr0 bridges.
- Added simple_remnux.xml example to test REMnux security distribution root filesystem.
- Added -F option to lxc-start in --modify-rootfs mode
- Added "--h2vm-timeout i" to allow modifying the timeout waiting for a response in libvirt H2VM socket channels
- vnx2dot: ignored management interfaces (id=0) in maps.
- Added new --validate-xml option to validate the XMl scenario.
- Added the possibility to specify to request a specific IP address in interfaces configured using dhcp.
For example:
<if id="2" net="virbr0">
<ipv4>dhcp,192.168.132.222</ipv4>
</if>
By now, it only works for Ubuntu and Fedora/CentOS
10/5/2015
- New config option for LXC VMs to allow nested virtualization (nested_lxc=yes)
- Bug related to default type value for connections among Open vSwithes corrected
- Changed the order of configuration of OVS. Now the controller address is configured at the end.
- Changed "nmcli nm" commands to "nmcli n" to adapt to new nmcli version of Ubuntu 15.04
- Created function "connect_ovs_to_controllers" to delay the configuration of controller addresses in OpenvSwitches to avoid a problem with OpenDaylight.
19/03/2015
- Corrected a bug that prevented interfaces of VMs using '<on_boot>no</on_boot>' (used to not start them when at scenario startup)
to be linked to openvswitch networks.
- multiline exec commands: comments (lines begining with #) are now eliminated and ";" added at the end of lines
- EDIV adapted to work with latest changes: XML::DOM eliminated, all code moved to XML::LibXML, added support to copy windows position files, static modules refactored, etc (not finished yet).
- Added ediv bash_autocompletion file
23/02/2015
- First implementation of --pack and --unpack options to create scenario packages (not finished yet)
20/2/2015
- Added new attribute 'type=veth|ovs-patch' to <connection> tag to allow defining if the connection between two open vswitch is
made using ovs patch ports or veth interfaces. Ej:
<connection name='linksw1sw0' net='Net0' type="ovs-patch"/>
- Added new attribute 'hwaddr' to <net> tag for openvswitch based networks to allow defining the bridge MAC address.
Ej:
<net name="Net0" mode="openvswitch" hwaddr="00:00:00:00:00:01" ...
To manually check the hw address configured in a openvswitch use: ovs-vsctl get bridge Net0 other-config:hwaddr
To manually set the hw address to an openvswitch use: ovs-vsctl set bridge Net0 other-config:hwaddr=00:00:00:00:00:01
- Command used to tell network manager not to manage veth interfaces changed to:
nmcli dev disconnect iface ${vm_name}-e${id}
to test if the problems with management interfaces are solved.
- Added quick hack to integrate WanOS on VNX.
12/02/2015
- Change in modify-rootfs for LXC: if the lxc.rootfs and lxc.mount entries in config file point to a directory
different form the one where the rootfs is, a new temporal config file is created automatilly to modify the
rootfs.
- Modified autoconfigure_redhat routine to: correctly associate IP routes to interfaces and implement dhcp interfaces.
- Moved all autoconfigure_* functions to vnx_autoconfigure.pl file which unifies the code duplicated in vmAPI_Common and vnxaced.pl
- New rough prototype of an utility to package examples: vnx_pack_scenario
12/01/2015
- vnx.conf: allowed to include $USER in vnx_dir specification, to allow using a different directory for each user.
- dynamips: bug that prevented the connection of dynamips router interfaces to openvswitches corrected
- vmAPICommon: eliminated delay in open_console when no config for the window was specified
- create_bridges_for_virtual_bridged_networks: when creating a VLAN subinterface sometimes the naming schema could
fail and the interface is not created with the right name. Included a check and a rename command to avoid it.
- vmAPI_dynamips: added sleep delays in reconf function.
- Added support for point to point direct connections between LXC VMs using 'veth'. To use that, declare the networks with:
<net name="link1" mode="veth" type="p2p" />
A new example (example_lxc_vm_as_switch.xml) added to show how to connect three VMs to a VM based switch.
21/11/2014
- Changed format of shared disk in libvirt-kvm-linux VMs to ext3 to make it compatible with old images, for example, CentOS 5.3. Proposed by Enrique de la Hoz.
- Changes in vnxaced.pl to solve some autoconfiguration problems with CentOS. Proposed by Enrique de la Hoz.
- vnx_download_rootfs: added the creation of rootfs_lxc simbolic to lxc ubuntu rootfs. "rootfs_lxc" is the name used in most examples.
- vnx2dot: VNX::TexManipulation module import missing. Afected "show-map" option with some examples.
20/11/2014
- Dynamips: added check in Checksemantics to detect duplicated if names. Added error message to detect when no if name has been defined in an interface.
- Added <shareddir> tag for LXC VMs with the following format:
<shareddir options="XXX" root="YYY">ZZZ</shareddir>
being:
ZZZ the directory in host to be shared (absolute or relative path allowed)
YYY the mount point in VM (absolute path)
XXX comma separated list of options to be passed to mount
modified simple_lxc_ubuntu.xml and simple_lxc_ubuntu_inet.xml examples to include a <shareddir> tag
10/11/2014
- New attribute "status" added to .cvnx files to specify if a console window should be started minimized (status="minimized")
- Change in maps: show multiple host nodes instead of one node with multiple interfaces.
- vnx_mount_rootfs: new -s option to mount rootfs's using bindfs to change owner to sudoed user
23/10/2014
- Bug corrected in vmAPI_lxc: message "Inconsistency detected between VM $vm_name architecture defined in XML ($vm_arch) and rootfs architecture ($rootfs_arch)", the rootfs arch value shown was wrong.
- Changed the way management interface identifiers are obtained using nmcli. The way used so far does not work well in Ubuntu 14.04.
10/10/2014
- Changed installation scripts to create /usr/share/vnx/aced/vnx-aced-*-latest.tgz link to latest version
- Changed vnx2dot to draw interfaces connected to virbr0 or lxcbr0 as external connections.
- Corrected a bug related with the way files specified in filetrees are copied in LXC VMs.
7/9/2014
- Added <default> tag and desktop attribute to window configuration files (.cvnx)
Example:
<default win="0,0,600,400" desktop="0" ontop="no"/>
<vm name="h1" win="0,0,600,400" ontop="yes"/>
- Added <vnx_cfg> tag to specify the windows configuration filename (if not specified VNX looks for a file with the same name as the scenario but with extension .cvnx)
Example:
<vnx_cfg>tutorial_lxc_ubuntu2.cvnx</vnx_cfg>
Besides, the config file is copied to scenario directory to find it when -s option used
- Added "-n" option to vnx_download_rootfs to eliminate wget progress bars (disturbing when using it inside bootstrap vagrant shellscripts).
26/08/2014
- Added aufs_options parameter to [lxc] section of vnx.conf
[lxc]
aufs_options = 'noxino' # comma separated list of options (without comma at the end)
- Added host_passthrough option to [libvirt]. Substitutes
- Added --download-rootfs option to call vnx_download_rootfs: 'vnx --download-rootfs'
- Added new type of VM: Name spaces based routers (nsrouter). Added tutorial_nsrouter.xml example.
- VNX bash autocompletion file copied also to /usr/share/bash-completion/completions/ (seems to be the default dir in Ubuntu) apart from /etc/bash_completion.d/
- Added check_perlmods_mandatory to BinariesData module to check whether the perl modules required by VNX are installed
24/07/2014:
- vnx_update command improved. It allows to:
+ get a listing of all versions available on VNX repository in "http://idefix.dit.upm.es/vnx" using -l option:
vnx_update -l
+ install a specific version (not the latests) with -v option:
vnx_update -v 2.0b.4199
- <ssh_key> tag:
+ implemented for LXC VMs
+ bug corrected for KVM (need to create directory /root/.ssh in VM if non-existant)
- Bug corrected in -s option: it was supposed that the scenario XML file name was the
value of tag <scenario_name> followed by .xml. Now vnx.pl navigates the scenario directory
$vnx_dir/scenarios/$scename to find the XML file, checking errors like no file found or
more than two files found.
- New kali root filesystem created and simple_kali.xml example improved with Internet connection.
Tests with a 64 bits version of kali failed due to emulated cirrus graphical card used by default
in libvirt. Using another virtual graphics cards (qxl or vmvga for example) works.
- Added new <video> tag to define the graphical virtual card in libvirt. By now only <video>vmvga</video> defined.
- Changed the format of shared disk to ext4 for libvirt-kvm-linux to allow copying symbolic links to VMs
(not allowed with msdos format used before)
- mode 'exe-info': brief format (-b) implemented to just get a space separated list of commands (used for bash autocompletion)
- Added bash autocompletion support to VNX. A vnx autocompletion script is copied to /etc/bash_completion.d/ directory.
Now typing "TAB" shows the available VNX options and the available values of some parameters.
- Reimplementation of <vm_mgmt> for type="net" value.
<vm_mgmt type="net" network="10.250.0.0" mask="24">
<mgmt_net net="mgmt-bridge-name" managed="yes" config="manual/dhcp"/>
<host_mapping/>
</vm_mgmt>
+ <mgmt_net>
+ net attribute: bridge to be used for management interfaces. If it is not defined, use a default value, a bridge named ${scenname}-mgmt
+ managed attribute: defines if management bridge is managed by VNX or not. Same meaning that "managed" attribute in <net>
+ config attribute: management interfaces config mode: "manual" or "dhcp".
+ Host address should always be the first address.
+ sock and hostip attributes eliminated
+ config=manual and <host_mapping/> options are not compatible by now. One way of implementing host_mapping will
be to have a look at dhcp leases files to see the addresses assigned. For example:
grep 02:fd:00:04:01:00 /var/lib/libvirt/dnsmasq/*.leases /var/lib/misc/*.leases
- Corrected bug that prevented host exec 'on_boot' and 'on_shutdown' commands to be executed.
- Notes:
+ LXC: option unconfined makes dhclient to fail with error:
error while loading shared libraries: libc.so.6: cannot open shared object file: Permission denied
15/06/2014
- Added attribute 'of_version' to <net>'s based on openvswitch to define the OpenFlow version used. Valid values: OpenFlow10, OpenFlow12, OpenFlow13
- Added config files to tutorial_lxc_ubuntu-sdn.xml example
- Added bootstrap.sh script to create a vagrant virtual machine to run VNX
10/6/2014
- Problems detected with LXC when using 'overlayfs' to create COW file systems:
- shutdown and restart does not work
- java does not work inside VMs (??)
Till solved, default LXC overlay mode set to 'aufs'
- New example tutorial_lxc_ubuntu-sdn.xml to show how to use a SDN controller to control Open vSwitch scenario switches.
6/6/2014
- loopback interfaces: added support for Ubuntu. In Fedora does not work: addresses added to loopback if, are not configured at startup; you have to do a "ifup lo:3".
- Included loopback interfaces in maps
- Created auxiliar config file to store window position and attributes configuration. Example:
<vnx_cfg>
<vm name="h1" win="0,0,600,400" ontop="yes"/>
<vm name="h2" win="0,400,600,400"/>
<vm name="h3" win="1200,0,600,400"/>
<vm name="h4" win="1200,400,600,400" ontop="yes"/>
<vm name="r1" win="400,200,600,400"/>
<vm name="r2" win="800,200,600,400"/>
</vnx_cfg>
If a file with the same name as scenario file but with extension .cvnx exists, it is read to get the positions of the consoles.
- Added local filesystems dependencies to vnxaced configuration to avoid running it before the filesystem is available:
For systemd (vnxace.service):
[Unit]
Description=VNXACE
After=local-fs.target
For upstart (vnxace.conf):
start on local-filesystems
For init.d:
# Required-Start: $local_fs
- Added support to use loop devices inside LXC machines by adding:
lxc.cgroup.devices.allow = b 7:* rwm
lxc.cgroup.devices.allow = c 10:237 rwm
when:
[lxc]
aa_unconfined=yes
Now a block device for testing can be created inside the VM with:
dd if=/dev/zero of=diska bs=1M count=300
losetup /dev/loop0 diska
16/5/2014
- LXC: start_vm now checks if the overlay filesystem is mounted before starting the VM, remounting it in case it is not.
- Added support for LXC in modify-rootfs option:
vnx --modify-rootfs ROOTFS_file [--rootfs-type ROOTFS_type]
The type of the rootfs is optional. Values 'libvirt-kvm' and 'lxc' are allowed.
If no type is specified, we check if the rootfs is LXC (easy to guess looking for
config file and rootfs directory) and if not, set to 'libvirt-kvm' default value.
- Mode start now checks whether the network virtual topology is created, and rebuild it of not. That allows to shutdown a scenario and restart it after a host reboot.
- New option '--exe-cli' for execution of commands in VMs directly specified from the command line:
vnx -f tutorial_ubuntu.xml -v --exe-cli service apache2 start -M h4
- vmAPI_libvirt and vmAPI_lxc: added a check to see if VM definition and rootfs image are consistent in relation to hardware platform (32 or 64 bits).
- install_vnx: now vnx_update, vnx_update_host and vnx_download_rootfs are copied to /usr/bin to be accesible without path.
- Changed all IP addresses of example scenarios from 10.0.0.X to 10.1.0.X to avoid conflicts with lxcbr0 assigned addresses.
- Tested support for Fedora 20 and FreeBSD 10.0
- vnxaced modified to use the same autoconfigure_* functions used in vnx
7/5/2014
- Added examples simple_ubuntu_*_inet.xml to show how to connect VMs to Internets using libvirt virbr0
bridge and "managed" <net> attribute. Also, a minor bug related to managed attribute corrected.
- Added global mode too --show-status option. Now "vnx --show-status" shows the list of scenarios active
(the ones with a file in $vnx_dir/scenarios/<scenario_name>/lock).
- One-pass autoconfiguration functionality included for Linux qcow2 rootfilesystems.
A new config parameter has been created to activate or not this funcionality:
[libvirt]
one_pass_autoconf=yes
- Added client dhcp autoconfiguration: 'dhcp' value is allowed in <ipv4> and <ipv6> tags.
- Added support in LXC for Debian images
29/04/2014
- Added new attribute 'managed' to <net> tag. When managed=no, VNX does neither create nor destroy
the bridge associated with the net. Very useful to create VMs with interfaces joined to virbr0
bridge of libvirt and have an easy connection to Internet.
27/04/2014
- vmAPI simplified: destroy_vm, reboot_vm and reset_vm eliminated. vmAPIs maintain
only this basic primitives: define_vm, undefine_vm, start_vm, shutdown_vm, suspend_vm,
resume_vm, save_vm, restore_vm, get_state_vm and execute_cmd. Other primitives are implemented
from vnx.pl code in terms of basic primitives. For example: destroy_vm=shutdown_vm+undefine_vm
- shutdown_vm: new parameter to define if shutdown is gracefull or is a poweroff
- new vnx option --recreate which is a destroy+create
- Added wlog (E, ...) option to write error messages
- vmAPI_dynamips: much code cleanup, rewritten the procedures to send commands to dynamips
hypervisor. get_state_vm implemented
19/04/2014
- Execution.pm: added pause_if_interactive (or pii) sub.
- New option (show-status) to show the status of VMs.
Ej: vnx -f tutorial_ubuntu.xml --show-status -b
- Code cleanup in vmAPI modules.
- Deep revision of mode_* functions to make the tool more consistent.
- New primitive added to vmAPI: get_state_vm
- Preliminar test to add Virtualbox support
17/11/2013:
- vnx_mount_rootfs tools added
- attribute 'gui' in <exec> tags eliminated (obsoleted)
6/5/2013:
- vnx help simplified and updated
- User VNX is executed as: -u option implemented
'-u user' or '--user user' option is used to define the user VNX is
(mostly) run as. By now, VNX has to be run with root priviledges
(from a root shell or sudoed) for creating virtual machines and
manipulate bridges and network interfaces.
Present behaviour (provisional):
'-u root' or '-u' option absent
-> VNX runs completely as root
'-u'
-> VNX runs (mostly) as default user (the user from which sudo
was issued)
'-u user' (NOT implemented yet)
-> VNX runs (mostly) as 'user'
- New general config parameter in /etc/vnx.conf: vmfs_on_tmp
Added to solve the DIT-UPM laboratories problem. As user accounts
are network mounted, root user has no permissions to write in users
directories. So, as libvirt runs as root, the cowfs and sdisk
filesystems are changed to root owner when the virtual machine
starts, and root has no permissions to write on them when the
vnxdir is located in user directory. When vmfs_on_tmp=yes, these two
files are moved to tmp directory, independently of where the vnx_dir
directory is located.
- perl-modules-old directory created: Arguments.pm and CiscoExeCmd.pm
modules not used anymore moved to it.
- Old commented code removed and some function headers added.
11/01/2012:
- VNX:
- changed argument processing to simplify it using a hash to store arguments (%opts)
- option 'cid' deprecated. Now the '--console' option is used to specify console names
with a comma separated list (eg. --console con1,con2 )
- EDIV:
- Added show-map, clean-cluster, seg-info and seg-alg-info new options
- Created @cluster_active_hosts new array to store active hosts
- Implemented -M as a comma separated list of vms
- changed argument processing to simplify it using a hash to store arguments (%opts)
- Changed ifconfig and route commands to use ip instead. Commands:
- Activate interface: ip link set eth1 up
- Add address: ip addr add 2001::2/64 dev br0
- Delete address: ip addr del 2001::2/64 dev br0
- Add route: ip -4 add route 10.1.1.0/24 via 10.1.1.1
- Delete route: ip -4 del route 10.1.1.0/24 via 10.1.1.1
- Added -v (verbose) and -i (copy new version to idefix repository) to build_tar* scripts
- Changed all ifconfig xx 0.0.0.0 up commands by "ip link set xx up"
.....
.....
16/9/2011
- Changed the format of multiple sequences form space-separated to comma-separated list. Ej:
seq="on_boot, start"
- Changes in make-iso script (not finished)
12/9/2011:
- Plugins:
+ changed OSPF and DHCP plugins to use XML::LibXML instead of XML::DOM
+ added a new function to plugin API: getSeqDescriptions to get descriptions of commands offered by plugins
+ changes to OSPF and DHCP configuration files languages. DTD's translated to XSD.
+ plog function to write log messages in plugins
- vnx:
+ added a new option --exe-info to get a description of the commands available in a virtual scenario.
For the plugin commands, the information is obtained by menas of the new function getSeqDescriptions.
For the user-defined commands, a new tag has been added <seq_help>:
<help>
<seq_help seq='start-www'>Start apache2 web server</seq_help>
<seq_help seq='stop-www'>Stop apache2 web server</seq_help>
</help>
+ Cleaning of the arguments list
- VNX::Execution: eliminated the redirection to /dev/null in 'execute' in $EXE_NORMAL mode. It provoked problems
when executing commands like "echo xxxx > file"
1/9/2011:
- Naming conventions: variable names changes to follow the names conventions in
http://damienlearnsperl.blogspot.com/2009/03/perl-naming-convention-for-subroutine.html
or http://www.perl.com/pub/2000/01/CodingStandards.html.
All variables and subroutines in lower case with _ separating words (Ej: $vm_name)
- vmAPI: eliminated the parameters $vm_doc and $counter from startVM. $vm_doc is only needed in
vmAPI_uml->startVM, but now it is obtained calling dh->get_vm_doc
- Created a function to write log messages: wlog
#
# Write log message depending on the verbosity level ($execution->get_exe_mode()).
# Adds a "\n" to the end of the message.
#
# Call with:
# log (V, "log message")
# log (VV, "log message")
# log (VVV, "log message")
#
- "on_boot" and "on_shutdown" commands. All filetree and exec commands with sequence="on_boot" are automatically
executed after startup. Similarly, "on_shutdown" filetree and exec commands are executed just before shutdown.
on_boot commands have been implemented for linux, freebsd and olive vms, but not yet for windows. on_shutdown
commands are implemented for all types of vms.
- vnxaced.pl:
+ modified to execute on_boot and plugin commands (filetrees and execs) after restarting.
+ Modified the format of command_id file (name changed to vnxaced.cid) to store "param=value" lines.
- <filetrees> restriction to copy only directories has been eliminated. Now the the text value of <filetree>
tag can be also a single file. In the case of files, the root attribute can also be a file. To distinguish
files and directories in root attribute, now directories must be ended with a "/".
Besides, user, group and perms attributes have been added to filetrees to allow changing ownership and
permissions in files/directories copied.
- Plugins implementation have been adapted to VNX (not yet finished).
- Names of plugins functions changed to initPlugin, getBootFiles, getBootCommands, getExecFiles,
getExecCommands, getShutdownFiles, getShutdownCommands and finalizePlugin
- eliminated the execVmsToUse function of plugins. Now the execCreateFiles and execCommands are
called for every vm.
- Deprecated options eliminated from the code.
- Important cleaning of vnx and vmAPI code
+ reorganized all the way to get filetrees and execs for a sequence. A function has been created (get_vm_ftrees_and_execs)
to create two arrays with the filetrees and execs corresponding to a sequenced, either defined by the users or created
by plugins. Now the vmAPI functions just process this two arrays to know the commands they have to execute.
- Olive:
+ added support for on_boot commands
+ created a new ostype of command "system" to execute commands over the FreeBSD operating system (not over the Juniper cli)
+ Solved the problem with emX interfaces (only em0 were created correctly; additional interfaces failed with
the following error:
em1: Unable to allocate bus resource: ioport
em1: Allocation of PCI resources failed
The problem was related to bios-0.10.6. Compiling a new seabios with the CONFIG_SMBIOS disabled the problem dissapears.
The name of the bios file loaded for Olive changed to bios-olive.bin. See VNX installation guide for more details.
- Clenup of the default command execution mode specification:
Ideas:
+ Mode attribute eliminated from filetree and exec tags
+ filetree and exec's are executed using the way defined in exec_mode attribute of the
virtual machine the belong to (<vm> tag)
+ If exec_mode attribute is not specified for the vm, we look for a default value specified
in <vm_defaults> for the type of virtual machine.
+ If no default mode is specified in <vm_defaults>, the default value specified in VNX::Globals applies.
Definition of default exe_mode's in <vm_defaults>
<vm_defaults>
<exec_mode type="uml">mconsole</exec_mode>
<exec_mode type="libvirt" subtype="kvm">cdrom</exec_mode>
<exec_mode type="libvirt" subtype="kvm" os="windows">cdrom</exec_mode>
<exec_mode type="libvirt" subtype="kvm" os="olive">sdisk</exec_mode>
</vm_defaults>