Skip to content

Commit 88fcfd6

Browse files
authored
Merge pull request #1012 from skateman/cloud-subnet-options
Expose CloudSubnet create/edit form via OPTIONS
2 parents 5dacc20 + 227421a commit 88fcfd6

File tree

2 files changed

+29
-0
lines changed

2 files changed

+29
-0
lines changed
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,19 @@
11
module Api
22
class CloudSubnetsController < BaseController
33
include Subcollections::Tags
4+
5+
def options
6+
return super unless params[:ems_id]
7+
8+
ems = ExtManagementSystem.find(params[:ems_id])
9+
10+
raise BadRequestError, "No CloudSubnet support for - #{ems.class}" unless defined?(ems.class::CloudSubnet)
11+
12+
klass = ems.class::CloudSubnet
13+
14+
raise BadRequestError, "No DDF specified for - #{klass}" unless klass.respond_to?(:params_for_create)
15+
16+
render_options(:cloud_subnets, :form_schema => klass.params_for_create(ems))
17+
end
418
end
519
end

spec/requests/cloud_subnets_spec.rb

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,4 +77,19 @@
7777
expect(response).to have_http_status(:forbidden)
7878
end
7979
end
80+
81+
describe 'OPTIONS /api/cloud_subnets?ems_id=:id' do
82+
it 'returns a DDF schema when available via OPTIONS' do
83+
zone = FactoryBot.create(:zone, :name => "api_zone")
84+
provider = FactoryBot.create(:ems_network, :zone => zone)
85+
86+
allow(provider.class::CloudSubnet).to receive(:params_for_create).and_return('foo')
87+
88+
options(api_cloud_subnets_url, :params => {:ems_id => provider.id})
89+
options("#{api_cloud_subnets_url}?ems_id=#{provider.id}")
90+
91+
expect(response.parsed_body['data']['form_schema']).to eq('foo')
92+
expect(response).to have_http_status(:ok)
93+
end
94+
end
8095
end

0 commit comments

Comments
 (0)