11package immediatecmds
22
33import (
4+ "fmt"
5+
6+ "github.com/Azure/azure-extension-platform/pkg/extensionevents"
47 "github.com/Azure/run-command-handler-linux/internal/constants"
58 "github.com/Azure/run-command-handler-linux/internal/handlersettings"
69 "github.com/Azure/run-command-handler-linux/internal/service"
@@ -11,42 +14,53 @@ import (
1114
1215// Updates the service definition if any immediate run command service exists.
1316// The action is skipped if the service has already been upgraded.
14- func Update (ctx * log.Context , h types.HandlerEnvironment , extName string , seqNum int ) (int , error ) {
17+ func Update (ctx * log.Context , h types.HandlerEnvironment , extName string , seqNum int , extensionEvents * extensionevents. ExtensionEventManager ) (int , error ) {
1518 ctx .Log ("message" , "updating immediate run command" )
1619 isInstalled , err := service .IsInstalled (ctx )
1720 if err != nil {
21+ errMessage := fmt .Sprintf ("Failed to check if any runcommand service is installed: %v" , err )
22+ extensionEvents .LogErrorEvent ("immediateupdate" , errMessage )
1823 return constants .ExitCode_CreateDataDirectoryFailed , errors .Wrap (err , "failed to check if any runcommand service is installed" )
1924 }
2025
2126 if isInstalled {
22- err = service .Register (ctx )
27+ err = service .Register (ctx , extensionEvents )
2328 if err != nil {
29+ errMessage := fmt .Sprintf ("Failed to upgrade run command service: %v" , err )
30+ extensionEvents .LogErrorEvent ("immediateupdate" , errMessage )
2431 return constants .ExitCode_UpgradeInstalledServiceFailed , errors .Wrap (err , "failed to upgrade run command service" )
2532 }
2633 }
2734
2835 return constants .ExitCode_Okay , nil
2936}
3037
31- func Disable (ctx * log.Context , h types.HandlerEnvironment , extName string , seqNum int ) (int , error ) {
38+ func Disable (ctx * log.Context , h types.HandlerEnvironment , extName string , seqNum int , extensionEvents * extensionevents. ExtensionEventManager ) (int , error ) {
3239 isInstalled , err := service .IsInstalled (ctx )
3340 if err != nil {
41+ errMessage := fmt .Sprintf ("Failed to check if runcommand service is installed: %v" , err )
42+ extensionEvents .LogErrorEvent ("immediatedisable" , errMessage )
3443 return constants .ExitCode_DisableInstalledServiceFailed , errors .Wrap (err , "failed to check if runcommand service is installed" )
3544 }
3645
3746 if isInstalled {
3847 isEnabled , err := service .IsEnabled (ctx )
3948 if err != nil {
49+ errMessage := fmt .Sprintf ("Failed to check if service is enabled: %v" , err )
50+ extensionEvents .LogErrorEvent ("immediatedisable" , errMessage )
4051 return constants .ExitCode_InstallServiceFailed , errors .Wrap (err , "failed to check if service is enabled" )
4152 }
4253
4354 if isEnabled {
44- err := service .Disable (ctx )
55+ err := service .Disable (ctx , extensionEvents )
4556 if err != nil {
57+ errMessage := fmt .Sprintf ("Failed to disable run command service: %v" , err )
58+ extensionEvents .LogErrorEvent ("immediatedisable" , errMessage )
4659 return constants .ExitCode_DisableInstalledServiceFailed , errors .Wrap (err , "failed to disable run command service" )
4760 }
4861 } else {
4962 ctx .Log ("message" , "Service installed but already got disabled. Skipping request to disable" )
63+ extensionEvents .LogInformationalEvent ("immediatedisable" , "Service installed but already got disabled. Skipping request to disable" )
5064 }
5165 }
5266
@@ -58,51 +72,64 @@ func Install() (int, error) {
5872 return constants .ExitCode_Okay , nil
5973}
6074
61- func Uninstall (ctx * log.Context , h types.HandlerEnvironment , extName string , seqNum int ) (int , error ) {
75+ func Uninstall (ctx * log.Context , h types.HandlerEnvironment , extName string , seqNum int , extensionEvents * extensionevents. ExtensionEventManager ) (int , error ) {
6276 ctx .Log ("message" , "proceeding to uninstall immediate run command" )
6377 isInstalled , err := service .IsInstalled (ctx )
6478 if err != nil {
79+ errMessage := fmt .Sprintf ("Failed to check if runcommand service is installed: %v" , err )
80+ extensionEvents .LogErrorEvent ("immediatedisable" , errMessage )
6581 return constants .ExitCode_RemoveDataDirectoryFailed , errors .Wrap (err , "failed to check if runcommand service is installed" )
6682 }
6783
6884 if isInstalled {
69- error := service .DeRegister (ctx )
85+ error := service .DeRegister (ctx , extensionEvents )
7086 if error != nil {
87+ errMessage := fmt .Sprintf ("Failed to uninstall run command service: %v" , error )
88+ extensionEvents .LogErrorEvent ("immediatedisable" , errMessage )
7189 return constants .ExitCode_UninstallInstalledServiceFailed , errors .Wrap (err , "failed to uninstall run command service" )
7290 }
7391 }
7492 return constants .ExitCode_Okay , nil
7593}
7694
77- func Enable (ctx * log.Context , h types.HandlerEnvironment , extName string , seqNum int , cfg handlersettings.HandlerSettings ) (int , error ) {
95+ func Enable (ctx * log.Context , h types.HandlerEnvironment , extName string , seqNum int , cfg handlersettings.HandlerSettings , extensionEvents * extensionevents. ExtensionEventManager ) (int , error ) {
7896 // If installService == true, then install RunCommand as a service
7997 if cfg .InstallAsService () {
8098 isInstalled , err2 := service .IsInstalled (ctx )
8199 if err2 != nil {
82100 ctx .Log ("message" , "could not check if service is already installed. Proceeding to overwrite configuration file to make sure it gets installed." )
101+ extensionEvents .LogErrorEvent ("immediateenable" , "could not check if service is already installed. Proceeding to overwrite configuration file to make sure it gets installed." )
83102 }
84103
85104 if ! isInstalled {
86- err3 := service .Register (ctx )
105+ err3 := service .Register (ctx , extensionEvents )
87106 if err3 != nil {
107+ errMessage := fmt .Sprintf ("Failed to install RunCommand as a service: %v" , err3 )
108+ extensionEvents .LogErrorEvent ("immediateenable" , errMessage )
88109 return constants .ExitCode_InstallServiceFailed , errors .Wrap (err3 , "failed to install RunCommand as a service" )
89110 }
90111 } else {
91112 isEnabled , err3 := service .IsEnabled (ctx )
92113 if err3 != nil {
114+ errMessage := fmt .Sprintf ("Failed to check if service is already enabled: %v" , err3 )
115+ extensionEvents .LogErrorEvent ("immediateenable" , errMessage )
93116 return constants .ExitCode_InstallServiceFailed , errors .Wrap (err3 , "failed to check if service is already enabled" )
94117 }
95118
96119 if ! isEnabled {
97- err4 := service .Enable (ctx )
120+ err4 := service .Enable (ctx , extensionEvents )
98121
99122 if err4 != nil {
123+ errMessage := fmt .Sprintf ("Failed to enable service: %v" , err4 )
124+ extensionEvents .LogErrorEvent ("immediateenable" , errMessage )
100125 return constants .ExitCode_InstallServiceFailed , errors .Wrap (err4 , "failed to enable service" )
101126 }
102127
103- err5 := service .Start (ctx )
128+ err5 := service .Start (ctx , extensionEvents )
104129
105130 if err5 != nil {
131+ errMessage := fmt .Sprintf ("Failed to start service: %v" , err5 )
132+ extensionEvents .LogErrorEvent ("immediateenable" , errMessage )
106133 return constants .ExitCode_InstallServiceFailed , errors .Wrap (err5 , "failed to start service" )
107134 }
108135 }
0 commit comments