Revision ea49a05e
Added by James Netherton over 10 years ago
app/controllers/api/v2/compute_resources_controller.rb | ||
---|---|---|
include Api::Version2
|
||
include Api::TaxonomyScope
|
||
|
||
before_filter :find_resource, :only => [:show, :update, :destroy, :available_images]
|
||
before_filter :find_resource, :only => [:show, :update, :destroy, :available_images,
|
||
:available_networks, :available_clusters, :available_storage_domains]
|
||
|
||
api :GET, "/compute_resources/", "List all compute resources."
|
||
param :search, String, :desc => "filter results"
|
||
... | ... | |
@available_images = @compute_resource.available_images
|
||
end
|
||
|
||
api :GET, "/compute_resources/:id/available_clusters", "List available clusters for a compute resource"
|
||
param :id, :identifier, :required => true
|
||
def available_clusters
|
||
@available_clusters = @compute_resource.available_clusters
|
||
render :available_clusters, :layout => 'api/v2/layouts/index_layout'
|
||
end
|
||
|
||
api :GET, "/compute_resources/:id/available_clusters/:cluster_id/available_networks", "List available networks for a compute resource cluster"
|
||
param :id, :identifier, :required => true
|
||
param :cluster_id, String, :required => true
|
||
def available_networks
|
||
@available_networks = @compute_resource.available_networks(params[:cluster_id])
|
||
render :available_networks, :layout => 'api/v2/layouts/index_layout'
|
||
end
|
||
|
||
api :GET, "/compute_resources/:id/available_storage_domains", "List storage_domains for a compute resource"
|
||
param :id, :identifier, :required => true
|
||
def available_storage_domains
|
||
@available_storage_domains = @compute_resource.available_storage_domains
|
||
render :available_storage_domains, :layout => 'api/v2/layouts/index_layout'
|
||
end
|
||
|
||
def resource_scope
|
||
ComputeResource.my_compute_resources
|
||
end
|
||
|
||
end
|
||
end
|
||
end
|
app/models/compute_resource.rb | ||
---|---|---|
[]
|
||
end
|
||
|
||
def available_networks
|
||
raise ::Foreman::Exception.new(N_("Not implemented for %s"), provider_friendly_name)
|
||
end
|
||
|
||
def available_clusters
|
||
raise ::Foreman::Exception.new(N_("Not implemented for %s"), provider_friendly_name)
|
||
end
|
||
|
||
def available_storage_domains
|
||
raise ::Foreman::Exception.new(N_("Not implemented for %s"), provider_friendly_name)
|
||
end
|
||
|
||
def set_console_password?
|
||
self.attrs[:setpw] == 1 || self.attrs[:setpw].nil?
|
||
end
|
app/models/compute_resources/foreman/model/ovirt.rb | ||
---|---|---|
end
|
||
end
|
||
|
||
def available_clusters
|
||
clusters
|
||
end
|
||
|
||
def available_networks(cluster_id)
|
||
cluster_networks = networks({:cluster_id => cluster_id})
|
||
end
|
||
|
||
def available_storage_domains
|
||
storage_domains
|
||
end
|
||
|
||
def storage_domains(opts ={})
|
||
client.storage_domains({:role => 'data'}.merge(opts))
|
||
end
|
app/services/foreman/access_permissions.rb | ||
---|---|---|
ajax_actions = [:test_connection]
|
||
map.permission :view_compute_resources, {:compute_resources => [:index, :show, :auto_complete_search, :ping, :available_images],
|
||
:"api/v1/compute_resources" => [:index, :show],
|
||
:"api/v2/compute_resources" => [:index, :show, :available_images]
|
||
:"api/v2/compute_resources" => [:index, :show, :available_images, :available_clusters, :available_networks,
|
||
:available_storage_domains]
|
||
}
|
||
map.permission :create_compute_resources, {:compute_resources => [:new, :create].push(*ajax_actions),
|
||
:"api/v1/compute_resources" => [:create],
|
app/views/api/v2/compute_resources/available_clusters.rabl | ||
---|---|---|
collection @available_clusters
|
||
|
||
attribute :name, :id
|
app/views/api/v2/compute_resources/available_networks.rabl | ||
---|---|---|
collection @available_networks
|
||
|
||
attribute :name, :id
|
app/views/api/v2/compute_resources/available_storage_domains.rabl | ||
---|---|---|
collection @available_storage_domains
|
||
|
||
attribute :name, :id
|
config/routes/api/v2.rb | ||
---|---|---|
resources :compute_resources, :except => [:new, :edit] do
|
||
resources :images, :except => [:new, :edit]
|
||
get :available_images, :on => :member
|
||
get :available_clusters, :on => :member
|
||
get :available_storage_domains, :on => :member
|
||
get 'available_clusters/(:cluster_id)/available_networks', :to => 'compute_resources#available_networks', :on => :member
|
||
(resources :locations, :only => [:index, :show]) if SETTINGS[:locations_enabled]
|
||
(resources :organizations, :only => [:index, :show]) if SETTINGS[:organizations_enabled]
|
||
end
|
test/fixtures/compute_resources.yml | ||
---|---|---|
password: MyString
|
||
uuid: 78787878787
|
||
type: Foreman::Model::GCE
|
||
|
||
ovirt:
|
||
name: Ovirt
|
||
description: ovirt resource
|
||
url: https://myovirt/api
|
||
user: MyString
|
||
password: 12345
|
||
uuid: 1234567891011
|
||
type: Foreman::Model::Ovirt
|
test/functional/api/v2/compute_resources_controller_test.rb | ||
---|---|---|
assert !available_images.empty?
|
||
end
|
||
|
||
test "should get available networks" do
|
||
network = Object.new
|
||
network.stubs(:name).returns('test_network')
|
||
network.stubs(:id).returns('my11-test35-uuid99')
|
||
|
||
Foreman::Model::Ovirt.any_instance.stubs(:available_networks).returns([network])
|
||
|
||
get :available_networks, { :id => compute_resources(:ovirt).to_param, :cluster_id => '123-456-789' }
|
||
assert_response :success
|
||
available_networks = ActiveSupport::JSON.decode(@response.body)
|
||
assert !available_networks.empty?
|
||
end
|
||
|
||
test "should get available clusters" do
|
||
cluster = Object.new
|
||
cluster.stubs(:name).returns('test_cluster')
|
||
cluster.stubs(:id).returns('my11-test35-uuid99')
|
||
|
||
Foreman::Model::Ovirt.any_instance.stubs(:available_clusters).returns([cluster])
|
||
|
||
get :available_clusters, { :id => compute_resources(:ovirt).to_param }
|
||
assert_response :success
|
||
available_clusters = ActiveSupport::JSON.decode(@response.body)
|
||
assert !available_clusters.empty?
|
||
end
|
||
|
||
test "should get available storage domains" do
|
||
storage_domain = Object.new
|
||
storage_domain.stubs(:name).returns('test_cluster')
|
||
storage_domain.stubs(:id).returns('my11-test35-uuid99')
|
||
|
||
Foreman::Model::Ovirt.any_instance.stubs(:available_storage_domains).returns([storage_domain])
|
||
|
||
get :available_storage_domains, { :id => compute_resources(:ovirt).to_param }
|
||
assert_response :success
|
||
available_storage_domains = ActiveSupport::JSON.decode(@response.body)
|
||
assert !available_storage_domains.empty?
|
||
end
|
||
end
|
Also available in: Unified diff
fixes #4222 Add capability to compute resource API to retrieve cluster,network,storage info on oVirt