Send notify on update controller
Signed-off-by: Gabriel Adrian Samfira <gsamfira@cloudbasesolutions.com>
This commit is contained in:
parent
8d57fc8fa2
commit
7f9db2e413
3 changed files with 49 additions and 34 deletions
|
|
@ -15,7 +15,7 @@ const (
|
|||
InstanceEntityType DatabaseEntityType = "instance"
|
||||
JobEntityType DatabaseEntityType = "job"
|
||||
ControllerEntityType DatabaseEntityType = "controller"
|
||||
GithubCredentialsEntityType DatabaseEntityType = "github_credentials"
|
||||
GithubCredentialsEntityType DatabaseEntityType = "github_credentials" // #nosec G101
|
||||
GithubEndpointEntityType DatabaseEntityType = "github_endpoint"
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -22,6 +22,7 @@ import (
|
|||
"gorm.io/gorm"
|
||||
|
||||
runnerErrors "github.com/cloudbase/garm-provider-common/errors"
|
||||
"github.com/cloudbase/garm/database/common"
|
||||
"github.com/cloudbase/garm/params"
|
||||
)
|
||||
|
||||
|
|
@ -82,38 +83,49 @@ func (s *sqlDatabase) InitController() (params.ControllerInfo, error) {
|
|||
}, nil
|
||||
}
|
||||
|
||||
func (s *sqlDatabase) UpdateController(info params.UpdateControllerParams) (params.ControllerInfo, error) {
|
||||
var dbInfo ControllerInfo
|
||||
q := s.conn.Model(&ControllerInfo{}).First(&dbInfo)
|
||||
if q.Error != nil {
|
||||
if errors.Is(q.Error, gorm.ErrRecordNotFound) {
|
||||
return params.ControllerInfo{}, errors.Wrap(runnerErrors.ErrNotFound, "fetching controller info")
|
||||
func (s *sqlDatabase) UpdateController(info params.UpdateControllerParams) (paramInfo params.ControllerInfo, err error) {
|
||||
defer func() {
|
||||
if err == nil {
|
||||
s.sendNotify(common.ControllerEntityType, common.UpdateOperation, paramInfo)
|
||||
}
|
||||
return params.ControllerInfo{}, errors.Wrap(q.Error, "fetching controller info")
|
||||
}()
|
||||
var dbInfo ControllerInfo
|
||||
err = s.conn.Transaction(func(tx *gorm.DB) error {
|
||||
q := tx.Model(&ControllerInfo{}).First(&dbInfo)
|
||||
if q.Error != nil {
|
||||
if errors.Is(q.Error, gorm.ErrRecordNotFound) {
|
||||
return errors.Wrap(runnerErrors.ErrNotFound, "fetching controller info")
|
||||
}
|
||||
return errors.Wrap(q.Error, "fetching controller info")
|
||||
}
|
||||
|
||||
if err := info.Validate(); err != nil {
|
||||
return errors.Wrap(err, "validating controller info")
|
||||
}
|
||||
|
||||
if info.MetadataURL != nil {
|
||||
dbInfo.MetadataURL = *info.MetadataURL
|
||||
}
|
||||
|
||||
if info.CallbackURL != nil {
|
||||
dbInfo.CallbackURL = *info.CallbackURL
|
||||
}
|
||||
|
||||
if info.WebhookURL != nil {
|
||||
dbInfo.WebhookBaseURL = *info.WebhookURL
|
||||
}
|
||||
|
||||
q = tx.Save(&dbInfo)
|
||||
if q.Error != nil {
|
||||
return errors.Wrap(q.Error, "saving controller info")
|
||||
}
|
||||
return nil
|
||||
})
|
||||
if err != nil {
|
||||
return params.ControllerInfo{}, errors.Wrap(err, "updating controller info")
|
||||
}
|
||||
|
||||
if err := info.Validate(); err != nil {
|
||||
return params.ControllerInfo{}, errors.Wrap(err, "validating controller info")
|
||||
}
|
||||
|
||||
if info.MetadataURL != nil {
|
||||
dbInfo.MetadataURL = *info.MetadataURL
|
||||
}
|
||||
|
||||
if info.CallbackURL != nil {
|
||||
dbInfo.CallbackURL = *info.CallbackURL
|
||||
}
|
||||
|
||||
if info.WebhookURL != nil {
|
||||
dbInfo.WebhookBaseURL = *info.WebhookURL
|
||||
}
|
||||
|
||||
q = s.conn.Save(&dbInfo)
|
||||
if q.Error != nil {
|
||||
return params.ControllerInfo{}, errors.Wrap(q.Error, "saving controller info")
|
||||
}
|
||||
|
||||
paramInfo, err := dbControllerToCommonController(dbInfo)
|
||||
paramInfo, err = dbControllerToCommonController(dbInfo)
|
||||
if err != nil {
|
||||
return params.ControllerInfo{}, errors.Wrap(err, "converting controller info")
|
||||
}
|
||||
|
|
|
|||
|
|
@ -379,9 +379,13 @@ func (s *sqlDatabase) DeleteEntityPool(_ context.Context, entity params.GithubEn
|
|||
return nil
|
||||
}
|
||||
|
||||
func (s *sqlDatabase) UpdateEntityPool(_ context.Context, entity params.GithubEntity, poolID string, param params.UpdatePoolParams) (params.Pool, error) {
|
||||
var updatedPool params.Pool
|
||||
err := s.conn.Transaction(func(tx *gorm.DB) error {
|
||||
func (s *sqlDatabase) UpdateEntityPool(_ context.Context, entity params.GithubEntity, poolID string, param params.UpdatePoolParams) (updatedPool params.Pool, err error) {
|
||||
defer func() {
|
||||
if err == nil {
|
||||
s.sendNotify(common.PoolEntityType, common.UpdateOperation, updatedPool)
|
||||
}
|
||||
}()
|
||||
err = s.conn.Transaction(func(tx *gorm.DB) error {
|
||||
pool, err := s.getEntityPool(tx, entity.EntityType, entity.ID, poolID, "Tags", "Instances")
|
||||
if err != nil {
|
||||
return errors.Wrap(err, "fetching pool")
|
||||
|
|
@ -396,7 +400,6 @@ func (s *sqlDatabase) UpdateEntityPool(_ context.Context, entity params.GithubEn
|
|||
if err != nil {
|
||||
return params.Pool{}, err
|
||||
}
|
||||
s.sendNotify(common.PoolEntityType, common.UpdateOperation, updatedPool)
|
||||
return updatedPool, nil
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue