Skip to content
This repository was archived by the owner on Nov 24, 2025. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -254,7 +254,12 @@ func (rc *RequiredCapability) Create() (error, error, int) {
return errors.New("Invalid DS type. Only DNS and HTTP delivery services can have required capabilities"), nil, http.StatusBadRequest
}

usrErr, sysErr, rCode := rc.ensureDSServerCap()
usrErr, sysErr, rCode := rc.checkServerCap()
if usrErr != nil || sysErr != nil {
return usrErr, sysErr, rCode
}

usrErr, sysErr, rCode = rc.ensureDSServerCap()
if usrErr != nil || sysErr != nil {
return usrErr, sysErr, rCode
}
Expand All @@ -281,6 +286,25 @@ func (rc *RequiredCapability) Create() (error, error, int) {
return nil, nil, http.StatusOK
}

func (rc *RequiredCapability) checkServerCap() (error, error, int) {
tx := rc.APIInfo().Tx

// Get server capability name
name := ""
if err := tx.QueryRow(`
Comment thread
ocket8888 marked this conversation as resolved.
SELECT name
FROM server_capability
WHERE name = $1`, rc.RequiredCapability).Scan(&name); err != nil && err != sql.ErrNoRows{
return nil, fmt.Errorf("querying server capability for name '%v': %v", rc.RequiredCapability, err), http.StatusInternalServerError
}

if len(name) == 0 {
return fmt.Errorf("server_capability not found"), nil, http.StatusNotFound
}

return nil, nil, http.StatusOK
}

func (rc *RequiredCapability) ensureDSServerCap() (error, error, int) {
tx := rc.APIInfo().Tx

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,11 @@ func TestCreateDeliveryServicesRequiredCapability(t *testing.T) {
)
mock.ExpectQuery("SELECT t.name FROM deliveryservice as ds").WillReturnRows(typeRows)

scRows := sqlmock.NewRows([]string{"name"}).AddRow(
"mem",
)
mock.ExpectQuery("SELECT name FROM server_capability").WillReturnRows(scRows)

arrayRows := sqlmock.NewRows([]string{"array"})
mock.ExpectQuery("SELECT ds.server FROM deliveryservice_server").WillReturnRows(arrayRows)

Expand Down