/
project_config.go
68 lines (60 loc) · 1.95 KB
/
project_config.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
package create
import (
"context"
apps "github.com/ninech/apis/apps/v1alpha1"
"github.com/ninech/nctl/api"
"github.com/ninech/nctl/api/util"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/utils/ptr"
)
// all fields need to be pointers so we can detect if they have been set by
// the user.
type configCmd struct {
Size string `help:"Size of the app."`
Port *int32 `help:"Port the app is listening on."`
Replicas *int32 `help:"Amount of replicas of the running app."`
Env *map[string]string `help:"Environment variables which are passed to the app at runtime."`
BasicAuth *bool `help:"Enable/Disable basic authentication for applications."`
DeployJob deployJob `embed:"" prefix:"deploy-job-"`
}
func (cmd *configCmd) Run(ctx context.Context, client *api.Client) error {
c := newCreator(client, cmd.newProjectConfig(client.Project), apps.ProjectConfigGroupKind)
return c.createResource(ctx)
}
func (cmd *configCmd) newProjectConfig(namespace string) *apps.ProjectConfig {
env := apps.EnvVars{}
if cmd.Env != nil {
env = util.EnvVarsFromMap(*cmd.Env)
}
var deployJob *apps.DeployJob
if len(cmd.DeployJob.Command) != 0 && len(cmd.DeployJob.Name) != 0 {
deployJob = &apps.DeployJob{
Job: apps.Job{
Name: cmd.DeployJob.Name,
Command: cmd.DeployJob.Command,
},
FiniteJob: apps.FiniteJob{
Retries: ptr.To(cmd.DeployJob.Retries),
Timeout: &metav1.Duration{Duration: cmd.DeployJob.Timeout},
},
}
}
return &apps.ProjectConfig{
ObjectMeta: metav1.ObjectMeta{
Name: namespace,
Namespace: namespace,
},
Spec: apps.ProjectConfigSpec{
ForProvider: apps.ProjectConfigParameters{
Config: apps.Config{
Size: apps.ApplicationSize(cmd.Size),
Replicas: cmd.Replicas,
Port: cmd.Port,
Env: env,
EnableBasicAuth: cmd.BasicAuth,
DeployJob: deployJob,
},
},
},
}
}