All Downloads are FREE. Search and download functionalities are using the official Maven repository.

me.jeffshaw.digitalocean.DigitalOcean.scala Maven / Gradle / Ivy

package me.jeffshaw.digitalocean

import scala.concurrent._

/**
  * Provides a snapshot of your Digital Ocean assets.
  */
case class DigitalOcean(
  domains: Set[dns.Domain],
  droplets: Set[Droplet],
  firewalls: Set[Firewall],
  floatingIps: Set[FloatingIp],
  images: Set[Image],
  regions: Set[Region],
  sizes: Set[Size],
  sshKeys: Set[SshKey],
  tags: Set[Tag],
  volumes: Set[Volume]
)

object DigitalOcean {
  def list()(implicit client: DigitalOceanClient, ec: ExecutionContext): Future[DigitalOcean] = {
    for {
      domains <- dns.Domain.list()
      droplets <- Droplet.list()
      firewalls <- Firewall.list()
      floatingIps <- FloatingIp.list()
      images <- Image.list()
      regions <- Region.list()
      sizes <- Size.list()
      sshKeys <- SshKey.list()
      tags <- Tag.list()
      volumes <- Volume.list()
    } yield {
      DigitalOcean(
        domains = domains.toSet,
        droplets = droplets.toSet,
        firewalls = firewalls.toSet,
        floatingIps = floatingIps.toSet,
        images = images.toSet,
        regions = regions.toSet,
        sizes = sizes.toSet,
        sshKeys = sshKeys.toSet,
        tags = tags.toSet,
        volumes = volumes.toSet
      )
    }
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy