[PATCH conductor 4/4] Updates XML format for index of Provider Accounts

Richard Su rwsu at redhat.com
Thu Jun 28 23:34:21 UTC 2012


On 06/27/2012 08:30 AM, pblaho at redhat.com wrote:
> From: Petr Blaho<pblaho at redhat.com>
>
> https://www.aeolusproject.org/redmine/issues/3423
>
> Changes rendering for xml to render template instead of calling
> serialization from model
> Adds templates for list of Provider Accounts and credentials partial
> Adds routes
> Adds before filter to load parent Provider if provider_id exists
> Adds provider_id scope for loading Provider Accounts in load_accounts
> before filter
> ---
>   .../controllers/provider_accounts_controller.rb    |   10 ++++++++--
>   .../views/provider_accounts/_credentials.xml.haml  |    3 +++
>   src/app/views/provider_accounts/_list.xml.haml     |   12 ++++++++++++
>   src/config/routes.rb                               |   10 ++++++----
>   4 files changed, 29 insertions(+), 6 deletions(-)
>   create mode 100644 src/app/views/provider_accounts/_credentials.xml.haml
>   create mode 100644 src/app/views/provider_accounts/_list.xml.haml
>
> diff --git a/src/app/controllers/provider_accounts_controller.rb b/src/app/controllers/provider_accounts_controller.rb
> index 157251a..ce0d2ab 100644
> --- a/src/app/controllers/provider_accounts_controller.rb
> +++ b/src/app/controllers/provider_accounts_controller.rb
> @@ -16,17 +16,18 @@
>
>   class ProviderAccountsController<  ApplicationController
>     before_filter :require_user
> +  before_filter :load_provider, :only =>  [:index]
>     before_filter :load_accounts, :only =>  [:index,:show]
>
>     def index
>       clear_breadcrumbs
>       save_breadcrumb(provider_accounts_path)
> -    load_accounts
>
>       respond_to do |format|
>         #xml list of provider_accounts for aeolus-image, aeolus-image could work with prov. accounts list for givent provider
>         #to resemble html views logic, so this route could be removed (provider_accounts could be user only as nested resource)
> -      format.xml { render :text =>  ProviderAccount.xml_export(@provider_accounts) }
> +      #format.xml { render :text =>  ProviderAccount.xml_export(@provider_accounts) }
> +      format.xml { render :partial =>  'list.xml', :locals =>  { :provider_accounts =>  @provider_accounts, :with_credentials =>  true } }
>       end
>     end
>
> @@ -213,11 +214,16 @@ class ProviderAccountsController<  ApplicationController
>       flash.now[:error] = t"provider_accounts.flash.error.test_connection_failed_provider"
>     end
>
> +  def load_provider
> +    @provider = Provider.list_for_user(current_session, current_user, Privilege::VIEW).find(params[:provider_id]) if params[:provider_id]
> +  end
> +
>     def load_accounts
>       @provider_accounts = ProviderAccount.
>         apply_filters(:preset_filter_id =>
>                         params[:provider_accounts_preset_filter],
>                       :search_filter =>  params[:provider_accounts_search]).
>         list_for_user(current_session, current_user, Privilege::VIEW)
> +    @provider_accounts = @provider_accounts.where(:provider_id =>  @provider.id) if @provider
>     end
>   end
> diff --git a/src/app/views/provider_accounts/_credentials.xml.haml b/src/app/views/provider_accounts/_credentials.xml.haml
> new file mode 100644
> index 0000000..0103e6c
> --- /dev/null
> +++ b/src/app/views/provider_accounts/_credentials.xml.haml
> @@ -0,0 +1,3 @@
> +-creds_label_hash.each do |h|
> +  =content_tag(h[:label]) do
> +    =h[:value]
> diff --git a/src/app/views/provider_accounts/_list.xml.haml b/src/app/views/provider_accounts/_list.xml.haml
> new file mode 100644
> index 0000000..fefe26d
> --- /dev/null
> +++ b/src/app/views/provider_accounts/_list.xml.haml
> @@ -0,0 +1,12 @@
> +!!! XML
> +%provider_accounts
> +  - provider_accounts.each do |pa|
Would it be possible to use the provider_account model's to_xml method here?
> +    %provider_account{:id =>  pa.id, :href =>  api_provider_account_url(pa)}
> +      -provider = pa.provider
> +      -provider_type = provider.provider_type
> +      %name= pa.name
> +      %provider{:id =>  provider.id, :href =>  api_provider_url(provider)}= provider.name
> +      %provider_type= provider_type.deltacloud_driver
> +      -if local_assigns[:with_credentials]
> +        = content_tag(provider_type.deltacloud_driver + '_credentials') do
> +          = render 'credentials', :creds_label_hash =>  pa.creds_label_hash
> diff --git a/src/config/routes.rb b/src/config/routes.rb
> index da762a7..242ad34 100644
> --- a/src/config/routes.rb
> +++ b/src/config/routes.rb
> @@ -264,10 +264,12 @@ Conductor::Application.routes.draw do
>       end
>     end
>
> -  scope "/api" do
> -    resources :providers, :as =>  'api_providers', :only =>  [:index, :show, :create, :update, :destroy]
> -    resources :provider_accounts, :as =>  'api_provider_accounts', :only =>  [:index, :show]
> -    resources :provider_types, :as =>  'api_provider_types', :only =>  [:index, :show]
> +  scope "/api", :as =>  'api' do
> +    resources :providers, :only =>  [:index, :show, :create, :update, :destroy] do
> +      resources :provider_accounts, :only =>  [:index]
> +    end
> +    resources :provider_accounts, :only =>  [:index, :show]
> +    resources :provider_types, :only =>  [:index, :show]
>     end
>
>     #match 'matching_profiles', :to =>  '/hardware_profiles/matching_profiles/:hardware_profile_id/provider/:provider_id', :controller =>  'hardware_profiles', :action =>  'matching_profiles', :conditions =>  { :method =>  :get }, :as =>'matching_profiles'




More information about the aeolus-devel mailing list