Skip to content

Commit 17e0316

Browse files
committed
TODO REVIEW DO NOT COMPILE
Signed-off-by: Adrian Riobo <[email protected]>
1 parent 433f7f1 commit 17e0316

File tree

18 files changed

+432
-177
lines changed

18 files changed

+432
-177
lines changed

cmd/mapt/cmd/aws/services/kind.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ import (
55

66
"github.com/redhat-developer/mapt/cmd/mapt/cmd/params"
77
maptContext "github.com/redhat-developer/mapt/pkg/manager/context"
8-
kindApi "github.com/redhat-developer/mapt/pkg/provider/api/k8s/kind"
98
"github.com/redhat-developer/mapt/pkg/provider/aws/action/kind"
9+
kindApi "github.com/redhat-developer/mapt/pkg/targets/service/kind"
1010
"github.com/spf13/cobra"
1111
"github.com/spf13/pflag"
1212
"github.com/spf13/viper"

cmd/mapt/cmd/azure/services/kind.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ import (
55

66
"github.com/redhat-developer/mapt/cmd/mapt/cmd/params"
77
maptContext "github.com/redhat-developer/mapt/pkg/manager/context"
8-
kindApi "github.com/redhat-developer/mapt/pkg/provider/api/k8s/kind"
98
"github.com/redhat-developer/mapt/pkg/provider/azure/action/kind"
9+
kindApi "github.com/redhat-developer/mapt/pkg/targets/service/kind"
1010
"github.com/spf13/cobra"
1111
"github.com/spf13/pflag"
1212
"github.com/spf13/viper"
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package userdata
2+
3+
type CloudConfig interface {
4+
CloudConfig() (*string, error)
5+
}

pkg/provider/aws/action/kind/constants.go

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,6 @@ package kind
33
import "fmt"
44

55
var (
6-
stackName = "stackKind"
7-
awsKindID = "akd"
8-
96
diskSize int = 200
107

118
// Official AMIs from Fedora use aarch64 format for arm64
@@ -17,11 +14,6 @@ var (
1714
amiOwner = "125523088429"
1815
amiUserDefault = "fedora"
1916
amiProduct = "Linux/UNIX"
20-
21-
outputHost = "akdHost"
22-
outputUsername = "akdUsername"
23-
outputUserPrivateKey = "akdPrivatekey"
24-
outputKubeconfig = "akdKubeconfig"
2517
)
2618

2719
// TODO check latest stable Fedora version

pkg/provider/aws/action/kind/kind.go

Lines changed: 36 additions & 94 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,9 @@ import (
77
"github.com/go-playground/validator/v10"
88
"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/ec2"
99
"github.com/pulumi/pulumi-tls/sdk/v5/go/tls"
10-
"github.com/pulumi/pulumi/sdk/v3/go/auto"
1110
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
1211
"github.com/redhat-developer/mapt/pkg/manager"
1312
mc "github.com/redhat-developer/mapt/pkg/manager/context"
14-
kindApi "github.com/redhat-developer/mapt/pkg/provider/api/k8s/kind"
1513
"github.com/redhat-developer/mapt/pkg/provider/aws"
1614
awsConstants "github.com/redhat-developer/mapt/pkg/provider/aws/constants"
1715
"github.com/redhat-developer/mapt/pkg/provider/aws/modules/allocation"
@@ -23,7 +21,7 @@ import (
2321
"github.com/redhat-developer/mapt/pkg/provider/aws/services/ec2/keypair"
2422
securityGroup "github.com/redhat-developer/mapt/pkg/provider/aws/services/ec2/security-group"
2523
"github.com/redhat-developer/mapt/pkg/provider/util/command"
26-
"github.com/redhat-developer/mapt/pkg/provider/util/output"
24+
utilKind "github.com/redhat-developer/mapt/pkg/targets/service/kind"
2725
"github.com/redhat-developer/mapt/pkg/util"
2826
"github.com/redhat-developer/mapt/pkg/util/logging"
2927
resourcesUtil "github.com/redhat-developer/mapt/pkg/util/resources"
@@ -37,7 +35,7 @@ type kindRequest struct {
3735
spot bool
3836
timeout *string
3937
allocationData *allocation.AllocationResult
40-
extraPortMappings []kindApi.PortMapping
38+
extraPortMappings []utilKind.PortMapping
4139
}
4240

4341
func (r *kindRequest) validate() error {
@@ -52,7 +50,7 @@ func (r *kindRequest) validate() error {
5250
// Create orchestrate 3 stacks:
5351
// If spot is enable it will run best spot option to get the best option to spin the machine
5452
// Then it will run the stack for windows dedicated host
55-
func Create(mCtxArgs *mc.ContextArgs, args *kindApi.KindArgs) (kr *kindApi.KindResults, err error) {
53+
func Create(mCtxArgs *mc.ContextArgs, args *utilKind.KindArgs) (kr *utilKind.KindResults, err error) {
5654
mCtx, err := mc.Init(mCtxArgs, aws.Provider())
5755
if err != nil {
5856
return nil, err
@@ -87,7 +85,7 @@ func Destroy(mCtxArgs *mc.ContextArgs) (err error) {
8785
if err != nil {
8886
return err
8987
}
90-
if err := aws.DestroyStack(mCtx, aws.DestroyStackRequest{Stackname: stackName}); err != nil {
88+
if err := aws.DestroyStack(mCtx, aws.DestroyStackRequest{Stackname: utilKind.StackName}); err != nil {
9189
return err
9290
}
9391
if spot.Exist(mCtx) {
@@ -96,9 +94,9 @@ func Destroy(mCtxArgs *mc.ContextArgs) (err error) {
9694
return nil
9795
}
9896

99-
func (r *kindRequest) createHost() (*kindApi.KindResults, error) {
97+
func (r *kindRequest) createHost() (*utilKind.KindResults, error) {
10098
cs := manager.Stack{
101-
StackName: r.mCtx.StackNameByProject(stackName),
99+
StackName: r.mCtx.StackNameByProject(utilKind.StackName),
102100
ProjectName: r.mCtx.ProjectName(),
103101
BackedURL: r.mCtx.BackedURL(),
104102
ProviderCredentials: aws.GetClouProviderCredentials(
@@ -113,7 +111,7 @@ func (r *kindRequest) createHost() (*kindApi.KindResults, error) {
113111
return nil, fmt.Errorf("stack creation failed: %w", err)
114112
}
115113

116-
metadataResults, err := r.manageResults(sr, r.prefix)
114+
metadataResults, err := utilKind.Results(r.mCtx, sr, r.prefix)
117115
if err != nil {
118116
return nil, fmt.Errorf("failed to manage results: %w", err)
119117
}
@@ -125,6 +123,8 @@ func (r *kindRequest) deploy(ctx *pulumi.Context) error {
125123
if err := r.validate(); err != nil {
126124
return err
127125
}
126+
ctx.Export(fmt.Sprintf("%s-%s", *r.prefix, utilKind.OKSpotPrice),
127+
pulumi.Float64(*r.allocationData.SpotPrice))
128128
// Get AMI
129129
ami, err := amiSVC.GetAMIByName(ctx,
130130
amiName(r.arch),
@@ -145,7 +145,7 @@ func (r *kindRequest) deploy(ctx *pulumi.Context) error {
145145
nw, err := network.Create(ctx, r.mCtx,
146146
&network.NetworkArgs{
147147
Prefix: *r.prefix,
148-
ID: awsKindID,
148+
ID: utilKind.KindID,
149149
Region: *r.allocationData.Region,
150150
AZ: *r.allocationData.AZ,
151151
CreateLoadBalancer: r.allocationData.SpotPrice != nil,
@@ -156,12 +156,12 @@ func (r *kindRequest) deploy(ctx *pulumi.Context) error {
156156

157157
// Create Keypair
158158
kpr := keypair.KeyPairRequest{
159-
Name: resourcesUtil.GetResourceName(*r.prefix, awsKindID, "pk")}
159+
Name: resourcesUtil.GetResourceName(*r.prefix, utilKind.KindID, "pk")}
160160
keyResources, err := kpr.Create(ctx, r.mCtx)
161161
if err != nil {
162162
return err
163163
}
164-
ctx.Export(fmt.Sprintf("%s-%s", *r.prefix, outputUserPrivateKey),
164+
ctx.Export(fmt.Sprintf("%s-%s", *r.prefix, utilKind.OKPrivateKey),
165165
keyResources.PrivateKey.PrivateKeyPem)
166166

167167
// Security groups
@@ -176,13 +176,13 @@ func (r *kindRequest) deploy(ctx *pulumi.Context) error {
176176
return err
177177
}
178178
// Build LB target groups including both default and extra ports
179-
lbTargetGroups := []int{22, kindApi.PortAPI, kindApi.PortHTTP, kindApi.PortHTTPS}
179+
lbTargetGroups := []int{22, utilKind.PortAPI, utilKind.PortHTTP, utilKind.PortHTTPS}
180180
lbTargetGroups = append(lbTargetGroups, extraHostPorts...)
181181

182182
cr := compute.ComputeRequest{
183183
MCtx: r.mCtx,
184184
Prefix: *r.prefix,
185-
ID: awsKindID,
185+
ID: utilKind.KindID,
186186
VPC: nw.Vpc,
187187
Subnet: nw.Subnet,
188188
AMI: ami,
@@ -204,16 +204,16 @@ func (r *kindRequest) deploy(ctx *pulumi.Context) error {
204204
return err
205205
}
206206

207-
ctx.Export(fmt.Sprintf("%s-%s", *r.prefix, outputUsername),
207+
ctx.Export(fmt.Sprintf("%s-%s", *r.prefix, utilKind.OKUsername),
208208
pulumi.String(amiUserDefault))
209209

210-
ctx.Export(fmt.Sprintf("%s-%s", *r.prefix, outputHost),
210+
ctx.Export(fmt.Sprintf("%s-%s", *r.prefix, utilKind.OKHost),
211211
c.GetHostIP(true))
212212

213213
if len(*r.timeout) > 0 {
214214
err := serverless.OneTimeDelayedTask(ctx, r.mCtx,
215215
*r.allocationData.Region, *r.prefix,
216-
awsKindID,
216+
utilKind.KindID,
217217
fmt.Sprintf("aws %s destroy --project-name %s --backed-url %s --serverless --force-destroy",
218218
"kind", r.mCtx.ProjectName(), r.mCtx.BackedURL()),
219219
*r.timeout)
@@ -226,78 +226,21 @@ func (r *kindRequest) deploy(ctx *pulumi.Context) error {
226226
if err != nil {
227227
return err
228228
}
229-
ctx.Export(fmt.Sprintf("%s-%s", *r.prefix, outputKubeconfig),
229+
ctx.Export(fmt.Sprintf("%s-%s", *r.prefix, utilKind.OKKubeconfig),
230230
pulumi.ToSecret(kubeconfig))
231231

232232
return nil
233233
}
234234

235-
// Write exported values in context to files o a selected target folder
236-
func (r *kindRequest) manageResults(stackResult auto.UpResult, prefix *string) (*kindApi.KindResults, error) {
237-
username, err := getResultOutput(outputUsername, stackResult, prefix)
238-
if err != nil {
239-
return nil, err
240-
}
241-
privateKey, err := getResultOutput(outputUserPrivateKey, stackResult, prefix)
242-
if err != nil {
243-
return nil, err
244-
}
245-
host, err := getResultOutput(outputHost, stackResult, prefix)
246-
if err != nil {
247-
return nil, err
248-
}
249-
kubeconfig, err := getResultOutput(outputKubeconfig, stackResult, prefix)
250-
if err != nil {
251-
return nil, err
252-
}
253-
254-
metadataResults := &kindApi.KindResults{
255-
Username: username,
256-
PrivateKey: privateKey,
257-
Host: host,
258-
Kubeconfig: kubeconfig,
259-
SpotPrice: r.allocationData.SpotPrice,
260-
}
261-
262-
hostIPKey := fmt.Sprintf("%s-%s", *prefix, outputHost)
263-
results := map[string]string{
264-
fmt.Sprintf("%s-%s", *prefix, outputUsername): "username",
265-
fmt.Sprintf("%s-%s", *prefix, outputUserPrivateKey): "id_rsa",
266-
hostIPKey: "host",
267-
fmt.Sprintf("%s-%s", *prefix, outputKubeconfig): "kubeconfig",
268-
}
269-
270-
if r.mCtx.GetResultsOutputPath() != "" {
271-
if err := output.Write(stackResult, r.mCtx.GetResultsOutputPath(), results); err != nil {
272-
return nil, fmt.Errorf("failed to write results: %w", err)
273-
}
274-
}
275-
276-
return metadataResults, nil
277-
}
278-
279-
func getResultOutput(name string, sr auto.UpResult, prefix *string) (string, error) {
280-
key := fmt.Sprintf("%s-%s", *prefix, name)
281-
output, ok := sr.Outputs[key]
282-
if !ok {
283-
return "", fmt.Errorf("output not found: %s", key)
284-
}
285-
value, ok := output.Value.(string)
286-
if !ok {
287-
return "", fmt.Errorf("output for %s is not a string", key)
288-
}
289-
return value, nil
290-
}
291-
292235
// security group for Openshift
293236
func securityGroups(ctx *pulumi.Context, mCtx *mc.Context, prefix *string,
294237
vpc *ec2.Vpc, extraHostPorts []int) (pulumi.StringArray, error) {
295238
// Build ingress rules including both default and extra ports
296239
ingressRules := []securityGroup.IngressRules{
297240
securityGroup.SSH_TCP,
298-
{Description: "HTTPS", FromPort: kindApi.PortHTTPS, ToPort: kindApi.PortHTTPS, Protocol: "tcp"},
299-
{Description: "HTTP", FromPort: kindApi.PortHTTP, ToPort: kindApi.PortHTTP, Protocol: "tcp"},
300-
{Description: "API", FromPort: kindApi.PortAPI, ToPort: kindApi.PortAPI, Protocol: "tcp"},
241+
{Description: "HTTPS", FromPort: utilKind.PortHTTPS, ToPort: utilKind.PortHTTPS, Protocol: "tcp"},
242+
{Description: "HTTP", FromPort: utilKind.PortHTTP, ToPort: utilKind.PortHTTP, Protocol: "tcp"},
243+
{Description: "API", FromPort: utilKind.PortAPI, ToPort: utilKind.PortAPI, Protocol: "tcp"},
301244
}
302245

303246
// Add extra ports to ingress rules
@@ -312,9 +255,9 @@ func securityGroups(ctx *pulumi.Context, mCtx *mc.Context, prefix *string,
312255

313256
// Create SG with ingress rules
314257
sg, err := securityGroup.SGRequest{
315-
Name: resourcesUtil.GetResourceName(*prefix, awsKindID, "sg"),
258+
Name: resourcesUtil.GetResourceName(*prefix, utilKind.KindID, "sg"),
316259
VPC: vpc,
317-
Description: fmt.Sprintf("sg for %s", awsKindID),
260+
Description: fmt.Sprintf("sg for %s", utilKind.KindID),
318261
IngressRules: ingressRules,
319262
}.Create(ctx, mCtx)
320263
if err != nil {
@@ -328,22 +271,21 @@ func securityGroups(ctx *pulumi.Context, mCtx *mc.Context, prefix *string,
328271
return pulumi.StringArray(sgs[:]), nil
329272
}
330273

331-
func userData(arch, k8sVersion *string, parsedPortMappings []kindApi.PortMapping, lbEIP *pulumi.StringOutput) (pulumi.StringPtrInput, error) {
274+
func userData(arch, k8sVersion *string, parsedPortMappings []utilKind.PortMapping, lbEIP *pulumi.StringOutput) (pulumi.StringPtrInput, error) {
332275
ccB64 := lbEIP.ApplyT(
333276
func(publicIP string) (string, error) {
334-
ccB64, err := kindApi.CloudConfig(
335-
&kindApi.DataValues{
336-
Arch: util.If(*arch == "x86_64",
337-
kindApi.X86_64,
338-
kindApi.Arm64),
339-
KindVersion: kindApi.KindK8sVersions[*k8sVersion].KindVersion,
340-
KindImage: kindApi.KindK8sVersions[*k8sVersion].KindImage,
341-
Username: amiUserDefault,
342-
PublicIP: publicIP,
343-
ExtraPortMappings: parsedPortMappings})
277+
cc := &utilKind.CloudConfigArgs{
278+
Arch: util.If(*arch == "x86_64",
279+
utilKind.X86_64,
280+
utilKind.Arm64),
281+
KindVersion: utilKind.KindK8sVersions[*k8sVersion].KindVersion,
282+
KindImage: utilKind.KindK8sVersions[*k8sVersion].KindImage,
283+
Username: amiUserDefault,
284+
PublicIP: publicIP,
285+
ExtraPortMappings: parsedPortMappings}
286+
ccB64, err := cc.CloudConfig()
344287
return *ccB64, err
345288
}).(pulumi.StringOutput)
346-
347289
return ccB64, nil
348290
}
349291

@@ -360,7 +302,7 @@ func kubeconfig(ctx *pulumi.Context,
360302
kindReadyCmd, err := c.RunCommand(ctx,
361303
command.CommandCloudInitWait,
362304
compute.LoggingCmdStd,
363-
fmt.Sprintf("%s-kind-readiness", *prefix), awsKindID,
305+
fmt.Sprintf("%s-kind-readiness", *prefix), utilKind.KindID,
364306
mk, amiUserDefault, nil, c.Dependencies)
365307
if err != nil {
366308
return pulumi.StringOutput{}, err
@@ -370,7 +312,7 @@ func kubeconfig(ctx *pulumi.Context,
370312
getKC, err := c.RunCommand(ctx,
371313
getKCCmd,
372314
compute.NoLoggingCmdStd,
373-
fmt.Sprintf("%s-kubeconfig", *prefix), awsKindID, mk, amiUserDefault,
315+
fmt.Sprintf("%s-kubeconfig", *prefix), utilKind.KindID, mk, amiUserDefault,
374316
nil, []pulumi.Resource{kindReadyCmd})
375317
if err != nil {
376318
return pulumi.StringOutput{}, err

pkg/provider/aws/action/rhel/rhel.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,9 @@ import (
2323
amiSVC "github.com/redhat-developer/mapt/pkg/provider/aws/services/ec2/ami"
2424
"github.com/redhat-developer/mapt/pkg/provider/aws/services/ec2/keypair"
2525
securityGroup "github.com/redhat-developer/mapt/pkg/provider/aws/services/ec2/security-group"
26-
cloudConfigRHEL "github.com/redhat-developer/mapt/pkg/provider/util/cloud-config/rhel"
2726
"github.com/redhat-developer/mapt/pkg/provider/util/command"
2827
"github.com/redhat-developer/mapt/pkg/provider/util/output"
28+
rhelApi "github.com/redhat-developer/mapt/pkg/targets/host/rhel"
2929
"github.com/redhat-developer/mapt/pkg/util"
3030
"github.com/redhat-developer/mapt/pkg/util/logging"
3131
resourcesUtil "github.com/redhat-developer/mapt/pkg/util/resources"
@@ -217,12 +217,12 @@ func (r *rhelRequest) deploy(ctx *pulumi.Context) error {
217217
return err
218218
}
219219
// Compute
220-
rhelCloudConfig := &cloudConfigRHEL.RequestArgs{
220+
rhelCloudConfig := &rhelApi.CloudConfigArgs{
221221
SNCProfile: *r.profileSNC,
222222
SubsUsername: *r.subsUsername,
223223
SubsPassword: *r.subsUserpass,
224224
Username: amiUserDefault}
225-
userDataB64, err := rhelCloudConfig.GetAsUserdata()
225+
userDataB64, err := rhelCloudConfig.CloudConfig()
226226
if err != nil {
227227
return err
228228
}
@@ -233,7 +233,7 @@ func (r *rhelRequest) deploy(ctx *pulumi.Context) error {
233233
VPC: nw.Vpc,
234234
Subnet: nw.Subnet,
235235
AMI: ami,
236-
UserDataAsBase64: pulumi.String(userDataB64),
236+
UserDataAsBase64: pulumi.String(*userDataB64),
237237
KeyResources: keyResources,
238238
SecurityGroups: securityGroups,
239239
InstaceTypes: r.allocationData.InstanceTypes,

0 commit comments

Comments
 (0)