diff --git a/controllers/providers/aws/autoscaling.go b/controllers/providers/aws/autoscaling.go index 6d2e4e15..2a49c6bc 100644 --- a/controllers/providers/aws/autoscaling.go +++ b/controllers/providers/aws/autoscaling.go @@ -16,4 +16,18 @@ limitations under the License. package aws -// TODO: Autoscaling API Calls +import ( + "github.com/aws/aws-sdk-go/service/autoscaling" +) + +func (a *AmazonClientSet) DescribeScalingGroups() ([]*autoscaling.Group, error) { + scalingGroups := []*autoscaling.Group{} + err := a.AsgClient.DescribeAutoScalingGroupsPages(&autoscaling.DescribeAutoScalingGroupsInput{}, func(page *autoscaling.DescribeAutoScalingGroupsOutput, lastPage bool) bool { + scalingGroups = append(scalingGroups, page.AutoScalingGroups...) + return page.NextToken != nil + }) + if err != nil { + return scalingGroups, err + } + return scalingGroups, nil +} diff --git a/controllers/providers/aws/ec2.go b/controllers/providers/aws/ec2.go index d8cdd1c6..f3f7258e 100644 --- a/controllers/providers/aws/ec2.go +++ b/controllers/providers/aws/ec2.go @@ -16,4 +16,18 @@ limitations under the License. package aws -// TODO: EC2 API Calls +import ( + "github.com/aws/aws-sdk-go/service/ec2" +) + +func (a *AmazonClientSet) DescribeLaunchTemplates() ([]*ec2.LaunchTemplate, error) { + launchTemplates := []*ec2.LaunchTemplate{} + err := a.Ec2Client.DescribeLaunchTemplatesPages(&ec2.DescribeLaunchTemplatesInput{}, func(page *ec2.DescribeLaunchTemplatesOutput, lastPage bool) bool { + launchTemplates = append(launchTemplates, page.LaunchTemplates...) + return page.NextToken != nil + }) + if err != nil { + return launchTemplates, err + } + return launchTemplates, nil +} diff --git a/controllers/providers/kubernetes/events.go b/controllers/providers/kubernetes/events.go index 2de0f95d..6c9ac2bd 100644 --- a/controllers/providers/kubernetes/events.go +++ b/controllers/providers/kubernetes/events.go @@ -27,18 +27,17 @@ import ( "github.com/keikoproj/upgrade-manager/api/v1alpha1" corev1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/client-go/kubernetes" ) type EventWriter struct { - kubernetes.Interface + *KubernetesClientSet logr.Logger } -func NewEventWriter(k kubernetes.Interface, logger logr.Logger) *EventWriter { +func NewEventWriter(k *KubernetesClientSet, logger logr.Logger) *EventWriter { return &EventWriter{ - Interface: k, - Logger: logger, + KubernetesClientSet: k, + Logger: logger, } } @@ -91,7 +90,7 @@ func (w *EventWriter) CreateEvent(rollingUpgrade *v1alpha1.RollingUpgrade, reaso } w.V(1).Info("publishing event", "event", event) - _, err := w.CoreV1().Events(rollingUpgrade.GetNamespace()).Create(context.Background(), event, metav1.CreateOptions{}) + _, err := w.Kubernetes.CoreV1().Events(rollingUpgrade.GetNamespace()).Create(context.Background(), event, metav1.CreateOptions{}) if err != nil { w.Error(err, "failed to publish event") } diff --git a/controllers/providers/kubernetes/nodes.go b/controllers/providers/kubernetes/nodes.go index 3e75b922..02501dde 100644 --- a/controllers/providers/kubernetes/nodes.go +++ b/controllers/providers/kubernetes/nodes.go @@ -21,13 +21,12 @@ import ( corev1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/client-go/kubernetes" ) // ListClusterNodes gets a list of all nodes in the cluster -func ListClusterNodes(k kubernetes.Interface) (*corev1.NodeList, error) { +func (k *KubernetesClientSet) ListClusterNodes() (*corev1.NodeList, error) { var nodes *corev1.NodeList - nodes, err := k.CoreV1().Nodes().List(context.Background(), metav1.ListOptions{}) + nodes, err := k.Kubernetes.CoreV1().Nodes().List(context.Background(), metav1.ListOptions{}) if err != nil { return nodes, err } diff --git a/controllers/rollingupgrade_controller.go b/controllers/rollingupgrade_controller.go index d05b1696..917a249d 100644 --- a/controllers/rollingupgrade_controller.go +++ b/controllers/rollingupgrade_controller.go @@ -51,8 +51,8 @@ type RollingUpgradeReconciler struct { } type RollingUpgradeAuthenticator struct { - awsprovider.AmazonClientSet - kubeprovider.KubernetesClientSet + *awsprovider.AmazonClientSet + *kubeprovider.KubernetesClientSet } // +kubebuilder:rbac:groups=upgrademgr.keikoproj.io,resources=rollingupgrades,verbs=get;list;watch;create;update;patch;delete diff --git a/main.go b/main.go index f33ba854..3ed1fea3 100644 --- a/main.go +++ b/main.go @@ -168,12 +168,12 @@ func main() { os.Exit(1) } - awsClient := awsprovider.AmazonClientSet{ + awsClient := &awsprovider.AmazonClientSet{ Ec2Client: ec2.New(sess), AsgClient: autoscaling.New(sess), } - kubeClient := kubeprovider.KubernetesClientSet{ + kubeClient := &kubeprovider.KubernetesClientSet{ Kubernetes: kube, } @@ -188,7 +188,7 @@ func main() { AmazonClientSet: awsClient, KubernetesClientSet: kubeClient, }, - EventWriter: kubeprovider.NewEventWriter(kubeClient.Kubernetes, logger), + EventWriter: kubeprovider.NewEventWriter(kubeClient, logger), } reconciler.SetMaxParallel(maxParallel)