
pt.tecnico.dsi.openstack.nova.NovaClient.scala Maven / Gradle / Ivy
package pt.tecnico.dsi.openstack.nova
import cats.effect.Concurrent
import org.http4s.Uri
import org.http4s.client.Client
import pt.tecnico.dsi.openstack.keystone.models.{ClientBuilder, Session}
import pt.tecnico.dsi.openstack.nova.services.*
object NovaClient extends ClientBuilder:
final type OpenstackClient[F[_]] = NovaClient[F]
final val `type`: String = "compute"
override def apply[F[_]: Concurrent: Client](baseUri: Uri, session: Session): NovaClient[F] =
new NovaClient[F](baseUri, session)
class NovaClient[F[_]: Concurrent](baseUri: Uri, session: Session)(using client: Client[F]):
val uri: Uri = if baseUri.path.dropEndsWithSlash.toString.endsWith("v2.1") then baseUri else baseUri / "v2.1"
val quotas = new Quotas[F](uri, session)
val servers = new Servers[F](uri, session)
val flavors = new Flavors[F](uri, session)
val keypairs = new Keypairs[F](uri, session)
val usageReports = new UsageReports[F](uri, session)
© 2015 - 2025 Weber Informatics LLC | Privacy Policy