You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@deltacloud.apache.org by mf...@redhat.com on 2011/05/12 13:52:47 UTC

[PATCH core 1/4] Added features to API JSON entrypoints

From: Michal Fojtik <mf...@redhat.com>


Signed-off-by: Michal fojtik <mf...@redhat.com>
---
 server/lib/deltacloud/helpers.rb             |    3 ++-
 server/lib/deltacloud/helpers/json_helper.rb |   23 +++++++++++++++++++++++
 server/server.rb                             |    4 +++-
 3 files changed, 28 insertions(+), 2 deletions(-)
 create mode 100644 server/lib/deltacloud/helpers/json_helper.rb

diff --git a/server/lib/deltacloud/helpers.rb b/server/lib/deltacloud/helpers.rb
index 5e90bab..6f8c168 100644
--- a/server/lib/deltacloud/helpers.rb
+++ b/server/lib/deltacloud/helpers.rb
@@ -15,7 +15,8 @@
 # under the License.
 
 require 'deltacloud/helpers/application_helper'
+require 'deltacloud/helpers/json_helper'
 require 'deltacloud/helpers/conversion_helper'
 require 'deltacloud/helpers/hardware_profiles_helper'
 
-helpers ApplicationHelper, ConversionHelper, HardwareProfilesHelper
+helpers ApplicationHelper, ConversionHelper, HardwareProfilesHelper, JSONHelper
diff --git a/server/lib/deltacloud/helpers/json_helper.rb b/server/lib/deltacloud/helpers/json_helper.rb
new file mode 100644
index 0000000..170b118
--- /dev/null
+++ b/server/lib/deltacloud/helpers/json_helper.rb
@@ -0,0 +1,23 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.  The
+# ASF licenses this file to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance with the
+# License.  You may obtain a copy of the License at
+#
+#       http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+module JSONHelper
+
+  def json_features_for_entrypoint(entrypoint)
+    features = driver.features(entrypoint.first).collect { |feature| feature.name }
+    features.empty? ? {} : { :features => features }
+  end
+
+end
diff --git a/server/server.rb b/server/server.rb
index 4da8357..7998de7 100644
--- a/server/server.rb
+++ b/server/server.rb
@@ -77,7 +77,9 @@ get '/api\/?' do
       { :api => {
           :version => settings.version,
           :driver => driver_symbol,
-          :links => entry_points.collect { |l| { :rel => l[0], :href => l[1]} }
+          :links => entry_points.collect do |l| 
+            { :rel => l[0], :href => l[1] }.merge(json_features_for_entrypoint(l))
+          end
         }
       }.to_json
     end
-- 
1.7.4.1