func enable()

in main/cmds.go [61:127]


func enable(lg ExtensionLogger, hEnv vmextension.HandlerEnvironment, seqNum int) error {
	// parse the extension handler settings (file not available prior to 'enable')
	cfg, err := parseAndValidateSettings(hEnv.HandlerEnvironment.ConfigFolder)
	if err != nil {
		return errors.Wrap(err, "failed to get configuration")
	}

	// parse and log the agent version
	//_, err = parseAndLogAgentVersion(AgentZipDir)
	//if err != nil {
	//	lg.customLog(logEvent, "failed to parse version string", logError, err, logAgentName, AgentZipDir)
	//	return errors.Wrap(err, "failed to parse version string")
	//}

	// check to see if agent directory exists
	unzipDir, agentDirectory := getAgentPaths()
	var runErr error
	if _, err := os.Stat(agentDirectory); err == nil {
		// directory exists, run enable.sh for agent health check
		lg.event("agent health check")
		_, runErr := runCmd(lg, "bash ./enable.sh", agentDirectory, cfg)
		if runErr != nil {
			lg.eventError("agent health check failed", runErr)
			return runErr
		}
		lg.event("agent health check succeeded")
		return nil
	}

	// directory does not exist, unzipAgent agent
	_, err = unzipAgent(lg, AgentZipDir, AgentName, unzipDir)
	if err != nil {
		lg.eventError("failed to unzipAgent agent dir", err)
		return errors.Wrap(err, "failed to unzipAgent agent")
	}
	// set permissions for the .sh files
	err = setPermissions()
	if err != nil {
		lg.eventError("failed to update the permissions for the scripts", err)
		telemetry(TelemetryScenario, err.Error(), false, 0)
		return errors.Wrap(err, "failed to update the permissions for the scripts")
	}

	// run install.sh and enable.sh
	lg.event("installing agent")
	_, runErr = runCmd(lg, "bash ./install.sh", agentDirectory, cfg)
	if runErr != nil {
		lg.eventError("agent installation failed", runErr)
		telemetry(TelemetryScenario, "agent installation failed: "+runErr.Error(), false, 0)
	} else {
		lg.customLog(logEvent, "agent installation succeeded", logEvent, "enabling agent")
		telemetry(TelemetryScenario, "agent installation succeeded", true, 0)
		_, runErr = runCmd(lg, "bash ./enable.sh", agentDirectory, cfg)
		if runErr != nil {
			lg.eventError("enable agent failed", runErr)
			telemetry(TelemetryScenario, "agent enable failed: "+runErr.Error(), false, 0)
		} else {
			lg.event("enable agent succeeded")
			telemetry(TelemetryScenario, "agent enable succeeded", true, 0)
		}
	}

	// collect the logs if available and send telemetry updates
	getStdPipesAndTelemetry(lg, unzipDir, runErr)

	return runErr
}