lib/xenapi.ex
defmodule XenAPI do
@moduledoc """
Collection Module for XenAPI resources.
After compiled modules generation the resources will be available as module `XenAPI.<resource>`.
For eg: for `VM` resource the module will be `XenAPI.VM` and `VM.get_all` function will be
available as `XenAPI.VM.get_all`
"""
import XenAPI.Generate
# Generate XenAPI resource modules to be compiled.
data = get_json_spec()
data
|> get_resource_list
|> Enum.map(fn resource ->
module_name = resource |> Macro.camelize
resource_def = data |> get_resource_def(resource)
module_descr = resource_def |> get_resource_descr
fields = resource_def |> get_resource_fields
messages = resource_def |> get_resource_messages
IO.puts("Generating #{module_name}")
defresource module_name, module_descr, fields, messages
end)
end