Project

General

Profile

Download (2.84 KB) Statistics
| Branch: | Tag: | Revision:
module Api
module V2
class InterfacesController < V2::BaseController

include Api::Version2
include Api::TaxonomyScope

before_filter :find_resource, :only => [:show, :update, :destroy]
before_filter :find_required_nested_object, :only => [:index, :show, :create]

api :GET, '/hosts/:host_id/interfaces', 'List all interfaces for host'
param :host_id, String, :required => true, :desc => 'id or name of host'

def index
@interfaces = @nested_obj.interfaces.paginate(paginate_options)
@total = @nested_obj.interfaces.count
end

api :GET, '/hosts/:host_id/interfaces/:id', 'Show an interface for host'
param :host_id, String, :required => true, :desc => 'id or name of nested host'
param :id, String, :required => true, :desc => 'id or name of interface'

def show
end

def_param_group :interface do
param :interface, Hash, :action_aware => true, :desc => 'interface information' do
param :mac, String, :required => true, :desc => 'MAC address of interface'
param :ip, String, :required => true, :desc => 'IP address of interface'
param :type, String, :required => true, :desc => 'Interface type, i.e: Nic::BMC'
param :name, String, :required => true, :desc => 'Interface name'
param :subnet_id, Fixnum, :desc => 'Foreman subnet id of interface'
param :domain_id, Fixnum, :desc => 'Foreman domain id of interface'
param :username, String
param :password, String
param :provider, String, :desc => 'Interface provider, i.e: IPMI'
end
end

api :POST, '/hosts/:host_id/interfaces', 'Create an interface linked to a host'
param :host_id, String, :required => true, :desc => 'id or name of host'
param_group :interface, :as => :create

def create
interface = @nested_obj.interfaces.new(params[:interface], :without_protection => true)
if interface.save
render :json => interface, :status => 201
else
render :json => { :errors => interface.errors.full_messages }, :status => 422
end
end

api :PUT, "/hosts/:host_id/interfaces/:id", "Update host interface"
param :host_id, String, :required => true, :desc => 'id or name of host'
param :id, :identifier, :required => true
param_group :interface

def update
process_response @interface.update_attributes(params[:interface], :without_protection => true)
end

api :DELETE, "/hosts/:host_id/interfaces/:id", "Delete a host interface"
param :id, String, :required => true, :desc => "id of interface"

def destroy
process_response @interface.destroy
end

private

def allowed_nested_id
%w(host_id)
end

def resource_class
Nic::Base
end
end
end
end
(22-22/48)