Return-Path: X-Original-To: apmail-deltacloud-dev-archive@www.apache.org Delivered-To: apmail-deltacloud-dev-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 00331978C for ; Wed, 30 Nov 2011 15:20:05 +0000 (UTC) Received: (qmail 64840 invoked by uid 500); 30 Nov 2011 15:20:03 -0000 Delivered-To: apmail-deltacloud-dev-archive@deltacloud.apache.org Received: (qmail 64812 invoked by uid 500); 30 Nov 2011 15:20:03 -0000 Mailing-List: contact dev-help@deltacloud.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@deltacloud.apache.org Delivered-To: mailing list dev@deltacloud.apache.org Received: (qmail 64772 invoked by uid 99); 30 Nov 2011 15:20:03 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 30 Nov 2011 15:20:03 +0000 X-ASF-Spam-Status: No, hits=-5.0 required=5.0 tests=RCVD_IN_DNSWL_HI,SPF_HELO_PASS,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (nike.apache.org: domain of mfojtik@redhat.com designates 209.132.183.28 as permitted sender) Received: from [209.132.183.28] (HELO mx1.redhat.com) (209.132.183.28) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 30 Nov 2011 15:19:55 +0000 Received: from int-mx02.intmail.prod.int.phx2.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id pAUFJXME024341 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Wed, 30 Nov 2011 10:19:33 -0500 Received: from dhcp-29-121.brq.redhat.com (dhcp-29-121.brq.redhat.com [10.34.29.121]) by int-mx02.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id pAUFJVe2028203 for ; Wed, 30 Nov 2011 10:19:33 -0500 From: mfojtik@redhat.com To: dev@deltacloud.apache.org Subject: [PATCH core 2/2] CIMI: Added MachineAdmin model operations Date: Wed, 30 Nov 2011 16:20:40 +0100 Message-Id: <1322666440-86035-2-git-send-email-mfojtik@redhat.com> In-Reply-To: <1322666440-86035-1-git-send-email-mfojtik@redhat.com> References: <1322666440-86035-1-git-send-email-mfojtik@redhat.com> X-Scanned-By: MIMEDefang 2.67 on 10.5.11.12 X-Virus-Checked: Checked by ClamAV on apache.org From: Michal Fojtik Signed-off-by: Michal fojtik --- server/lib/cimi/model/machine_admin.rb | 27 +++++++++++++++++ server/lib/cimi/server.rb | 49 ++++++++++++++++++++++++++++++- 2 files changed, 74 insertions(+), 2 deletions(-) diff --git a/server/lib/cimi/model/machine_admin.rb b/server/lib/cimi/model/machine_admin.rb index 4f73223..fa27ca4 100644 --- a/server/lib/cimi/model/machine_admin.rb +++ b/server/lib/cimi/model/machine_admin.rb @@ -25,4 +25,31 @@ class CIMI::Model::MachineAdmin < CIMI::Model::Base scalar :rel, :href end + def self.find(id, context) + if id == :all + keys = context.driver.keys(context.credentials) + keys.map { |key| from_key(key, context) } + else + key = context.driver.key(context.credentials, :id => id) + from_key(key, context) + end + end + + def self.create_from_xml(body, context) + machine_admin = MachineAdmin.from_xml(body) + key = context.driver.create_key(context.credentials, :key_name => machine_admin.name) + from_key(key, context) + end + + private + + def self.from_key(key, context) + self.new( + :name => key.id, + :username => key.username, + :password => key.fingerprint, + :key => key.pem_rsa_key + ) + end + end diff --git a/server/lib/cimi/server.rb b/server/lib/cimi/server.rb index 1e85d0f..a7fd778 100644 --- a/server/lib/cimi/server.rb +++ b/server/lib/cimi/server.rb @@ -136,7 +136,6 @@ global_collection :machine_images do operation :show do description "Show specific machine image." - with_capability :image param :id, :string, :required control do machine_image = MachineImage.find(params[:id], self) @@ -149,6 +148,53 @@ global_collection :machine_images do end +global_collection :machine_admins do + description 'Machine Admin entity' + + operation :index do + description "List all machine admins" + with_capability :keys + control do + machine_admins = MachineAdmin.all(self) + respond_to do |format| + format.xml { machine_admins.to_xml_cimi_collection(self) } + format.json { machine_admins.to_json_cimi_collection(self) } + end + end + end + + operation :show do + description "Show specific machine admin" + param :id, :string, :required + with_capability :key + control do + machine_admin = MachineAdmin.find(params[:id], self) + respond_to do |format| + format.xml { machine_admin.to_xml } + format.json { machine_admin.to_json } + end + end + end + + operation :create do + description "Show specific machine admin" + with_capability :create_key + control do + if request.content_type.end_with?("+json") + new_admin = MachineAdmin.create_from_json(request.body.read, self) + else + new_admin = MachineAdmin.create_from_xml(request.body.read, self) + end + status 201 # Created + respond_to do |format| + format.json { new_admin.to_json } + format.xml { new_admin.to_xml } + end + end + end + +end + global_collection :machines do description 'List all machine' @@ -165,7 +211,6 @@ global_collection :machines do operation :show do description "Show specific machine." - with_capability :instance param :id, :string, :required control do machine = Machine.find(params[:id], self) -- 1.7.4.4