]> git.donarmstrong.com Git - dsa-puppet.git/blobdiff - 3rdparty/modules/aviator/feature/aviator/openstack/common/v2/public/base.rb
add aimonb/aviator to 3rdparty
[dsa-puppet.git] / 3rdparty / modules / aviator / feature / aviator / openstack / common / v2 / public / base.rb
diff --git a/3rdparty/modules/aviator/feature/aviator/openstack/common/v2/public/base.rb b/3rdparty/modules/aviator/feature/aviator/openstack/common/v2/public/base.rb
new file mode 100644 (file)
index 0000000..7871a9f
--- /dev/null
@@ -0,0 +1,47 @@
+module Aviator
+
+  define_request :base do
+
+    meta :provider,      :openstack
+    meta :service,       :common
+    meta :api_version,   :v2
+    meta :endpoint_type, :public
+
+    def headers
+      {}.tap do |h|
+        h['X-Auth-Token'] = session_data[:access][:token][:id] unless self.anonymous?
+      end
+    end
+
+
+    private
+
+
+    def base_url
+      if session_data[:base_url]
+        session_data[:base_url]
+      elsif service_spec = session_data[:access][:serviceCatalog].find { |s| s[:type] == service.to_s }
+        service_spec[:endpoints][0]["#{ endpoint_type }URL".to_sym]
+      elsif session_data[:auth_service] && session_data[:auth_service][:host_uri] && session_data[:auth_service][:api_version]
+        "#{ session_data[:auth_service][:host_uri] }/v2.0"
+      elsif session_data[:auth_service] && session_data[:auth_service][:host_uri]
+        session_data[:auth_service][:host_uri]
+      else
+        raise Aviator::Service::MissingServiceEndpointError.new(service.to_s, self.class)
+      end
+    end
+
+
+    def params_to_querystring(param_names)
+      filters = []
+
+      param_names.each do |param_name|
+        filters << "#{ param_name }=#{ params[param_name] }" if params[param_name]
+      end
+
+      filters.empty? ? "" : "?#{ filters.join('&') }"
+    end
+
+  end
+
+end