Class: Bosh::Director::Api::Controllers::PackagesController
- Inherits:
-
BaseController
- Object
- Sinatra::Base
- BaseController
- Bosh::Director::Api::Controllers::PackagesController
- Defined in:
- lib/bosh/director/api/controllers/packages_controller.rb
Constant Summary
Constants included from Http
Http::BAD_REQUEST, Http::CREATED, Http::FORBIDDEN, Http::INTERNAL_SERVER_ERROR, Http::NOT_FOUND, Http::NO_CONTENT, Http::OK, Http::UNAUTHORIZED
Constants included from ApiHelper
Instance Attribute Summary
Attributes inherited from BaseController
Instance Method Summary collapse
- #compiled_package_meta(package_name, manifest) ⇒ Object
- #dependency_key(package, manifest) ⇒ Object
-
#filter_matching_packages(matching_packages, manifest) ⇒ Object
dependencies & stemcell should also match.
- #transitive_dependencies(compiled_package_meta, manifest) ⇒ Object
Methods inherited from BaseController
consumes, #initialize, #requires_authentication?
Methods included from ApiHelper
#check_available_disk_space, #json_decode, #json_encode, #send_disposable_file, #start_task, #write_file
Constructor Details
This class inherits a constructor from Bosh::Director::Api::Controllers::BaseController
Instance Method Details
#compiled_package_meta(package_name, manifest) ⇒ Object
83 84 85 |
# File 'lib/bosh/director/api/controllers/packages_controller.rb', line 83 def (package_name, manifest) manifest['compiled_packages'].select { |p| p['name'] == package_name}[0] end |
#dependency_key(package, manifest) ⇒ Object
62 63 64 65 66 67 68 |
# File 'lib/bosh/director/api/controllers/packages_controller.rb', line 62 def dependency_key(package, manifest) = (package.name, manifest) dependencies = transitive_dependencies(, manifest) key = dependencies.to_a.sort_by {|k| k["name"]}.map { |p| [p['name'], p['version']]} Yajl::Encoder.encode(key) end |
#filter_matching_packages(matching_packages, manifest) ⇒ Object
dependencies & stemcell should also match
47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
# File 'lib/bosh/director/api/controllers/packages_controller.rb', line 47 def filter_matching_packages(matching_packages, manifest) filtered_packages = [] matching_packages.each do |package| stemcell_match = "#{package[:operating_system]}/#{package[:version]}" == (package.name, manifest)['stemcell'] dependencies_match = package[:dependency_key] == dependency_key(package, manifest) if stemcell_match && dependencies_match filtered_packages << package end end filtered_packages end |
#transitive_dependencies(compiled_package_meta, manifest) ⇒ Object
70 71 72 73 74 75 76 77 78 79 80 81 |
# File 'lib/bosh/director/api/controllers/packages_controller.rb', line 70 def transitive_dependencies(, manifest) dependencies = Set.new return dependencies if ['dependencies'].nil? ['dependencies'].each do |dependency_package_name| = (dependency_package_name, manifest) dependencies << dependencies.merge(transitive_dependencies(, manifest)) end dependencies end |