module Misty::Microversion
Handles OpenStack Services
supporting Microversion
feature
Public Instance Methods
microversion_header(version)
click to toggle source
# File lib/misty/microversion.rb, line 18 def microversion_header(version) {'X-Openstack-API-Version' => "#{service_types[0]} #{version}" } end
set_version(version)
click to toggle source
# File lib/misty/microversion.rb, line 4 def set_version(version) case version when nil || '' # TODO: # version_discovery when 'latest' 'latest' when /^([1-9]+\d*)\.([1-9]+\d*)$/ version if version_match(version) else raise VersionError, ":version must be '<number.number>' or 'latest'" end end
Private Instance Methods
get_microversion()
click to toggle source
# File lib/misty/microversion.rb, line 24 def get_microversion project = self.class.to_s.split('::')[-2].downcase.to_sym s = Misty.services.find {|service| service.project == project} raise RuntimeError, 'No microversion found!' unless s&.microversion s.microversion end
microversion()
click to toggle source
# File lib/misty/microversion.rb, line 31 def microversion @microversion ||= get_microversion end
version_match(number)
click to toggle source
# File lib/misty/microversion.rb, line 48 def version_match(number) versions.each do |version| return number if version['min_version'] <= number && version['version'] >= number end raise VersionError, "Version #{number} is out of range of available versions: #{versions}" end
versions()
click to toggle source
# File lib/misty/microversion.rb, line 35 def versions @versions ||= versions_fetch end
versions_fetch()
click to toggle source
# File lib/misty/microversion.rb, line 39 def versions_fetch response = http_get('/', {'Accept'=> 'application/json'}) raise VersionError, "Code: #{response.code}, Message: #{response.msg}" unless response.code =~ /2??/ data = response.body.is_a?(Hash) ? response.body : JSON.parse(response.body) list = data['versions'] raise VersionError, 'Missing version data' unless list list end