Remove legacy MQ stuff in preparation for deploy

pull/931/head
Rick Carlino 2018-07-24 18:25:16 -05:00
parent 19ddf79e06
commit 8be88eb9ca
8 changed files with 3 additions and 137 deletions

View File

@ -3,18 +3,12 @@ require "bunny"
# A wrapper around AMQP to stay DRY. Will make life easier if we ever need to
# change protocols
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" }
def self.amqp_url
@amqp_url ||= ENV["CLOUDAMQP_URL"] ||
ENV["RABBITMQ_URL"] ||
LOCAL ||
LEGACY
@amqp_url ||= ENV['CLOUDAMQP_URL'] ||
ENV['RABBITMQ_URL'] ||
"amqp://admin:#{ENV.fetch("ADMIN_PASSWORD")}@#{ENV.fetch("MQTT_HOST")}:5672"
end
def self.default_amqp_adapter=(value)

View File

@ -17,11 +17,6 @@ namespace :api do
sh "PORT=3000 bundle exec foreman start --procfile=Procfile.api_only"
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"
task(update: :environment) { same_thing }

View File

@ -10,15 +10,4 @@ namespace :mqtt do
retry
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

View File

@ -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"]

View File

@ -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

View File

@ -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 %>">>}
]}
].

View File

@ -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(" ")

View File

@ -3,7 +3,6 @@ require "spec_helper"
describe Transport::Mgmt do
it "generates credentials" do
pending("RE-ENABLE AFTER NEXT RELEASE")
the_list = [:foo, :bar]
dbl = double("Fake API", list_connections: the_list)
expect(["admin", "guest"]).to include(Transport::Mgmt.username)