Method: Bosh::Director::Jobs::UpdateRelease#create_package

Defined in:
lib/bosh/director/jobs/update_release.rb

#create_package(package_meta) ⇒ void

This method returns an undefined value.

Creates package in DB according to given metadata



325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
# File 'lib/bosh/director/jobs/update_release.rb', line 325

def create_package(package_meta)
  name, version = package_meta["name"], package_meta["version"]

  package_attrs = {
    :release => @release_model,
    :name => name,
    :sha1 => package_meta["sha1"],
    :fingerprint => package_meta["fingerprint"],
    :version => version
  }

  if @rebase
    new_version = next_package_version(name, version)
    if new_version != version
      transition = "#{version} -> #{new_version}"
      logger.info("Package `#{name}' rebased: #{transition}")
      package_attrs[:version] = new_version
      version = new_version
      @package_rebase_mapping[name] = transition
    end
  end

  package = Models::Package.new(package_attrs)
  package.dependency_set = package_meta["dependencies"]

  existing_blob = package_meta["blobstore_id"]
  desc = "package `#{name}/#{version}'"

  if existing_blob
    logger.info("Creating #{desc} from existing blob #{existing_blob}")
    package.blobstore_id = BlobUtil.copy_blob(existing_blob)
  else
    logger.info("Creating #{desc} from provided bits")

    package_tgz = File.join(@tmp_release_dir, "packages", "#{name}.tgz")
    result = Bosh::Exec.sh("tar -tzf #{package_tgz} 2>&1", :on_error => :return)
    if result.failed?
      logger.error("Extracting #{desc} archive failed, " +
                   "tar returned #{result.exit_status}, " +
                   "output: #{result.output}")
      raise PackageInvalidArchive, "Extracting #{desc} archive failed. Check task debug log for details."
    end

    package.blobstore_id = BlobUtil.create_blob(package_tgz)
  end

  package.save
end