import (
"encoding/json"
+ "fmt"
"log"
"os/exec"
- "strings"
"time"
)
}
// Create function
-func Create(serviceParam ServiceParam) []byte {
- instanceCount := serviceParam.Count
+func Create(serviceParam map[string]interface{}) []byte {
+ instanceCount := int(serviceParam["Count"].(float64))
ret := ServiceCreationResponse{}
ret.Status = ConstServiceFound
for index := 0; index < instanceCount; index++ {
var cmd *exec.Cmd
- id, _, _ := CreateServiceMap(cmd, serviceParam.ServiceBinPath+serviceParam.ServiceName, serviceParam.AppName)
+ id, _, _ := CreateServiceMap(cmd, serviceParam["ServiceBinPath"].(string)+serviceParam["ServiceName"].(string), serviceParam["AppName"].(string))
serviceInfo := ServiceCreationResponseItem{id, makeTime()}
ret.ServiceList[index] = serviceInfo
}
// Run is for executing service
-func Run(distService DistService, serviceID uint64) {
+func Run(distService map[string]interface{}, serviceID uint64) {
serviceName, err := GetServiceName(serviceID)
if err != nil {
log.Println(err.Error())
return
}
- var args []string
- for _, userParam := range distService.UserArgs {
- args = append(args, userParam)
+ userArgs := distService["UserArgs"].([]interface{})
+ args := make([]string, len(userArgs))
+
+ for _, userParam := range userArgs {
+ args = append(args, fmt.Sprint(userParam))
}
args = append(args, "--remote")
- notificationTargetURL := strings.Join(distService.SystemArgs, ":")
+ notificationTargetURL := distService["NotificationTargetURL"].(string)
service := Service{serviceID, serviceName, args, notificationTargetURL}
service.execute()
}
+
+// Delete is for removing service
+func Delete(serviceID uint64) (err error) {
+ cmd, err := GetCmd(serviceID)
+ if err != nil {
+ return
+ }
+
+ if cmd.ProcessState.Exited() == false {
+ err = cmd.Process.Kill()
+ if err != nil {
+ log.Println(err.Error())
+ }
+ }
+
+ return
+}