in internal/service/serviceinstall.go [36:86]
func Register(ctx *log.Context) error {
if !isSystemdSupported(ctx) {
return errors.New("Systemd not supported. Failed to register service")
}
targetVersion := os.Getenv(constants.ExtensionVersionEnvName)
ctx.Log("message", "trying to register extension with version: "+targetVersion)
ctx.Log("message", "Generating service configuration files")
systemdUnitContent := generateServiceConfigurationContent(ctx)
serviceHandler := getSystemdHandler(ctx)
isInstalled, err := IsInstalled(ctx)
if err != nil {
return err
}
// If the service is installed, check if it needs to be upgraded.
if isInstalled {
installedVersion, err := serviceHandler.GetInstalledVersion(ctx)
if err != nil {
return err
}
if installedVersion == targetVersion {
ctx.Log("message", "installed service already matches the target version")
return nil
}
}
ctx.Log("message", "Registering service using version: "+targetVersion)
ctx.Log("message", "Making immediate-run-command-handler executable")
execDirectory := os.Getenv(constants.ExtensionPathEnvName) + "/bin/immediate-run-command-handler"
err = os.Chmod(execDirectory, 0744)
if err != nil {
return errors.Wrap(err, "error while marking the immediate run command binary as executable")
}
err = serviceHandler.Register(ctx, systemdUnitContent)
if err != nil {
return err
}
err = Start(ctx)
if err != nil {
return err
}
ctx.Log("message", "Service registration complete")
return nil
}