|
package server
|
Generated documentation is available at:
https://godoc.org/github.com/RedHatInsights/insights-operator-controller/server
Documentation in literate-programming-style is available at:
https://redhatinsights.github.io/insights-operator-controller/packages/server/trigger.html
|
import (
"fmt"
"net/http"
"github.com/RedHatInsights/insights-operator-controller/storage"
"github.com/RedHatInsights/insights-operator-utils/responses"
"github.com/gorilla/mux"
)
|
GetAllTriggers method returns list of all triggers
|
func ( s Server ) GetAllTriggers ( writer http . ResponseWriter , request * http . Request ) {
|
try to read list of all triggers from storage
|
triggers , err := s . Storage . ListAllTriggers ( )
|
check if the storage operation has been successful
|
if err != nil {
TryToSendInternalServerError ( writer , err . Error ( ) )
return
}
TryToSendOKServerResponse ( writer , responses . BuildOkResponseWithData ( "triggers" , triggers ) )
}
|
GetTrigger method returns single trigger by id
|
func ( s Server ) GetTrigger ( writer http . ResponseWriter , request * http . Request ) {
|
trigger ID needs to be specified in request parameter
|
id , err := retrieveIDRequestParameter ( request )
if err != nil {
TryToSendResponse ( http . StatusBadRequest , writer , err . Error ( ) )
return
}
|
try to read trigger identified by its ID from storage
|
trigger , err := s . Storage . GetTriggerByID ( id )
|
check if the storage operation has been successful
|
if err == storage . ErrNoSuchObj {
TryToSendResponse ( http . StatusNotFound , writer , fmt . Sprintf ( "No such trigger for ID %v" , id ) )
} else if err != nil {
TryToSendInternalServerError ( writer , err . Error ( ) )
} else {
TryToSendOKServerResponse ( writer , responses . BuildOkResponseWithData ( "trigger" , trigger ) )
}
}
|
DeleteTrigger method deletes single trigger
|
func ( s Server ) DeleteTrigger ( writer http . ResponseWriter , request * http . Request ) {
|
trigger ID needs to be specified in request parameter
|
id , err := retrieveIDRequestParameter ( request )
if err != nil {
TryToSendResponse ( http . StatusBadRequest , writer , err . Error ( ) )
return
}
|
try to record the action DeleteTrigger into Splunk
|
err = s . Splunk . LogAction ( "DeleteTrigger" , "tester" , fmt . Sprint ( id ) )
|
and check whether the Splunk operation was successful
|
checkSplunkOperation ( err )
|
try to delete trigger identified by its ID from storage
|
err = s . Storage . DeleteTriggerByID ( id )
|
check if the storage operation has been successful
|
if _ , ok := err . ( * storage . ItemNotFoundError ) ; ok {
TryToSendResponse (
http . StatusNotFound ,
writer ,
responses . BuildOkResponse ( ) ,
)
} else if err != nil {
TryToSendResponse ( http . StatusInternalServerError , writer , err . Error ( ) )
} else {
TryToSendOKServerResponse ( writer , responses . BuildOkResponse ( ) )
}
}
|
ActivateTrigger method actives single trigger
|
func ( s Server ) ActivateTrigger ( writer http . ResponseWriter , request * http . Request ) {
|
trigger ID needs to be specified in request parameter
|
id , err := retrieveIDRequestParameter ( request )
if err != nil {
TryToSendResponse ( http . StatusBadRequest , writer , err . Error ( ) )
return
}
|
try to record the action ActivateTrigger into Splunk
|
err = s . Splunk . LogAction ( "ActivateTrigger" , "tester" , fmt . Sprint ( id ) )
|
and check whether the Splunk operation was successful
|
checkSplunkOperation ( err )
|
try to activate trigger identified by its ID from storage
|
err = s . Storage . ChangeStateOfTriggerByID ( id , 1 )
|
check if the storage operation has been successful
|
if _ , ok := err . ( * storage . ItemNotFoundError ) ; ok {
TryToSendResponse ( http . StatusNotFound , writer , err . Error ( ) )
} else if err != nil {
TryToSendInternalServerError ( writer , err . Error ( ) )
} else {
TryToSendOKServerResponse ( writer , responses . BuildOkResponse ( ) )
}
}
|
DeactivateTrigger method deactivates single trigger
|
func ( s Server ) DeactivateTrigger ( writer http . ResponseWriter , request * http . Request ) {
|
trigger ID needs to be specified in request parameter
|
id , err := retrieveIDRequestParameter ( request )
if err != nil {
TryToSendResponse ( http . StatusBadRequest , writer , err . Error ( ) )
return
}
|
try to record the action DeactivateTrigger into Splunk
|
err = s . Splunk . LogAction ( "DeactivateTrigger" , "tester" , fmt . Sprint ( id ) )
|
and check whether the Splunk operation was successful
|
checkSplunkOperation ( err )
|
try to deactivate trigger identified by its ID from storage
|
err = s . Storage . ChangeStateOfTriggerByID ( id , 0 )
|
check if the storage operation has been successful
|
if _ , ok := err . ( * storage . ItemNotFoundError ) ; ok {
TryToSendResponse ( http . StatusNotFound , writer , err . Error ( ) )
} else if err != nil {
TryToSendInternalServerError ( writer , err . Error ( ) )
} else {
TryToSendOKServerResponse ( writer , responses . BuildOkResponse ( ) )
}
}
|
GetClusterTriggers method returns list of triggers for single cluster
|
func ( s Server ) GetClusterTriggers ( writer http . ResponseWriter , request * http . Request ) {
|
cluster name needs to be specified in request parameter
|
cluster , found := mux . Vars ( request ) [ "cluster" ]
if ! found {
TryToSendBadRequestServerResponse ( writer , "Cluster name needs to be specified" )
return
}
|
try to read list of all triggers for specified cluster from storage
|
triggers , err := s . Storage . ListClusterTriggers ( cluster )
|
check if the storage operation has been successful
|
if _ , ok := err . ( * storage . ItemNotFoundError ) ; ok {
TryToSendResponse ( http . StatusNotFound , writer , err . Error ( ) )
} else if err != nil {
TryToSendInternalServerError ( writer , err . Error ( ) )
} else {
TryToSendOKServerResponse ( writer , responses . BuildOkResponseWithData ( "triggers" , triggers ) )
}
}
|
RegisterClusterTrigger method registers new trigger for cluster
|
func ( s Server ) RegisterClusterTrigger ( writer http . ResponseWriter , request * http . Request ) {
|
cluster name needs to be specified in request parameter
|
cluster , found := mux . Vars ( request ) [ "cluster" ]
if ! found {
TryToSendBadRequestServerResponse ( writer , "Cluster name needs to be specified" )
return
}
|
trigger type needs to be specified in request parameter
|
triggerType , found := mux . Vars ( request ) [ "trigger" ]
if ! found {
TryToSendBadRequestServerResponse ( writer , "Trigger type needs to be specified" )
return
}
|
user name needs to be specified in request parameter
|
username , foundUsername := request . URL . Query ( ) [ "username" ]
if ! foundUsername {
TryToSendBadRequestServerResponse ( writer , "User name needs to be specified\n" )
return
}
|
reason needs to be specified in request parameter
|
reason , foundReason := request . URL . Query ( ) [ "reason" ]
if ! foundReason {
TryToSendBadRequestServerResponse ( writer , "Reason needs to be specified\n" )
return
}
|
link needs to be specified in request parameter
|
link , foundReason := request . URL . Query ( ) [ "link" ]
if ! foundReason {
TryToSendBadRequestServerResponse ( writer , "Link needs to be specified\n" )
return
}
|
try to record the action RegisterTrigger into Splunk
|
err := s . Splunk . LogTriggerAction ( "RegisterTrigger" , username [ 0 ] , cluster , triggerType )
|
and check whether the Splunk operation was successful
|
checkSplunkOperation ( err )
|
try to create new trigger in storage
|
err = s . Storage . NewTrigger ( cluster , triggerType , username [ 0 ] , reason [ 0 ] , link [ 0 ] )
|
check if the storage operation has been successful
|
if _ , ok := err . ( * storage . ItemNotFoundError ) ; ok {
TryToSendResponse ( http . StatusNotFound , writer , err . Error ( ) )
} else if err != nil {
TryToSendInternalServerError ( writer , err . Error ( ) )
} else {
TryToSendOKServerResponse ( writer , responses . BuildOkResponse ( ) )
}
}
|