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
|
||||
# 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)
|
||||
|
|
|
@ -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 }
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
||||
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)
|
||||
|
|
Loading…
Reference in New Issue