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 2013/02/25 12:04:56 UTC
[PATCH core 1/2] CIMI: Fixed typo in volume_image column name in database
From: Michal Fojtik <mf...@redhat.com>
Signed-off-by: Michal fojtik <mf...@redhat.com>
---
server/lib/db/volume_template.rb | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/server/lib/db/volume_template.rb b/server/lib/db/volume_template.rb
index da7d4f7..7f54c33 100644
--- a/server/lib/db/volume_template.rb
+++ b/server/lib/db/volume_template.rb
@@ -18,7 +18,7 @@ module Deltacloud
class VolumeTemplate < Entity
validates_presence_of :volume_config
- validates_presence_of :volume_Image
+ validates_presence_of :volume_image
end
end
--
1.8.1.2
[PATCH core 2/2] CIMI: Added VolumeTemplateCreate model
Posted by mf...@redhat.com.
From: Michal Fojtik <mf...@redhat.com>
Signed-off-by: Michal fojtik <mf...@redhat.com>
---
server/lib/cimi/collections/volume_templates.rb | 6 ++---
server/lib/cimi/models.rb | 3 ++-
server/lib/cimi/models/volume_template.rb | 25 +++++-------------
server/lib/cimi/models/volume_template_create.rb | 33 ++++++++++++++++++++++++
server/support/cimi/volume_template.xml | 7 +++++
5 files changed, 51 insertions(+), 23 deletions(-)
create mode 100644 server/lib/cimi/models/volume_template_create.rb
create mode 100644 server/support/cimi/volume_template.xml
diff --git a/server/lib/cimi/collections/volume_templates.rb b/server/lib/cimi/collections/volume_templates.rb
index 720e73b..b844ed8 100644
--- a/server/lib/cimi/collections/volume_templates.rb
+++ b/server/lib/cimi/collections/volume_templates.rb
@@ -45,9 +45,9 @@ module CIMI::Collections
operation :create, :with_capability => :create_storage_volume do
description "Create new VolumeTemplate"
control do
- new_template = CIMI::Model::VolumeTemplate.create(
- request.body.read, self, current_content_type
- )
+ puts request.body
+ vol = CIMI::Model::VolumeTemplateCreate.parse(request.body, request.content_type)
+ new_template = vol.create(self)
headers_for_create new_template
respond_to do |format|
format.json { new_template.to_json }
diff --git a/server/lib/cimi/models.rb b/server/lib/cimi/models.rb
index a86d6a9..6c89a93 100644
--- a/server/lib/cimi/models.rb
+++ b/server/lib/cimi/models.rb
@@ -64,9 +64,10 @@ require_relative './models/credential'
require_relative './models/credential_template'
require_relative './models/credential_create'
require_relative './models/volume'
-require_relative './models/volume_template'
require_relative './models/volume_configuration'
require_relative './models/volume_image'
+require_relative './models/volume_template'
+require_relative './models/volume_template_create'
require_relative './models/machine'
require_relative './models/machine_configuration'
require_relative './models/machine_image'
diff --git a/server/lib/cimi/models/volume_template.rb b/server/lib/cimi/models/volume_template.rb
index c00ffc8..15cbcd0 100644
--- a/server/lib/cimi/models/volume_template.rb
+++ b/server/lib/cimi/models/volume_template.rb
@@ -17,8 +17,8 @@ class CIMI::Model::VolumeTemplate < CIMI::Model::Base
acts_as_root_entity
- href :volume_config
- href :volume_image
+ ref :volume_config, :required => true
+ ref :volume_image, :required => true
array :meter_templates do
end
@@ -47,26 +47,10 @@ class CIMI::Model::VolumeTemplate < CIMI::Model::Base
end
end
- def self.create(body, context, type)
- input = (type == :xml)? XmlSimple.xml_in(body, {"ForceArray"=>false,"NormaliseSpace"=>2}) : JSON.parse(body)
- input['property'] ||= []
- vol_image = input['volumeImage']['href'] if input['volumeImage']
- new_template = current_db.add_volume_template(
- :name => input['name'],
- :description => input['description'],
- :volume_config => input['volumeConfig']['href'],
- :volume_image => vol_image,
- :ent_properties => type == :xml ? JSON::dump((xml['property'] || {}).inject({}){ |r, p| r[p['key']]=p['content']; r }) : (json['properties'] || {}).to_json
- )
- from_db(new_template, context)
- end
-
def self.delete!(id, context)
current_db.volume_templates.first(:id => id).destroy
end
-private
-
def self.from_db(model, context)
self.new(
:id => context.volume_template_url(model.id),
@@ -76,7 +60,10 @@ private
:volume_image => {:href => model.volume_image},
:property => (model.ent_properties ? JSON::parse(model.ent_properties) : nil),
:operations => [
- { :href => context.destroy_volume_template_url(model.id), :rel => 'http://schemas.dmtf.org/cimi/1/action/delete' }
+ {
+ :href => context.destroy_volume_template_url(model.id),
+ :rel => 'http://schemas.dmtf.org/cimi/1/action/delete'
+ }
]
)
end
diff --git a/server/lib/cimi/models/volume_template_create.rb b/server/lib/cimi/models/volume_template_create.rb
new file mode 100644
index 0000000..b6dbec2
--- /dev/null
+++ b/server/lib/cimi/models/volume_template_create.rb
@@ -0,0 +1,33 @@
+# 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.
+
+class CIMI::Model::VolumeTemplateCreate < CIMI::Model::Base
+
+ ref :volume_config, :required => true
+ ref :volume_image, :required => true
+
+ def create(context)
+ validate!
+ new_template = self.class.current_db.add_volume_template(
+ :name => name,
+ :description => description,
+ :volume_config => volume_config.href,
+ :volume_image => volume_image.href,
+ :ent_properties => property.to_json
+ )
+ CIMI::Model::VolumeTemplate.from_db(new_template, context)
+ end
+
+end
diff --git a/server/support/cimi/volume_template.xml b/server/support/cimi/volume_template.xml
new file mode 100644
index 0000000..0e1d4fa
--- /dev/null
+++ b/server/support/cimi/volume_template.xml
@@ -0,0 +1,7 @@
+<VolumeTemplateCreate>
+ <name>myXMLVolumeTemplate</name>
+ <description>Description of VolumeTemplate</description>
+ <property key="test">value</property>
+ <volumeConfig href="http://localhost:3001/cimi/volume_configurations/1"/>
+ <volumeImage href="http://localhost:3001/cimi/volume_images/snap1"/>
+</VolumeTemplateCreate>
--
1.8.1.2