84 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
		
		
			
		
	
	
			84 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
|   | # encoding: UTF-8 | ||
|  | 
 | ||
|  | module Devops | ||
|  |   module API3 | ||
|  |     module Routes | ||
|  |       module ProviderRoutes | ||
|  | 
 | ||
|  |         # see doc/provider.md | ||
|  |         def self.registered(app) | ||
|  | 
 | ||
|  |           app.define_policy :read_provider, "Read providers and its components like security groups, flavors, images ant etc." | ||
|  |           app.define_policy :create_provider_account, "Create provider account", dependencies: [:read_provider] | ||
|  |           app.define_policy :delete_provider_account, "Delete provider account", dependencies: [:read_provider] | ||
|  | 
 | ||
|  |           app.get_with_headers "/provider/:provider/account/:account/security_groups" do |provider, account| | ||
|  |             check_policy(:read_provider) | ||
|  |             check_provider(provider) | ||
|  |             json Devops::API3::Handler::Provider.new(request).security_groups(provider, account) | ||
|  |           end | ||
|  | 
 | ||
|  |           app.get_with_headers "/provider/:provider/account/:account/flavors" do |provider, account| | ||
|  |             check_policy(:read_provider) | ||
|  |             check_provider(provider) | ||
|  |             json Devops::API3::Handler::Provider.new(request).flavors(provider, account) | ||
|  |           end | ||
|  | 
 | ||
|  |           app.get_with_headers "/provider/:provider/account/:account/networks" do |provider, account| | ||
|  |             check_policy(:read_provider) | ||
|  |             check_provider(provider) | ||
|  |             check_provider_account(provider, account) | ||
|  |             json Devops::API3::Handler::Provider.new(request).networks(provider, account) | ||
|  |           end | ||
|  | 
 | ||
|  |           app.get_with_headers "/provider/:provider/account/:account/images" do |provider, account| | ||
|  |             check_policy(:read_provider) | ||
|  |             check_provider(provider) | ||
|  |             check_provider_account(provider, account) | ||
|  |             json Devops::API3::Handler::Provider.new(request).images(provider, account) | ||
|  |           end | ||
|  | 
 | ||
|  |           app.get_with_headers "/providers" do | ||
|  |             check_policy(:read_provider) | ||
|  |             json Devops::API3::Handler::Provider.new(request).providers | ||
|  |           end | ||
|  | 
 | ||
|  |           app.get_with_headers "/providers/available" do | ||
|  |             check_policy(:read_provider) | ||
|  |             json Devops::API3::Handler::Provider.new(request).available_providers | ||
|  |           end | ||
|  | 
 | ||
|  |           app.get_with_headers "/provider/:provider/accounts" do |provider| | ||
|  |             check_policy(:read_provider) | ||
|  |             check_provider(provider) | ||
|  |             json Devops::API3::Handler::Provider.new(request).accounts(provider).map(&:to_hash) | ||
|  |           end | ||
|  | 
 | ||
|  |           app.post_with_headers "/provider/:provider/account" do |provider| | ||
|  |             check_policy(:create_provider_account) | ||
|  |             check_provider(provider) | ||
|  |             create_response("Created", {:account => Devops::API3::Handler::Provider.new(request).add_account(provider).to_hash}, 201) | ||
|  |           end | ||
|  | 
 | ||
|  |           app.delete_with_headers "/provider/:provider/account/:account_name" do |provider, account_name| | ||
|  |             check_policy(:delete_provider_account) | ||
|  |             check_provider(provider) | ||
|  |             check_provider_account(provider, account_name) | ||
|  |             create_response("Deleted", {:account => Devops::API3::Handler::Provider.new(request).delete_account(account_name, provider)}) | ||
|  |           end | ||
|  | 
 | ||
|  |           app.get_with_headers "/provider/aws/account/:account_name/vpcs" do |account_name| | ||
|  |             check_policy(:read_provider) | ||
|  |             provider = "aws" | ||
|  |             check_provider(provider) | ||
|  |             check_provider_account(provider, account_name) | ||
|  |             json Devops::API3::Handler::Provider.new(request).account_vpcs(provider, account_name) | ||
|  |           end | ||
|  | 
 | ||
|  |           puts "Provider routes initialized" | ||
|  |         end | ||
|  |       end | ||
|  |     end | ||
|  |   end | ||
|  | end |