1
0
mirror of https://github.com/OpenNebula/one.git synced 2025-03-22 18:50:08 +03:00

Development: delete ARs before deleting the VNET, so the IPAM will be called (#3073)

This commit is contained in:
Alejandro Huertas Herrero 2019-03-13 16:23:51 +01:00 committed by Tino Vázquez
parent 1c1eed0383
commit c2ff7f89d8
3 changed files with 37 additions and 4 deletions

View File

@ -124,6 +124,11 @@ module OneProvision
msg = "#{section.chomp('s')} #{obj['ID']}"
Driver.retry_loop "Failed to delete #{msg}" do
if section == 'vnets'
vnet = Vnet.new(obj.id)
vnet.delete_ars
end
OneProvisionLogger.debug("Deleting OpenNebula #{msg}")
Utils.exception(obj.delete)

View File

@ -61,9 +61,15 @@ module OneProvision
@pool = OpenNebula::HostPool.new(client)
when 'Vnet'
xml = OpenNebula::VirtualNetwork.build_xml
if !id
xml = OpenNebula::VirtualNetwork.build_xml
@one = OpenNebula::VirtualNetwork.new(xml, client)
else
@one = OpenNebula::VirtualNetwork.new_with_id(id, client)
@one.info
end
@one = OpenNebula::VirtualNetwork.new(xml, client)
@pool = OpenNebula::VirtualNetworkPool.new(client)
end
end

View File

@ -22,8 +22,8 @@ module OneProvision
class Vnet < Resource
# Class constructor
def initialize
super 'Vnet'
def initialize(id = nil)
super('Vnet', id)
end
# Creates a new VNET in OpenNebula
@ -43,6 +43,28 @@ module OneProvision
super(cluster_id, template)
end
# Deletes the address ranges from the vnet
def delete_ars
ars = @one.to_hash['VNET']['AR_POOL']['AR']
id = @one.id
[ars].flatten.each do |ar|
delete_ar(id, ar['AR_ID'])
end
end
private
# Delete an specific address range
#
# @param id [Integer] The id of the vnet
# @param ar_id [Integer] The id of the ar
def delete_ar(id, ar_id)
OneProvisionLogger.debug("Deleting AR #{ar_id} from VNET #{id}")
@one.rm_ar(ar_id)
end
end
end