608 lines
17 KiB
Ruby
608 lines
17 KiB
Ruby
require 'swagger/blocks'
|
|
|
|
require_relative 'devops_error'
|
|
require_relative 'devops_response'
|
|
|
|
module Devops
|
|
module API3
|
|
module Docs
|
|
class ProviderRoutes
|
|
|
|
include Swagger::Blocks
|
|
|
|
swagger_path "/providers/available" do
|
|
operation :get do
|
|
key :description, 'Get providers list from configuration file'
|
|
key :operationId, 'getProvidersAvailable'
|
|
key :tags, [
|
|
'provider'
|
|
]
|
|
response 200 do
|
|
key :description, 'Providers response'
|
|
schema do
|
|
key :type, :array
|
|
items do
|
|
key :type, :string
|
|
end
|
|
end
|
|
end
|
|
response :default do
|
|
key :description, 'error'
|
|
schema do
|
|
key :'$ref', :DevopsError
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
swagger_path "/providers" do
|
|
operation :get do
|
|
key :description, 'Get providers list'
|
|
key :operationId, 'getProviders'
|
|
key :tags, [
|
|
'provider'
|
|
]
|
|
response 200 do
|
|
key :description, 'Providers response'
|
|
schema do
|
|
key :type, :array
|
|
items do
|
|
key :type, :string
|
|
end
|
|
end
|
|
end
|
|
response :default do
|
|
key :description, 'error'
|
|
schema do
|
|
key :'$ref', :DevopsError
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
swagger_schema :CommonAccount do
|
|
allOf do
|
|
schema do
|
|
key :'$ref', :CommonAccountInput
|
|
end
|
|
schema do
|
|
property :provider do
|
|
key :type, :string
|
|
end
|
|
property :created_at do
|
|
key :type, :integer
|
|
key :format, :int64
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
swagger_schema :CommonAccountInput do
|
|
key :required, [:account_name, :ssh_key]
|
|
property :account_name do
|
|
key :type, :string
|
|
key :pattern, "^[a-z_][a-z0-9_-]{0,99}$"
|
|
key :maxLength, 100
|
|
end
|
|
property :description do
|
|
key :type, :string
|
|
key :maxLength, 500
|
|
end
|
|
property :ssh_key do
|
|
key :type, :string
|
|
key :pattern, "^[a-z_][a-z0-9_-]{0,99}$"
|
|
key :maxLength, 100
|
|
end
|
|
end
|
|
|
|
###### static provider - begin
|
|
swagger_path "/provider/static/accounts" do
|
|
operation :get do
|
|
key :description, 'Get static provider accounts'
|
|
key :operationId, 'getStaticProviderAccounts'
|
|
key :tags, [
|
|
'provider'
|
|
]
|
|
response 200 do
|
|
key :description, 'Static provider account response'
|
|
schema do
|
|
key :type, :array
|
|
items do
|
|
key :'$ref', :StaticProviderAccount
|
|
end
|
|
end
|
|
end
|
|
response :default do
|
|
key :description, 'error'
|
|
schema do
|
|
key :'$ref', :DevopsError
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
swagger_path "/provider/static/account" do
|
|
operation :post do
|
|
key :description, 'Create static provider account'
|
|
key :operationId, 'createStaticProviderAccount'
|
|
key :tags, [
|
|
'provider'
|
|
]
|
|
parameter do
|
|
key :name, :account
|
|
key :in, :body
|
|
key :description, 'Account to add for static provider'
|
|
key :required, true
|
|
schema do
|
|
key :'$ref', :StaticProviderAccountInput
|
|
end
|
|
end
|
|
response 200 do
|
|
key :description, 'Static provider account response'
|
|
schema do
|
|
key :'$ref', :StaticProviderAccountResponse
|
|
end
|
|
end
|
|
response :default do
|
|
key :description, 'error'
|
|
schema do
|
|
key :'$ref', :DevopsError
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
swagger_schema :StaticProviderAccount do
|
|
allOf do
|
|
schema do
|
|
key :'$ref', :CommonAccount
|
|
end
|
|
end
|
|
end
|
|
|
|
swagger_schema :StaticProviderAccountResponse do
|
|
allOf do
|
|
schema do
|
|
key :'$ref', :DevopsResponse
|
|
end
|
|
schema do
|
|
property :account do
|
|
key :'$ref', :StaticProviderAccount
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
swagger_schema :StaticProviderAccountInput do
|
|
allOf do
|
|
schema do
|
|
key :'$ref', :CommonAccountInput
|
|
end
|
|
end
|
|
end
|
|
###### static provider - end
|
|
#
|
|
###### aws provider - begin
|
|
swagger_path "/provider/aws/accounts" do
|
|
operation :get do
|
|
key :description, 'Get aws provider accounts'
|
|
key :operationId, 'getAwsProviderAccounts'
|
|
key :tags, [
|
|
'provider'
|
|
]
|
|
response 200 do
|
|
key :description, 'Aws provider accounts response'
|
|
schema do
|
|
key :type, :array
|
|
items do
|
|
key :'$ref', :AwsProviderAccount
|
|
end
|
|
end
|
|
end
|
|
response :default do
|
|
key :description, 'error'
|
|
schema do
|
|
key :'$ref', :DevopsError
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
swagger_path "/provider/aws/account" do
|
|
operation :post do
|
|
key :description, 'Create aws provider account'
|
|
key :operationId, 'createAwsProviderAccount'
|
|
key :tags, [
|
|
'provider'
|
|
]
|
|
parameter do
|
|
key :name, :account
|
|
key :in, :body
|
|
key :description, 'Account to add for aws provider'
|
|
key :required, true
|
|
schema do
|
|
key :'$ref', :AwsProviderAccountInput
|
|
end
|
|
end
|
|
response 200 do
|
|
key :description, 'Aws provider accounts response'
|
|
schema do
|
|
key :'$ref', :AwsProviderAccountResponse
|
|
end
|
|
end
|
|
response :default do
|
|
key :description, 'error'
|
|
schema do
|
|
key :'$ref', :DevopsError
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
swagger_path "/provider/aws/account/{account_name}/vpcs" do
|
|
operation :get do
|
|
key :description, 'Get aws provider vpcs for account'
|
|
key :operationId, 'getAwsProviderVpcs'
|
|
key :tags, [
|
|
'provider'
|
|
]
|
|
parameter do
|
|
key :name, :account_name
|
|
key :in, :path
|
|
key :description, 'Aws provider account name'
|
|
key :required, true
|
|
key :type, :string
|
|
end
|
|
response 200 do
|
|
key :description, 'Aws provider account vpcs response'
|
|
schema do
|
|
key :type, :array
|
|
items do
|
|
key :'$ref', :AwsProviderVpcResponse
|
|
end
|
|
end
|
|
end
|
|
response :default do
|
|
key :description, 'error'
|
|
schema do
|
|
key :'$ref', :DevopsError
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
swagger_schema :AwsProviderVpcResponse do
|
|
property :vpc_id do
|
|
key :type, :string
|
|
end
|
|
property :cidr do
|
|
key :type, :string
|
|
end
|
|
end
|
|
|
|
swagger_schema :AwsProviderAccount do
|
|
allOf do
|
|
schema do
|
|
key :'$ref', :CommonAccount
|
|
end
|
|
schema do
|
|
key :'$ref', :AwsProviderAccountInput
|
|
end
|
|
end
|
|
end
|
|
|
|
swagger_schema :AwsProviderAccountResponse do
|
|
allOf do
|
|
schema do
|
|
key :'$ref', :DevopsResponse
|
|
end
|
|
schema do
|
|
property :account do
|
|
key :'$ref', :AwsProviderAccount
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
swagger_schema :AwsProviderAccountInput do
|
|
allOf do
|
|
schema do
|
|
key :'$ref', :CommonAccountInput
|
|
end
|
|
schema do
|
|
key :required, [:account_name, :ssh_key, :use_iam_profile]
|
|
property :access_key_id do
|
|
key :type, :string
|
|
end
|
|
property :secret_access_key do
|
|
key :type, :string
|
|
end
|
|
property :use_iam_profile do
|
|
key :type, :boolean
|
|
end
|
|
property :storage_bucket_name do
|
|
key :type, :string
|
|
end
|
|
end
|
|
end
|
|
end
|
|
###### aws provider - end
|
|
|
|
swagger_path "/provider/{provider}/account/{account_name}" do
|
|
operation :delete do
|
|
key :description, 'Delete provider account'
|
|
key :operationId, 'deleteProviderAccount'
|
|
key :tags, [
|
|
'provider'
|
|
]
|
|
parameter do
|
|
key :name, :provider
|
|
key :in, :path
|
|
key :description, 'Provider name'
|
|
key :required, true
|
|
key :type, :string
|
|
end
|
|
parameter do
|
|
key :name, :account_name
|
|
key :in, :path
|
|
key :description, 'Provider account name'
|
|
key :required, true
|
|
key :type, :string
|
|
end
|
|
response 200 do
|
|
key :description, 'Provider account response'
|
|
schema do
|
|
key :'$ref', :DevopsResponse
|
|
end
|
|
end
|
|
response :default do
|
|
key :description, 'error'
|
|
schema do
|
|
key :'$ref', :DevopsError
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
swagger_path "/provider/{provider}/account/{account_name}/images" do
|
|
operation :get do
|
|
key :description, 'Get provider account images'
|
|
key :operationId, 'getProviderImages'
|
|
key :tags, [
|
|
'provider'
|
|
]
|
|
parameter do
|
|
key :name, :provider
|
|
key :in, :path
|
|
key :description, 'Provider name'
|
|
key :required, true
|
|
key :type, :string
|
|
end
|
|
parameter do
|
|
key :name, :account_name
|
|
key :in, :path
|
|
key :description, 'Aws provider account name'
|
|
key :required, true
|
|
key :type, :string
|
|
end
|
|
response 200 do
|
|
key :description, 'Provider images response'
|
|
schema do
|
|
key :type, :array
|
|
items do
|
|
key :'$ref', :ProviderImageResponse
|
|
end
|
|
end
|
|
end
|
|
response :default do
|
|
key :description, 'error'
|
|
schema do
|
|
key :'$ref', :DevopsError
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
swagger_schema :ProviderImageResponse do
|
|
property :id do
|
|
key :type, :string
|
|
end
|
|
property :name do
|
|
key :type, :string
|
|
end
|
|
property :status do
|
|
key :type, :string
|
|
end
|
|
end
|
|
|
|
swagger_path "/provider/{provider}/account/{account_name}/networks" do
|
|
operation :get do
|
|
key :description, 'Get provider account networks'
|
|
key :operationId, 'getProviderNetworks'
|
|
key :tags, [
|
|
'provider'
|
|
]
|
|
parameter do
|
|
key :name, :provider
|
|
key :in, :path
|
|
key :description, 'Provider name'
|
|
key :required, true
|
|
key :type, :string
|
|
end
|
|
parameter do
|
|
key :name, :account_name
|
|
key :in, :path
|
|
key :description, 'Aws provider account name'
|
|
key :required, true
|
|
key :type, :string
|
|
end
|
|
response 200 do
|
|
key :description, 'Provider networks response'
|
|
schema do
|
|
key :type, :array
|
|
items do
|
|
key :'$ref', :ProviderNetworksResponse
|
|
end
|
|
end
|
|
end
|
|
response :default do
|
|
key :description, 'error'
|
|
schema do
|
|
key :'$ref', :DevopsError
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
swagger_schema :ProviderNetworksResponse do
|
|
property :cidr do
|
|
key :type, :string
|
|
end
|
|
property :vpcId do
|
|
key :type, :string
|
|
end
|
|
property :subnetId do
|
|
key :type, :string
|
|
end
|
|
property :name do
|
|
key :type, :string
|
|
end
|
|
property :zone do
|
|
key :type, :string
|
|
end
|
|
end
|
|
|
|
swagger_path "/provider/{provider}/account/{account_name}/flavors" do
|
|
operation :get do
|
|
key :description, 'Get provider account flavors'
|
|
key :operationId, 'getProviderFlavors'
|
|
key :tags, [
|
|
'provider'
|
|
]
|
|
parameter do
|
|
key :name, :provider
|
|
key :in, :path
|
|
key :description, 'Provider name'
|
|
key :required, true
|
|
key :type, :string
|
|
end
|
|
parameter do
|
|
key :name, :account_name
|
|
key :in, :path
|
|
key :description, 'Aws provider account name'
|
|
key :required, true
|
|
key :type, :string
|
|
end
|
|
response 200 do
|
|
key :description, 'Provider flavors response'
|
|
schema do
|
|
key :type, :array
|
|
items do
|
|
key :'$ref', :ProviderFlavorsResponse
|
|
end
|
|
end
|
|
end
|
|
response :default do
|
|
key :description, 'error'
|
|
schema do
|
|
key :'$ref', :DevopsError
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
swagger_schema :ProviderFlavorsResponse do
|
|
property :id do
|
|
key :type, :string
|
|
end
|
|
property :cores do
|
|
key :type, :integer
|
|
end
|
|
property :disk do
|
|
key :type, :integer
|
|
end
|
|
property :name do
|
|
key :type, :string
|
|
end
|
|
property :ram do
|
|
key :type, :integer
|
|
end
|
|
end
|
|
|
|
swagger_path "/provider/{provider}/account/{account_name}/security_groups" do
|
|
operation :get do
|
|
key :description, 'Get provider account security_groups'
|
|
key :operationId, 'getProviderSecurityGroups'
|
|
key :tags, [
|
|
'provider'
|
|
]
|
|
parameter do
|
|
key :name, :provider
|
|
key :in, :path
|
|
key :description, 'Provider name'
|
|
key :required, true
|
|
key :type, :string
|
|
end
|
|
parameter do
|
|
key :name, :account_name
|
|
key :in, :path
|
|
key :description, 'Aws provider account name'
|
|
key :required, true
|
|
key :type, :string
|
|
end
|
|
response 200 do
|
|
key :description, 'Provider security groups response'
|
|
schema do
|
|
key :'$ref', :ProviderSecurityGroupsResponse
|
|
end
|
|
end
|
|
response :default do
|
|
key :description, 'error'
|
|
schema do
|
|
key :'$ref', :DevopsError
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
swagger_schema :ProviderSecurityGroupsResponse do
|
|
property :name_key do
|
|
key :'$ref', :ProviderSecurityGroupsElem
|
|
end
|
|
end
|
|
|
|
swagger_schema :ProviderSecurityGroupsElem do
|
|
property :id do
|
|
key :type, :string
|
|
end
|
|
property :description do
|
|
key :type, :string
|
|
end
|
|
property :rules do
|
|
key :type, :array
|
|
items do
|
|
key :'$ref', :ProviderSecurityGroupsRule
|
|
end
|
|
end
|
|
end
|
|
|
|
swagger_schema :ProviderSecurityGroupsRule do
|
|
property :protocol do
|
|
key :type, :string
|
|
end
|
|
property :from do
|
|
key :type, :integer
|
|
end
|
|
property :to do
|
|
key :type, :integer
|
|
end
|
|
property :cidr do
|
|
key :type, :string
|
|
end
|
|
end
|
|
|
|
end
|
|
end
|
|
end
|
|
end
|