diff --git a/app/models/transport.rb b/app/models/transport.rb index f8c6d491e..34eff86a0 100644 --- a/app/models/transport.rb +++ b/app/models/transport.rb @@ -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) diff --git a/lib/tasks/api.rake b/lib/tasks/api.rake index 124b105e3..f8749429c 100644 --- a/lib/tasks/api.rake +++ b/lib/tasks/api.rake @@ -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 } diff --git a/lib/tasks/mqtt.rake b/lib/tasks/mqtt.rake index 967a81cf9..b38c45b37 100644 --- a/lib/tasks/mqtt.rake +++ b/lib/tasks/mqtt.rake @@ -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 diff --git a/mqtt_legacy/Dockerfile b/mqtt_legacy/Dockerfile deleted file mode 100644 index 26a93e0e4..000000000 --- a/mqtt_legacy/Dockerfile +++ /dev/null @@ -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"] diff --git a/mqtt_legacy/Procfile.legacy b/mqtt_legacy/Procfile.legacy deleted file mode 100644 index 9b3e872bd..000000000 --- a/mqtt_legacy/Procfile.legacy +++ /dev/null @@ -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 diff --git a/mqtt_legacy/rabbitmq.config.erb b/mqtt_legacy/rabbitmq.config.erb deleted file mode 100644 index d41eec15d..000000000 --- a/mqtt_legacy/rabbitmq.config.erb +++ /dev/null @@ -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 %>">>} - ]} -]. diff --git a/mqtt_legacy/server.rb b/mqtt_legacy/server.rb deleted file mode 100644 index f41a0e089..000000000 --- a/mqtt_legacy/server.rb +++ /dev/null @@ -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(" ") diff --git a/spec/lib/transport_mgmt_spec.rb b/spec/lib/transport_mgmt_spec.rb index 20e5a31e2..588f84e89 100644 --- a/spec/lib/transport_mgmt_spec.rb +++ b/spec/lib/transport_mgmt_spec.rb @@ -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)