Skip to content

Commit 3c9333a

Browse files
committed
snc: implement openshift-snc for azure
1 parent 6085c9b commit 3c9333a

File tree

11 files changed

+521
-20
lines changed

11 files changed

+521
-20
lines changed

cmd/mapt/cmd/azure/azure.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ func GetCmd() *cobra.Command {
3535
hosts.GetUbuntuCmd(),
3636
hosts.GetRHELCmd(),
3737
hosts.GetFedoraCmd(),
38-
services.GetAKSCmd())
38+
services.GetAKSCmd(),
39+
services.GetOpenshiftSNCCmd())
3940
return c
4041
}
Lines changed: 111 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,111 @@
1+
package services
2+
3+
import (
4+
"github.com/redhat-developer/mapt/cmd/mapt/cmd/params"
5+
maptContext "github.com/redhat-developer/mapt/pkg/manager/context"
6+
sncAPI "github.com/redhat-developer/mapt/pkg/provider/api/openshift-snc"
7+
openshiftsnc "github.com/redhat-developer/mapt/pkg/provider/azure/action/openshift-snc"
8+
"github.com/redhat-developer/mapt/pkg/util/logging"
9+
"github.com/spf13/cobra"
10+
"github.com/spf13/pflag"
11+
"github.com/spf13/viper"
12+
)
13+
14+
const (
15+
cmdOpenshiftSNC = "openshift-snc"
16+
cmdOpenshiftSNCDesc = "Manage an OpenShift Single Node Cluster based on OpenShift Local. This is not intended for production use"
17+
18+
ocpVersion = "version"
19+
ocpVersionDesc = "version for Openshift. If not set it will pick latest available version"
20+
pullSecretFile = "pull-secret-file"
21+
pullSecretFileDesc = "file path of image pull secret (download from https://console.redhat.com/openshift/create/local)"
22+
)
23+
24+
func GetOpenshiftSNCCmd() *cobra.Command {
25+
c := &cobra.Command{
26+
Use: cmdOpenshiftSNC,
27+
Short: cmdOpenshiftSNCDesc,
28+
RunE: func(cmd *cobra.Command, args []string) error {
29+
if err := viper.BindPFlags(cmd.Flags()); err != nil {
30+
return err
31+
}
32+
return nil
33+
},
34+
}
35+
flagSet := pflag.NewFlagSet(cmdOpenshiftSNC, pflag.ExitOnError)
36+
params.AddCommonFlags(flagSet)
37+
c.PersistentFlags().AddFlagSet(flagSet)
38+
c.AddCommand(createSNC(), destroySNC())
39+
return c
40+
41+
}
42+
43+
func createSNC() *cobra.Command {
44+
c := &cobra.Command{
45+
Use: params.CreateCmdName,
46+
Short: params.CreateCmdName,
47+
RunE: func(cmd *cobra.Command, args []string) error {
48+
if err := viper.BindPFlags(cmd.Flags()); err != nil {
49+
return err
50+
}
51+
52+
if err := openshiftsnc.Create(
53+
&maptContext.ContextArgs{
54+
ProjectName: viper.GetString(params.ProjectName),
55+
BackedURL: viper.GetString(params.BackedURL),
56+
ResultsOutput: viper.GetString(params.ConnectionDetailsOutput),
57+
Debug: viper.IsSet(params.Debug),
58+
DebugLevel: viper.GetUint(params.DebugLevel),
59+
Tags: viper.GetStringMapString(params.Tags),
60+
},
61+
&sncAPI.OpenshiftSNCArgs{
62+
ComputeRequest: params.ComputeRequestArgs(),
63+
Version: viper.GetString(ocpVersion),
64+
Arch: viper.GetString(params.LinuxArch),
65+
PullSecretFile: viper.GetString(pullSecretFile),
66+
Spot: params.SpotArgs(),
67+
Timeout: viper.GetString(params.Timeout)}); err != nil {
68+
logging.Error(err)
69+
}
70+
return nil
71+
},
72+
}
73+
flagSet := pflag.NewFlagSet(params.CreateCmdName, pflag.ExitOnError)
74+
flagSet.StringP(params.ConnectionDetailsOutput, "", "", params.ConnectionDetailsOutputDesc)
75+
flagSet.StringP(ocpVersion, "", "", ocpVersionDesc)
76+
flagSet.StringP(params.LinuxArch, "", params.LinuxArchDefault, params.LinuxArchDesc)
77+
flagSet.StringP(pullSecretFile, "", "", pullSecretFileDesc)
78+
flagSet.StringP(params.Timeout, "", "", params.TimeoutDesc)
79+
flagSet.StringToStringP(params.Tags, "", nil, params.TagsDesc)
80+
params.AddComputeRequestFlags(flagSet)
81+
params.AddSpotFlags(flagSet)
82+
c.PersistentFlags().AddFlagSet(flagSet)
83+
return c
84+
}
85+
86+
func destroySNC() *cobra.Command {
87+
c := &cobra.Command{
88+
Use: params.DestroyCmdName,
89+
Short: params.DestroyCmdName,
90+
RunE: func(cmd *cobra.Command, args []string) error {
91+
if err := viper.BindPFlags(cmd.Flags()); err != nil {
92+
return err
93+
}
94+
95+
if err := openshiftsnc.Destroy(&maptContext.ContextArgs{
96+
ProjectName: viper.GetString(params.ProjectName),
97+
BackedURL: viper.GetString(params.BackedURL),
98+
Debug: viper.IsSet(params.Debug),
99+
DebugLevel: viper.GetUint(params.DebugLevel),
100+
Serverless: viper.IsSet(params.Serverless),
101+
}); err != nil {
102+
logging.Error(err)
103+
}
104+
return nil
105+
},
106+
}
107+
flagSet := pflag.NewFlagSet(params.DestroyCmdName, pflag.ExitOnError)
108+
flagSet.Bool(params.Serverless, false, params.ServerlessDesc)
109+
c.PersistentFlags().AddFlagSet(flagSet)
110+
return c
111+
}

pkg/provider/api/openshift-snc/snc.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ var (
2424
)
2525

2626
type OpenshiftSNCArgs struct {
27+
Location string
2728
Prefix string
2829
ComputeRequest *cr.ComputeRequestArgs
2930
Version string

pkg/provider/azure/action/linux/linux.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,6 @@ func (r *linuxRequest) deployer(ctx *pulumi.Context) error {
178178
return fmt.Errorf("error creating RHEL Server on Azure: %v", err)
179179
}
180180
}
181-
182181
vm, err := virtualmachine.Create(ctx, r.mCtx,
183182
&virtualmachine.VirtualMachineArgs{
184183
Prefix: *r.prefix,
@@ -194,7 +193,7 @@ func (r *linuxRequest) deployer(ctx *pulumi.Context) error {
194193
AdminUsername: *r.username,
195194
PrivateKey: privateKey,
196195
SpotPrice: r.allocationData.Price,
197-
Userdata: userDataB64,
196+
Userdata: pulumi.String(userDataB64),
198197
Location: *r.allocationData.Location,
199198
})
200199
if err != nil {
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
#cloud-config
2+
runcmd:
3+
- systemctl enable --now kubelet
4+
write_files:
5+
- path: /home/core/.ssh/authorized_keys
6+
content: {{ .PubKey }}
7+
owner: {{ .Username }}
8+
permissions: '0600'
9+
- path: /opt/crc/id_rsa.pub
10+
content: {{ .PubKey }}
11+
owner: root:root
12+
permissions: '0644'
13+
- content: |
14+
CRC_CLOUD=1
15+
CRC_NETWORK_MODE_USER=0
16+
owner: root:root
17+
path: /etc/sysconfig/crc-env
18+
permissions: '0644'
19+
- path: /opt/crc/pull-secret
20+
content: |
21+
{{ .PullSecret }}
22+
owner: root:root
23+
permissions: '0644'
24+
- path: /opt/crc/pass_developer
25+
content: '{{ .PassDeveloper }}'
26+
owner: root:root
27+
permissions: '0644'
28+
- path: /opt/crc/pass_kubeadmin
29+
content: '{{ .PassKubeadmin }}'
30+
owner: root:root
31+
permissions: '0644'
32+
- path: /opt/crc/eip
33+
content: '{{ .PublicIP }}'
34+
owner: root:root
35+
permissions: '0644'

0 commit comments

Comments
 (0)