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