from kokki import Execute, Fail, File, Template, Package, Service

assert env.config.cloudkick.oauth_key and env.config.cloudkick.oauth_secret and env.config.cloudkick.hostname

apt_list_path = '/etc/apt/sources.list.d/cloudkick.list'
apt = None
if env.system.platform == "ubuntu":
    ver = env.system.lsb['release']
    if ver == "10.10":
        apt = "deb http://packages.cloudkick.com/ubuntu lucid main"
    elif ver == "10.04":
        apt = "deb http://packages.cloudkick.com/ubuntu lucid main"
    elif ver == "9.10":
        apt = "deb http://packages.cloudkick.com/ubuntu karmic main"
    elif ver == "9.04":
        apt = "deb http://packages.cloudkick.com/ubuntu jaunty main"
    elif ver == "8.10":
        apt = "deb http://packages.cloudkick.com/ubuntu intrepid main"
    elif ver == "8.04":
        apt = "deb http://packages.cloudkick.com/ubuntu hardy main"
    elif ver == "6.04":
        apt = "deb http://packages.cloudkick.com/ubuntu dapper main"
elif env.system.platform == "debian":
    ver = env.system.lsb['release']
    apt = "deb http://packages.cloudkick.com/ubuntu lucid main"
    # if ver == '5.0':
    #     apt = "deb http://apt.librato.com/debian/ lenny non-free"

if not apt:
    raise Fail("Can't find a cloudkick package for your platform/version")

Execute("apt-update-cloudkick",
    command = "apt-get update",
    action = "nothing")

Execute("curl http://packages.cloudkick.com/cloudkick.packages.key | apt-key add -",
    not_if = "(apt-key list | grep 'Cloudkick' > /dev/null)")

File(apt_list_path,
    owner = "root",
    group ="root",
    mode = 0644,
    content = apt+"\n",
    notifies = [("run", env.resources["Execute"]["apt-update-cloudkick"], True)])

File("/etc/cloudkick.conf",
    owner = "root",
    group = "root",
    mode = 0644,
    content = Template("cloudkick/cloudkick.conf.j2"))

Package("cloudkick-agent",
    action = "upgrade")

Service("cloudkick-agent",
    supports_restart = True,
    subscribes = [("restart", env.resources["File"]["/etc/cloudkick.conf"])])