@@ -43,6 +43,34 @@ const networkTmpl = `
43
43
</network>
44
44
`
45
45
46
+ func setupNetwork (conn * libvirt.Connect , name string ) error {
47
+ n , err := conn .LookupNetworkByName (defaultNetworkName )
48
+ if err != nil {
49
+ return errors .Wrapf (err , "checking network %s" , name )
50
+ }
51
+ autostart , err := n .GetAutostart ()
52
+ if err != nil {
53
+ return errors .Wrapf (err , "checking network %s autostart" , name )
54
+ }
55
+ if ! autostart {
56
+ if err := n .SetAutostart (true ); err != nil {
57
+ return errors .Wrapf (err , "setting autostart for network %s" , name )
58
+ }
59
+ }
60
+
61
+ active , err := n .IsActive ()
62
+ if err != nil {
63
+ return errors .Wrapf (err , "checking network status for %s" , name )
64
+ }
65
+ if ! active {
66
+ if err := n .Create (); err != nil {
67
+ return errors .Wrapf (err , "starting network %s" , name )
68
+ }
69
+ }
70
+ return nil
71
+
72
+ }
73
+
46
74
func (d * Driver ) createNetwork () error {
47
75
if d .MAC == "" {
48
76
mac , err := randomMAC ()
@@ -59,11 +87,16 @@ func (d *Driver) createNetwork() error {
59
87
60
88
tmpl := template .Must (template .New ("network" ).Parse (networkTmpl ))
61
89
var networkXML bytes.Buffer
62
- err = tmpl .Execute (& networkXML , d )
63
- if err != nil {
90
+ if err := tmpl .Execute (& networkXML , d ); err != nil {
64
91
return errors .Wrap (err , "executing network template" )
65
92
}
66
93
94
+ // Start the default network
95
+ log .Infof ("Setting up network %s" , defaultNetworkName )
96
+ if err := setupNetwork (conn , defaultNetworkName ); err != nil {
97
+ return err
98
+ }
99
+
67
100
//Check if network already exists
68
101
if _ , err := conn .LookupNetworkByName (d .PrivateNetwork ); err == nil {
69
102
return nil
@@ -73,14 +106,13 @@ func (d *Driver) createNetwork() error {
73
106
if err != nil {
74
107
return errors .Wrapf (err , "defining network from xml: %s" , networkXML .String ())
75
108
}
76
- err = network .SetAutostart (true )
77
- if err != nil {
78
- return errors .Wrap (err , "setting network to autostart" )
109
+ if err := network .Create (); err != nil {
110
+ return errors .Wrapf (err , "creating network %s" , d .PrivateNetwork )
79
111
}
80
112
81
- err = network . Create ( )
82
- if err != nil {
83
- return errors . Wrap ( err , "creating network" )
113
+ log . Infof ( "Setting up network %s" , d . PrivateNetwork )
114
+ if err := setupNetwork ( conn , d . PrivateNetwork ); err != nil {
115
+ return err
84
116
}
85
117
86
118
return nil
0 commit comments