packages feed

DigitalOcean-0.1.1.0: examples/CreateDroplet.hs

module Main where

import qualified Data.Text as T
import qualified Net.DigitalOcean as DO
import System.Environment (getArgs)
import Text.Printf (printf)
import Control.Lens

main :: IO ()
main = do
  auth <- fmap head getArgs

  putStrLn . show . getSSHKey . DO.Config . T.pack $ auth

getSSHKey :: T.Text -> DO.Config -> IO DO.SSHKey
getSSHKey keyName c =
  DO.getSSHKeys c >>= \keys ->
  case find (\k -> k ^. DO.keyName == keyName) keys of
    Just k -> return k
    Nothing -> error "No key found"

createDroplet c =
  let region = "nyc3"
      sshKeyName = "Milo"
      image = "ubuntu-14-04-x64"
      size = "512mb"
      dropletName = "test"

  sshKey <- getSSHKey sshKeyName c
  let dco = (DO.defaultDCO dropletName region size image)
            & DO.dcoSSHKeys ?~ [sshKey ^. DO.keyFingerprint]
  DO.createDroplet dco c