/*
Copyright (c) Edgeless Systems GmbH

SPDX-License-Identifier: AGPL-3.0-only
*/

package openstack

import (
	"context"

	"github.com/edgelesssys/constellation/v2/internal/role"
	"github.com/gophercloud/gophercloud/openstack/compute/v2/servers"
	"github.com/gophercloud/gophercloud/openstack/networking/v2/subnets"
	"github.com/gophercloud/gophercloud/pagination"
)

type imdsAPI interface {
	providerID(ctx context.Context) (string, error)
	name(ctx context.Context) (string, error)
	projectID(ctx context.Context) (string, error)
	uid(ctx context.Context) (string, error)
	initSecretHash(ctx context.Context) (string, error)
	role(ctx context.Context) (role.Role, error)
	vpcIP(ctx context.Context) (string, error)
	networkIDs(ctx context.Context) ([]string, error)
}

type serversAPI interface {
	ListServers(opts servers.ListOptsBuilder) pagerAPI
	ListSubnets(opts subnets.ListOpts) pagerAPI
}

type pagerAPI interface {
	AllPages() (pagination.Page, error)
}