« Previous | Next » 

Revision 99af08a4

ID99af08a45d6f835f1a07e6767c7da82a3821e390

Added by Christos Stavrakakis about 9 years ago

cyclades: Implement lazy networks

Implement "lazy networks", which are not created to all Ganeti backends
upon creation, but only when an instance that resides in a Ganeti is
connected to that network.

Update 'create_network' to create the Network object in DB without
creating network in Ganeti, or correspoding BackendNetwork entries. The
state of the Network becomes 'ACTIVE' upon creation, instead of
'PENDING' that was until now. Also, update 'delete_network' function to
delete the network only from the backends that it is not in 'DELETED'
state. The state of the network will become 'DELETED' only when all
corresponding backend networks become 'DELETED' (including offline
backends).

Extend code that connects a VM to a network to check if the network
already exists and is in 'ACTIVE' state in the Ganeti backend that hosts
the VM. If not, it will create the network and then connect the VM
(using Ganeti chained-jobs to ensure correct ordering of jobs).

Update 'reconcile-networks' management command to work with lazy
networks. Specifically, do not check if private networks exist in all
backends.

Update 'network-add' management command to create the network in the
Ganeti, only if a backend is specified.

Finally, when using Ganeti chained-jobs to impose ordering of jobs, do
not depend only on 'success' of a job, but also on 'error' and 'cancel'.
This is needed to cover case that a job fails (e.g. create network)
because the resource already exists.

Files

  • added
  • modified
  • copied
  • renamed
  • deleted

View differences