#!/usr/bin/env python

from RuoteAMQP.launcher import Launcher

import os, sys
import optparse

try:
    import json
except ImportError:
    import simplejson as json

PROCESS = """
Ruote.process_definition :name => 'createrepo' do
  sequence do
      repomaker :action => 'create', :project => '${f:project}', :target => '${f:target}'
      notify :subject => '${f:snapshot_subject}', :debug_dump => 'yes', :if => '${f:snapshot}'

      image_dispatcher :debug_dump => 1
  end
end
"""

def main(hostname, fds):
    print "Launching process:"
    print PROCESS
    print json.dumps(fds, indent = 4)
    try:
        l = Launcher(amqp_host=hostname,
                    amqp_vhost='boss',
                    amqp_user='boss',
                    amqp_pass='boss')
    except Exception as e:
        print "AMQP: " + str(e)
        sys.exit(0)
    l.launch(PROCESS, fields = fds)
    return True

if __name__ == "__main__":

    # root permission checking
    if  os.getuid() != 0:
        print "you need root permission to run"
        exit()

    parser = optparse.OptionParser()
    parser.add_option("-H", "--host", dest="host", default= '127.0.0.1:5672',
                      help="host for AMQP")
    parser.add_option("-P", "--project", dest="project",
                      help="the project to snapshot")
    parser.add_option("-T", "--target", dest="target",  default= 'standard',
                      help="the target to snapshot")

    (opts, args) = parser.parse_args()

    #check host if it has port
    if ':' not in opts.host:
        hostname = opts.host+ ":5672"
    else:
        hostname = opts.host

    if not opts.project:
        print >> sys.stderr, 'Must specify --project'
        sys.exit(1)

    fds = {"project" : opts.project,
            "target": opts.target}

    main(hostname, fds)

