You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@deltacloud.apache.org by ma...@redhat.com on 2012/12/19 14:30:23 UTC

[PATCH 1/2] CIMI: Add CIMI Features (Sinatra rabbit features DSL)

From: marios <ma...@redhat.com>


Signed-off-by: marios <ma...@redhat.com>
---
 server/lib/cimi/helpers.rb                     |  3 +-
 server/lib/deltacloud/drivers/base_driver.rb   |  2 +-
 server/lib/deltacloud/drivers/cimi_features.rb | 42 ++++++++++++++++++++++++++
 3 files changed, 45 insertions(+), 2 deletions(-)
 create mode 100644 server/lib/deltacloud/drivers/cimi_features.rb

diff --git a/server/lib/cimi/helpers.rb b/server/lib/cimi/helpers.rb
index ea71cbf..75f9770 100644
--- a/server/lib/cimi/helpers.rb
+++ b/server/lib/cimi/helpers.rb
@@ -14,12 +14,13 @@
 # under the License.
 
 require_relative '../deltacloud/drivers/features'
-
+require_relative '../deltacloud/drivers/cimi_features'
 module CIMI
   module Model; end
   class FakeCollection
     extend Sinatra::Rabbit::Features
     include Deltacloud::Features
+    include CIMI::Features
   end
 end
 
diff --git a/server/lib/deltacloud/drivers/base_driver.rb b/server/lib/deltacloud/drivers/base_driver.rb
index c63f94f..f488f91 100644
--- a/server/lib/deltacloud/drivers/base_driver.rb
+++ b/server/lib/deltacloud/drivers/base_driver.rb
@@ -19,6 +19,7 @@ module Deltacloud
   require_relative '../core_ext.rb'
   require_relative './exceptions.rb'
   require_relative './features.rb'
+  require_relative './cimi_features.rb'
   require_relative '../models/state_machine.rb'
 
   class BaseDriver
@@ -38,7 +39,6 @@ module Deltacloud
       @features ||= {}
     end
 
-
     def self.feature(collection, feature_name)
       return if has_feature?(collection, feature_name)
       constraints[collection] ||= {}
diff --git a/server/lib/deltacloud/drivers/cimi_features.rb b/server/lib/deltacloud/drivers/cimi_features.rb
new file mode 100644
index 0000000..2cea9d7
--- /dev/null
+++ b/server/lib/deltacloud/drivers/cimi_features.rb
@@ -0,0 +1,42 @@
+# 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 CIMI
+  module Features
+
+    def self.included(k)
+      current_features = features
+      k.instance_eval do
+        features(&current_features)
+      end
+    end
+
+    def self.features(&block)
+      block_given? ? @features = block : @features || Proc.new{}
+    end
+
+
+    features do
+      feature :default_initial_state, :for => :machines do
+        description "Indicates what the default initial state of a new Machine "
+      end
+
+      feature :initial_states, :for => :machines do
+        description "Indicates the list of allowable initial states"
+      end
+
+    end
+  end
+end
-- 
1.7.11.7