mirror of
https://github.com/edgelesssys/constellation.git
synced 2025-09-26 03:21:06 -04:00
Move ScalingGroup to cloudtypes
This commit is contained in:
parent
87b9203110
commit
d71e97a940
3 changed files with 72 additions and 160 deletions
|
@ -3,7 +3,7 @@ package state
|
|||
import (
|
||||
"errors"
|
||||
|
||||
cmdc "github.com/edgelesssys/constellation/cli/cmd"
|
||||
"github.com/edgelesssys/constellation/cli/cloud/cloudtypes"
|
||||
"github.com/edgelesssys/constellation/internal/config"
|
||||
"github.com/edgelesssys/constellation/internal/state"
|
||||
)
|
||||
|
@ -11,7 +11,7 @@ import (
|
|||
// Code in this file is mostly copied from constellation-coordinator
|
||||
// TODO: import as package from coordinator once it is properly refactored
|
||||
|
||||
func GetScalingGroupsFromConfig(stat state.ConstellationState, config *config.Config) (coordinators, nodes cmdc.ScalingGroup, err error) {
|
||||
func GetScalingGroupsFromConfig(stat state.ConstellationState, config *config.Config) (coordinators, nodes cloudtypes.ScalingGroup, err error) {
|
||||
switch {
|
||||
case len(stat.GCPCoordinators) != 0:
|
||||
return getGCPInstances(stat, config)
|
||||
|
@ -20,92 +20,59 @@ func GetScalingGroupsFromConfig(stat state.ConstellationState, config *config.Co
|
|||
case len(stat.QEMUCoordinators) != 0:
|
||||
return getQEMUInstances(stat, config)
|
||||
default:
|
||||
return cmdc.ScalingGroup{}, cmdc.ScalingGroup{}, errors.New("no instances to init")
|
||||
return cloudtypes.ScalingGroup{}, cloudtypes.ScalingGroup{}, errors.New("no instances to init")
|
||||
}
|
||||
}
|
||||
|
||||
func getGCPInstances(stat state.ConstellationState, config *config.Config) (coordinators, nodes cmdc.ScalingGroup, err error) {
|
||||
coordinatorMap := stat.GCPCoordinators
|
||||
if len(coordinatorMap) == 0 {
|
||||
return cmdc.ScalingGroup{}, cmdc.ScalingGroup{}, errors.New("no coordinators available, can't create Constellation without any instance")
|
||||
}
|
||||
var coordinatorInstances cmdc.Instances
|
||||
for _, node := range coordinatorMap {
|
||||
coordinatorInstances = append(coordinatorInstances, cmdc.Instance(node))
|
||||
func getGCPInstances(stat state.ConstellationState, config *config.Config) (coordinators, nodes cloudtypes.ScalingGroup, err error) {
|
||||
if len(stat.GCPCoordinators) == 0 {
|
||||
return cloudtypes.ScalingGroup{}, cloudtypes.ScalingGroup{}, errors.New("no control-plane nodes available, can't create Constellation without any instance")
|
||||
}
|
||||
|
||||
// GroupID of coordinators is empty, since they currently do not scale.
|
||||
coordinators = cmdc.ScalingGroup{
|
||||
Instances: coordinatorInstances,
|
||||
GroupID: "",
|
||||
}
|
||||
coordinators = cloudtypes.ScalingGroup{Instances: stat.GCPCoordinators}
|
||||
|
||||
nodeMap := stat.GCPNodes
|
||||
if len(nodeMap) == 0 {
|
||||
return cmdc.ScalingGroup{}, cmdc.ScalingGroup{}, errors.New("no nodes available, can't create Constellation with one instance")
|
||||
}
|
||||
|
||||
var nodeInstances cmdc.Instances
|
||||
for _, node := range nodeMap {
|
||||
nodeInstances = append(nodeInstances, cmdc.Instance(node))
|
||||
if len(stat.GCPNodes) == 0 {
|
||||
return cloudtypes.ScalingGroup{}, cloudtypes.ScalingGroup{}, errors.New("no worker nodes available, can't create Constellation with one instance")
|
||||
}
|
||||
|
||||
// TODO: make min / max configurable and abstract autoscaling for different cloud providers
|
||||
nodes = cmdc.ScalingGroup{Instances: nodeInstances}
|
||||
nodes = cloudtypes.ScalingGroup{Instances: stat.GCPNodes}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
func getAzureInstances(stat state.ConstellationState, _ *config.Config) (coordinators, nodes cmdc.ScalingGroup, err error) {
|
||||
coordinatorMap := stat.AzureCoordinators
|
||||
if len(coordinatorMap) == 0 {
|
||||
return cmdc.ScalingGroup{}, cmdc.ScalingGroup{}, errors.New("no coordinators available, can't create Constellation without any instance")
|
||||
}
|
||||
var coordinatorInstances cmdc.Instances
|
||||
for _, node := range coordinatorMap {
|
||||
coordinatorInstances = append(coordinatorInstances, cmdc.Instance(node))
|
||||
}
|
||||
// GroupID of coordinators is empty, since they currently do not scale.
|
||||
coordinators = cmdc.ScalingGroup{
|
||||
Instances: coordinatorInstances,
|
||||
GroupID: "",
|
||||
}
|
||||
nodeMap := stat.AzureNodes
|
||||
if len(nodeMap) == 0 {
|
||||
return cmdc.ScalingGroup{}, cmdc.ScalingGroup{}, errors.New("no nodes available, can't create Constellation with one instance")
|
||||
func getAzureInstances(stat state.ConstellationState, _ *config.Config) (coordinators, nodes cloudtypes.ScalingGroup, err error) {
|
||||
if len(stat.AzureCoordinators) == 0 {
|
||||
return cloudtypes.ScalingGroup{}, cloudtypes.ScalingGroup{}, errors.New("no control-plane nodes available, can't create Constellation cluster without any instance")
|
||||
}
|
||||
|
||||
var nodeInstances cmdc.Instances
|
||||
for _, node := range nodeMap {
|
||||
nodeInstances = append(nodeInstances, cmdc.Instance(node))
|
||||
// GroupID of coordinators is empty, since they currently do not scale.
|
||||
coordinators = cloudtypes.ScalingGroup{Instances: stat.AzureCoordinators}
|
||||
|
||||
if len(stat.AzureNodes) == 0 {
|
||||
return cloudtypes.ScalingGroup{}, cloudtypes.ScalingGroup{}, errors.New("no worker nodes available, can't create Constellation cluster with one instance")
|
||||
}
|
||||
|
||||
// TODO: make min / max configurable and abstract autoscaling for different cloud providers
|
||||
nodes = cmdc.ScalingGroup{Instances: nodeInstances}
|
||||
nodes = cloudtypes.ScalingGroup{Instances: stat.AzureNodes}
|
||||
return
|
||||
}
|
||||
|
||||
func getQEMUInstances(stat state.ConstellationState, _ *config.Config) (coordinators, nodes cmdc.ScalingGroup, err error) {
|
||||
func getQEMUInstances(stat state.ConstellationState, config *config.Config) (coordinators, nodes cloudtypes.ScalingGroup, err error) {
|
||||
coordinatorMap := stat.QEMUCoordinators
|
||||
if len(coordinatorMap) == 0 {
|
||||
return cmdc.ScalingGroup{}, cmdc.ScalingGroup{}, errors.New("no coordinators available, can't create Constellation without any instance")
|
||||
return cloudtypes.ScalingGroup{}, cloudtypes.ScalingGroup{}, errors.New("no coordinators available, can't create Constellation without any instance")
|
||||
}
|
||||
var coordinatorInstances cmdc.Instances
|
||||
for _, node := range coordinatorMap {
|
||||
coordinatorInstances = append(coordinatorInstances, cmdc.Instance(node))
|
||||
|
||||
// QEMU does not support autoscaling
|
||||
coordinators = cloudtypes.ScalingGroup{Instances: stat.QEMUCoordinators}
|
||||
|
||||
if len(stat.QEMUNodes) == 0 {
|
||||
return cloudtypes.ScalingGroup{}, cloudtypes.ScalingGroup{}, errors.New("no nodes available, can't create Constellation with one instance")
|
||||
}
|
||||
// GroupID of coordinators is empty, since they currently do not scale.
|
||||
coordinators = cmdc.ScalingGroup{
|
||||
Instances: coordinatorInstances,
|
||||
GroupID: "",
|
||||
}
|
||||
nodeMap := stat.QEMUNodes
|
||||
if len(nodeMap) == 0 {
|
||||
return cmdc.ScalingGroup{}, cmdc.ScalingGroup{}, errors.New("no nodes available, can't create Constellation with one instance")
|
||||
}
|
||||
var nodeInstances cmdc.Instances
|
||||
for _, node := range nodeMap {
|
||||
nodeInstances = append(nodeInstances, cmdc.Instance(node))
|
||||
}
|
||||
nodes = cmdc.ScalingGroup{Instances: nodeInstances}
|
||||
|
||||
// QEMU does not support autoscaling
|
||||
nodes = cloudtypes.ScalingGroup{Instances: stat.QEMUNodes}
|
||||
return
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue