Get the MvRunner working, at least for Postfixadmin.
authorMichael Orlitzky <michael@orlitzky.com>
Fri, 30 Oct 2015 02:07:51 +0000 (22:07 -0400)
committerMichael Orlitzky <michael@orlitzky.com>
Fri, 30 Oct 2015 02:07:51 +0000 (22:07 -0400)
lib/mv/mv_runner.rb

index c7dbc5e7497147c90f40dbfb696474e11f5f8619..d2a7c5ba01d4664882a14b9b539f76f1f578d709 100644 (file)
@@ -1,10 +1,34 @@
+require 'common/errors'
 require 'common/runner'
 
 class MvRunner
   include Runner
 
   def run(plugin, src, dst)
 require 'common/runner'
 
 class MvRunner
   include Runner
 
   def run(plugin, src, dst)
-    puts "Not implemented"
+    # Why think too hard? An user has an @, a domain doesn't.
+    if not src.include?('@') then
+      # We only support moving users right now, and the destination
+      # domain must already exist.
+      raise NotImplementedError.new('Only users can be moved.')
+    end
+
+    begin
+      src_description = plugin.describe_user(src)
+      plugin.mv_user(src, dst)
+      msg  = "Moved user #{src} (#{src_description}) "
+      msg += "to #{dst}."
+      report(plugin, msg)
+    rescue InvalidUserError => e
+      report(plugin, e.message)
+    rescue NonexistentUserError => e
+      report(plugin, e.message)
+    rescue NonexistentDomainError => e
+      report(plugin, e.message)
+    rescue StandardError => e
+      msg = "There was an error (#{e.to_s}) moving the user: #{e.message}"
+      report(plugin, msg)
+      Kernel.exit(ExitCodes::DATABASE_ERROR)
+    end
   end
 
 end
   end
 
 end