Project

General

Profile

« Previous | Next » 

Revision 4737f2de

Added by Martin Bacovsky about 10 years ago

Fixes #4515 - Add support for dynamic bindings

View differences:

app/controllers/katello/api/v1/api_controller.rb
resource_description do
api_version 'v1'
api_version 'v2'
api_base_url "#{Katello.config.url_prefix}/api"
end
# remove unwanted parameters 'action' and 'controller' from params list and return it
app/controllers/katello/api/v1/environments_controller.rb
module Katello
class Api::V1::EnvironmentsController < Api::V1::ApiController
resource_description do
resource_id 'lifecycle_environment'
description <<-EOS
# Description
......
EOS
api_version 'v1'
api_version 'v2'
api_base_url "#{Katello.config.url_prefix}/api"
end
respond_to :json
app/controllers/katello/api/v2/about_controller.rb
include Api::V2::Rendering
resource_description do
api_version 'v2'
api_base_url "#{Katello.config.url_prefix}/api"
end
end
end
app/controllers/katello/api/v2/api_controller.rb
resource_description do
api_version 'v2'
api_base_url "#{Katello.config.url_prefix}/api"
end
rescue_from(ActionController::ParameterMissing) do |parameter_missing_exception|
......
param :page, :number, :desc => "Page number, starting at 1"
param :per_page, :number, :desc => "Number of results per page to return"
param :order, String, :desc => "Sort field and order, eg. 'name DESC'"
param :full_results, BooleanValidator, :desc => "Whether or not to show all results"
param :full_results, :bool, :desc => "Whether or not to show all results"
param :sort, Hash, :desc => "Hash version of 'order' param" do
param :by, String, :desc => "Field to sort the results on"
param :order, String, :desc => "How to order the sorted results (e.g. ASC for ascending)"
app/controllers/katello/api/v2/changesets_controller.rb
resource_description do
api_version "v2"
api_base_url "#{Katello.config.url_prefix}/api"
end
def_param_group :changeset do
app/controllers/katello/api/v2/content_uploads_controller.rb
include Api::V2::Rendering
resource_description do
api_version 'v2'
api_base_url "#{Katello.config.url_prefix}/api"
end
end
end
app/controllers/katello/api/v2/content_view_definitions_controller.rb
resource_description do
api_version "v2"
api_base_url "#{Katello.config.url_prefix}/api"
end
def_param_group :content_view_definition do
app/controllers/katello/api/v2/custom_info_controller.rb
resource_description do
api_version "v2"
api_base_url "#{Katello.config.url_prefix}/api"
end
def_param_group :informable_identifier do
app/controllers/katello/api/v2/distributions_controller.rb
include Api::V2::Rendering
resource_description do
api_version 'v2'
api_base_url "#{Katello.config.url_prefix}/api"
end
end
end
app/controllers/katello/api/v2/distributors_controller.rb
include Api::V2::Rendering
resource_description do
api_version 'v2'
api_base_url "#{Katello.config.url_prefix}/api"
end
end
end
app/controllers/katello/api/v2/environments_controller.rb
class Api::V2::EnvironmentsController < Api::V2::ApiController
resource_description do
resource_id 'lifecycle_environments'
description <<-DESC
# Description
......
DESC
api_version 'v2'
api_base_url "#{Katello.config.url_prefix}/api"
end
respond_to :json
app/controllers/katello/api/v2/filter_rules_controller.rb
resource_description do
api_version "v2"
api_base_url "#{Katello.config.url_prefix}/api"
end
api :POST,
app/controllers/katello/api/v2/filters_controller.rb
include Api::V2::Rendering
resource_description do
api_version 'v2'
api_base_url "#{Katello.config.url_prefix}/api"
end
api :GET, "/content_view_definitions/:content_view_definition_id/filters",
"List filters"
param :content_view_definition_id, String, :desc => "id of the content view definition", :required => true
app/controllers/katello/api/v2/organization_default_info_controller.rb
resource_description do
api_version "v2"
api_base_url "#{Katello.config.url_prefix}/api"
end
def_param_group :informable_identifier do
app/controllers/katello/api/v2/organizations_controller.rb
before_filter :local_find_taxonomy, :only => %w{repo_discover cancel_repo_discover}
resource_description do
api_version 'v2'
api_base_url "#{Katello.config.url_prefix}/api"
end
def local_find_taxonomy
find_taxonomy
end
app/controllers/katello/api/v2/packages_controller.rb
class Api::V2::PackagesController < Api::V1::PackagesController
include Api::V2::Rendering
resource_description do
api_version 'v2'
api_base_url "#{Katello.config.url_prefix}/api"
end
end
end
app/controllers/katello/api/v2/permissions_controller.rb
resource_description do
api_version "v2"
api_base_url "#{Katello.config.url_prefix}/api"
end
api :POST, "/roles/:role_id/permissions", "Create a roles permission"
app/controllers/katello/api/v2/ping_controller.rb
module Katello
class Api::V2::PingController < Api::V2::ApiController
resource_description do
api_version "v2"
end
skip_before_filter :authorize
skip_before_filter :require_user, :only => [:server_status]
app/controllers/katello/api/v2/puppet_modules_controller.rb
module Katello
class Api::V2::PuppetModulesController < Api::V1::PuppetModulesController
include Api::V2::Rendering
resource_description do
api_version 'v2'
api_base_url "#{Katello.config.url_prefix}/api"
end
end
end
app/controllers/katello/api/v2/role_ldap_groups_controller.rb
resource_description do
api_version "v2"
api_base_url "#{Katello.config.url_prefix}/api"
end
api :POST, "/roles/:role_id/ldap_groups", "Add group to list of LDAP groups associated with the role"
app/controllers/katello/api/v2/roles_controller.rb
include Api::V2::Rendering
resource_description do
api_version 'v2'
api_base_url "#{Katello.config.url_prefix}/api"
end
end
end
app/controllers/katello/api/v2/root_controller.rb
include Api::V2::Rendering
resource_description do
api_version 'v2'
api_base_url "#{Katello.config.url_prefix}/api"
end
end
end
app/controllers/katello/api/v2/system_group_errata_controller.rb
include Api::V2::Rendering
resource_description do
api_version 'v2'
api_base_url "#{Katello.config.url_prefix}/api"
end
end
end
app/controllers/katello/api/v2/system_group_packages_controller.rb
include Api::V2::Rendering
resource_description do
api_version 'v2'
api_base_url "#{Katello.config.url_prefix}/api"
end
end
end
app/controllers/katello/api/v2/uebercerts_controller.rb
include Api::V2::Rendering
resource_description do
api_version 'v2'
api_base_url "#{Katello.config.url_prefix}/api"
end
end
end
app/controllers/katello/api/v2/users_controller.rb
resource_description do
api_version "v2"
api_base_url "#{Katello.config.url_prefix}/api"
end
def_param_group :user do
config/initializers/apipie.rb
# -*- coding: utf-8 -*-
Apipie.configure do |config|
config.app_name = Katello.config.app_name
config.app_info = "The sysadmin's fortress."
config.copyright = "Copyright 2013 Red Hat, Inc."
config.api_base_url = "/api"
config.api_controllers_matcher = "#{Rails.root}/app/controllers/api/**/*.rb"
config.ignored_by_recorder = %w[Api::V1::PulpProxiesController Api::V1::CandlepinProxiesController Api::V1::RootController, Api::V1::RepositoriesController#sync_complete]
config.doc_base_url = "/apidoc"
config.use_cache = Rails.env.production?
config.validate = false
config.default_version = 'v1'
unless config.use_cache?
require 'maruku'
class Katello::MarkdownMaruku
def self.to_html(text)
Maruku.new(text).to_html
end
end
config.markup = Katello::MarkdownMaruku
end
if Katello.config.headpin?
config.ignored = %w[Api::V1::ChangesetsController
Api::V1::ChangesetsContentController
Api::V1::ErrataController
Api::V1::DistributionsController
Api::V1::GpgKeysController
Api::V1::RepositoriesController
Api::V1::PackagesController
Api::V1::TasksController
Api::V1::TemplatesController
Api::V1::TemplatesContentController
Api::V2::ChangesetsController
Api::V2::ChangesetsContentController
Api::V2::ErrataController
Api::V2::DistributionsController
Api::V2::GpgKeysController
Api::V2::RepositoriesController
Api::V2::PackagesController
Api::V2::TasksController
Api::V2::TemplatesController
Api::V2::TemplatesContentController
]
config.cache_dir = File.join(Rails.root, "public/headpin-apipie-cache")
end
end
# special type of validator: we say that it's not specified
class UndefValidator < Apipie::Validator::BaseValidator
def validate(value)
true
end
def self.build(param_description, argument, options, block)
if argument == :undef
self.new(param_description)
end
end
def description
nil
end
end
class Apipie::Validator::TypeValidator
def description
@type.name
end
end
class Apipie::Validator::HashValidator
def description
"Hash"
end
end
class NumberValidator < Apipie::Validator::BaseValidator
def validate(value)
value.to_s =~ /^(0|[1-9]\d*)$/
end
def self.build(param_description, argument, options, block)
if argument == :number
self.new(param_description)
end
end
def error
"Parameter #{param_name} expecting to be a number, got: #{@error_value}"
end
def description
"number."
end
end
class IdentifierValidator < Apipie::Validator::BaseValidator
def validate(value)
value = value.to_s
value =~ /\A[\w| |_|-]*\Z/ && value.strip == value && (2..128).include?(value.length)
end
def self.build(param_description, argument, options, block)
if argument == :identifier
self.new(param_description)
end
end
def error
"Parameter #{param_name} expecting to be an identifier, got: #{@error_value}"
end
def description
"string from 2 to 128 characters containting only alphanumeric characters, space, '_', '-' with no leading or trailing space.."
end
end
class BooleanValidator < Apipie::Validator::BaseValidator
def validate(value)
%w[true false True False].include?(value.to_s)
end
def self.build(param_description, argument, options, block)
if argument == :bool
self.new(param_description)
end
end
def error
"Parameter #{param_name} expecting to be a boolean value, got: #{@error_value}"
end
def description
"boolean"
end
end
katello.gemspec
gem.add_dependency "i18n_data", ">= 0.2.6"
# Documentation
gem.add_dependency "apipie-rails", ">= 0.0.13"
gem.add_dependency "apipie-rails", ">= 0.1.0"
gem.add_dependency "maruku"
# Pulp
lib/katello/apipie/validators.rb
class Apipie::Validator::TypeValidator
def description
@type.name
end
end
class Apipie::Validator::HashValidator
def description
"Hash"
end
end
module Katello
module Apipie
module Validators
class UndefValidator < ::Apipie::Validator::BaseValidator
def validate(value)
true
end
def self.build(param_description, argument, options, block)
if argument == :undef
self.new(param_description)
end
end
def description
nil
end
end
class NumberValidator < ::Apipie::Validator::BaseValidator
def validate(value)
value.to_s =~ /^(0|[1-9]\d*)$/
end
def self.build(param_description, argument, options, block)
if argument == :number
self.new(param_description)
end
end
def error
"Parameter #{param_name} expecting to be a number, got: #{@error_value}"
end
def description
"number."
end
end
class IdentifierValidator < ::Apipie::Validator::BaseValidator
def validate(value)
value = value.to_s
value =~ /\A[\w| |_|-]*\Z/ && value.strip == value && (2..128).include?(value.length)
end
def self.build(param_description, argument, options, block)
if argument == :identifier
self.new(param_description)
end
end
def error
"Parameter #{param_name} expecting to be an identifier, got: #{@error_value}"
end
def description
"string from 2 to 128 characters containting only alphanumeric characters, space, '_', '-' with no leading or trailing space.."
end
end
class BooleanValidator < ::Apipie::Validator::BaseValidator
def validate(value)
%w[true false True False].include?(value.to_s)
end
def self.build(param_description, argument, options, block)
if argument == :bool
self.new(param_description)
end
end
def error
"Parameter #{param_name} expecting to be a boolean value, got: #{@error_value}"
end
def description
"boolean"
end
end
end
end
end
lib/katello/engine.rb
end
initializer "katello.apipie" do
# When Katello is loaded, the apidoc is restricted just to the Katello controllers.
# This way, it's possible to generate both Foreman bindings (when Katello is not loaded)
# or just Katello bindings (when Katello loaded) the same way.
Apipie.configuration.api_controllers_matcher = "#{Katello::Engine.root}/app/controllers/katello/api/v2/*.rb"
Apipie.configuration.api_controllers_matcher << "#{Katello::Engine.root}/app/controllers/katello/api/v2/*.rb"
Apipie.configuration.ignored += %w[Api::V2::OrganizationsController]
Apipie.configuration.checksum_path += ['/katello/api/']
require 'katello/apipie/validators'
end
initializer "katello.register_actions", :before => 'foreman_tasks.initialize_dynflow' do |app|
rubygem-katello.spec
Requires: %{?scl_prefix}ruby(release) = 2.0.0
BuildRequires: %{?scl_prefix}ruby(release) = 2.0.0
%else
%if "%{?scl}" == "ruby193" || 0%{?rhel} > 6 || 0%{?fedora} > 16
%if "%{?scl}" == "ruby193" || 0%{?rhel} > 6 || 0%{?fedora} > 16
Requires: %{?scl_prefix}ruby(abi) = 1.9.1
BuildRequires: %{?scl_prefix}ruby(abi) = 1.9.1
%else
......
Requires: %{?scl_prefix}rubygems
Requires: %{?scl_prefix}rubygem-angular-rails-templates >= 0.0.4
Requires: %{?scl_prefix}rubygem-rails
Requires: %{?scl_prefix}rubygem-json
Requires: %{?scl_prefix}rubygem-oauth
Requires: %{?scl_prefix}rubygem-json
Requires: %{?scl_prefix}rubygem-oauth
Requires: %{?scl_prefix}rubygem-rest-client
Requires: %{?scl_prefix}rubygem-net-ldap
Requires: %{?scl_prefix}rubygem-net-ldap
Requires: %{?scl_prefix}rubygem-ldap_fluff >= 0.2.2
Requires: %{?scl_prefix}rubygem-foreigner => 1.4.2
Requires: %{?scl_prefix}rubygem-foreigner < 1.5
Requires: %{?scl_prefix}rubygem-daemons >= 1.1.4
Requires: %{?scl_prefix}rubygem-uuidtools
Requires: %{?scl_prefix}rubygem-rabl
Requires: %{?scl_prefix}rubygem-uuidtools
Requires: %{?scl_prefix}rubygem-rabl
Requires: %{?scl_prefix}rubygem-tire => 0.6.2
Requires: %{?scl_prefix}rubygem-tire < 0.7
Requires: %{?scl_prefix}rubygem-logging >= 1.8.0
Requires: %{?scl_prefix}rubygem-hooks
Requires: %{?scl_prefix}rubygem-hooks
Requires: %{?scl_prefix}rubygem-foreman-tasks >= 0.1.0
Requires: %{?scl_prefix}rubygem-justified
Requires: %{?scl_prefix}rubygem-justified
Requires: %{?scl_prefix}rubygem-delayed_job => 3.0.2
Requires: %{?scl_prefix}rubygem-delayed_job < 3.1
Requires: %{?scl_prefix}rubygem-delayed_job_active_record => 0.3.3
Requires: %{?scl_prefix}rubygem-delayed_job_active_record < 0.4
Requires: %{?scl_prefix}rubygem-gettext_i18n_rails
Requires: %{?scl_prefix}rubygem-gettext_i18n_rails
Requires: %{?scl_prefix}rubygem-i18n_data >= 0.2.6
Requires: %{?scl_prefix}rubygem-apipie-rails >= 0.0.13
Requires: %{?scl_prefix}rubygem-maruku
Requires: %{?scl_prefix}rubygem-apipie-rails >= 0.1.1
Requires: %{?scl_prefix}rubygem-maruku
Requires: %{?scl_prefix}rubygem-runcible >= 1.0.8
Requires: %{?scl_prefix}rubygem-ruby-openid
Requires: %{?scl_prefix}rubygem-anemone
Requires: %{?scl_prefix}rubygem-anemone
Requires: %{?scl_prefix}rubygem-simple-navigation >= 3.3.4
Requires: %{?scl_prefix}rubygem-sass-rails
Requires: %{?scl_prefix}rubygem-less-rails
Requires: %{?scl_prefix}rubygem-compass-rails
Requires: %{?scl_prefix}rubygem-compass-960-plugin
Requires: %{?scl_prefix}rubygem-haml-rails
Requires: %{?scl_prefix}rubygem-less-rails
Requires: %{?scl_prefix}rubygem-compass-rails
Requires: %{?scl_prefix}rubygem-compass-960-plugin
Requires: %{?scl_prefix}rubygem-haml-rails
Requires: %{?scl_prefix}rubygem-ui_alchemy-rails = 1.0.12
Requires: %{?scl_prefix}rubygem-deface < 1.0.0
Requires: %{?scl_prefix}rubygem-strong_parameters
BuildRequires: foreman >= 1.3.0
BuildRequires: %{?scl_prefix}rubygem-angular-rails-templates >= 0.0.4
BuildRequires: %{?scl_prefix}rubygem-net-ldap
BuildRequires: %{?scl_prefix}rubygem-net-ldap
BuildRequires: %{?scl_prefix}rubygem-ldap_fluff >= 0.2.2
BuildRequires: %{?scl_prefix}rubygem-sqlite3
BuildRequires: %{?scl_prefix}rubygem-tire => 0.6.2
BuildRequires: %{?scl_prefix}rubygem-tire < 0.7
BuildRequires: %{?scl_prefix}rubygem-logging >= 1.8.0
BuildRequires: %{?scl_prefix}rubygem-hooks
BuildRequires: %{?scl_prefix}rubygem-hooks
BuildRequires: %{?scl_prefix}rubygem-foreman-tasks >= 0.1.0
BuildRequires: %{?scl_prefix}rubygem-justified
BuildRequires: %{?scl_prefix}rubygem-justified
BuildRequires: %{?scl_prefix}rubygem-delayed_job => 3.0.2
BuildRequires: %{?scl_prefix}rubygem-delayed_job < 3.1
BuildRequires: %{?scl_prefix}rubygem-delayed_job_active_record => 0.3.3
BuildRequires: %{?scl_prefix}rubygem-delayed_job_active_record < 0.4
BuildRequires: %{?scl_prefix}rubygem-gettext_i18n_rails
BuildRequires: %{?scl_prefix}rubygem-gettext_i18n_rails
BuildRequires: %{?scl_prefix}rubygem-i18n_data >= 0.2.6
BuildRequires: %{?scl_prefix}rubygem-apipie-rails >= 0.0.13
BuildRequires: %{?scl_prefix}rubygem-maruku
BuildRequires: %{?scl_prefix}rubygem-apipie-rails >= 0.1.1
BuildRequires: %{?scl_prefix}rubygem-maruku
BuildRequires: %{?scl_prefix}rubygem-runcible >= 1.0.8
BuildRequires: %{?scl_prefix}rubygem-ruby-openid
BuildRequires: %{?scl_prefix}rubygem-anemone
BuildRequires: %{?scl_prefix}rubygem-anemone
BuildRequires: %{?scl_prefix}rubygem-simple-navigation >= 3.3.4
BuildRequires: %{?scl_prefix}rubygem-sass-rails
BuildRequires: %{?scl_prefix}rubygem-less-rails
BuildRequires: %{?scl_prefix}rubygem-compass-rails
BuildRequires: %{?scl_prefix}rubygem-compass-960-plugin
BuildRequires: %{?scl_prefix}rubygem-haml-rails
BuildRequires: %{?scl_prefix}rubygem-less-rails
BuildRequires: %{?scl_prefix}rubygem-compass-rails
BuildRequires: %{?scl_prefix}rubygem-compass-960-plugin
BuildRequires: %{?scl_prefix}rubygem-haml-rails
BuildRequires: %{?scl_prefix}rubygem-ui_alchemy-rails = 1.0.12
BuildRequires: %{?scl_prefix}rubygem-deface < 1.0.0
BuildRequires: %{?scl_prefix}rubygem(uglifier) >= 1.0.3
......
group :katello do
gem '%{gem_name}'
gem 'sass-rails'
end
end
GEMFILE
unlink tmp
......
group :katello do
gem '%{gem_name}'
gem 'sass-rails'
end
end
GEMFILE
mkdir -p %{buildroot}%{foreman_dir}/public/assets
......
* Tue Jan 21 2014 Mike McCune <mmccune@redhat.com> 1.5.0-10
- rebuild with latest in master
* Mon Dec 16 2013 Jason Montleon <jmontleo@redhat.com> 1.5.0-9
- Tag rubygem-katello-1.5.0-9
- Tag rubygem-katello-1.5.0-9
* Mon Dec 16 2013 Jason Montleon <jmontleo@redhat.com> 1.5.0-9
- fixes for engine packaging (jmontleo@redhat.com)

Also available in: Unified diff