mirror of
https://github.com/edgelesssys/constellation.git
synced 2026-01-03 16:55:31 -05:00
AB#2523 Refactor GCP metadata/cloud API (#387)
* Refactor GCP metadata/cloud API * Remove cloud controller manager from metadata package * Remove PublicIP * Move shared cloud packages * Remove dead code Signed-off-by: Daniel Weiße <dw@edgeless.systems>
This commit is contained in:
parent
e9fecec0bc
commit
c9873f2bfb
54 changed files with 1587 additions and 3791 deletions
|
|
@ -20,11 +20,16 @@ import (
|
|||
"github.com/edgelesssys/constellation/v2/debugd/internal/debugd/metadata/cloudprovider"
|
||||
"github.com/edgelesssys/constellation/v2/debugd/internal/debugd/metadata/fallback"
|
||||
"github.com/edgelesssys/constellation/v2/debugd/internal/debugd/server"
|
||||
awscloud "github.com/edgelesssys/constellation/v2/internal/cloud/aws"
|
||||
azurecloud "github.com/edgelesssys/constellation/v2/internal/cloud/azure"
|
||||
platform "github.com/edgelesssys/constellation/v2/internal/cloud/cloudprovider"
|
||||
gcpcloud "github.com/edgelesssys/constellation/v2/internal/cloud/gcp"
|
||||
qemucloud "github.com/edgelesssys/constellation/v2/internal/cloud/qemu"
|
||||
"github.com/edgelesssys/constellation/v2/internal/deploy/ssh"
|
||||
"github.com/edgelesssys/constellation/v2/internal/deploy/user"
|
||||
"github.com/edgelesssys/constellation/v2/internal/logger"
|
||||
"github.com/spf13/afero"
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
|
||||
const debugBanner = `
|
||||
|
|
@ -56,34 +61,39 @@ func main() {
|
|||
csp := os.Getenv("CONSTEL_CSP")
|
||||
switch platform.FromString(csp) {
|
||||
case platform.AWS:
|
||||
awsFetcher, err := cloudprovider.NewAWS(ctx)
|
||||
meta, err := awscloud.New(ctx)
|
||||
if err != nil {
|
||||
log.Fatalf("%s", err)
|
||||
log.With(zap.Error(err)).Fatalf("Failed to initialize AWS metadata")
|
||||
}
|
||||
fetcher = awsFetcher
|
||||
fetcher = cloudprovider.New(meta)
|
||||
|
||||
case platform.Azure:
|
||||
azureFetcher, err := cloudprovider.NewAzure(ctx)
|
||||
meta, err := azurecloud.NewMetadata(ctx)
|
||||
if err != nil {
|
||||
log.Fatalf("%s", err)
|
||||
log.With(zap.Error(err)).Fatalf("Failed to initialize Azure metadata")
|
||||
}
|
||||
fetcher = azureFetcher
|
||||
fetcher = cloudprovider.New(meta)
|
||||
|
||||
case platform.GCP:
|
||||
gcpFetcher, err := cloudprovider.NewGCP(ctx)
|
||||
meta, err := gcpcloud.New(ctx)
|
||||
if err != nil {
|
||||
log.Fatalf("%s", err)
|
||||
log.With(zap.Error(err)).Fatalf("Failed to initialize GCP metadata")
|
||||
}
|
||||
fetcher = gcpFetcher
|
||||
log.Infof("Added load balancer IP to local routing table")
|
||||
defer meta.Close()
|
||||
fetcher = cloudprovider.New(meta)
|
||||
|
||||
case platform.QEMU:
|
||||
fetcher = cloudprovider.NewQEMU()
|
||||
fetcher = cloudprovider.New(&qemucloud.Metadata{})
|
||||
|
||||
default:
|
||||
log.Errorf("Unknown / unimplemented cloud provider CONSTEL_CSP=%v. Using fallback", csp)
|
||||
fetcher = fallback.Fetcher{}
|
||||
}
|
||||
|
||||
sched := metadata.NewScheduler(log.Named("scheduler"), fetcher, ssh, download)
|
||||
serv := server.New(log.Named("server"), ssh, serviceManager, streamer)
|
||||
if err := deploy.DefaultServiceUnit(ctx, serviceManager); err != nil {
|
||||
log.Fatalf("%s", err)
|
||||
log.With(zap.Error(err)).Fatalf("Failed to create default service unit")
|
||||
}
|
||||
|
||||
writeDebugBanner(log)
|
||||
|
|
@ -101,11 +111,11 @@ func main() {
|
|||
func writeDebugBanner(log *logger.Logger) {
|
||||
tty, err := os.OpenFile("/dev/ttyS0", os.O_WRONLY, os.ModeAppend)
|
||||
if err != nil {
|
||||
log.Infof("Unable to open /dev/ttyS0 for printing banner: %v", err)
|
||||
log.With(zap.Error(err)).Errorf("Unable to open /dev/ttyS0 for printing banner")
|
||||
return
|
||||
}
|
||||
defer tty.Close()
|
||||
if _, err := fmt.Fprint(tty, debugBanner); err != nil {
|
||||
log.Infof("Unable to print to /dev/ttyS0: %v", err)
|
||||
log.With(zap.Error(err)).Errorf("Unable to print to /dev/ttyS0")
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -11,11 +11,7 @@ import (
|
|||
"fmt"
|
||||
"net"
|
||||
|
||||
awscloud "github.com/edgelesssys/constellation/v2/internal/cloud/aws"
|
||||
azurecloud "github.com/edgelesssys/constellation/v2/internal/cloud/azure"
|
||||
gcpcloud "github.com/edgelesssys/constellation/v2/internal/cloud/gcp"
|
||||
"github.com/edgelesssys/constellation/v2/internal/cloud/metadata"
|
||||
qemucloud "github.com/edgelesssys/constellation/v2/internal/cloud/qemu"
|
||||
"github.com/edgelesssys/constellation/v2/internal/deploy/ssh"
|
||||
"github.com/edgelesssys/constellation/v2/internal/role"
|
||||
)
|
||||
|
|
@ -34,46 +30,9 @@ type Fetcher struct {
|
|||
metaAPI providerMetadata
|
||||
}
|
||||
|
||||
// NewGCP creates a new GCP fetcher.
|
||||
func NewGCP(ctx context.Context) (*Fetcher, error) {
|
||||
gcpClient, err := gcpcloud.NewClient(ctx)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
metaAPI := gcpcloud.New(gcpClient)
|
||||
|
||||
func New(cloud providerMetadata) *Fetcher {
|
||||
return &Fetcher{
|
||||
metaAPI: metaAPI,
|
||||
}, nil
|
||||
}
|
||||
|
||||
// NewAzure creates a new Azure fetcher.
|
||||
func NewAWS(ctx context.Context) (*Fetcher, error) {
|
||||
metaAPI, err := awscloud.New(ctx)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &Fetcher{
|
||||
metaAPI: metaAPI,
|
||||
}, nil
|
||||
}
|
||||
|
||||
// NewAzure creates a new Azure fetcher.
|
||||
func NewAzure(ctx context.Context) (*Fetcher, error) {
|
||||
metaAPI, err := azurecloud.NewMetadata(ctx)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &Fetcher{
|
||||
metaAPI: metaAPI,
|
||||
}, nil
|
||||
}
|
||||
|
||||
func NewQEMU() *Fetcher {
|
||||
return &Fetcher{
|
||||
metaAPI: &qemucloud.Metadata{},
|
||||
metaAPI: cloud,
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -226,7 +226,6 @@ type stubMetadata struct {
|
|||
getInstanceErr error
|
||||
getLBEndpointRes string
|
||||
getLBEndpointErr error
|
||||
supportedRes bool
|
||||
}
|
||||
|
||||
func (m *stubMetadata) List(ctx context.Context) ([]metadata.InstanceMetadata, error) {
|
||||
|
|
@ -244,7 +243,3 @@ func (m *stubMetadata) GetInstance(ctx context.Context, providerID string) (meta
|
|||
func (m *stubMetadata) GetLoadBalancerEndpoint(ctx context.Context) (string, error) {
|
||||
return m.getLBEndpointRes, m.getLBEndpointErr
|
||||
}
|
||||
|
||||
func (m *stubMetadata) Supported() bool {
|
||||
return m.supportedRes
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue