Remove legacy MQ stuff in preparation for deploy
parent
19ddf79e06
commit
8be88eb9ca
|
@ -3,18 +3,12 @@ require "bunny"
|
||||||
# A wrapper around AMQP to stay DRY. Will make life easier if we ever need to
|
# A wrapper around AMQP to stay DRY. Will make life easier if we ever need to
|
||||||
# change protocols
|
# change protocols
|
||||||
class Transport
|
class Transport
|
||||||
# Temporary until production RMQ is properly vetted - RC 24 JUL 18
|
|
||||||
LEGACY = "amqp://guest:guest@localhost:5672"
|
|
||||||
PW = ENV["ADMIN_PASSWORD"]
|
|
||||||
HOST = ENV["MQTT_HOST"]
|
|
||||||
LOCAL = PW && HOST && "amqp://admin:#{PW}@#{HOST}:5672"
|
|
||||||
OPTS = { read_timeout: 10, heartbeat: 10, log_level: "info" }
|
OPTS = { read_timeout: 10, heartbeat: 10, log_level: "info" }
|
||||||
|
|
||||||
def self.amqp_url
|
def self.amqp_url
|
||||||
@amqp_url ||= ENV["CLOUDAMQP_URL"] ||
|
@amqp_url ||= ENV['CLOUDAMQP_URL'] ||
|
||||||
ENV["RABBITMQ_URL"] ||
|
ENV['RABBITMQ_URL'] ||
|
||||||
LOCAL ||
|
"amqp://admin:#{ENV.fetch("ADMIN_PASSWORD")}@#{ENV.fetch("MQTT_HOST")}:5672"
|
||||||
LEGACY
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.default_amqp_adapter=(value)
|
def self.default_amqp_adapter=(value)
|
||||||
|
|
|
@ -17,11 +17,6 @@ namespace :api do
|
||||||
sh "PORT=3000 bundle exec foreman start --procfile=Procfile.api_only"
|
sh "PORT=3000 bundle exec foreman start --procfile=Procfile.api_only"
|
||||||
end
|
end
|
||||||
|
|
||||||
desc "Run __LEGACY__ Webpack and Rails"
|
|
||||||
task legacy_start: :environment do
|
|
||||||
sh "PORT=3000 bundle exec foreman start --procfile=mqtt_legacy/Procfile.legacy"
|
|
||||||
end
|
|
||||||
|
|
||||||
desc "Pull the latest Farmbot API version"
|
desc "Pull the latest Farmbot API version"
|
||||||
task(update: :environment) { same_thing }
|
task(update: :environment) { same_thing }
|
||||||
|
|
||||||
|
|
|
@ -10,15 +10,4 @@ namespace :mqtt do
|
||||||
retry
|
retry
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
desc "Bootstraps the old MQTT server"
|
|
||||||
task legacy_start: :environment do
|
|
||||||
begin
|
|
||||||
require_relative '../../mqtt_legacy/server.rb'
|
|
||||||
rescue Errno::ECONNREFUSED
|
|
||||||
puts "API is not up yet. Waiting 5 seconds..."
|
|
||||||
sleep 5
|
|
||||||
retry
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,6 +0,0 @@
|
||||||
FROM rickcarlino/rmq_base:rc1
|
|
||||||
# TODO: Move this into base image on dockerhub
|
|
||||||
|
|
||||||
ADD ./rabbitmq.config /etc/rabbitmq/
|
|
||||||
|
|
||||||
CMD ["rabbitmq-server"]
|
|
|
@ -1,5 +0,0 @@
|
||||||
# Run Rails & Webpack concurrently
|
|
||||||
rails: rails s -e development -p ${API_PORT:-3000} -b 0.0.0.0
|
|
||||||
log_service: rails r lib/log_service_runner.rb
|
|
||||||
webpack: npm run webpack
|
|
||||||
worker: rake jobs:work
|
|
|
@ -1,30 +0,0 @@
|
||||||
% THIS FILE IS AUTO GENERATED BY `rabbitmq.config.erb`.
|
|
||||||
% DO NOT MODIFY `rabbitmq.config` MANUALLY!
|
|
||||||
|
|
||||||
[
|
|
||||||
{
|
|
||||||
rabbit, [
|
|
||||||
{ loopback_users, [] },
|
|
||||||
{ tcp_listeners, [5672] },
|
|
||||||
{ ssl_listeners, [ ] },
|
|
||||||
{ hipe_compile, false },
|
|
||||||
{
|
|
||||||
auth_backends, [
|
|
||||||
rabbit_auth_backend_internal,
|
|
||||||
rabbit_auth_backend_jwt
|
|
||||||
]}
|
|
||||||
] },
|
|
||||||
{ rabbitmq_mqtt, [
|
|
||||||
{vhost, <<"<%= VHOST %>">>},
|
|
||||||
{retained_message_store, rabbit_mqtt_retained_msg_store_noop}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{ rabbitmq_web_mqtt, [{ port, 3002 }, {vhost, <<"<%= VHOST %>">>}]},
|
|
||||||
{
|
|
||||||
rabbitmq_management, [{listener, [ { port, 15672 }, { ssl, false }] } ] },
|
|
||||||
|
|
||||||
{ rabbit_auth_backend_jwt, [
|
|
||||||
{ farmbot_api_key_url, "<%= farmbot_api_key_url %>" },
|
|
||||||
{ farmbot_vhost, <<"<%= VHOST %>">>}
|
|
||||||
]}
|
|
||||||
].
|
|
|
@ -1,70 +0,0 @@
|
||||||
require 'erb'
|
|
||||||
puts "\n" * 10
|
|
||||||
puts "=== THIS IS A LEGACY BROKER. DONT USE THIS UNLESS YOU HAVE A GOOD REASON."
|
|
||||||
puts "\n" * 10
|
|
||||||
puts "=== Retrieving container info"
|
|
||||||
PLUGIN_PATH ||= "mqtt_legacy/jwt_plugin/plugins/rabbit_auth_backend*"
|
|
||||||
PLUGIN_IS_BUILT ||= Dir[PLUGIN_PATH].any?
|
|
||||||
FORCE_REBUILD ||= ENV["FORCE_REBUILD"].present?
|
|
||||||
DOCKER_IMG_NAME ||= "farmbot-mqtt-legacy"
|
|
||||||
IMG_IS_BUILT ||= `cd mqtt_legacy; sudo docker images`.include?(DOCKER_IMG_NAME)
|
|
||||||
|
|
||||||
puts "=== Setting config data"
|
|
||||||
CONFIG_PATH ||= "./mqtt_legacy"
|
|
||||||
CONFIG_FILENAME ||= "rabbitmq.config"
|
|
||||||
CONFIG_OUTPUT ||= "#{CONFIG_PATH}/#{CONFIG_FILENAME}"
|
|
||||||
NO_API_HOST ||= "\nYou MUST set API_HOST to a real IP address or " +
|
|
||||||
"domain name (not localhost).\n" +
|
|
||||||
"API_PORT is also mandatory."
|
|
||||||
TEMPLATE_FILE ||= "./mqtt_legacy/rabbitmq.config.erb"
|
|
||||||
TEMPLATE ||= File.read(TEMPLATE_FILE)
|
|
||||||
RENDERER ||= ERB.new(TEMPLATE)
|
|
||||||
PROTO ||= ENV["FORCE_SSL"] ? "https:" : "http:"
|
|
||||||
VHOST ||= ENV.fetch("MQTT_VHOST") { "/" }
|
|
||||||
|
|
||||||
if !ENV["API_HOST"] || !ENV["API_PORT"]
|
|
||||||
puts NO_API_HOST
|
|
||||||
exit
|
|
||||||
end
|
|
||||||
|
|
||||||
puts "=== Building JWT plugin config"
|
|
||||||
farmbot_api_key_url = ENV.fetch("API_PUBLIC_KEY_PATH") do
|
|
||||||
"#{PROTO}#{$API_URL}/api/public_key"
|
|
||||||
end
|
|
||||||
|
|
||||||
# Write the config file.
|
|
||||||
conf = RENDERER.result(binding)
|
|
||||||
file = CONFIG_OUTPUT
|
|
||||||
|
|
||||||
File.write(file, conf)
|
|
||||||
|
|
||||||
# Re-init docker stuff
|
|
||||||
|
|
||||||
processes = `sudo docker ps -a -f "name=farmbot-mqtt-legacy" -q`
|
|
||||||
|
|
||||||
if processes.present?
|
|
||||||
puts "=== Stopping pre-existing farmbot containers"
|
|
||||||
sh "cd mqtt_legacy && sudo docker stop #{processes}"
|
|
||||||
sh "cd mqtt_legacy && sudo docker rm #{processes}"
|
|
||||||
end
|
|
||||||
|
|
||||||
if IMG_IS_BUILT
|
|
||||||
puts "=== Destroying old docker images"
|
|
||||||
sh "cd mqtt_legacy; sudo docker rmi #{DOCKER_IMG_NAME} --force"
|
|
||||||
end
|
|
||||||
|
|
||||||
puts "=== Building docker image"
|
|
||||||
sh "cd mqtt_legacy; sudo docker build -t farmbot-mqtt-legacy ."
|
|
||||||
|
|
||||||
puts "=== Starting MQTT"
|
|
||||||
|
|
||||||
exec [
|
|
||||||
'cd mqtt_legacy;',
|
|
||||||
'sudo docker run',
|
|
||||||
'-p "5672:5672"', # AMQP (RabbitMQ)
|
|
||||||
'-p "1883:1883"', # MQTT
|
|
||||||
'-p "8883:8883"', # MQTT over TLS/SSL
|
|
||||||
'-p "3002:15675"', # MQTT over WebSockets
|
|
||||||
'--name "farmbot-mqtt-legacy"',
|
|
||||||
'farmbot-mqtt-legacy'
|
|
||||||
].join(" ")
|
|
|
@ -3,7 +3,6 @@ require "spec_helper"
|
||||||
describe Transport::Mgmt do
|
describe Transport::Mgmt do
|
||||||
|
|
||||||
it "generates credentials" do
|
it "generates credentials" do
|
||||||
pending("RE-ENABLE AFTER NEXT RELEASE")
|
|
||||||
the_list = [:foo, :bar]
|
the_list = [:foo, :bar]
|
||||||
dbl = double("Fake API", list_connections: the_list)
|
dbl = double("Fake API", list_connections: the_list)
|
||||||
expect(["admin", "guest"]).to include(Transport::Mgmt.username)
|
expect(["admin", "guest"]).to include(Transport::Mgmt.username)
|
||||||
|
|
Loading…
Reference in New Issue