From: Michal Fojtik <[email protected]>
Signed-off-by: Michal fojtik <[email protected]> --- clients/cimi/app.rb | 1 + clients/cimi/lib/entities.rb | 1 + clients/cimi/lib/entities/machine_admin.rb | 68 ++++++++++++++++++++++++++ clients/cimi/views/machine_admins/index.haml | 44 +++++++++++++++++ clients/cimi/views/machine_admins/new.haml | 54 ++++++++++++++++++++ clients/cimi/views/machine_admins/show.haml | 42 ++++++++++++++++ 6 files changed, 210 insertions(+), 0 deletions(-) create mode 100644 clients/cimi/lib/entities/machine_admin.rb create mode 100644 clients/cimi/views/machine_admins/index.haml create mode 100644 clients/cimi/views/machine_admins/new.haml create mode 100644 clients/cimi/views/machine_admins/show.haml diff --git a/clients/cimi/app.rb b/clients/cimi/app.rb index 0dcad34..a8c3459 100644 --- a/clients/cimi/app.rb +++ b/clients/cimi/app.rb @@ -23,6 +23,7 @@ module CIMI::Frontend use CIMI::Frontend::MachineConfiguration use CIMI::Frontend::MachineImage use CIMI::Frontend::Machine + use CIMI::Frontend::MachineAdmin use CIMI::Frontend::MachineTemplate use CIMI::Frontend::VolumeConfiguration use CIMI::Frontend::VolumeImage diff --git a/clients/cimi/lib/entities.rb b/clients/cimi/lib/entities.rb index d351488..ddb8f91 100644 --- a/clients/cimi/lib/entities.rb +++ b/clients/cimi/lib/entities.rb @@ -21,6 +21,7 @@ end require 'entities/base_entity' require 'entities/cloud_entry_point' require 'entities/machine_configuration' +require 'entities/machine_admin' require 'entities/machine_image' require 'entities/machine' require 'entities/machine_template' diff --git a/clients/cimi/lib/entities/machine_admin.rb b/clients/cimi/lib/entities/machine_admin.rb new file mode 100644 index 0000000..bfa49ad --- /dev/null +++ b/clients/cimi/lib/entities/machine_admin.rb @@ -0,0 +1,68 @@ +# 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::Frontend::MachineAdmin < CIMI::Frontend::Entity + + get '/cimi/machine_admins/new' do + haml :'machine_admins/new' + end + + get '/cimi/machine_admins/:id' do + machine_admins_xml = get_entity('machine_admins', params[:id], credentials) + @machine_admin = CIMI::Model::MachineAdmin.from_xml(machine_admins_xml) + haml :'machine_admins/show' + end + + delete '/cimi/machine_admins/:id/delete' do + result = destroy_entity('machine_admins', params[:id], credentials) + if result.code == 200 + flash[:success] = "MachineAdmin '#{params[:id]}' was successfully destroyed." + redirect '/cimi/machine_admins' + else + flash[:error] = "Unable to destroy Machine Admin #{params[:id]}" + end + end + + get '/cimi/machine_admins' do + machine_admin_xml = get_entity_collection('machine_admins', credentials) + puts machine_admin_xml + @machine_admins = CIMI::Model::MachineAdminCollection.from_xml(machine_admin_xml) + puts @machine_admins.inspect + haml :'machine_admins/index' + end + + post '/cimi/machine_admin' do + machine_admin_xml = Nokogiri::XML::Builder.new do |xml| + xml.MachineAdmin(:xmlns => CIMI::Frontend::CMWG_NAMESPACE) { + xml.name params[:machine_admin][:name] + xml.description params[:machine_admin][:description] + xml.username params[:machine_admin][:username] + xml.password params[:machine_admin][:password] + xml.key params[:machine_admin][:key] + } + end.to_xml + begin + result = create_entity('machine_admins', machine_admin_xml, credentials) + machine_admin = CIMI::Model::MachineAdminCollection.from_xml(result) + flash[:success] = "MachineAdmin was successfully created." + redirect "/cimi/machine_admins/#{machine_admin.name}", 302 + rescue => e + flash[:error] = "Machine Admin could not be created: #{e.message}" + redirect :back + end + end + + +end diff --git a/clients/cimi/views/machine_admins/index.haml b/clients/cimi/views/machine_admins/index.haml new file mode 100644 index 0000000..cb04af6 --- /dev/null +++ b/clients/cimi/views/machine_admins/index.haml @@ -0,0 +1,44 @@ +- @title=@machine_admins.name + +- content_for :breadcrumb do + %ul.breadcrumb + %li + %a{ :href => "/cimi/cloudEntryPoint"} CloudEntryPoint + %span.divider="/" + %li.active + MachineAdminCollection + +- content_for :actions do + %p + %a{ :href => "#{@machine_admins.uri}?format=xml", :class => 'label warning' } XML + %a{ :href => "#{@machine_admins.uri}?format=json", :class => 'label warning' } JSON + %p + %a{ :href => '/cimi/machine_admins/new', :class => 'btn info'} New Machine Admin + +%blockquote + %p + A Machine Admin Collection entity represents the collection of Machine Admin + entities within a Provider. This entity can be used to locate and create + MachineAdmins. + +%ul + - @machine_admins.machine_admins.each do |conf| + %li + %a{ :href => "/cimi/machine_admins/#{conf.href.split('/').last}"}=conf.href.split('/').last + +- if @machine_admins.machine_admins.empty? + .alert-message.block-message.warning + %p + There are no MachineAdmin entities defined for this collection. + .alert_actions + %a{ :href => '/cimi/machine_admins/new', :class => 'btn'} Create new + +%h3 Collection details + +%dl + %dt URI + %dd=@machine_admins.uri + %dt Description + %dd=@machine_admins.description + %dt Created + %dd=@machine_admins.created diff --git a/clients/cimi/views/machine_admins/new.haml b/clients/cimi/views/machine_admins/new.haml new file mode 100644 index 0000000..b969740 --- /dev/null +++ b/clients/cimi/views/machine_admins/new.haml @@ -0,0 +1,54 @@ +- @title="New MachineAdmin" + +- content_for :breadcrumb do + %ul.breadcrumb + %li + %a{ :href => "/cimi/cloudEntryPoint"} CloudEntryPoint + %span.divider="/" + %li + %a{ :href => "/cimi/machine_admins"} MachineAdminCollection + %span.divider="/" + %li.active New MachineAdmin + + +%form{ :action => "/cimi/machine_admin", :method => :post } + %fieldset + %legend Create new MachineAdmin + %div.clearfix + %label{ :for => 'machine_admin[name]' } + Name + %div.input + %input{ :type => :text, :name => 'machine_admin[name]' } + %div.clearfix + %label{ :for => 'machine_admin[description]' } + Description + %div.input + %input{ :type => :text, :name => 'machine_admin[description]' } + %div.clearfix + %label{ :for => 'machine_admin[username]' } + Username + %div.input + %input{ :type => :text, :name => 'machine_admin[username]', :value => "root" } + %span.help-block + %span.label.info NOTE + Property could not be supported by cloud provider + %div.clearfix + %label{ :for => 'machine_admin[password]' } + Password + %div.input + %input{ :type => :text, :name => 'machine_admin[password]' } + %span.help-block + %span.label.info NOTE + Property could not be supported by cloud provider + %div.clearfix + %label{ :for => 'machine_admin[key]' } + Key + %div.input + %textarea.xlarge{ :name => 'machine_admin[key]', :rows => 3 } + %span.help-block + %span.label.info NOTE + Property could not be supported by cloud provider + %div.actions + %input{ :type => :submit, :class => 'btn primary', :value => "Create MachineAdmin" } + %button{ :type => :reset, :class => 'btn' } Reset + diff --git a/clients/cimi/views/machine_admins/show.haml b/clients/cimi/views/machine_admins/show.haml new file mode 100644 index 0000000..07602f3 --- /dev/null +++ b/clients/cimi/views/machine_admins/show.haml @@ -0,0 +1,42 @@ +- @title="#{@machine_admin.name}" + +- content_for :breadcrumb do + %ul.breadcrumb + %li + %a{ :href => "/cimi/cloudEntryPoint"} CloudEntryPoint + %span.divider="/" + %li + %a{ :href => "/cimi/machine_admins"} MachineAdminCollection + %span.divider="/" + %li.active + = @machine_admin.name + +- content_for :actions do + %p + %a{ :href => "#{@machine_admin.uri}?format=xml", :class => 'label warning' } XML + %a{ :href => "#{@machine_admin.uri}?format=json", :class => 'label warning' } JSON + %p + %form{ :action => "/cimi/machine_admins/#{@machine_admin.name}/delete", :method => :post, :style => 'display:inline'} + %input{ :type => :hidden, :name => '_method', :value => 'delete'} + %button{ :class => 'btn danger'} Destroy + +%blockquote + %p + A Machine Admin entity contains the information required to create the + initial administrative super- user of a newly created Machine + +%dl + %dt URI + %dd + %a{ :href => @machine_admin.uri }=@machine_admin.uri + %dt Description + %dd=@machine_admin.description + %dt Created + %dd=@machine_admin.created + %dt Username + %dd=boolean_span_for @machine_admin.username + %dt Password + %dd=boolean_span_for @machine_admin.password + %dt Key + %dd + %pre=boolean_span_for @machine_admin.key -- 1.7.4.4
