Sha256: 381cde041e958f29557686814c6049c5f3acf0896d1b0b39a8310c3098a86243
Contents?: true
Size: 1.93 KB
Versions: 2
Compression:
Stored size: 1.93 KB
Contents
require "i18n" module VagrantPlugins module VCloud module Action class Destroy def initialize(app, env) @app = app @logger = Log4r::Logger.new("vagrant_vcloud::action::destroy") end def call(env) cfg = env[:machine].provider_config cnx = cfg.vcloud_cnx.driver vAppId = env[:machine].get_vapp_id vmId = env[:machine].id cfg.org = cnx.get_organization_by_name(cfg.org_name) cfg.vdc_id = cnx.get_vdc_id_by_name(cfg.org, cfg.vdc_name) testvApp = cnx.get_vapp(vAppId) @logger.debug("Number of VMs in the vApp: #{testvApp[:vms_hash].count}") if testvApp[:vms_hash].count == 1 env[:ui].info("Single VM left in the vApp, destroying the vApp...") if cfg.vdc_edge_gateway_ip && cfg.vdc_edge_gateway env[:ui].info("Removing NAT rules on [#{cfg.vdc_edge_gateway}] for IP [#{cfg.vdc_edge_gateway_ip}].") @logger.debug("Deleting Edge Gateway rules - vdc id: #{cfg.vdc_id}") edge_remove = cnx.remove_edge_gateway_rules(cfg.vdc_edge_gateway, cfg.vdc_id, cfg.vdc_edge_gateway_ip, vAppId) cnx.wait_task_completion(edge_remove) end env[:ui].info("Destroying vApp...") vAppDeleteTask = cnx.delete_vapp(vAppId) @logger.debug("vApp Delete task id #{vAppDeleteTask}") cnx.wait_task_completion(vAppDeleteTask) # FIXME: Look into this. ####env[:machine].provider.driver.delete env[:machine].id=nil env[:machine].vappid=nil else env[:ui].info("Destroying VM...") vmDeleteTask = cnx.delete_vm(vmId) @logger.debug("VM Delete task id #{vmDeleteTask}") cnx.wait_task_completion(vmDeleteTask) env[:machine].id=nil end @app.call env end end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
vagrant-vcloud-0.1.2 | lib/vagrant-vcloud/action/destroy.rb |
vagrant-vcloud-0.1.1 | lib/vagrant-vcloud/action/destroy.rb |