Rename from RecycledCloud / management to Meta
This commit is contained in:
parent
8e5ba0269f
commit
82c12bd234
86 changed files with 264 additions and 260 deletions
16
.build.yml
16
.build.yml
|
@ -5,33 +5,33 @@ packages:
|
|||
- postgresql-contrib
|
||||
- docker
|
||||
artifacts:
|
||||
- management/_build/prod/rel/recycledcloud.tar.gz
|
||||
- meta/_build/prod/rel/meta.tar.gz
|
||||
sources:
|
||||
- https://code.recycled.cloud/e-Durable/management.git
|
||||
- https://code.recycled.cloud/RecycledCloud/met.git
|
||||
tasks:
|
||||
- setup: |
|
||||
sudo service postgresql setup
|
||||
sudo service postgresql start
|
||||
sudo service docker start
|
||||
cd management
|
||||
cd meta
|
||||
mix local.hex --force
|
||||
mix local.rebar --force
|
||||
mix deps.get
|
||||
- build: |
|
||||
cd management
|
||||
cd meta
|
||||
MIX_ENV=test mix deps.compile
|
||||
MIX_ENV=test mix compile
|
||||
- test: |
|
||||
cd management
|
||||
cd meta
|
||||
sudo docker pull code.ungleich.ch:5050/fnux/e-durable-oci-images/openldap-playground:latest
|
||||
CALL_CONTAINER_RUNTIME_AS_ROOT=1 LDAP_WAIT_LOOPS=100 MIX_ENV=test mix test
|
||||
- lint: |
|
||||
cd management
|
||||
cd meta
|
||||
MIX_ENV=test mix credo
|
||||
- release: |
|
||||
cd management
|
||||
cd meta
|
||||
MIX_ENV=prod mix compile
|
||||
MIX_ENV=prod mix phx.digest
|
||||
MIX_ENV=prod mix release
|
||||
cd _build/prod/rel
|
||||
tar cvzf recycledcloud.tar.gz recycledcloud/
|
||||
tar cvzf meta.tar.gz met/
|
||||
|
|
|
@ -1,3 +1,7 @@
|
|||
# meta 0.5.0, not yet release
|
||||
|
||||
* Rename app from Recycled Cloud / management to Meta
|
||||
|
||||
# management 0.4.0, 2021-04-09
|
||||
|
||||
* Initial VM dashboard
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# Recycled Cloud Management Interface
|
||||
# Recycled Cloud Management Interface (Meta)
|
||||
|
||||
[![builds.sr.ht status](https://builds.sr.ht/~fnux.svg?search=recycledcloud-management)](https://builds.sr.ht/~fnux?search=recycledcloud-management)
|
||||
[![builds.sr.ht status](https://builds.sr.ht/~fnux.svg?search=recycledcloud-meta)](https://builds.sr.ht/~fnux?search=recycledcloud-meta)
|
||||
|
||||
This repository tracks the initial work for a web interface atop the recycled
|
||||
cloud. It is written in [Elixir](https://elixir-lang.org/), making use of the
|
||||
|
|
|
@ -7,17 +7,17 @@
|
|||
# General application configuration
|
||||
use Mix.Config
|
||||
|
||||
config :recycledcloud,
|
||||
namespace: RecycledCloud,
|
||||
ecto_repos: [RecycledCloud.Repo],
|
||||
config :meta,
|
||||
namespace: Meta,
|
||||
ecto_repos: [Meta.Repo],
|
||||
enable_registration: true
|
||||
|
||||
# Configures the endpoint
|
||||
config :recycledcloud, RecycledCloudWeb.Endpoint,
|
||||
config :meta, MetaWeb.Endpoint,
|
||||
url: [host: "localhost"],
|
||||
secret_key_base: "bm4MGjSLcEbL3HEDg2H0LlcJ5d3nIkogyd/PpGW1iXdEbKbtM0N8Ct4Jh/PbsnoS",
|
||||
render_errors: [view: RecycledCloudWeb.ErrorView, accepts: ~w(html json), layout: false],
|
||||
pubsub_server: RecycledCloud.PubSub,
|
||||
render_errors: [view: MetaWeb.ErrorView, accepts: ~w(html json), layout: false],
|
||||
pubsub_server: Meta.PubSub,
|
||||
live_view: [signing_salt: "kTyyWZd5"]
|
||||
|
||||
# Configures Elixir's Logger
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
use Mix.Config
|
||||
|
||||
# Configure your database
|
||||
config :recycledcloud, RecycledCloud.Repo,
|
||||
config :meta, Meta.Repo,
|
||||
username: "postgres",
|
||||
password: "postgres",
|
||||
database: "recycledcloud_dev",
|
||||
database: "meta_dev",
|
||||
hostname: "localhost",
|
||||
show_sensitive_data_on_connection_error: true,
|
||||
pool_size: 10
|
||||
|
@ -15,7 +15,7 @@ config :recycledcloud, RecycledCloud.Repo,
|
|||
# The watchers configuration can be used to run external
|
||||
# watchers to your application. For example, we use it
|
||||
# with webpack to recompile .js and .css sources.
|
||||
config :recycledcloud, RecycledCloudWeb.Endpoint,
|
||||
config :meta, MetaWeb.Endpoint,
|
||||
http: [port: 4000],
|
||||
debug_errors: true,
|
||||
code_reloader: true,
|
||||
|
@ -47,13 +47,13 @@ config :recycledcloud, RecycledCloudWeb.Endpoint,
|
|||
# different ports.
|
||||
|
||||
# Watch static and templates for browser reloading.
|
||||
config :recycledcloud, RecycledCloudWeb.Endpoint,
|
||||
config :meta, MetaWeb.Endpoint,
|
||||
live_reload: [
|
||||
patterns: [
|
||||
~r"priv/static/.*(js|css|png|jpeg|jpg|gif|svg)$",
|
||||
~r"priv/gettext/.*(po)$",
|
||||
~r"lib/recycledcloud_web/(live|views)/.*(ex)$",
|
||||
~r"lib/recycledcloud_web/templates/.*(eex)$"
|
||||
~r"lib/meta_web/(live|views)/.*(ex)$",
|
||||
~r"lib/meta_web/templates/.*(eex)$"
|
||||
]
|
||||
]
|
||||
|
||||
|
@ -68,11 +68,11 @@ config :phoenix, :stacktrace_depth, 20
|
|||
config :phoenix, :plug_init_mode, :runtime
|
||||
|
||||
# Send emails to local memory for development.
|
||||
config :recycledcloud, RecycledCloud.Mailer,
|
||||
config :meta, Meta.Mailer,
|
||||
adapter: Bamboo.LocalAdapter
|
||||
|
||||
# LDAP configuration
|
||||
config :recycledcloud, :ldap,
|
||||
config :meta, :ldap,
|
||||
server: "127.0.0.1",
|
||||
port: 3089,
|
||||
ssl: false,
|
||||
|
@ -82,7 +82,7 @@ config :recycledcloud, :ldap,
|
|||
default_group_gid: 1000
|
||||
|
||||
## Odoo API credentials
|
||||
config :recycledcloud, :odoo,
|
||||
config :meta, :odoo,
|
||||
server: "https://odoo.staging.e-durable.ch",
|
||||
database: "e-Durable",
|
||||
user: "user",
|
||||
|
|
|
@ -9,7 +9,7 @@ use Mix.Config
|
|||
# manifest is generated by the `mix phx.digest` task,
|
||||
# which you should run after static files are built and
|
||||
# before starting your production server.
|
||||
config :recycledcloud, RecycledCloudWeb.Endpoint,
|
||||
config :meta, MetaWeb.Endpoint,
|
||||
url: [host: "example.com", port: 80],
|
||||
cache_static_manifest: "priv/static/cache_manifest.json"
|
||||
|
||||
|
@ -21,7 +21,7 @@ config :logger, level: :info
|
|||
# To get SSL working, you will need to add the `https` key
|
||||
# to the previous section and set your `:url` port to 443:
|
||||
#
|
||||
# config :recycledcloud, RecycledCloudWeb.Endpoint,
|
||||
# config :meta, MetaWeb.Endpoint,
|
||||
# ...
|
||||
# url: [host: "example.com", port: 443],
|
||||
# https: [
|
||||
|
@ -45,7 +45,7 @@ config :logger, level: :info
|
|||
# We also recommend setting `force_ssl` in your endpoint, ensuring
|
||||
# no data is ever sent via http, always redirecting to https:
|
||||
#
|
||||
# config :recycledcloud, RecycledCloudWeb.Endpoint,
|
||||
# config :meta, MetaWeb.Endpoint,
|
||||
# force_ssl: [hsts: true]
|
||||
#
|
||||
# Check `Plug.SSL` for all available options in `force_ssl`.
|
||||
|
|
|
@ -10,7 +10,7 @@ database_url =
|
|||
For example: ecto://USER:PASS@HOST/DATABASE
|
||||
"""
|
||||
|
||||
config :recycledcloud, RecycledCloud.Repo,
|
||||
config :meta, Meta.Repo,
|
||||
# ssl: true,
|
||||
url: database_url,
|
||||
pool_size: String.to_integer(System.get_env("POOL_SIZE") || "10")
|
||||
|
@ -22,7 +22,7 @@ secret_key_base =
|
|||
You can generate one by calling: mix phx.gen.secret
|
||||
"""
|
||||
|
||||
config :recycledcloud, RecycledCloudWeb.Endpoint,
|
||||
config :meta, MetaWeb.Endpoint,
|
||||
http: [
|
||||
port: String.to_integer(System.get_env("PORT") || "4000"),
|
||||
transport_options: [socket_opts: [:inet6]]
|
||||
|
@ -34,7 +34,7 @@ config :recycledcloud, RecycledCloudWeb.Endpoint,
|
|||
# If you are doing OTP releases, you need to instruct Phoenix
|
||||
# to start each relevant endpoint:
|
||||
#
|
||||
config :recycledcloud, RecycledCloudWeb.Endpoint, server: true
|
||||
config :meta, MetaWeb.Endpoint, server: true
|
||||
#
|
||||
# Then you can assemble a release by calling `mix release`.
|
||||
# See `mix help release` for more information.
|
||||
|
|
|
@ -8,16 +8,16 @@ config :bcrypt_elixir, :log_rounds, 1
|
|||
# The MIX_TEST_PARTITION environment variable can be used
|
||||
# to provide built-in test partitioning in CI environment.
|
||||
# Run `mix help test` for more information.
|
||||
config :recycledcloud, RecycledCloud.Repo,
|
||||
config :meta, Meta.Repo,
|
||||
username: "postgres",
|
||||
password: "postgres",
|
||||
database: "recycledcloud_test#{System.get_env("MIX_TEST_PARTITION")}",
|
||||
database: "meta_test#{System.get_env("MIX_TEST_PARTITION")}",
|
||||
hostname: "localhost",
|
||||
pool: Ecto.Adapters.SQL.Sandbox
|
||||
|
||||
# We don't run a server during test. If one is required,
|
||||
# you can enable the server option below.
|
||||
config :recycledcloud, RecycledCloudWeb.Endpoint,
|
||||
config :meta, MetaWeb.Endpoint,
|
||||
http: [port: 4002],
|
||||
server: false
|
||||
|
||||
|
@ -25,7 +25,7 @@ config :recycledcloud, RecycledCloudWeb.Endpoint,
|
|||
config :logger, level: :warn
|
||||
|
||||
# LDAP configuration
|
||||
config :recycledcloud, :ldap,
|
||||
config :meta, :ldap,
|
||||
server: "127.0.0.1",
|
||||
port: 3089,
|
||||
ssl: false,
|
||||
|
@ -34,5 +34,5 @@ config :recycledcloud, :ldap,
|
|||
bind_pw: "admin"
|
||||
|
||||
# Send emails to local memory for testing.
|
||||
config :recycledcloud, RecycledCloud.Mailer,
|
||||
config :meta, Meta.Mailer,
|
||||
adapter: Bamboo.LocalAdapter
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
defmodule RecycledCloud do
|
||||
defmodule Meta do
|
||||
@moduledoc """
|
||||
RecycledCloud keeps the contexts that define your domain
|
||||
Meta keeps the contexts that define your domain
|
||||
and business logic.
|
||||
|
||||
Contexts are also responsible for managing your data, regardless
|
|
@ -1,11 +1,11 @@
|
|||
defmodule RecycledCloud.Accounts do
|
||||
defmodule Meta.Accounts do
|
||||
@moduledoc """
|
||||
The Accounts context.
|
||||
"""
|
||||
|
||||
import Ecto.Query, warn: false
|
||||
alias RecycledCloud.Repo
|
||||
alias RecycledCloud.Accounts.{User, Key, UserToken, UserNotifier}
|
||||
alias Meta.Repo
|
||||
alias Meta.Accounts.{User, Key, UserToken, UserNotifier}
|
||||
|
||||
## Database getters
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
defmodule RecycledCloud.Accounts.Key do
|
||||
defmodule Meta.Accounts.Key do
|
||||
use Ecto.Schema
|
||||
import Ecto.Changeset
|
||||
|
||||
|
@ -6,7 +6,7 @@ defmodule RecycledCloud.Accounts.Key do
|
|||
field :comment, :string
|
||||
field :value, :string
|
||||
field :fingerprint, :string
|
||||
belongs_to :user, RecycledCloud.Accounts.User
|
||||
belongs_to :user, Meta.Accounts.User
|
||||
|
||||
timestamps()
|
||||
end
|
|
@ -1,10 +1,10 @@
|
|||
defmodule RecycledCloud.Accounts.User do
|
||||
defmodule Meta.Accounts.User do
|
||||
use Ecto.Schema
|
||||
import Ecto.Changeset
|
||||
require Logger
|
||||
alias RecycledCloud.{LDAP,Accounts}
|
||||
alias RecycledCloud.Accounts.User
|
||||
alias RecycledCloud.Repo
|
||||
alias Meta.{LDAP,Accounts}
|
||||
alias Meta.Accounts.User
|
||||
alias Meta.Repo
|
||||
|
||||
@min_password_lenght 6
|
||||
@max_password_lenght 80
|
||||
|
@ -74,7 +74,7 @@ defmodule RecycledCloud.Accounts.User do
|
|||
|
||||
defp create_ldap_user(%User{} = user) do
|
||||
# TODO: read dn template from conf, gid_number
|
||||
conf = Application.get_env(:recycledcloud, :ldap)
|
||||
conf = Application.get_env(:meta, :ldap)
|
||||
basetree = conf |> Keyword.get(:base_dn)
|
||||
default_group_gid = conf |> Keyword.get(:default_group_gid, 1000)
|
||||
|
||||
|
@ -156,7 +156,7 @@ defmodule RecycledCloud.Accounts.User do
|
|||
|
||||
user
|
||||
|> cast(attrs, [:username, :password, :email, :dn, :captcha])
|
||||
|> RecycledCloud.Captcha.validate(expected_captcha_result)
|
||||
|> Meta.Captcha.validate(expected_captcha_result)
|
||||
|> validate_username()
|
||||
|> validate_email()
|
||||
|> validate_password()
|
|
@ -1,5 +1,5 @@
|
|||
defmodule RecycledCloud.Accounts.UserNotifier do
|
||||
alias RecycledCloud.Mailer
|
||||
defmodule Meta.Accounts.UserNotifier do
|
||||
alias Meta.Mailer
|
||||
import Bamboo.Email
|
||||
|
||||
defp deliver(to, body) do
|
|
@ -1,4 +1,4 @@
|
|||
defmodule RecycledCloud.Accounts.UserToken do
|
||||
defmodule Meta.Accounts.UserToken do
|
||||
use Ecto.Schema
|
||||
import Ecto.Query
|
||||
|
||||
|
@ -16,7 +16,7 @@ defmodule RecycledCloud.Accounts.UserToken do
|
|||
field :token, :binary
|
||||
field :context, :string
|
||||
field :sent_to, :string
|
||||
belongs_to :user, RecycledCloud.Accounts.User
|
||||
belongs_to :user, Meta.Accounts.User
|
||||
|
||||
timestamps(updated_at: false)
|
||||
end
|
||||
|
@ -28,7 +28,7 @@ defmodule RecycledCloud.Accounts.UserToken do
|
|||
"""
|
||||
def build_session_token(user) do
|
||||
token = :crypto.strong_rand_bytes(@rand_size)
|
||||
{token, %RecycledCloud.Accounts.UserToken{token: token, context: "session", user_id: user.id}}
|
||||
{token, %Meta.Accounts.UserToken{token: token, context: "session", user_id: user.id}}
|
||||
end
|
||||
|
||||
@doc """
|
||||
|
@ -63,7 +63,7 @@ defmodule RecycledCloud.Accounts.UserToken do
|
|||
hashed_token = :crypto.hash(@hash_algorithm, token)
|
||||
|
||||
{Base.url_encode64(token, padding: false),
|
||||
%RecycledCloud.Accounts.UserToken{
|
||||
%Meta.Accounts.UserToken{
|
||||
token: hashed_token,
|
||||
context: context,
|
||||
sent_to: sent_to,
|
||||
|
@ -123,17 +123,17 @@ defmodule RecycledCloud.Accounts.UserToken do
|
|||
Returns the given token with the given context.
|
||||
"""
|
||||
def token_and_context_query(token, context) do
|
||||
from RecycledCloud.Accounts.UserToken, where: [token: ^token, context: ^context]
|
||||
from Meta.Accounts.UserToken, where: [token: ^token, context: ^context]
|
||||
end
|
||||
|
||||
@doc """
|
||||
Gets all tokens for the given user for the given contexts.
|
||||
"""
|
||||
def user_and_contexts_query(user, :all) do
|
||||
from t in RecycledCloud.Accounts.UserToken, where: t.user_id == ^user.id
|
||||
from t in Meta.Accounts.UserToken, where: t.user_id == ^user.id
|
||||
end
|
||||
|
||||
def user_and_contexts_query(user, [_ | _] = contexts) do
|
||||
from t in RecycledCloud.Accounts.UserToken, where: t.user_id == ^user.id and t.context in ^contexts
|
||||
from t in Meta.Accounts.UserToken, where: t.user_id == ^user.id and t.context in ^contexts
|
||||
end
|
||||
end
|
|
@ -1,4 +1,4 @@
|
|||
defmodule RecycledCloud.Application do
|
||||
defmodule Meta.Application do
|
||||
# See https://hexdocs.pm/elixir/Application.html
|
||||
# for more information on OTP Applications
|
||||
@moduledoc false
|
||||
|
@ -8,31 +8,31 @@ defmodule RecycledCloud.Application do
|
|||
def start(_type, _args) do
|
||||
children = [
|
||||
# Start the Ecto repository
|
||||
RecycledCloud.Repo,
|
||||
Meta.Repo,
|
||||
# Start the Telemetry supervisor
|
||||
RecycledCloudWeb.Telemetry,
|
||||
MetaWeb.Telemetry,
|
||||
# Start the PubSub system
|
||||
{Phoenix.PubSub, name: RecycledCloud.PubSub},
|
||||
{Phoenix.PubSub, name: Meta.PubSub},
|
||||
# Start the Endpoint (http/https)
|
||||
RecycledCloudWeb.Endpoint,
|
||||
MetaWeb.Endpoint,
|
||||
# Starts LDAP connection pool
|
||||
RecycledCloud.LDAP,
|
||||
Meta.LDAP,
|
||||
# Starts Odoo client
|
||||
RecycledCloud.Odoo
|
||||
# Start a worker by calling: RecycledCloud.Worker.start_link(arg)
|
||||
# {RecycledCloud.Worker, arg}
|
||||
Meta.Odoo
|
||||
# Start a worker by calling: Meta.Worker.start_link(arg)
|
||||
# {Meta.Worker, arg}
|
||||
]
|
||||
|
||||
# See https://hexdocs.pm/elixir/Supervisor.html
|
||||
# for other strategies and supported options
|
||||
opts = [strategy: :one_for_one, name: RecycledCloud.Supervisor]
|
||||
opts = [strategy: :one_for_one, name: Meta.Supervisor]
|
||||
Supervisor.start_link(children, opts)
|
||||
end
|
||||
|
||||
# Tell Phoenix to update the endpoint configuration
|
||||
# whenever the application is updated.
|
||||
def config_change(changed, _new, removed) do
|
||||
RecycledCloudWeb.Endpoint.config_change(changed, removed)
|
||||
MetaWeb.Endpoint.config_change(changed, removed)
|
||||
:ok
|
||||
end
|
||||
end
|
|
@ -1,6 +1,6 @@
|
|||
defmodule RecycledCloud.Billing.Invoice do
|
||||
alias RecycledCloud.Billing.{Partner, Invoice}
|
||||
alias RecycledCloud.Odoo
|
||||
defmodule Meta.Billing.Invoice do
|
||||
alias Meta.Billing.{Partner, Invoice}
|
||||
alias Meta.Odoo
|
||||
|
||||
use Ecto.Schema
|
||||
|
|
@ -1,8 +1,8 @@
|
|||
defmodule RecycledCloud.Billing.Partner do
|
||||
alias RecycledCloud.Accounts.User
|
||||
alias RecycledCloud.Billing.Partner
|
||||
alias RecycledCloud.Odoo
|
||||
alias RecycledCloud.Repo
|
||||
defmodule Meta.Billing.Partner do
|
||||
alias Meta.Accounts.User
|
||||
alias Meta.Billing.Partner
|
||||
alias Meta.Odoo
|
||||
alias Meta.Repo
|
||||
|
||||
import Ecto.Changeset
|
||||
use Ecto.Schema
|
|
@ -1,4 +1,4 @@
|
|||
defmodule RecycledCloud.Captcha do
|
||||
defmodule Meta.Captcha do
|
||||
# We can't use a graphical-only captcha library such as
|
||||
# https://hex.pm/packages/captcha since it would break accessibility for
|
||||
# blind people. Let's make it simple maths instead!
|
|
@ -1,4 +1,4 @@
|
|||
defmodule RecycledCloud.LDAP do
|
||||
defmodule Meta.LDAP do
|
||||
require Logger
|
||||
use GenServer
|
||||
|
||||
|
@ -54,7 +54,7 @@ defmodule RecycledCloud.LDAP do
|
|||
###
|
||||
|
||||
def search(ldap_conn, field, value, search_timeout \\ 1000) do
|
||||
base_dn = Application.get_env(:recycledcloud, :ldap) |> Keyword.get(:base_dn)
|
||||
base_dn = Application.get_env(:meta, :ldap) |> Keyword.get(:base_dn)
|
||||
opts = [
|
||||
{:base, to_charlist(base_dn)},
|
||||
{:scope, :eldap.wholeSubtree()},
|
||||
|
@ -89,7 +89,7 @@ defmodule RecycledCloud.LDAP do
|
|||
defp internal_execute_query(query, ldap_conn), do: query.(ldap_conn)
|
||||
|
||||
defp bind(ldap_conn) do
|
||||
conf = Application.get_env(:recycledcloud, :ldap, [])
|
||||
conf = Application.get_env(:meta, :ldap, [])
|
||||
dn = conf |> Keyword.get(:bind_dn)
|
||||
pw = conf |> Keyword.get(:bind_pw)
|
||||
|
||||
|
@ -98,7 +98,7 @@ defmodule RecycledCloud.LDAP do
|
|||
|
||||
# The method is used by the RC.LDAPTestEnvironment module.
|
||||
def connect do
|
||||
conf = Application.get_env(:recycledcloud, :ldap, [])
|
||||
conf = Application.get_env(:meta, :ldap, [])
|
||||
|
||||
host = Keyword.get(conf, :server, "localhost") |> String.to_charlist
|
||||
opts = [
|
|
@ -1,5 +1,5 @@
|
|||
defmodule RecycledCloud.Mailer do
|
||||
use Bamboo.Mailer, otp_app: :recycledcloud
|
||||
defmodule Meta.Mailer do
|
||||
use Bamboo.Mailer, otp_app: :meta
|
||||
import Bamboo.Email
|
||||
|
||||
@from "no-reply@recycled.cloud"
|
|
@ -1,4 +1,4 @@
|
|||
defmodule RecycledCloud.Odoo do
|
||||
defmodule Meta.Odoo do
|
||||
use GenServer
|
||||
require Logger
|
||||
|
||||
|
@ -8,7 +8,7 @@ defmodule RecycledCloud.Odoo do
|
|||
# Odoo 14.0 API is documented at https://www.odoo.com/documentation/14.0/webservices/odoo.html
|
||||
|
||||
defp get_odoo_config(key) do
|
||||
Application.get_env(:recycledcloud, :odoo, []) |> Keyword.get(key)
|
||||
Application.get_env(:meta, :odoo, []) |> Keyword.get(key)
|
||||
end
|
||||
|
||||
defp post!(call, endpoint) do
|
|
@ -1,18 +1,18 @@
|
|||
defmodule RecycledCloud.OpenNebula do
|
||||
defmodule Meta.OpenNebula do
|
||||
@moduledoc """
|
||||
The OpenNebula context and XML-RPC Interface.
|
||||
|
||||
See http://docs.opennebula.io/5.12/integration/system_interfaces/api.html for details.
|
||||
"""
|
||||
|
||||
alias RecycledCloud.OpenNebula.{VM, VMPool}
|
||||
alias Meta.OpenNebula.{VM, VMPool}
|
||||
require Logger
|
||||
|
||||
# OpenNebula daemon.
|
||||
@endpoint "/RPC2"
|
||||
|
||||
defp get_opennebula_config(key) do
|
||||
Application.get_env(:recycledcloud, :opennebula, []) |> Keyword.get(key)
|
||||
Application.get_env(:meta, :opennebula, []) |> Keyword.get(key)
|
||||
end
|
||||
|
||||
def get_locations() do
|
|
@ -1,4 +1,4 @@
|
|||
defmodule RecycledCloud.OpenNebula.Schema do
|
||||
defmodule Meta.OpenNebula.Schema do
|
||||
@moduledoc """
|
||||
Helpers used to process OpenNebula's XSD schema.
|
||||
|
||||
|
@ -24,8 +24,8 @@ defmodule RecycledCloud.OpenNebula.Schema do
|
|||
"""
|
||||
|
||||
require Logger
|
||||
alias RecycledCloud.OpenNebula.Schema
|
||||
alias RecycledCloud.OpenNebula.Schema.Records
|
||||
alias Meta.OpenNebula.Schema
|
||||
alias Meta.OpenNebula.Schema.Records
|
||||
|
||||
@opennebula_release "5.12"
|
||||
|
||||
|
@ -33,7 +33,7 @@ defmodule RecycledCloud.OpenNebula.Schema do
|
|||
# Data-binding: access and extract XSD models.
|
||||
|
||||
defp get_raw(type, object) do
|
||||
priv_dir = :code.priv_dir(:recycledcloud) |> to_string
|
||||
priv_dir = :code.priv_dir(:meta) |> to_string
|
||||
{data_dir, extension} = case type do
|
||||
:xsd -> {"xsd-src", ".xsd"}
|
||||
:hrl -> {"xsd-records", ".hrl"}
|
||||
|
@ -73,8 +73,8 @@ defmodule RecycledCloud.OpenNebula.Schema do
|
|||
schema = elem(data, 0)
|
||||
if schema in Keyword.keys(Schema.Records.__info__(:macros)) do
|
||||
call = quote do
|
||||
require RecycledCloud.OpenNebula.Schema.Records
|
||||
RecycledCloud.OpenNebula.Schema.Records."XSD"(:data)
|
||||
require Meta.OpenNebula.Schema.Records
|
||||
Meta.OpenNebula.Schema.Records."XSD"(:data)
|
||||
end
|
||||
replace = fn
|
||||
:XSD, {model, data} -> {model, {model, data}}
|
|
@ -1,4 +1,4 @@
|
|||
defmodule RecycledCloud.OpenNebula.Schema.Records do
|
||||
defmodule Meta.OpenNebula.Schema.Records do
|
||||
@moduledoc """
|
||||
Here we define XSD template into something we can play with (Records).
|
||||
|
||||
|
@ -6,11 +6,11 @@ defmodule RecycledCloud.OpenNebula.Schema.Records do
|
|||
code - which is what we're doing right now: the records are defined in .hrl
|
||||
(erlang headers) by erlsom.
|
||||
|
||||
See RecycledCloud.OpenNebula.Schema module for details.
|
||||
See Meta.OpenNebula.Schema module for details.
|
||||
"""
|
||||
|
||||
require Record
|
||||
alias RecycledCloud.OpenNebula.Schema
|
||||
alias Meta.OpenNebula.Schema
|
||||
|
||||
@models %{
|
||||
"vm" => Schema.generate_model_for("vm"),
|
|
@ -1,9 +1,9 @@
|
|||
defmodule RecycledCloud.OpenNebula.VM do
|
||||
defmodule Meta.OpenNebula.VM do
|
||||
@moduledoc """
|
||||
OpenNebula VM: http://docs.opennebula.io/5.12/integration/system_interfaces/api.html#one-vm-info
|
||||
"""
|
||||
alias RecycledCloud.OpenNebula, as: ONE
|
||||
alias RecycledCloud.OpenNebula.Schema
|
||||
alias Meta.OpenNebula, as: ONE
|
||||
alias Meta.OpenNebula.Schema
|
||||
|
||||
@states [
|
||||
{:any, -2},
|
|
@ -1,9 +1,9 @@
|
|||
defmodule RecycledCloud.OpenNebula.VMPool do
|
||||
defmodule Meta.OpenNebula.VMPool do
|
||||
@moduledoc """
|
||||
OpenNebula VM Pool: http://docs.opennebula.io/5.12/integration/system_interfaces/api.html#one-vmpool-info
|
||||
"""
|
||||
alias RecycledCloud.OpenNebula, as: ONE
|
||||
alias RecycledCloud.OpenNebula.Schema
|
||||
alias Meta.OpenNebula, as: ONE
|
||||
alias Meta.OpenNebula.Schema
|
||||
|
||||
# Filters ressourses.
|
||||
# (user) ID >= 0 matches an user's resources.
|
|
@ -1,5 +1,5 @@
|
|||
defmodule RecycledCloud.Release do
|
||||
@app :recycledcloud
|
||||
defmodule Meta.Release do
|
||||
@app :meta
|
||||
|
||||
def migrate do
|
||||
load_app()
|
5
lib/meta/repo.ex
Normal file
5
lib/meta/repo.ex
Normal file
|
@ -0,0 +1,5 @@
|
|||
defmodule Meta.Repo do
|
||||
use Ecto.Repo,
|
||||
otp_app: :meta,
|
||||
adapter: Ecto.Adapters.Postgres
|
||||
end
|
|
@ -1,11 +1,11 @@
|
|||
defmodule RecycledCloud.SupportRequest do
|
||||
defmodule Meta.SupportRequest do
|
||||
use Ecto.Schema
|
||||
import Ecto.Changeset
|
||||
import Bamboo.Email
|
||||
|
||||
alias RecycledCloud.SupportRequest
|
||||
alias RecycledCloud.Mailer
|
||||
alias RecycledCloud.Captcha
|
||||
alias Meta.SupportRequest
|
||||
alias Meta.Mailer
|
||||
alias Meta.Captcha
|
||||
|
||||
embedded_schema do
|
||||
field :name, :string
|
||||
|
@ -26,8 +26,8 @@ defmodule RecycledCloud.SupportRequest do
|
|||
end
|
||||
|
||||
def send(%SupportRequest{} = request) do
|
||||
admin_email = Application.get_env(:recycledcloud, :admin_email)
|
||||
host = Application.get_env(:recycledcloud, RecycledCloudWeb.Endpoint)
|
||||
admin_email = Application.get_env(:meta, :admin_email)
|
||||
host = Application.get_env(:meta, MetaWeb.Endpoint)
|
||||
|> Keyword.get(:url, [])
|
||||
|> Keyword.get(:host, "localhost")
|
||||
|
|
@ -1,12 +1,12 @@
|
|||
defmodule RecycledCloudWeb do
|
||||
defmodule MetaWeb do
|
||||
@moduledoc """
|
||||
The entrypoint for defining your web interface, such
|
||||
as controllers, views, channels and so on.
|
||||
|
||||
This can be used in your application as:
|
||||
|
||||
use RecycledCloudWeb, :controller
|
||||
use RecycledCloudWeb, :view
|
||||
use MetaWeb, :controller
|
||||
use MetaWeb, :view
|
||||
|
||||
The definitions below will be executed for every view,
|
||||
controller, etc, so keep them short and clean, focused
|
||||
|
@ -19,19 +19,19 @@ defmodule RecycledCloudWeb do
|
|||
|
||||
def controller do
|
||||
quote do
|
||||
use Phoenix.Controller, namespace: RecycledCloudWeb
|
||||
use Phoenix.Controller, namespace: MetaWeb
|
||||
|
||||
import Plug.Conn
|
||||
import RecycledCloudWeb.Gettext
|
||||
alias RecycledCloudWeb.Router.Helpers, as: Routes
|
||||
import MetaWeb.Gettext
|
||||
alias MetaWeb.Router.Helpers, as: Routes
|
||||
end
|
||||
end
|
||||
|
||||
def view do
|
||||
quote do
|
||||
use Phoenix.View,
|
||||
root: "lib/recycledcloud_web/templates",
|
||||
namespace: RecycledCloudWeb
|
||||
root: "lib/meta_web/templates",
|
||||
namespace: MetaWeb
|
||||
|
||||
# Import convenience functions from controllers
|
||||
import Phoenix.Controller,
|
||||
|
@ -54,7 +54,7 @@ defmodule RecycledCloudWeb do
|
|||
def channel do
|
||||
quote do
|
||||
use Phoenix.Channel
|
||||
import RecycledCloudWeb.Gettext
|
||||
import MetaWeb.Gettext
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -66,9 +66,9 @@ defmodule RecycledCloudWeb do
|
|||
# Import basic rendering functionality (render, render_layout, etc)
|
||||
import Phoenix.View
|
||||
|
||||
import RecycledCloudWeb.ErrorHelpers
|
||||
import RecycledCloudWeb.Gettext
|
||||
alias RecycledCloudWeb.Router.Helpers, as: Routes
|
||||
import MetaWeb.ErrorHelpers
|
||||
import MetaWeb.Gettext
|
||||
alias MetaWeb.Router.Helpers, as: Routes
|
||||
end
|
||||
end
|
||||
|
|
@ -1,8 +1,8 @@
|
|||
defmodule RecycledCloudWeb.UserSocket do
|
||||
defmodule MetaWeb.UserSocket do
|
||||
use Phoenix.Socket
|
||||
|
||||
## Channels
|
||||
# channel "room:*", RecycledCloudWeb.RoomChannel
|
||||
# channel "room:*", MetaWeb.RoomChannel
|
||||
|
||||
# Socket params are passed from the client and can
|
||||
# be used to verify and authenticate a user. After
|
||||
|
@ -27,7 +27,7 @@ defmodule RecycledCloudWeb.UserSocket do
|
|||
# Would allow you to broadcast a "disconnect" event and terminate
|
||||
# all active sockets and channels for a given user:
|
||||
#
|
||||
# RecycledCloudWeb.Endpoint.broadcast("user_socket:#{user.id}", "disconnect", %{})
|
||||
# MetaWeb.Endpoint.broadcast("user_socket:#{user.id}", "disconnect", %{})
|
||||
#
|
||||
# Returning `nil` makes this socket anonymous.
|
||||
@impl true
|
|
@ -1,8 +1,8 @@
|
|||
defmodule RecycledCloudWeb.BillingController do
|
||||
use RecycledCloudWeb, :controller
|
||||
defmodule MetaWeb.BillingController do
|
||||
use MetaWeb, :controller
|
||||
|
||||
alias RecycledCloud.Billing.{Partner, Invoice}
|
||||
alias RecycledCloud.Repo
|
||||
alias Meta.Billing.{Partner, Invoice}
|
||||
alias Meta.Repo
|
||||
|
||||
def current_partner(conn) do
|
||||
user = conn.assigns.current_user
|
7
lib/meta_web/controllers/page_controller.ex
Normal file
7
lib/meta_web/controllers/page_controller.ex
Normal file
|
@ -0,0 +1,7 @@
|
|||
defmodule MetaWeb.PageController do
|
||||
use MetaWeb, :controller
|
||||
|
||||
def index(conn, _params) do
|
||||
render(conn, "index.html")
|
||||
end
|
||||
end
|
|
@ -1,8 +1,8 @@
|
|||
defmodule RecycledCloudWeb.SupportController do
|
||||
use RecycledCloudWeb, :controller
|
||||
defmodule MetaWeb.SupportController do
|
||||
use MetaWeb, :controller
|
||||
|
||||
alias RecycledCloud.SupportRequest
|
||||
alias RecycledCloud.Captcha
|
||||
alias Meta.SupportRequest
|
||||
alias Meta.Captcha
|
||||
|
||||
def new(conn, _params) do
|
||||
{captcha_text, captcha_result} = Captcha.generate()
|
|
@ -1,9 +1,9 @@
|
|||
defmodule RecycledCloudWeb.UserAuth do
|
||||
defmodule MetaWeb.UserAuth do
|
||||
import Plug.Conn
|
||||
import Phoenix.Controller
|
||||
|
||||
alias RecycledCloud.Accounts
|
||||
alias RecycledCloudWeb.Router.Helpers, as: Routes
|
||||
alias Meta.Accounts
|
||||
alias MetaWeb.Router.Helpers, as: Routes
|
||||
|
||||
# Make the remember me cookie valid for 60 days.
|
||||
# If you want bump or reduce this value, also change
|
||||
|
@ -75,7 +75,7 @@ defmodule RecycledCloudWeb.UserAuth do
|
|||
user_token && Accounts.delete_session_token(user_token)
|
||||
|
||||
if live_socket_id = get_session(conn, :live_socket_id) do
|
||||
RecycledCloudWeb.Endpoint.broadcast(live_socket_id, "disconnect", %{})
|
||||
MetaWeb.Endpoint.broadcast(live_socket_id, "disconnect", %{})
|
||||
end
|
||||
|
||||
conn
|
|
@ -1,7 +1,7 @@
|
|||
defmodule RecycledCloudWeb.UserConfirmationController do
|
||||
use RecycledCloudWeb, :controller
|
||||
defmodule MetaWeb.UserConfirmationController do
|
||||
use MetaWeb, :controller
|
||||
|
||||
alias RecycledCloud.Accounts
|
||||
alias Meta.Accounts
|
||||
|
||||
def new(conn, _params) do
|
||||
render(conn, "new.html")
|
|
@ -1,7 +1,7 @@
|
|||
defmodule RecycledCloudWeb.UserKeysController do
|
||||
use RecycledCloudWeb, :controller
|
||||
defmodule MetaWeb.UserKeysController do
|
||||
use MetaWeb, :controller
|
||||
|
||||
alias RecycledCloud.Accounts
|
||||
alias Meta.Accounts
|
||||
|
||||
def index(conn, %{"username" => username}) do
|
||||
case Accounts.get_user_by_username(username) do
|
|
@ -1,13 +1,13 @@
|
|||
defmodule RecycledCloudWeb.UserRegistrationController do
|
||||
use RecycledCloudWeb, :controller
|
||||
defmodule MetaWeb.UserRegistrationController do
|
||||
use MetaWeb, :controller
|
||||
|
||||
alias RecycledCloud.Captcha
|
||||
alias RecycledCloud.Accounts
|
||||
alias RecycledCloud.Accounts.User
|
||||
alias RecycledCloudWeb.UserAuth
|
||||
alias Meta.Captcha
|
||||
alias Meta.Accounts
|
||||
alias Meta.Accounts.User
|
||||
alias MetaWeb.UserAuth
|
||||
|
||||
defp is_registration_enabled?() do
|
||||
Application.get_env(:recycledcloud, :enable_registration)
|
||||
Application.get_env(:meta, :enable_registration)
|
||||
end
|
||||
|
||||
def new(conn, _params) do
|
|
@ -1,7 +1,7 @@
|
|||
defmodule RecycledCloudWeb.UserResetPasswordController do
|
||||
use RecycledCloudWeb, :controller
|
||||
defmodule MetaWeb.UserResetPasswordController do
|
||||
use MetaWeb, :controller
|
||||
|
||||
alias RecycledCloud.Accounts
|
||||
alias Meta.Accounts
|
||||
|
||||
plug :get_user_by_reset_password_token when action in [:edit, :update]
|
||||
|
|
@ -1,8 +1,8 @@
|
|||
defmodule RecycledCloudWeb.UserSessionController do
|
||||
use RecycledCloudWeb, :controller
|
||||
defmodule MetaWeb.UserSessionController do
|
||||
use MetaWeb, :controller
|
||||
|
||||
alias RecycledCloud.Accounts
|
||||
alias RecycledCloudWeb.UserAuth
|
||||
alias Meta.Accounts
|
||||
alias MetaWeb.UserAuth
|
||||
|
||||
def new(conn, _params) do
|
||||
render(conn, "new.html", error_message: nil)
|
|
@ -1,8 +1,8 @@
|
|||
defmodule RecycledCloudWeb.UserSettingsController do
|
||||
use RecycledCloudWeb, :controller
|
||||
defmodule MetaWeb.UserSettingsController do
|
||||
use MetaWeb, :controller
|
||||
|
||||
alias RecycledCloud.Accounts
|
||||
alias RecycledCloudWeb.UserAuth
|
||||
alias Meta.Accounts
|
||||
alias MetaWeb.UserAuth
|
||||
|
||||
plug :assign_email_and_password_changesets
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
defmodule RecycledCloudWeb.VirtualMachineHostingController do
|
||||
use RecycledCloudWeb, :controller
|
||||
defmodule MetaWeb.VirtualMachineHostingController do
|
||||
use MetaWeb, :controller
|
||||
|
||||
alias RecycledCloud.OpenNebula, as: ONE
|
||||
alias Meta.OpenNebula, as: ONE
|
||||
|
||||
def index(conn, _params) do
|
||||
username = conn.assigns.current_user.username
|
|
@ -1,16 +1,16 @@
|
|||
defmodule RecycledCloudWeb.Endpoint do
|
||||
use Phoenix.Endpoint, otp_app: :recycledcloud
|
||||
defmodule MetaWeb.Endpoint do
|
||||
use Phoenix.Endpoint, otp_app: :meta
|
||||
|
||||
# The session will be stored in the cookie and signed,
|
||||
# this means its contents can be read but not tampered with.
|
||||
# Set :encryption_salt if you would also like to encrypt it.
|
||||
@session_options [
|
||||
store: :cookie,
|
||||
key: "_recycledcloud_key",
|
||||
key: "_meta_key",
|
||||
signing_salt: "6k95bz+m"
|
||||
]
|
||||
|
||||
socket "/socket", RecycledCloudWeb.UserSocket,
|
||||
socket "/socket", MetaWeb.UserSocket,
|
||||
websocket: true,
|
||||
longpoll: false
|
||||
|
||||
|
@ -20,7 +20,7 @@ defmodule RecycledCloudWeb.Endpoint do
|
|||
# when deploying your static files in production.
|
||||
plug Plug.Static,
|
||||
at: "/",
|
||||
from: :recycledcloud,
|
||||
from: :meta,
|
||||
gzip: false,
|
||||
only: ~w(css fonts images js favicon.ico robots.txt)
|
||||
|
||||
|
@ -30,7 +30,7 @@ defmodule RecycledCloudWeb.Endpoint do
|
|||
socket "/phoenix/live_reload/socket", Phoenix.LiveReloader.Socket
|
||||
plug Phoenix.LiveReloader
|
||||
plug Phoenix.CodeReloader
|
||||
plug Phoenix.Ecto.CheckRepoStatus, otp_app: :recycledcloud
|
||||
plug Phoenix.Ecto.CheckRepoStatus, otp_app: :meta
|
||||
end
|
||||
|
||||
plug Plug.RequestId
|
||||
|
@ -44,5 +44,5 @@ defmodule RecycledCloudWeb.Endpoint do
|
|||
plug Plug.MethodOverride
|
||||
plug Plug.Head
|
||||
plug Plug.Session, @session_options
|
||||
plug RecycledCloudWeb.Router
|
||||
plug MetaWeb.Router
|
||||
end
|
|
@ -1,11 +1,11 @@
|
|||
defmodule RecycledCloudWeb.Gettext do
|
||||
defmodule MetaWeb.Gettext do
|
||||
@moduledoc """
|
||||
A module providing Internationalization with a gettext-based API.
|
||||
|
||||
By using [Gettext](https://hexdocs.pm/gettext),
|
||||
your module gains a set of macros for translations, for example:
|
||||
|
||||
import RecycledCloudWeb.Gettext
|
||||
import MetaWeb.Gettext
|
||||
|
||||
# Simple translation
|
||||
gettext("Here is the string to translate")
|
||||
|
@ -20,5 +20,5 @@ defmodule RecycledCloudWeb.Gettext do
|
|||
|
||||
See the [Gettext Docs](https://hexdocs.pm/gettext) for detailed usage.
|
||||
"""
|
||||
use Gettext, otp_app: :recycledcloud
|
||||
use Gettext, otp_app: :meta
|
||||
end
|
|
@ -1,7 +1,7 @@
|
|||
defmodule RecycledCloudWeb.Router do
|
||||
use RecycledCloudWeb, :router
|
||||
defmodule MetaWeb.Router do
|
||||
use MetaWeb, :router
|
||||
|
||||
import RecycledCloudWeb.UserAuth
|
||||
import MetaWeb.UserAuth
|
||||
|
||||
pipeline :browser do
|
||||
plug :accepts, ["html"]
|
||||
|
@ -28,14 +28,14 @@ defmodule RecycledCloudWeb.Router do
|
|||
plug :accepts, ["text"]
|
||||
end
|
||||
|
||||
scope "/", RecycledCloudWeb do
|
||||
scope "/", MetaWeb do
|
||||
pipe_through :browser
|
||||
|
||||
get "/", PageController, :index
|
||||
get "/support/new", SupportController, :new
|
||||
end
|
||||
|
||||
scope "/", RecycledCloudWeb do
|
||||
scope "/", MetaWeb do
|
||||
pipe_through :browser_with_forgery
|
||||
|
||||
# The static recycled.cloud website POST this endpoint, which basically is
|
||||
|
@ -43,7 +43,7 @@ defmodule RecycledCloudWeb.Router do
|
|||
post "/support/new", SupportController, :create
|
||||
end
|
||||
|
||||
scope "/", RecycledCloudWeb do
|
||||
scope "/", MetaWeb do
|
||||
pipe_through :plain
|
||||
|
||||
get "/keys/:username", UserKeysController, :index
|
||||
|
@ -51,7 +51,7 @@ defmodule RecycledCloudWeb.Router do
|
|||
|
||||
## Authentication routes
|
||||
|
||||
scope "/", RecycledCloudWeb do
|
||||
scope "/", MetaWeb do
|
||||
pipe_through [:browser, :redirect_if_user_is_authenticated]
|
||||
|
||||
get "/users/register", UserRegistrationController, :new
|
||||
|
@ -64,7 +64,7 @@ defmodule RecycledCloudWeb.Router do
|
|||
put "/users/reset_password/:token", UserResetPasswordController, :update
|
||||
end
|
||||
|
||||
scope "/", RecycledCloudWeb do
|
||||
scope "/", MetaWeb do
|
||||
pipe_through [:browser, :require_authenticated_user]
|
||||
|
||||
get "/users/settings", UserSettingsController, :edit
|
||||
|
@ -79,7 +79,7 @@ defmodule RecycledCloudWeb.Router do
|
|||
get "/hosting/vm/:location/:id", VirtualMachineHostingController, :show
|
||||
end
|
||||
|
||||
scope "/", RecycledCloudWeb do
|
||||
scope "/", MetaWeb do
|
||||
pipe_through [:browser]
|
||||
|
||||
get "/users/log_out", UserSessionController, :delete
|
||||
|
@ -91,7 +91,7 @@ defmodule RecycledCloudWeb.Router do
|
|||
|
||||
# In-memory mailer for development purposes only.
|
||||
# See https://hexdocs.pm/bamboo/Bamboo.SentEmailViewerPlug.html for details.
|
||||
if RecycledCloud.env() == :dev do
|
||||
if Meta.env() == :dev do
|
||||
forward "/outbox", Bamboo.SentEmailViewerPlug
|
||||
end
|
||||
end
|
|
@ -1,4 +1,4 @@
|
|||
defmodule RecycledCloudWeb.Telemetry do
|
||||
defmodule MetaWeb.Telemetry do
|
||||
use Supervisor
|
||||
import Telemetry.Metrics
|
||||
|
||||
|
@ -31,11 +31,11 @@ defmodule RecycledCloudWeb.Telemetry do
|
|||
),
|
||||
|
||||
# Database Metrics
|
||||
summary("recycledcloud.repo.query.total_time", unit: {:native, :millisecond}),
|
||||
summary("recycledcloud.repo.query.decode_time", unit: {:native, :millisecond}),
|
||||
summary("recycledcloud.repo.query.query_time", unit: {:native, :millisecond}),
|
||||
summary("recycledcloud.repo.query.queue_time", unit: {:native, :millisecond}),
|
||||
summary("recycledcloud.repo.query.idle_time", unit: {:native, :millisecond}),
|
||||
summary("meta.repo.query.total_time", unit: {:native, :millisecond}),
|
||||
summary("meta.repo.query.decode_time", unit: {:native, :millisecond}),
|
||||
summary("meta.repo.query.query_time", unit: {:native, :millisecond}),
|
||||
summary("meta.repo.query.queue_time", unit: {:native, :millisecond}),
|
||||
summary("meta.repo.query.idle_time", unit: {:native, :millisecond}),
|
||||
|
||||
# VM Metrics
|
||||
summary("vm.memory.total", unit: {:byte, :kilobyte}),
|
||||
|
@ -49,7 +49,7 @@ defmodule RecycledCloudWeb.Telemetry do
|
|||
[
|
||||
# A module, function and arguments to be invoked periodically.
|
||||
# This function must call :telemetry.execute/3 and a metric must be added above.
|
||||
# {RecycledCloudWeb, :count_users, []}
|
||||
# {MetaWeb, :count_users, []}
|
||||
]
|
||||
end
|
||||
end
|
|
@ -4,7 +4,7 @@
|
|||
<meta charset="utf-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
|
||||
<title>RecycledCloud · Management</title>
|
||||
<title>Meta · Management</title>
|
||||
<link rel="stylesheet" href="<%= Routes.static_path(@conn, "/css/app.css") %>"/>
|
||||
</head>
|
||||
<body>
|
||||
|
@ -15,7 +15,7 @@
|
|||
<img id="nav-logo" src="<%= Routes.static_path(@conn, "/images/cloud.svg") %>"></img>
|
||||
<p class="nav-notice">
|
||||
<small>
|
||||
management v<%= RecycledCloud.version() %> | <%= RecycledCloud.env() %> | <a href="https://code.recycled.cloud/e-Durable/management">sources</a>
|
||||
meta v<%= Meta.version() %> | <%= Meta.env() %> | <a href="https://code.recycled.cloud/e-Durable/management">sources</a>
|
||||
</small>
|
||||
</p>
|
||||
</div>
|
3
lib/meta_web/views/billing_view.ex
Normal file
3
lib/meta_web/views/billing_view.ex
Normal file
|
@ -0,0 +1,3 @@
|
|||
defmodule MetaWeb.BillingView do
|
||||
use MetaWeb, :view
|
||||
end
|
|
@ -1,4 +1,4 @@
|
|||
defmodule RecycledCloudWeb.ErrorHelpers do
|
||||
defmodule MetaWeb.ErrorHelpers do
|
||||
@moduledoc """
|
||||
Conveniences for translating and building error messages.
|
||||
"""
|
||||
|
@ -39,9 +39,9 @@ defmodule RecycledCloudWeb.ErrorHelpers do
|
|||
# should be written to the errors.po file. The :count option is
|
||||
# set by Ecto and indicates we should also apply plural rules.
|
||||
if count = opts[:count] do
|
||||
Gettext.dngettext(RecycledCloudWeb.Gettext, "errors", msg, msg, count, opts)
|
||||
Gettext.dngettext(MetaWeb.Gettext, "errors", msg, msg, count, opts)
|
||||
else
|
||||
Gettext.dgettext(RecycledCloudWeb.Gettext, "errors", msg, opts)
|
||||
Gettext.dgettext(MetaWeb.Gettext, "errors", msg, opts)
|
||||
end
|
||||
end
|
||||
end
|
|
@ -1,5 +1,5 @@
|
|||
defmodule RecycledCloudWeb.ErrorView do
|
||||
use RecycledCloudWeb, :view
|
||||
defmodule MetaWeb.ErrorView do
|
||||
use MetaWeb, :view
|
||||
|
||||
# If you want to customize a particular status code
|
||||
# for a certain format, you may uncomment below.
|
3
lib/meta_web/views/layout_view.ex
Normal file
3
lib/meta_web/views/layout_view.ex
Normal file
|
@ -0,0 +1,3 @@
|
|||
defmodule MetaWeb.LayoutView do
|
||||
use MetaWeb, :view
|
||||
end
|
3
lib/meta_web/views/page_view.ex
Normal file
3
lib/meta_web/views/page_view.ex
Normal file
|
@ -0,0 +1,3 @@
|
|||
defmodule MetaWeb.PageView do
|
||||
use MetaWeb, :view
|
||||
end
|
3
lib/meta_web/views/support_view.ex
Normal file
3
lib/meta_web/views/support_view.ex
Normal file
|
@ -0,0 +1,3 @@
|
|||
defmodule MetaWeb.SupportView do
|
||||
use MetaWeb, :view
|
||||
end
|
3
lib/meta_web/views/user_confirmation_view.ex
Normal file
3
lib/meta_web/views/user_confirmation_view.ex
Normal file
|
@ -0,0 +1,3 @@
|
|||
defmodule MetaWeb.UserConfirmationView do
|
||||
use MetaWeb, :view
|
||||
end
|
3
lib/meta_web/views/user_registration_view.ex
Normal file
3
lib/meta_web/views/user_registration_view.ex
Normal file
|
@ -0,0 +1,3 @@
|
|||
defmodule MetaWeb.UserRegistrationView do
|
||||
use MetaWeb, :view
|
||||
end
|
3
lib/meta_web/views/user_reset_password_view.ex
Normal file
3
lib/meta_web/views/user_reset_password_view.ex
Normal file
|
@ -0,0 +1,3 @@
|
|||
defmodule MetaWeb.UserResetPasswordView do
|
||||
use MetaWeb, :view
|
||||
end
|
3
lib/meta_web/views/user_session_view.ex
Normal file
3
lib/meta_web/views/user_session_view.ex
Normal file
|
@ -0,0 +1,3 @@
|
|||
defmodule MetaWeb.UserSessionView do
|
||||
use MetaWeb, :view
|
||||
end
|
3
lib/meta_web/views/user_settings_view.ex
Normal file
3
lib/meta_web/views/user_settings_view.ex
Normal file
|
@ -0,0 +1,3 @@
|
|||
defmodule MetaWeb.UserSettingsView do
|
||||
use MetaWeb, :view
|
||||
end
|
|
@ -1,8 +1,8 @@
|
|||
defmodule RecycledCloudWeb.VirtualMachineHostingView do
|
||||
use RecycledCloudWeb, :view
|
||||
defmodule MetaWeb.VirtualMachineHostingView do
|
||||
use MetaWeb, :view
|
||||
|
||||
alias RecycledCloud.OpenNebula, as: ONE
|
||||
alias RecycledCloud.OpenNebula.VM
|
||||
alias Meta.OpenNebula, as: ONE
|
||||
alias Meta.OpenNebula.VM
|
||||
|
||||
def render_state(vm) do
|
||||
state = Map.get(vm, :STATE) |> VM.state_for
|
|
@ -10,7 +10,7 @@ defmodule Mix.Tasks.GenerateOpenNebulaRecords do
|
|||
|
||||
@shortdoc "Generate erlang records from OpenNebula's XSD templates"
|
||||
def run(_) do
|
||||
priv_dir = to_string(:code.priv_dir(:recycledcloud))
|
||||
priv_dir = to_string(:code.priv_dir(:meta))
|
||||
xsd_dir = Path.join([priv_dir, "opennebula", @opennebula_release, "xsd-src"])
|
||||
hrl_dir = Path.join([priv_dir, "opennebula", @opennebula_release, "xsd-records"])
|
||||
|
||||
|
|
|
@ -1,5 +0,0 @@
|
|||
defmodule RecycledCloud.Repo do
|
||||
use Ecto.Repo,
|
||||
otp_app: :recycledcloud,
|
||||
adapter: Ecto.Adapters.Postgres
|
||||
end
|
|
@ -1,7 +0,0 @@
|
|||
defmodule RecycledCloudWeb.PageController do
|
||||
use RecycledCloudWeb, :controller
|
||||
|
||||
def index(conn, _params) do
|
||||
render(conn, "index.html")
|
||||
end
|
||||
end
|
|
@ -1,3 +0,0 @@
|
|||
defmodule RecycledCloudWeb.BillingView do
|
||||
use RecycledCloudWeb, :view
|
||||
end
|
|
@ -1,3 +0,0 @@
|
|||
defmodule RecycledCloudWeb.LayoutView do
|
||||
use RecycledCloudWeb, :view
|
||||
end
|
|
@ -1,3 +0,0 @@
|
|||
defmodule RecycledCloudWeb.PageView do
|
||||
use RecycledCloudWeb, :view
|
||||
end
|
|
@ -1,3 +0,0 @@
|
|||
defmodule RecycledCloudWeb.SupportView do
|
||||
use RecycledCloudWeb, :view
|
||||
end
|
|
@ -1,3 +0,0 @@
|
|||
defmodule RecycledCloudWeb.UserConfirmationView do
|
||||
use RecycledCloudWeb, :view
|
||||
end
|
|
@ -1,3 +0,0 @@
|
|||
defmodule RecycledCloudWeb.UserRegistrationView do
|
||||
use RecycledCloudWeb, :view
|
||||
end
|
|
@ -1,3 +0,0 @@
|
|||
defmodule RecycledCloudWeb.UserResetPasswordView do
|
||||
use RecycledCloudWeb, :view
|
||||
end
|
|
@ -1,3 +0,0 @@
|
|||
defmodule RecycledCloudWeb.UserSessionView do
|
||||
use RecycledCloudWeb, :view
|
||||
end
|
|
@ -1,3 +0,0 @@
|
|||
defmodule RecycledCloudWeb.UserSettingsView do
|
||||
use RecycledCloudWeb, :view
|
||||
end
|
8
mix.exs
8
mix.exs
|
@ -1,9 +1,9 @@
|
|||
defmodule RecycledCloud.MixProject do
|
||||
defmodule Meta.MixProject do
|
||||
use Mix.Project
|
||||
|
||||
def project do
|
||||
[
|
||||
app: :recycledcloud,
|
||||
app: :meta,
|
||||
version: "0.4.0",
|
||||
elixir: "~> 1.7",
|
||||
elixirc_paths: elixirc_paths(Mix.env()),
|
||||
|
@ -12,7 +12,7 @@ defmodule RecycledCloud.MixProject do
|
|||
aliases: aliases(),
|
||||
deps: deps(),
|
||||
releases: [
|
||||
recycledcloud: [
|
||||
meta: [
|
||||
include_executables_for: [:unix],
|
||||
applications: [runtime_tools: :permanent],
|
||||
include_erts: true,
|
||||
|
@ -27,7 +27,7 @@ defmodule RecycledCloud.MixProject do
|
|||
# Type `mix help compile.app` for more information.
|
||||
def application do
|
||||
[
|
||||
mod: {RecycledCloud.Application, []},
|
||||
mod: {Meta.Application, []},
|
||||
extra_applications: [:logger, :runtime_tools, :eldap]
|
||||
]
|
||||
end
|
||||
|
|
22
mix.lock
22
mix.lock
|
@ -1,42 +1,42 @@
|
|||
%{
|
||||
"bamboo": {:hex, :bamboo, "1.6.0", "adfb583bef028923aae6f22deaea6667290561da1246058556ecaeb0fec5a175", [:mix], [{:hackney, ">= 1.13.0", [hex: :hackney, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:plug, "~> 1.0", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "454e67feacbc9b6e00553ce1d2fba003c861e0035600d59b09d6159985b17f9b"},
|
||||
"bamboo": {:hex, :bamboo, "1.7.1", "7f0946e8c9081ce10d347cdba33c247c7c1c4f7dddc194ab0633603ef879bbdf", [:mix], [{:hackney, ">= 1.15.2", [hex: :hackney, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:mime, "~> 1.4", [hex: :mime, repo: "hexpm", optional: false]}, {:phoenix, "~> 1.1", [hex: :phoenix, repo: "hexpm", optional: true]}, {:plug, "~> 1.0", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "5fb34c3ab638fc409deec47c1e91f9d78ad95bf22ccb153588b434e1ff1aa730"},
|
||||
"bamboo_smtp": {:git, "https://github.com/Fnux/bamboo_smtp.git", "bdc911bb82963e548f7189ad10670107b24bb28b", []},
|
||||
"bcrypt_elixir": {:hex, :bcrypt_elixir, "2.3.0", "6cb662d5c1b0a8858801cf20997bd006e7016aa8c52959c9ef80e0f34fb60b7a", [:make, :mix], [{:comeonin, "~> 5.3", [hex: :comeonin, repo: "hexpm", optional: false]}, {:elixir_make, "~> 0.6", [hex: :elixir_make, repo: "hexpm", optional: false]}], "hexpm", "2c81d61d4f6ed0e5cf7bf27a9109b791ff216a1034b3d541327484f46dd43769"},
|
||||
"bunt": {:hex, :bunt, "0.2.0", "951c6e801e8b1d2cbe58ebbd3e616a869061ddadcc4863d0a2182541acae9a38", [:mix], [], "hexpm", "7af5c7e09fe1d40f76c8e4f9dd2be7cebd83909f31fee7cd0e9eadc567da8353"},
|
||||
"certifi": {:hex, :certifi, "2.5.3", "70bdd7e7188c804f3a30ee0e7c99655bc35d8ac41c23e12325f36ab449b70651", [:rebar3], [{:parse_trans, "~>3.3", [hex: :parse_trans, repo: "hexpm", optional: false]}], "hexpm", "ed516acb3929b101208a9d700062d520f3953da3b6b918d866106ffa980e1c10"},
|
||||
"certifi": {:hex, :certifi, "2.6.1", "dbab8e5e155a0763eea978c913ca280a6b544bfa115633fa20249c3d396d9493", [:rebar3], [], "hexpm", "524c97b4991b3849dd5c17a631223896272c6b0af446778ba4675a1dff53bb7e"},
|
||||
"comeonin": {:hex, :comeonin, "5.3.2", "5c2f893d05c56ae3f5e24c1b983c2d5dfb88c6d979c9287a76a7feb1e1d8d646", [:mix], [], "hexpm", "d0993402844c49539aeadb3fe46a3c9bd190f1ecf86b6f9ebd71957534c95f04"},
|
||||
"connection": {:hex, :connection, "1.1.0", "ff2a49c4b75b6fb3e674bfc5536451607270aac754ffd1bdfe175abe4a6d7a68", [:mix], [], "hexpm", "722c1eb0a418fbe91ba7bd59a47e28008a189d47e37e0e7bb85585a016b2869c"},
|
||||
"cowboy": {:hex, :cowboy, "2.8.0", "f3dc62e35797ecd9ac1b50db74611193c29815401e53bac9a5c0577bd7bc667d", [:rebar3], [{:cowlib, "~> 2.9.1", [hex: :cowlib, repo: "hexpm", optional: false]}, {:ranch, "~> 1.7.1", [hex: :ranch, repo: "hexpm", optional: false]}], "hexpm", "4643e4fba74ac96d4d152c75803de6fad0b3fa5df354c71afdd6cbeeb15fac8a"},
|
||||
"cowboy_telemetry": {:hex, :cowboy_telemetry, "0.3.1", "ebd1a1d7aff97f27c66654e78ece187abdc646992714164380d8a041eda16754", [:rebar3], [{:cowboy, "~> 2.7", [hex: :cowboy, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "3a6efd3366130eab84ca372cbd4a7d3c3a97bdfcfb4911233b035d117063f0af"},
|
||||
"cowlib": {:hex, :cowlib, "2.9.1", "61a6c7c50cf07fdd24b2f45b89500bb93b6686579b069a89f88cb211e1125c78", [:rebar3], [], "hexpm", "e4175dc240a70d996156160891e1c62238ede1729e45740bdd38064dad476170"},
|
||||
"credo": {:hex, :credo, "1.5.5", "e8f422026f553bc3bebb81c8e8bf1932f498ca03339856c7fec63d3faac8424b", [:mix], [{:bunt, "~> 0.2.0", [hex: :bunt, repo: "hexpm", optional: false]}, {:file_system, "~> 0.2.8", [hex: :file_system, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "dd8623ab7091956a855dc9f3062486add9c52d310dfd62748779c4315d8247de"},
|
||||
"db_connection": {:hex, :db_connection, "2.3.1", "4c9f3ed1ef37471cbdd2762d6655be11e38193904d9c5c1c9389f1b891a3088e", [:mix], [{:connection, "~> 1.0", [hex: :connection, repo: "hexpm", optional: false]}], "hexpm", "abaab61780dde30301d840417890bd9f74131041afd02174cf4e10635b3a63f5"},
|
||||
"db_connection": {:hex, :db_connection, "2.4.0", "d04b1b73795dae60cead94189f1b8a51cc9e1f911c234cc23074017c43c031e5", [:mix], [{:connection, "~> 1.0", [hex: :connection, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "ad416c21ad9f61b3103d254a71b63696ecadb6a917b36f563921e0de00d7d7c8"},
|
||||
"decimal": {:hex, :decimal, "1.9.0", "83e8daf59631d632b171faabafb4a9f4242c514b0a06ba3df493951c08f64d07", [:mix], [], "hexpm", "b1f2343568eed6928f3e751cf2dffde95bfaa19dd95d09e8a9ea92ccfd6f7d85"},
|
||||
"ecto": {:hex, :ecto, "3.5.5", "48219a991bb86daba6e38a1e64f8cea540cded58950ff38fbc8163e062281a07", [:mix], [{:decimal, "~> 1.6 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "98dd0e5e1de7f45beca6130d13116eae675db59adfa055fb79612406acf6f6f1"},
|
||||
"ecto_sql": {:hex, :ecto_sql, "3.5.3", "1964df0305538364b97cc4661a2bd2b6c89d803e66e5655e4e55ff1571943efd", [:mix], [{:db_connection, "~> 2.2", [hex: :db_connection, repo: "hexpm", optional: false]}, {:ecto, "~> 3.5.0", [hex: :ecto, repo: "hexpm", optional: false]}, {:myxql, "~> 0.3.0 or ~> 0.4.0", [hex: :myxql, repo: "hexpm", optional: true]}, {:postgrex, "~> 0.15.0", [hex: :postgrex, repo: "hexpm", optional: true]}, {:tds, "~> 2.1.1", [hex: :tds, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "d2f53592432ce17d3978feb8f43e8dc0705e288b0890caf06d449785f018061c"},
|
||||
"ecto": {:hex, :ecto, "3.6.0", "df6b00f7278b458108044da4cff365dde31f6f2f621cf7dc0bf857b26be3bd20", [:mix], [{:decimal, "~> 1.6 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "3035603f5b308ea7731b854493e5b5c1565e4d1e073186c3963b9689304f1d08"},
|
||||
"ecto_sql": {:hex, :ecto_sql, "3.6.1", "8774dc3fc0ff7b6be510858b99883640f990c0736b8ab54588f9a0c91807f909", [:mix], [{:db_connection, "~> 2.2", [hex: :db_connection, repo: "hexpm", optional: false]}, {:ecto, "~> 3.6.0", [hex: :ecto, repo: "hexpm", optional: false]}, {:myxql, "~> 0.4.0 or ~> 0.5.0", [hex: :myxql, repo: "hexpm", optional: true]}, {:postgrex, "~> 0.15.0 or ~> 1.0", [hex: :postgrex, repo: "hexpm", optional: true]}, {:tds, "~> 2.1.1", [hex: :tds, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "66f35c3f2d5978b6bffebd1e6351ab8c9d6b68650d62abd1ab8d149de40e0779"},
|
||||
"elixir_make": {:hex, :elixir_make, "0.6.2", "7dffacd77dec4c37b39af867cedaabb0b59f6a871f89722c25b28fcd4bd70530", [:mix], [], "hexpm", "03e49eadda22526a7e5279d53321d1cced6552f344ba4e03e619063de75348d9"},
|
||||
"erlsom": {:hex, :erlsom, "1.5.0", "c5a5cdd0ee0e8dca62bcc4b13ff08da24fdefc16ccd8b25282a2fda2ba1be24a", [:rebar3], [], "hexpm", "55a9dbf9cfa77fcfc108bd8e2c4f9f784dea228a8f4b06ea10b684944946955a"},
|
||||
"file_system": {:hex, :file_system, "0.2.10", "fb082005a9cd1711c05b5248710f8826b02d7d1784e7c3451f9c1231d4fc162d", [:mix], [], "hexpm", "41195edbfb562a593726eda3b3e8b103a309b733ad25f3d642ba49696bf715dc"},
|
||||
"gen_smtp": {:hex, :gen_smtp, "1.0.1", "cc3de2898d9136ff02dc78fc8193d4fc997824fc793f5bbbada79ccde94581be", [:rebar3], [{:hut, "1.3.0", [hex: :hut, repo: "hexpm", optional: false]}, {:ranch, "1.6.2", [hex: :ranch, repo: "hexpm", optional: false]}], "hexpm", "341a98dc4dafad9cc1e4426e4988e45b31d3f235fa637408f7579a9b598c0ab6"},
|
||||
"gettext": {:hex, :gettext, "0.18.2", "7df3ea191bb56c0309c00a783334b288d08a879f53a7014341284635850a6e55", [:mix], [], "hexpm", "f9f537b13d4fdd30f3039d33cb80144c3aa1f8d9698e47d7bcbcc8df93b1f5c5"},
|
||||
"hackney": {:hex, :hackney, "1.17.0", "717ea195fd2f898d9fe9f1ce0afcc2621a41ecfe137fae57e7fe6e9484b9aa99", [:rebar3], [{:certifi, "~>2.5", [hex: :certifi, repo: "hexpm", optional: false]}, {:idna, "~>6.1.0", [hex: :idna, repo: "hexpm", optional: false]}, {:metrics, "~>1.0.0", [hex: :metrics, repo: "hexpm", optional: false]}, {:mimerl, "~>1.1", [hex: :mimerl, repo: "hexpm", optional: false]}, {:parse_trans, "~>3.3", [hex: :parse_trans, repo: "hexpm", optional: false]}, {:ssl_verify_fun, "~>1.1.0", [hex: :ssl_verify_fun, repo: "hexpm", optional: false]}, {:unicode_util_compat, "~>0.7.0", [hex: :unicode_util_compat, repo: "hexpm", optional: false]}], "hexpm", "64c22225f1ea8855f584720c0e5b3cd14095703af1c9fbc845ba042811dc671c"},
|
||||
"hackney": {:hex, :hackney, "1.17.4", "99da4674592504d3fb0cfef0db84c3ba02b4508bae2dff8c0108baa0d6e0977c", [:rebar3], [{:certifi, "~>2.6.1", [hex: :certifi, repo: "hexpm", optional: false]}, {:idna, "~>6.1.0", [hex: :idna, repo: "hexpm", optional: false]}, {:metrics, "~>1.0.0", [hex: :metrics, repo: "hexpm", optional: false]}, {:mimerl, "~>1.1", [hex: :mimerl, repo: "hexpm", optional: false]}, {:parse_trans, "3.3.1", [hex: :parse_trans, repo: "hexpm", optional: false]}, {:ssl_verify_fun, "~>1.1.0", [hex: :ssl_verify_fun, repo: "hexpm", optional: false]}, {:unicode_util_compat, "~>0.7.0", [hex: :unicode_util_compat, repo: "hexpm", optional: false]}], "hexpm", "de16ff4996556c8548d512f4dbe22dd58a587bf3332e7fd362430a7ef3986b16"},
|
||||
"httpoison": {:hex, :httpoison, "1.8.0", "6b85dea15820b7804ef607ff78406ab449dd78bed923a49c7160e1886e987a3d", [:mix], [{:hackney, "~> 1.17", [hex: :hackney, repo: "hexpm", optional: false]}], "hexpm", "28089eaa98cf90c66265b6b5ad87c59a3729bea2e74e9d08f9b51eb9729b3c3a"},
|
||||
"hut": {:hex, :hut, "1.3.0", "71f2f054e657c03f959cf1acc43f436ea87580696528ca2a55c8afb1b06c85e7", [:"erlang.mk", :rebar, :rebar3], [], "hexpm", "7e15d28555d8a1f2b5a3a931ec120af0753e4853a4c66053db354f35bf9ab563"},
|
||||
"idna": {:hex, :idna, "6.1.1", "8a63070e9f7d0c62eb9d9fcb360a7de382448200fbbd1b106cc96d3d8099df8d", [:rebar3], [{:unicode_util_compat, "~>0.7.0", [hex: :unicode_util_compat, repo: "hexpm", optional: false]}], "hexpm", "92376eb7894412ed19ac475e4a86f7b413c1b9fbb5bd16dccd57934157944cea"},
|
||||
"jason": {:hex, :jason, "1.2.2", "ba43e3f2709fd1aa1dce90aaabfd039d000469c05c56f0b8e31978e03fa39052", [:mix], [{:decimal, "~> 1.0 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "18a228f5f0058ee183f29f9eae0805c6e59d61c3b006760668d8d18ff0d12179"},
|
||||
"metrics": {:hex, :metrics, "1.0.1", "25f094dea2cda98213cecc3aeff09e940299d950904393b2a29d191c346a8486", [:rebar3], [], "hexpm", "69b09adddc4f74a40716ae54d140f93beb0fb8978d8636eaded0c31b6f099f16"},
|
||||
"mime": {:hex, :mime, "1.5.0", "203ef35ef3389aae6d361918bf3f952fa17a09e8e43b5aa592b93eba05d0fb8d", [:mix], [], "hexpm", "55a94c0f552249fc1a3dd9cd2d3ab9de9d3c89b559c2bd01121f824834f24746"},
|
||||
"mime": {:hex, :mime, "1.6.0", "dabde576a497cef4bbdd60aceee8160e02a6c89250d6c0b29e56c0dfb00db3d2", [:mix], [], "hexpm", "31a1a8613f8321143dde1dafc36006a17d28d02bdfecb9e95a880fa7aabd19a7"},
|
||||
"mimerl": {:hex, :mimerl, "1.2.0", "67e2d3f571088d5cfd3e550c383094b47159f3eee8ffa08e64106cdf5e981be3", [:rebar3], [], "hexpm", "f278585650aa581986264638ebf698f8bb19df297f66ad91b18910dfc6e19323"},
|
||||
"parse_trans": {:hex, :parse_trans, "3.3.1", "16328ab840cc09919bd10dab29e431da3af9e9e7e7e6f0089dd5a2d2820011d8", [:rebar3], [], "hexpm", "07cd9577885f56362d414e8c4c4e6bdf10d43a8767abb92d24cbe8b24c54888b"},
|
||||
"phoenix": {:hex, :phoenix, "1.5.7", "2923bb3af924f184459fe4fa4b100bd25fa6468e69b2803dfae82698269aa5e0", [:mix], [{:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:phoenix_html, "~> 2.13", [hex: :phoenix_html, repo: "hexpm", optional: true]}, {:phoenix_pubsub, "~> 2.0", [hex: :phoenix_pubsub, repo: "hexpm", optional: false]}, {:plug, "~> 1.10", [hex: :plug, repo: "hexpm", optional: false]}, {:plug_cowboy, "~> 1.0 or ~> 2.2", [hex: :plug_cowboy, repo: "hexpm", optional: true]}, {:plug_crypto, "~> 1.1.2 or ~> 1.2", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "774cd64417c5a3788414fdbb2be2eb9bcd0c048d9e6ad11a0c1fd67b7c0d0978"},
|
||||
"phoenix": {:hex, :phoenix, "1.5.8", "71cfa7a9bb9a37af4df98939790642f210e35f696b935ca6d9d9c55a884621a4", [:mix], [{:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:phoenix_html, "~> 2.13", [hex: :phoenix_html, repo: "hexpm", optional: true]}, {:phoenix_pubsub, "~> 2.0", [hex: :phoenix_pubsub, repo: "hexpm", optional: false]}, {:plug, "~> 1.10", [hex: :plug, repo: "hexpm", optional: false]}, {:plug_cowboy, "~> 1.0 or ~> 2.2", [hex: :plug_cowboy, repo: "hexpm", optional: true]}, {:plug_crypto, "~> 1.1.2 or ~> 1.2", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "35ded0a32f4836168c7ab6c33b88822eccd201bcd9492125a9bea4c54332d955"},
|
||||
"phoenix_ecto": {:hex, :phoenix_ecto, "4.2.1", "13f124cf0a3ce0f1948cf24654c7b9f2347169ff75c1123f44674afee6af3b03", [:mix], [{:ecto, "~> 3.0", [hex: :ecto, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 2.14.2 or ~> 2.15", [hex: :phoenix_html, repo: "hexpm", optional: true]}, {:plug, "~> 1.0", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "478a1bae899cac0a6e02be1deec7e2944b7754c04e7d4107fc5a517f877743c0"},
|
||||
"phoenix_html": {:hex, :phoenix_html, "2.14.3", "51f720d0d543e4e157ff06b65de38e13303d5778a7919bcc696599e5934271b8", [:mix], [{:plug, "~> 1.5", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "efd697a7fff35a13eeeb6b43db884705cba353a1a41d127d118fda5f90c8e80f"},
|
||||
"phoenix_live_reload": {:hex, :phoenix_live_reload, "1.3.0", "f35f61c3f959c9a01b36defaa1f0624edd55b87e236b606664a556d6f72fd2e7", [:mix], [{:file_system, "~> 0.2.1 or ~> 0.3", [hex: :file_system, repo: "hexpm", optional: false]}, {:phoenix, "~> 1.4", [hex: :phoenix, repo: "hexpm", optional: false]}], "hexpm", "02c1007ae393f2b76ec61c1a869b1e617179877984678babde131d716f95b582"},
|
||||
"phoenix_pubsub": {:hex, :phoenix_pubsub, "2.0.0", "a1ae76717bb168cdeb10ec9d92d1480fec99e3080f011402c0a2d68d47395ffb", [:mix], [], "hexpm", "c52d948c4f261577b9c6fa804be91884b381a7f8f18450c5045975435350f771"},
|
||||
"phx_gen_auth": {:hex, :phx_gen_auth, "0.6.0", "4ffbfa5b34ad8178c3dfcb996fed776df425903595cbc8d56a9ae5bc53136810", [:mix], [{:phoenix, "~> 1.5.2", [hex: :phoenix, repo: "hexpm", optional: false]}], "hexpm", "9a801c0f0bc251d8d91d62cecba0ebb6a90b8580fa8843029d931d15164e6ad9"},
|
||||
"plug": {:hex, :plug, "1.11.0", "f17217525597628298998bc3baed9f8ea1fa3f1160aa9871aee6df47a6e4d38e", [:mix], [{:mime, "~> 1.0", [hex: :mime, repo: "hexpm", optional: false]}, {:plug_crypto, "~> 1.1.1 or ~> 1.2", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "2d9c633f0499f9dc5c2fd069161af4e2e7756890b81adcbb2ceaa074e8308876"},
|
||||
"phx_gen_auth": {:hex, :phx_gen_auth, "0.7.0", "2e10e9527b6b71abbfbb4601c7dc4aa4fb9f2db6f9a6be457c468b7f2b0f6319", [:mix], [{:phoenix, "~> 1.5.2", [hex: :phoenix, repo: "hexpm", optional: false]}], "hexpm", "b9dc3e3b866e67c5db8f00f4a2adb28fc8636e794f78600e35aba0e55bdac209"},
|
||||
"plug": {:hex, :plug, "1.11.1", "f2992bac66fdae679453c9e86134a4201f6f43a687d8ff1cd1b2862d53c80259", [:mix], [{:mime, "~> 1.0", [hex: :mime, repo: "hexpm", optional: false]}, {:plug_crypto, "~> 1.1.1 or ~> 1.2", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "23524e4fefbb587c11f0833b3910bfb414bf2e2534d61928e920f54e3a1b881f"},
|
||||
"plug_cowboy": {:hex, :plug_cowboy, "2.4.1", "779ba386c0915027f22e14a48919a9545714f849505fa15af2631a0d298abf0f", [:mix], [{:cowboy, "~> 2.7", [hex: :cowboy, repo: "hexpm", optional: false]}, {:cowboy_telemetry, "~> 0.3", [hex: :cowboy_telemetry, repo: "hexpm", optional: false]}, {:plug, "~> 1.7", [hex: :plug, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "d72113b6dff7b37a7d9b2a5b68892808e3a9a752f2bf7e503240945385b70507"},
|
||||
"plug_crypto": {:hex, :plug_crypto, "1.2.0", "1cb20793aa63a6c619dd18bb33d7a3aa94818e5fd39ad357051a67f26dfa2df6", [:mix], [], "hexpm", "a48b538ae8bf381ffac344520755f3007cc10bd8e90b240af98ea29b69683fc2"},
|
||||
"plug_crypto": {:hex, :plug_crypto, "1.2.2", "05654514ac717ff3a1843204b424477d9e60c143406aa94daf2274fdd280794d", [:mix], [], "hexpm", "87631c7ad914a5a445f0a3809f99b079113ae4ed4b867348dd9eec288cecb6db"},
|
||||
"postgrex": {:hex, :postgrex, "0.15.8", "f5e782bbe5e8fa178d5e3cd1999c857dc48eda95f0a4d7f7bd92a50e84a0d491", [:mix], [{:connection, "~> 1.0", [hex: :connection, repo: "hexpm", optional: false]}, {:db_connection, "~> 2.1", [hex: :db_connection, repo: "hexpm", optional: false]}, {:decimal, "~> 1.5 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}], "hexpm", "698fbfacea34c4cf22c8281abeb5cf68d99628d541874f085520ab3b53d356fe"},
|
||||
"ranch": {:hex, :ranch, "1.7.1", "6b1fab51b49196860b733a49c07604465a47bdb78aa10c1c16a3d199f7f8c881", [:rebar3], [], "hexpm", "451d8527787df716d99dc36162fca05934915db0b6141bbdac2ea8d3c7afc7d7"},
|
||||
"ssl_verify_fun": {:hex, :ssl_verify_fun, "1.1.6", "cf344f5692c82d2cd7554f5ec8fd961548d4fd09e7d22f5b62482e5aeaebd4b0", [:make, :mix, :rebar3], [], "hexpm", "bdb0d2471f453c88ff3908e7686f86f9be327d065cc1ec16fa4540197ea04680"},
|
||||
|
|
|
@ -13,5 +13,5 @@ fi
|
|||
curl \
|
||||
-H Authorization:"token $SRHT_ACCESS_TOKEN" \
|
||||
--data "manifest=$(jq -R -r --slurp < $MANIFEST)" \
|
||||
--data "note=recycledcloud-management" \
|
||||
--data "note=recycledcloud-meta" \
|
||||
-X POST $BUILDS_INSTANCE/api/jobs | jq
|
||||
|
|
Loading…
Reference in a new issue