|
@@ -250,13 +250,14 @@ func (a *Agent) ProvisionECR(
|
|
|
projectID uint,
|
|
projectID uint,
|
|
|
awsConf *integrations.AWSIntegration,
|
|
awsConf *integrations.AWSIntegration,
|
|
|
ecrName string,
|
|
ecrName string,
|
|
|
|
|
+ repo repository.Repository,
|
|
|
infra *models.Infra,
|
|
infra *models.Infra,
|
|
|
operation provisioner.ProvisionerOperation,
|
|
operation provisioner.ProvisionerOperation,
|
|
|
pgConf *config.DBConf,
|
|
pgConf *config.DBConf,
|
|
|
redisConf *config.RedisConf,
|
|
redisConf *config.RedisConf,
|
|
|
provImageTag string,
|
|
provImageTag string,
|
|
|
) (*batchv1.Job, error) {
|
|
) (*batchv1.Job, error) {
|
|
|
- id := infra.GetID()
|
|
|
|
|
|
|
+ id := infra.GetUniqueName()
|
|
|
prov := &provisioner.Conf{
|
|
prov := &provisioner.Conf{
|
|
|
ID: id,
|
|
ID: id,
|
|
|
Name: fmt.Sprintf("prov-%s-%s", id, string(operation)),
|
|
Name: fmt.Sprintf("prov-%s-%s", id, string(operation)),
|
|
@@ -265,6 +266,7 @@ func (a *Agent) ProvisionECR(
|
|
|
Redis: redisConf,
|
|
Redis: redisConf,
|
|
|
Postgres: pgConf,
|
|
Postgres: pgConf,
|
|
|
ProvisionerImageTag: provImageTag,
|
|
ProvisionerImageTag: provImageTag,
|
|
|
|
|
+ LastApplied: infra.LastApplied,
|
|
|
AWS: &aws.Conf{
|
|
AWS: &aws.Conf{
|
|
|
AWSRegion: awsConf.AWSRegion,
|
|
AWSRegion: awsConf.AWSRegion,
|
|
|
AWSAccessKeyID: string(awsConf.AWSAccessKeyID),
|
|
AWSAccessKeyID: string(awsConf.AWSAccessKeyID),
|
|
@@ -275,7 +277,7 @@ func (a *Agent) ProvisionECR(
|
|
|
},
|
|
},
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- return a.provision(prov)
|
|
|
|
|
|
|
+ return a.provision(prov, infra, repo)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// ProvisionEKS spawns a new provisioning pod that creates an EKS instance
|
|
// ProvisionEKS spawns a new provisioning pod that creates an EKS instance
|
|
@@ -283,13 +285,14 @@ func (a *Agent) ProvisionEKS(
|
|
|
projectID uint,
|
|
projectID uint,
|
|
|
awsConf *integrations.AWSIntegration,
|
|
awsConf *integrations.AWSIntegration,
|
|
|
eksName string,
|
|
eksName string,
|
|
|
|
|
+ repo repository.Repository,
|
|
|
infra *models.Infra,
|
|
infra *models.Infra,
|
|
|
operation provisioner.ProvisionerOperation,
|
|
operation provisioner.ProvisionerOperation,
|
|
|
pgConf *config.DBConf,
|
|
pgConf *config.DBConf,
|
|
|
redisConf *config.RedisConf,
|
|
redisConf *config.RedisConf,
|
|
|
provImageTag string,
|
|
provImageTag string,
|
|
|
) (*batchv1.Job, error) {
|
|
) (*batchv1.Job, error) {
|
|
|
- id := infra.GetID()
|
|
|
|
|
|
|
+ id := infra.GetUniqueName()
|
|
|
prov := &provisioner.Conf{
|
|
prov := &provisioner.Conf{
|
|
|
ID: id,
|
|
ID: id,
|
|
|
Name: fmt.Sprintf("prov-%s-%s", id, string(operation)),
|
|
Name: fmt.Sprintf("prov-%s-%s", id, string(operation)),
|
|
@@ -298,6 +301,7 @@ func (a *Agent) ProvisionEKS(
|
|
|
Redis: redisConf,
|
|
Redis: redisConf,
|
|
|
Postgres: pgConf,
|
|
Postgres: pgConf,
|
|
|
ProvisionerImageTag: provImageTag,
|
|
ProvisionerImageTag: provImageTag,
|
|
|
|
|
+ LastApplied: infra.LastApplied,
|
|
|
AWS: &aws.Conf{
|
|
AWS: &aws.Conf{
|
|
|
AWSRegion: awsConf.AWSRegion,
|
|
AWSRegion: awsConf.AWSRegion,
|
|
|
AWSAccessKeyID: string(awsConf.AWSAccessKeyID),
|
|
AWSAccessKeyID: string(awsConf.AWSAccessKeyID),
|
|
@@ -308,20 +312,21 @@ func (a *Agent) ProvisionEKS(
|
|
|
},
|
|
},
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- return a.provision(prov)
|
|
|
|
|
|
|
+ return a.provision(prov, infra, repo)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// ProvisionGCR spawns a new provisioning pod that creates a GCR instance
|
|
// ProvisionGCR spawns a new provisioning pod that creates a GCR instance
|
|
|
func (a *Agent) ProvisionGCR(
|
|
func (a *Agent) ProvisionGCR(
|
|
|
projectID uint,
|
|
projectID uint,
|
|
|
gcpConf *integrations.GCPIntegration,
|
|
gcpConf *integrations.GCPIntegration,
|
|
|
|
|
+ repo repository.Repository,
|
|
|
infra *models.Infra,
|
|
infra *models.Infra,
|
|
|
operation provisioner.ProvisionerOperation,
|
|
operation provisioner.ProvisionerOperation,
|
|
|
pgConf *config.DBConf,
|
|
pgConf *config.DBConf,
|
|
|
redisConf *config.RedisConf,
|
|
redisConf *config.RedisConf,
|
|
|
provImageTag string,
|
|
provImageTag string,
|
|
|
) (*batchv1.Job, error) {
|
|
) (*batchv1.Job, error) {
|
|
|
- id := infra.GetID()
|
|
|
|
|
|
|
+ id := infra.GetUniqueName()
|
|
|
prov := &provisioner.Conf{
|
|
prov := &provisioner.Conf{
|
|
|
ID: id,
|
|
ID: id,
|
|
|
Name: fmt.Sprintf("prov-%s-%s", id, string(operation)),
|
|
Name: fmt.Sprintf("prov-%s-%s", id, string(operation)),
|
|
@@ -330,6 +335,7 @@ func (a *Agent) ProvisionGCR(
|
|
|
Redis: redisConf,
|
|
Redis: redisConf,
|
|
|
Postgres: pgConf,
|
|
Postgres: pgConf,
|
|
|
ProvisionerImageTag: provImageTag,
|
|
ProvisionerImageTag: provImageTag,
|
|
|
|
|
+ LastApplied: infra.LastApplied,
|
|
|
GCP: &gcp.Conf{
|
|
GCP: &gcp.Conf{
|
|
|
GCPRegion: gcpConf.GCPRegion,
|
|
GCPRegion: gcpConf.GCPRegion,
|
|
|
GCPProjectID: gcpConf.GCPProjectID,
|
|
GCPProjectID: gcpConf.GCPProjectID,
|
|
@@ -337,7 +343,7 @@ func (a *Agent) ProvisionGCR(
|
|
|
},
|
|
},
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- return a.provision(prov)
|
|
|
|
|
|
|
+ return a.provision(prov, infra, repo)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// ProvisionGKE spawns a new provisioning pod that creates a GKE instance
|
|
// ProvisionGKE spawns a new provisioning pod that creates a GKE instance
|
|
@@ -345,13 +351,14 @@ func (a *Agent) ProvisionGKE(
|
|
|
projectID uint,
|
|
projectID uint,
|
|
|
gcpConf *integrations.GCPIntegration,
|
|
gcpConf *integrations.GCPIntegration,
|
|
|
gkeName string,
|
|
gkeName string,
|
|
|
|
|
+ repo repository.Repository,
|
|
|
infra *models.Infra,
|
|
infra *models.Infra,
|
|
|
operation provisioner.ProvisionerOperation,
|
|
operation provisioner.ProvisionerOperation,
|
|
|
pgConf *config.DBConf,
|
|
pgConf *config.DBConf,
|
|
|
redisConf *config.RedisConf,
|
|
redisConf *config.RedisConf,
|
|
|
provImageTag string,
|
|
provImageTag string,
|
|
|
) (*batchv1.Job, error) {
|
|
) (*batchv1.Job, error) {
|
|
|
- id := infra.GetID()
|
|
|
|
|
|
|
+ id := infra.GetUniqueName()
|
|
|
prov := &provisioner.Conf{
|
|
prov := &provisioner.Conf{
|
|
|
ID: id,
|
|
ID: id,
|
|
|
Name: fmt.Sprintf("prov-%s-%s", id, string(operation)),
|
|
Name: fmt.Sprintf("prov-%s-%s", id, string(operation)),
|
|
@@ -360,6 +367,7 @@ func (a *Agent) ProvisionGKE(
|
|
|
Redis: redisConf,
|
|
Redis: redisConf,
|
|
|
Postgres: pgConf,
|
|
Postgres: pgConf,
|
|
|
ProvisionerImageTag: provImageTag,
|
|
ProvisionerImageTag: provImageTag,
|
|
|
|
|
+ LastApplied: infra.LastApplied,
|
|
|
GCP: &gcp.Conf{
|
|
GCP: &gcp.Conf{
|
|
|
GCPRegion: gcpConf.GCPRegion,
|
|
GCPRegion: gcpConf.GCPRegion,
|
|
|
GCPProjectID: gcpConf.GCPProjectID,
|
|
GCPProjectID: gcpConf.GCPProjectID,
|
|
@@ -370,7 +378,7 @@ func (a *Agent) ProvisionGKE(
|
|
|
},
|
|
},
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- return a.provision(prov)
|
|
|
|
|
|
|
+ return a.provision(prov, infra, repo)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// ProvisionDOCR spawns a new provisioning pod that creates a DOCR instance
|
|
// ProvisionDOCR spawns a new provisioning pod that creates a DOCR instance
|
|
@@ -400,14 +408,15 @@ func (a *Agent) ProvisionDOCR(
|
|
|
return nil, err
|
|
return nil, err
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- id := infra.GetID()
|
|
|
|
|
|
|
+ id := infra.GetUniqueName()
|
|
|
prov := &provisioner.Conf{
|
|
prov := &provisioner.Conf{
|
|
|
- ID: id,
|
|
|
|
|
- Name: fmt.Sprintf("prov-%s-%s", id, string(operation)),
|
|
|
|
|
- Kind: provisioner.DOCR,
|
|
|
|
|
- Operation: operation,
|
|
|
|
|
- Redis: redisConf,
|
|
|
|
|
- Postgres: pgConf,
|
|
|
|
|
|
|
+ ID: id,
|
|
|
|
|
+ Name: fmt.Sprintf("prov-%s-%s", id, string(operation)),
|
|
|
|
|
+ Kind: provisioner.DOCR,
|
|
|
|
|
+ Operation: operation,
|
|
|
|
|
+ Redis: redisConf,
|
|
|
|
|
+ Postgres: pgConf,
|
|
|
|
|
+ LastApplied: infra.LastApplied,
|
|
|
DO: &do.Conf{
|
|
DO: &do.Conf{
|
|
|
DOToken: tok,
|
|
DOToken: tok,
|
|
|
},
|
|
},
|
|
@@ -417,7 +426,7 @@ func (a *Agent) ProvisionDOCR(
|
|
|
},
|
|
},
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- return a.provision(prov)
|
|
|
|
|
|
|
+ return a.provision(prov, infra, repo)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// ProvisionDOKS spawns a new provisioning pod that creates a DOKS instance
|
|
// ProvisionDOKS spawns a new provisioning pod that creates a DOKS instance
|
|
@@ -447,14 +456,15 @@ func (a *Agent) ProvisionDOKS(
|
|
|
return nil, err
|
|
return nil, err
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- id := infra.GetID()
|
|
|
|
|
|
|
+ id := infra.GetUniqueName()
|
|
|
prov := &provisioner.Conf{
|
|
prov := &provisioner.Conf{
|
|
|
- ID: id,
|
|
|
|
|
- Name: fmt.Sprintf("prov-%s-%s", id, string(operation)),
|
|
|
|
|
- Kind: provisioner.DOKS,
|
|
|
|
|
- Operation: operation,
|
|
|
|
|
- Redis: redisConf,
|
|
|
|
|
- Postgres: pgConf,
|
|
|
|
|
|
|
+ ID: id,
|
|
|
|
|
+ Name: fmt.Sprintf("prov-%s-%s", id, string(operation)),
|
|
|
|
|
+ Kind: provisioner.DOKS,
|
|
|
|
|
+ Operation: operation,
|
|
|
|
|
+ Redis: redisConf,
|
|
|
|
|
+ Postgres: pgConf,
|
|
|
|
|
+ LastApplied: infra.LastApplied,
|
|
|
DO: &do.Conf{
|
|
DO: &do.Conf{
|
|
|
DOToken: tok,
|
|
DOToken: tok,
|
|
|
},
|
|
},
|
|
@@ -464,32 +474,13 @@ func (a *Agent) ProvisionDOKS(
|
|
|
},
|
|
},
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- return a.provision(prov)
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-// ProvisionTest spawns a new provisioning pod that tests provisioning
|
|
|
|
|
-func (a *Agent) ProvisionTest(
|
|
|
|
|
- projectID uint,
|
|
|
|
|
- operation provisioner.ProvisionerOperation,
|
|
|
|
|
- pgConf *config.DBConf,
|
|
|
|
|
- redisConf *config.RedisConf,
|
|
|
|
|
- provImageTag string,
|
|
|
|
|
-) (*batchv1.Job, error) {
|
|
|
|
|
- prov := &provisioner.Conf{
|
|
|
|
|
- ID: fmt.Sprintf("%s-%d", "testing", projectID),
|
|
|
|
|
- Name: fmt.Sprintf("prov-%s-%d-%s", "testing", projectID, string(operation)),
|
|
|
|
|
- Operation: operation,
|
|
|
|
|
- Kind: provisioner.Test,
|
|
|
|
|
- Redis: redisConf,
|
|
|
|
|
- Postgres: pgConf,
|
|
|
|
|
- ProvisionerImageTag: provImageTag,
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- return a.provision(prov)
|
|
|
|
|
|
|
+ return a.provision(prov, infra, repo)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
func (a *Agent) provision(
|
|
func (a *Agent) provision(
|
|
|
prov *provisioner.Conf,
|
|
prov *provisioner.Conf,
|
|
|
|
|
+ infra *models.Infra,
|
|
|
|
|
+ repo repository.Repository,
|
|
|
) (*batchv1.Job, error) {
|
|
) (*batchv1.Job, error) {
|
|
|
prov.Namespace = "default"
|
|
prov.Namespace = "default"
|
|
|
|
|
|
|
@@ -499,11 +490,24 @@ func (a *Agent) provision(
|
|
|
return nil, err
|
|
return nil, err
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- return a.Clientset.BatchV1().Jobs(prov.Namespace).Create(
|
|
|
|
|
|
|
+ job, err = a.Clientset.BatchV1().Jobs(prov.Namespace).Create(
|
|
|
context.TODO(),
|
|
context.TODO(),
|
|
|
job,
|
|
job,
|
|
|
metav1.CreateOptions{},
|
|
metav1.CreateOptions{},
|
|
|
)
|
|
)
|
|
|
|
|
+
|
|
|
|
|
+ if err != nil {
|
|
|
|
|
+ return nil, err
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ infra.LastApplied = prov.LastApplied
|
|
|
|
|
+ infra, err = repo.Infra.UpdateInfra(infra)
|
|
|
|
|
+
|
|
|
|
|
+ if err != nil {
|
|
|
|
|
+ return nil, err
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ return job, nil
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// CreateImagePullSecrets will create the required image pull secrets and
|
|
// CreateImagePullSecrets will create the required image pull secrets and
|