lib/vagrant-vcloud/action/inventory_check.rb in vagrant-vcloud-0.3.3 vs lib/vagrant-vcloud/action/inventory_check.rb in vagrant-vcloud-0.4.0
- old
+ new
@@ -18,31 +18,38 @@
def vcloud_upload_box(env)
cfg = env[:machine].provider_config
cnx = cfg.vcloud_cnx.driver
box_dir = env[:machine].box.directory.to_s
- box_file = env[:machine].box.name.to_s
+ if env[:machine].box.name.to_s.include? '/'
+ box_file = env[:machine].box.name.rpartition('/').last.to_s
+ box_name = env[:machine].box.name.to_s
+ else
+ box_file = env[:machine].box.name.to_s
+ box_name = box_file
+ end
+
box_ovf = "#{box_dir}/#{box_file}.ovf"
# Still relying on ruby-progressbar because report_progress
# basically sucks.
@logger.debug("OVF File: #{box_ovf}")
upload_ovf = cnx.upload_ovf(
cfg.vdc_id,
- env[:machine].box.name.to_s,
+ box_name,
'Vagrant Box',
box_ovf,
cfg.catalog_id,
{
:progressbar_enable => true,
:chunksize => (cfg.upload_chunksize || 1_048_576)
}
)
env[:ui].info(
- "Adding [#{env[:machine].box.name.to_s}] to " +
+ "Adding [#{box_name}] to " +
"Catalog [#{cfg.catalog_name}]"
)
add_ovf_to_catalog = cnx.wait_task_completion(upload_ovf)
unless add_ovf_to_catalog[:errormsg].nil?
@@ -51,11 +58,11 @@
end
# Retrieve catalog_item ID
cfg.catalog_item = cnx.get_catalog_item_by_name(
cfg.catalog_id,
- env[:machine].box.name.to_s
+ box_name
)
end
def vcloud_create_catalog(env)
cfg = env[:machine].provider_config
@@ -80,10 +87,18 @@
# Will check each mandatory config value against the vCloud Director
# Instance and will setup the global environment config values
cfg = env[:machine].provider_config
cnx = cfg.vcloud_cnx.driver
+ if env[:machine].box.name.to_s.include? '/'
+ box_file = env[:machine].box.name.rpartition('/').last.to_s
+ box_name = env[:machine].box.name.to_s
+ else
+ box_file = env[:machine].box.name.to_s
+ box_name = box_file
+ end
+
cfg.org = cnx.get_organization_by_name(cfg.org_name)
cfg.org_id = cnx.get_organization_id_by_name(cfg.org_name)
cfg.vdc = cnx.get_vdc_by_name(cfg.org, cfg.vdc_name)
cfg.vdc_id = cnx.get_vdc_id_by_name(cfg.org, cfg.vdc_name)
@@ -111,15 +126,15 @@
end
end
@logger.debug(
"Getting catalog item with cfg.catalog_id: [#{cfg.catalog_id}] " +
- "and machine name [#{env[:machine].box.name.to_s}]"
+ "and machine name [#{box_name}]"
)
cfg.catalog_item = cnx.get_catalog_item_by_name(
cfg.catalog_id,
- env[:machine].box.name.to_s
+ box_name
)
@logger.debug("Catalog item is now #{cfg.catalog_item}")
# This only works with Org Admin role or higher
@@ -146,22 +161,22 @@
@logger.info("Catalog [#{cfg.catalog_name}] exists")
end
if !cfg.catalog_item
env[:ui].warn(
- "Catalog item [#{env[:machine].box.name.to_s}] " +
+ "Catalog item [#{box_name}] " +
"in Catalog [#{cfg.catalog_name}] does not exist!"
)
user_input = env[:ui].ask(
- "Would you like to upload the [#{env[:machine].box.name.to_s}] " +
+ "Would you like to upload the [#{box_name}] " +
"box to [#{cfg.catalog_name}] Catalog?\n" +
'Choice (yes/no): '
)
if user_input.downcase == 'yes' || user_input.downcase == 'y'
- env[:ui].info("Uploading [#{env[:machine].box.name.to_s}]...")
+ env[:ui].info("Uploading [#{box_name}]...")
vcloud_upload_box(env)
else
env[:ui].error('Catalog item not available, exiting...')
# FIXME: wrong error message
@@ -169,10 +184,10 @@
:message => 'Catalog item not available, exiting...'
end
else
@logger.info(
- "Using catalog item [#{env[:machine].box.name.to_s}] " +
+ "Using catalog item [#{box_name}] " +
"in Catalog [#{cfg.catalog_name}]..."
)
end
end
end