Revision 1842054c
Added by Ivan Necas about 10 years ago
app/lib/actions/elastic_search/abstract.rb | ||
---|---|---|
#
|
||
# Copyright 2014 Red Hat, Inc.
|
||
#
|
||
# This software is licensed to you under the GNU General Public
|
||
# License as published by the Free Software Foundation; either version
|
||
# 2 of the License (GPLv2) or (at your option) any later version.
|
||
# There is NO WARRANTY for this software, express or implied,
|
||
# including the implied warranties of MERCHANTABILITY,
|
||
# NON-INFRINGEMENT, or FITNESS FOR A PARTICULAR PURPOSE. You should
|
||
# have received a copy of GPLv2 along with this software; if not, see
|
||
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
|
||
|
||
module Actions
|
||
module ElasticSearch
|
||
class Abstract < Actions::Base
|
||
middleware.use ::Actions::Middleware::RemoteAction
|
||
end
|
||
end
|
||
end
|
app/lib/actions/elastic_search/reindex.rb | ||
---|---|---|
|
||
module Actions
|
||
module ElasticSearch
|
||
class Reindex < Actions::Base
|
||
|
||
middleware.use ::Actions::Middleware::RemoteAction
|
||
class Reindex < ElasticSearch::Abstract
|
||
|
||
def plan(record)
|
||
plan_self(id: record.id,
|
app/lib/actions/elastic_search/repository/index_content.rb | ||
---|---|---|
#
|
||
# Copyright 2014 Red Hat, Inc.
|
||
#
|
||
# This software is licensed to you under the GNU General Public
|
||
# License as published by the Free Software Foundation; either version
|
||
# 2 of the License (GPLv2) or (at your option) any later version.
|
||
# There is NO WARRANTY for this software, express or implied,
|
||
# including the implied warranties of MERCHANTABILITY,
|
||
# NON-INFRINGEMENT, or FITNESS FOR A PARTICULAR PURPOSE. You should
|
||
# have received a copy of GPLv2 along with this software; if not, see
|
||
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
|
||
|
||
module Actions
|
||
module ElasticSearch
|
||
module Repository
|
||
class IndexContent < ElasticSearch::Abstract
|
||
|
||
input_format do
|
||
param :id, Integer
|
||
end
|
||
|
||
def run
|
||
repo = ::Katello::Repository.find(input[:id])
|
||
repo.index_content
|
||
end
|
||
|
||
end
|
||
end
|
||
end
|
||
end
|
app/lib/actions/katello/repository/sync.rb | ||
---|---|---|
|
||
def plan(repo)
|
||
action_subject(repo)
|
||
plan_action(Pulp::Repository::Sync, pulp_id: repo.pulp_id)
|
||
plan_action(ElasticSearch::Reindex, repo)
|
||
sequence do
|
||
plan_action(Pulp::Repository::Sync, pulp_id: repo.pulp_id)
|
||
plan_action(ElasticSearch::Repository::IndexContent, id: repo.id)
|
||
plan_action(ElasticSearch::Reindex, repo)
|
||
end
|
||
end
|
||
|
||
def humanized_name
|
test/actions/elastic_search/index_actions_test.rb | ||
---|---|---|
#
|
||
# Copyright 2013 Red Hat, Inc.
|
||
#
|
||
# This software is licensed to you under the GNU General Public
|
||
# License as published by the Free Software Foundation; either version
|
||
# 2 of the License (GPLv2) or (at your option) any later version.
|
||
# There is NO WARRANTY for this software, express or implied,
|
||
# including the implied warranties of MERCHANTABILITY,
|
||
# NON-INFRINGEMENT, or FITNESS FOR A PARTICULAR PURPOSE. You should
|
||
# have received a copy of GPLv2 along with this software; if not, see
|
||
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
|
||
|
||
require 'katello_test_helper'
|
||
|
||
module Katello
|
||
|
||
describe ::Actions::ElasticSearch do
|
||
include Dynflow::Testing
|
||
include Support::Actions::RemoteAction
|
||
include FactoryGirl::Syntax::Methods
|
||
|
||
before do
|
||
stub_remote_user
|
||
end
|
||
|
||
let(:repository) { build(:katello_repository, id: 123) }
|
||
|
||
describe 'Reindex' do
|
||
let(:action_class) { ::Actions::ElasticSearch::Reindex }
|
||
|
||
let(:planned_action) do
|
||
create_and_plan_action action_class, repository
|
||
end
|
||
|
||
it 'finalizes' do
|
||
finalize_action planned_action do |action|
|
||
::Katello::Repository.expects(:find).with(123).returns(repository)
|
||
repository.expects(:update_index)
|
||
end
|
||
end
|
||
end
|
||
|
||
describe 'Repository::IndexContent' do
|
||
let(:action_class) { ::Actions::ElasticSearch::Repository::IndexContent }
|
||
|
||
let(:planned_action) do
|
||
create_and_plan_action action_class, id: 123
|
||
end
|
||
|
||
it 'runs' do
|
||
run_action planned_action do |action|
|
||
::Katello::Repository.expects(:find).with(123).returns(repository)
|
||
repository.expects(:index_content)
|
||
end
|
||
end
|
||
end
|
||
end
|
||
end
|
test/actions/katello/repository_test.rb | ||
---|---|---|
let(:pulp_action_class) { ::Actions::Pulp::Repository::Sync }
|
||
|
||
it 'plans' do
|
||
repository = mock 'repository', pulp_id: 1
|
||
repository = mock 'repository', pulp_id: 'pulp-repo-1', id: 1
|
||
action = create_action action_class
|
||
action.stubs(:action_subject).with(repository)
|
||
plan_action action, repository
|
||
|
||
assert_action_planed action, pulp_action_class
|
||
assert_action_planed action, ::Actions::ElasticSearch::Reindex
|
||
assert_action_planed_with action, pulp_action_class, pulp_id: 'pulp-repo-1'
|
||
assert_action_planed_with action, ::Actions::ElasticSearch::Repository::IndexContent, id: 1
|
||
assert_action_planed_with action, ::Actions::ElasticSearch::Reindex, repository
|
||
end
|
||
|
||
describe 'progress' do
|
Also available in: Unified diff
Index the content when the syncing finishes